tft每日頭條

 > 科技

 > fanuc怎麼創建宏程序

fanuc怎麼創建宏程序

科技 更新时间:2024-06-27 00:54:35

fanuc怎麼創建宏程序?宏 程 序 設 計宏程序與子程序類似,對編制相同加工的操作可以使程序簡化.同時宏程序中可以使用變量,算術和邏輯運算及轉移指令,還可以方便地實現循環程序設計使相同加工操作的程序更方便,更靈活本章以FANUC系統為例介紹宏程序設計的内容,我來為大家科普一下關于fanuc怎麼創建宏程序?下面希望有你要的答案,我們一起來看看吧!

fanuc怎麼創建宏程序(FANUC系統宏程序)1

fanuc怎麼創建宏程序

宏 程 序 設 計

宏程序與子程序類似,對編制相同加工的操作可以使程序簡化.同時宏程序中可以使用變量,算術和邏輯運算及轉移指令,還可以方便地實現循環程序設計。使相同加工操作的程序更方便,更靈活。本章以FANUC系統為例介紹宏程序設計的内容。

12.1 變量的定義

宏程序中使用的變量與日常生活中使用的變量不同,變量用符号"#"後跟變量的變量号指定。變量可分為四種類型。

1. 空變量

#0為空變量,該變量不能賦值。

2. 局部變量

#1~#33為局部變量,局部變量隻能在宏程序中存儲數據。當斷電時局部變量被初始化為空,調用宏程序時,自變量對局部變量賦值。局部變量的數值範圍10-29~1047或-1047~-10-29,如果計算結果超過該範圍則發出P/S報警No.111。

3. 公共變量

#100~#199、#500~#999為公共變量,公共變量在不同的宏程序中意義相同。當斷電時,變量#100~#199被初始化為空,變量#500~#999的數據不會丢失。全局變量的數值範圍10-29~1047或-1047~-10-29,如果計算結果超過該範圍則發出P/S報警No.111。

4. 系統變量

#1000~為系統變量,系統變量用于讀和寫CNC運行時的各種數據,如刀具的當前位置和補償 值等。

5. 變量與地址(自變量)的對應關系

系統可用兩種形式的自變量指定,表12-1為自變量指定I的自變量與變量的對應關系。表12-2為自變量指賓II的自變量與變量的對應關系。

表12-1 自變量指定I的變量對應關系

在自變量指定I中,G、L、O、N、P不能用,地址I、J、K必須按順序使用,其它地址順序無要求。

舉例:G65 P3000 L2 B4 A5 D6 J7 K8 正确(J、K符合順序要求)

在宏程序中将會把4賦給#2,把5賦給#1,把6賦給#7,把7賦給#5,把8賦給#6

舉例:G65 P3000 L2 B3 A4 D5 K6 J5 不正确(J、K不符合順序要求)

表12-2 自變量指定II的變量對應關系

自變量指定II使用A、B、C和1次,使用I、J、K各10次。

系統能夠自動識别自變量指定I和自變量指定II并賦給宏程序中相應的變量号。如果自變量指定I和自變量指定II混合使用,則後指定的自變量類型有效。

舉例:G65 A1.0 B2.0 I-3.0 I4.0 D5.0 p1000

宏程序中:#1:1.0

#2:2.0,

#3:

#4:-3.0

#5:

#6:

#7:5.0

說明:I4.0為自變量指定II,D為自變量指定I,所以#7使用指定類型中的D5.0,而不使用自變量指定II中的I4.0。

6. 本級變量#1~#33

作用于宏程序某一級中的變量稱為本級變量,即這一變量在同一程序級中調用時含義相同,若在另一級程序(如子程序)中使用,則意義不同。本級變量主要用于變量間的相互傳遞,初始狀态下未賦值的本級變量即為空白變量。

局部變量#1~#33(一個宏程序中的同名變量)從0到4級,主程序是0級。每調用一個含有同名變量的宏程序,級别加1,前一級的變量被保存。當一個宏程序結束(執行M99)時,級别減1。

例如:

主程序宏程序宏程序宏程序宏程序

(0級)(1級)(2級)(3級)(4級)

O0001O0002O0003O0004 O0005

#1=1;#1=2#1=3#1=4#1=5

G65P2A2;G65P3A3G65P4A4G65P5P5……

……………………M99

M30M99M99M99

12.2 變量的運算

對宏程序中的變量可以可以進行算術運算和邏輯運算。

1. 算術運算

可以進行加、減、乘、除運算。運算功能和格式如表12-3所示。

舉例:G00X[#1 #2]

X坐标的值是變量1與變量2之和。

2. 三角函數計算

對宏程序中的變量可進行正弦(SIN)、反正弦(ASIN)、餘弦(COS)、反餘弦(ACOS)、正切(TAN)、反正切(ATAN)函數運算。三角函數中的角度以度為單位。運算功能和格式如表12-3所示。

表12-3 變量運算功能表

對于反反正弦(ASIN)取值範圍如下:

當參數(No.6004#0)NAT位設為0時:270°~90°

當參數(No.6004#0)NAT位設為1時:-90°~90°

當#j超出-1~1時發出P/S報警No.111。

對于反餘弦(ACOS)的取值範圍如下:

取值範圍180°~0°

當#j超出-1~1時發出P/S報警No.111。

對于反正切(ATAN)的取值範圍如下:

當參數(No.6004#0)NAT位設為0時:0°~360°

當參數(No.6004#0)NAT位設為1時:-180°~180°

3. 其它函數計算

對宏程序中的變量還可以進行平方根(SQRT)、絕對值(ABS)、舍入(ROUN)、上取整(FIX)、下取整(FUP)、自然對數(LN)、指數(EXP)運算。運算功能和格式如表12-3所示。

對于自然對數LN[#j],相對誤差可能大于10-8。當#j≤0時,發出P/S報警No.111。

對于批數函數EXP[#j],相對誤差可能大于10-8。當運算結果大于3。65×1047(j大約110)時,出現溢出并發出P/S報警No.111。

對于取整函數ROUN[#j],根據最小設定單位四舍五入。

例如,假設最小設定單位為1/1000mm,#1=1.2345,則#2=ROUN[#1]的值是1.0。

對于上取整FIF[#j],絕對值值大于原數的絕對值。對于下取整FUP絕對值小于原數的絕對值。

例如,假設#1=1.2,則#2=FIX[#1]的值是2.0。

假設#1=1.2,則#2=FUP[#1]的值是1.0。

假設#1=-1.2,則#2=FIX[#1]的值是-2.0。

假設#1=-1.2,則#2=FUP[#1]的值是-1.0。

4. 邏輯運算

對宏程序中的變量可進行與、或、異或邏輯運算。邏輯運算是按位進行。運算功能和格式如表12-3所示。

5. 數制轉換

變量可以在BCD碼與二進制之間轉換。

6. 關系運算

由關系運算符和變量(或表達式)組成表達式。系統中使用的關系運算符如下。

(1)等于(EQ)

用EQ與兩個變量(或表達式)組成表達式,當運算符EQ兩邊的變量(或表達式)相等時,表達式的值為真,否則為假。

例如,#1EQ#2,當#1與#2相等時,表達式的值為真。

(2)不等于(NE)

用NE與兩個變量或表達式組成表達式,當運算符NE兩邊的變量(或表達式)不相等時,表達式的值為真,否則為假。

例如,#1NE#2,當#1與#2不相等時,表達式的值為真。

(3)大于等于(GE)

用GE與兩個變量或表達式組成表達式,當左邊的變量(或表達式)大于或等于右邊的變量(或表達式)時,表達式的值為真,否則為假。

例如,#1GE#2,當#1大于或等于#2時,表達式的值為真。否則為假。

(4)大于(GT)

用GT與兩個變量或表達式組成表達式,當左邊的變量(或表達式)大于右邊的變量(或表達式)時,表達式的值為真,否則為假。

例如,#1GT#2,當#1大于#2時,表達式的值為真。否則為假。

(5)小于等于(LE)

用LE與兩個變量或表達式組成表達式,當左邊的變量(或表達式)小于或等于右邊的變量(或表達式)時,表達式的值為真,否則為假。

例如,#1LE#2,當#1小于或等于#2時,表達式的值為真。否則為假。

(6)小于(LT)

用LT與兩個變量或表達式組成表達式,當左邊的變量(或表達式)小于右邊的變量(或表達式)時,表達式的值為真,否則為假。

例如,#1GE#2,當#1大于#2時,表達式的值為真。否則為假。

7. 運算優先級

運算符的優先順序是

(1)函數。函數的優先級最高。

(2)乘、除、與運算。乘、除、與運算的優先級次于函數的優先級。

(3)加、減、或、異或運算。加、減、或、異或運算的優先級次于乘、除、與運算。乘、除、與運算的優先級。

(4)關系運算。關系運算的優先級最低。

用方括号可以改變優先級,括号不能超過5層。超過5層時,發出P/S報警No.111。

8. 變量值的精度

變量值的精度為8位十進制數。

例如,用賦值語句#1=9876543210123.456時,實際上#1=9876543200000.000。

用賦值語句#2=9876543277777.456時,實際上#1=9876543300000.000。

12.3 宏程序結構

宏程序從結構上可以有順序結構、分支結構和循環結構。本節介紹分支和循環結構的實現方法。

1. 無條件轉移(GOTO)

格式:GOTOn;n為順序号(1~9999)

例如,GOTO6;

語句組

N6 G00X100;

執行GOTO6語句時,轉去執行标号為N6的程序段。

2. 條件轉移(IF)

格式:IF[關系表達式]

GOTOn;

例如,IF[#1LT30]

GOTO7

語句組

N7G00X100X5

如果#1大于30,轉去執行标号為N7的程序段,否則執行GOTO7下面的語句組。

3. 條件轉移(IF)

格式:IF[表達式]THEN

THEN後隻能跟一個語句。

例如,IF[#1EQ#2]THEN#3=0;

當#1等于#2時,将0賦給變量#3。

4. 循環(WHILE)

格式:WHILE[關系表達式]DO m;

語句組;

END m;

當條件表達式成立時執行從DO到END之間的程序,否則轉去執行END後面的程序段。

例如,#1=5;

WHILE[#1LE30]DO 1;

#1=#1 5;

G00X#1Y#1;

END 1;

M99;

當#1小于等于30時,執行循環程序,當#1大于30時結束循環返回主程序。

12.4 宏程序的調用與返回

1. 宏程序的簡單調用

宏程序的簡單調用是指在主程序中,宏程序可以被單個程序段單次調用。調用指令格式: G65 P(宏程序号) L(重複次數)(變量分配)

其中:G65——宏程序調用指令P(宏程序号)——被調用的宏程序代号;L(重複次數)——宏程序重複運行的次數,重複次數為1時,可省略不寫;(變量分配)——為宏程序中使用的變量賦值。宏程序與子程序相同的一點是,一個宏程序可被另一個宏程序調用,最多嵌套4層。

2. 宏程序的開始與返回

宏程序的編寫格式與子程序相同。其格式為:O0010(0001~8999為宏程序号) //程序名N10 …… //指令 ……

N30 M99 //宏程序結束 宏程序以程序号開始,以M99結束。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved