FANUC宏程序編程教程中磊教育
運(yùn)算符:
運(yùn)算符由2個(gè)字母組成,用于兩個(gè)值的比較,以決定它們是相等還是一個(gè)值小于或大于另一個(gè)值。注意,不能使用不等號(hào)
運(yùn)算符 |
含義 |
EQ |
等于(=) |
NE |
不等于 |
GT |
大于 |
GE |
大于或等于 |
LT |
小于 |
LE |
小于或等于 |
示例程序 :
下面的程序計(jì)算數(shù)值1~10的總和
O9500;#1=0;………………………………….存儲(chǔ)和的變量初值
#2=1;………………………………….被加數(shù)變量的初值
N1 IF[#2GT 10]GOTO 2;…………….當(dāng)被加數(shù)大于10時(shí)轉(zhuǎn)移到N2
#1=#1+#2;…………………………….計(jì)算和
#2=#2+#1;…………………………….下一個(gè)被加數(shù)
GOTO 1;………………………………轉(zhuǎn)移到N1
N2 M30;................................................程序結(jié)束
算術(shù)和邏輯運(yùn)算:
功能 |
格式 |
備注 |
定義 |
#i=#j: |
|
加法 |
#i=#j+#k |
|
減法 |
#i=#j-#k |
|
乘法 |
#i=#j*#k |
|
除法 |
#i=#j/#k |
|
正弦 |
#i=SIN[#j]: |
角度以度指定090度30分表示為90.5度 |
反正弦 |
#i=ASIN[#j]: |
|
余弦 |
#i=COS[#j]: |
|
反余弦 |
#i=ACOS[#j]: |
|
正切 |
#i=TAN[#j]: |
|
反正切 |
#i=ATAN[#j]: |
|
平方根 |
#i=SQRT[#j]: |
|
絕對(duì)值 |
#i=ABS[#j]: |
|
舍入 |
#i=ROUND[#j]: |
|
上取整 |
#i=FIX[#j]: |
|
下取整 |
#i=FUP[#j]: |
|
自然數(shù)對(duì)數(shù) |
#i=LN[#j]: |
|
指數(shù)函數(shù) |
#i=EXP[#j]: |
|
或 |
#i=#jOR#k: |
邏輯運(yùn)算一位一位地按二進(jìn)制數(shù)執(zhí)行 |
異或 |
#i=#jXOR#k: |
|
與 |
#i=#jAND#k: |
|
從BCD轉(zhuǎn)為BIN |
#i=BCD#j; |
用于與PMC的信號(hào)交換 |
從BIN轉(zhuǎn)為BCD |
#i=BCD#j; |
角度單位:
SIN、ASIN、COS、ACOS、TAN和ATAN的角度單位是度
ARCSIN #i=ASIN[#j]:
●取值范圍如下:當(dāng)參數(shù)(N0.6004¥0)NAT位設(shè)為0時(shí),270~90度;當(dāng)參數(shù)(N0.6004¥0)NAT位設(shè)為1時(shí),-90~90度。
● 當(dāng)#j超過-1到1的范圍時(shí),發(fā)出P/S報(bào)警N0.111。
● 常數(shù)可替代變量#j。
ARCCOS #i=ACOS[#j];
● 取值范圍從180~0度。
● 當(dāng)#j超過-1到1的范圍時(shí),發(fā)出P/S報(bào)警N0.111。
● 常數(shù)可替代變量#j。
ARCTAN #i=ATAN[#j];
● 指定兩邊的長(zhǎng)度,并用斜杠(/)分開
● 取值范圍如下:當(dāng)參數(shù)(N0.6004¥0)NAT位設(shè)為0時(shí),0~360度[例如:當(dāng)指定#i=ATAN[-1]/[-1];時(shí),#1=225度]。當(dāng)參數(shù)(N0.6004¥0)NAT位設(shè)為1時(shí),-180~180度[例如:當(dāng)指定#i=ATAN[-1]/[-1];時(shí),#1=-135度]
● 常數(shù)可替代變量#j。
自然對(duì)數(shù)#i=LN[#j];
● 注意,相對(duì)誤差可能大于10-8。
● 當(dāng)反對(duì)數(shù)(#j)為0或小于0時(shí),發(fā)出報(bào)警N0.111。
● 常數(shù)可替代變量#j。
指數(shù)函數(shù)#i=EXP[#j]:
● 注意,相對(duì)誤差可能大于10-8
● 當(dāng)運(yùn)算結(jié)果超過3.65×1047 (j大約是110)時(shí),出現(xiàn)溢出報(bào)警N0.111
● 常數(shù)可替代變量#j。
上取整下取整:
CNC處理數(shù)值運(yùn)算時(shí),若操作后產(chǎn)生整數(shù)絕對(duì)值大于原數(shù)的絕對(duì)值時(shí)為上取整;小于為下取整。例如:
假設(shè)#1=1.2,#2=-1.2。當(dāng)執(zhí)行#3=FUP[#1]時(shí),2.0賦給#3;當(dāng)執(zhí)行#3=FIX[#1]時(shí)1.0賦給#3;當(dāng)執(zhí)行#3=FUP[#2]時(shí),-2.0賦給#3;當(dāng)執(zhí)行#3=FIX[#2]時(shí),-1.0賦給#3。
宏程序語句:包含算術(shù)或邏輯運(yùn)算(=)的程序;包含控制語句(例如,用GOTO,DO,END)的程序;包含宏程序調(diào)用指令(例如,用G65,G66,G67或其它G代碼,M代碼調(diào)用宏程序)的程序段;除宏程序以外任何程序段都為NC語句。
與NC語句的不同:
即使置于單段程序運(yùn)行方式,機(jī)床也不停止。但是,當(dāng)參數(shù)N0.6000#5SBM設(shè)定位、為1時(shí),在單段程序方式中,機(jī)床停止。在刀具半徑補(bǔ)償方式中宏程序語句段不做為移動(dòng)程序段處理
與宏程序語句相同性質(zhì)的NC語句:
含有子程序調(diào)用指令(例如,用M98或其它M代碼或用T代碼調(diào)用子程序)但沒有除O,N,P或L地址之外的其它地址指令的NC語句,其性質(zhì)與宏程序語句相同;不包含除O,N,P或L以外的指令地址的程序段其性質(zhì)與宏程序語句相同。
無限循環(huán):
當(dāng)指定DO而沒有指定WHILE語句時(shí),產(chǎn)生從DO到END的無限循環(huán)。
宏程序調(diào)用(G65)不同于子程序調(diào)用(G98),如下所述:
● 用G65,可以指定自變量(數(shù)據(jù)傳送到宏程序)。M98沒有該功能。
● 當(dāng)M98程序段包含另一個(gè)NC指令(例如。G01.X100.0M98PP)時(shí),在指令執(zhí)行之后調(diào)用子程序。相反,G65無條件的調(diào)用子程序。
● M98程序段包含另一個(gè)NC指令(例如,G01X100.0M98PP)時(shí)在單程序方式中,機(jī)床停止。相反,G65機(jī)床不停止。
● 用G65,改變局部變量的級(jí)別。用M98,不改變局部變量的級(jí)別。
G65P-L -(自變量指定);P:要調(diào)用的程序;L:重復(fù)次數(shù);自變量:數(shù)據(jù)傳遞到宏程序
自變量指定Ⅰ
地址 |
變量號(hào) |
|
地址 |
變量號(hào) |
|
地址 |
變量號(hào) |
A |
#1 |
I |
#4 |
T |
#20 |
||
B |
#2 |
J |
#5 |
U |
#21 |
||
C |
#3 |
K |
#6 |
V |
#22 |
||
D |
#7 |
M |
#13 |
W |
#23 |
||
E |
#8 |
Q |
#17 |
X |
#24 |
||
F |
#9 |
R |
#18 |
Y |
#25 |
||
H |
#11 |
S |
#19 |
Z |
#26 |
||
地址G,L,N,O和P不能在自變量中使用 不需要指定的地址可以省,對(duì)于省的地址的局部變量為空 地址不需要按字母順序指定。但應(yīng)符合字地址的格式。I,J和K需要按字母的順序指定 |
自變量指定Ⅱ
A |
#1 |
|
K3 |
#12 |
|
J7 |
#23 |
B |
#2 |
I4 |
#13 |
K7 |
#24 |
||
C |
#3 |
J4 |
#14 |
I8 |
#25 |
||
I1 |
#4 |
K4 |
#15 |
J8 |
#26 |
||
J1 |
#5 |
I5 |
#16 |
K8 |
#27 |
||
K1 |
#6 |
J5 |
#17 |
I9 |
#28 |
||
I2 |
#7 |
K5 |
#18 |
J9 |
#29 |
||
J2 |
#8 |
I6 |
#19 |
K9 |
#30 |
||
K2 |
#9 |
J6 |
#20 |
I10 |
#31 |
||
I3 |
#10 |
K6 |
#21 |
J10 |
#32 |
||
J3 |
#11 |
I7 |
#22 |
K10 |
#33 |
I,J,K的下標(biāo)用于確定自變量指定的順序,在實(shí)際編程中不寫。
G65P-X-Y-Z-R-F-I-A-B-H-:
X:圓心的X坐標(biāo)(絕對(duì)值或增量值指定)(#24)
Y:圓心的Y坐標(biāo)(絕對(duì)值或增量值指定)(#25)
Z:孔深(#26);R:趨近點(diǎn)坐標(biāo)(#18)
F:切削進(jìn)給速度(#9);I:圓半徑(#4)
A:第一孔的角度(#1)
B:增量角(指定負(fù)值時(shí)為逆時(shí)針)(#2)
H:孔數(shù)(#11)
G90G92X0Y0Z100.0;
G65P9100X100Y50R30Z-50F500I100A0B45H5;
M30
被調(diào)用的宏程序:O9100;
#3=#4003;........................... 儲(chǔ)存03組的G代碼
G81Z#26R#18F#9K0;........(注)鉆孔循環(huán);注:也可以使用L0
IF[#3EQ90]GOTO 1;..........在G90方式轉(zhuǎn)移到N1
#24=#5001+#24;.................計(jì)算圓心的X坐標(biāo)
#25=#5002+#25;.................計(jì)算圓心的Y坐標(biāo)
N1 WHILE[#11GT0]DO 1.....直到剩余孔數(shù)為0
#5=#24+#4*COS[#1];..........計(jì)算X軸上的孔位
#6=#25+#4*SIN[+1];...........計(jì)算Y軸上的孔位
G90X#5Y#6;........................移動(dòng)到坐標(biāo)位置之后執(zhí)行鉆孔
#1=#1+#2;.............................更新角度
#11=#11-1;...........................孔數(shù)-1
END 1;
G#3G80;...............................返回原始狀態(tài)G代碼
M99;
變量的含義:#3:儲(chǔ)存03組的G代碼;#5:下個(gè)孔的X坐標(biāo):#6:下個(gè)孔的Y坐標(biāo)
摸態(tài)調(diào)用G66
G66P-L-:
P:要調(diào)用的程序;L:重復(fù)次數(shù);自變量:數(shù)據(jù)傳遞到宏程序
自變量指定Ⅰ
變量類型:
變量號(hào) |
變量類型 |
功能 |
#0 |
空變量 |
該變量總是空,沒有值能賦給該變量 |
#1~#33 |
局部變量 |
局部變量只能用于宏程序中存在存儲(chǔ)數(shù)據(jù)量。例如,運(yùn)算結(jié)果。當(dāng)斷電時(shí),局部變量被初始化為空。調(diào)用宏程序時(shí),自變量對(duì)局不變量賦值 |
#100~#199;#500~#999 |
公共變量 |
公共變量在不同宏程序中的意義相同。當(dāng)斷電時(shí),變量#100—#199初始化為空;當(dāng)斷電時(shí),變量#500—#999的數(shù)據(jù)保存,即使斷電也不丟失 |
#1000— |
系統(tǒng)變量 |
系統(tǒng)變量用于讀和寫CNC的各種數(shù)據(jù),例如,刀具的當(dāng)前位置和補(bǔ)償值 |
局部變量和公共變量可以為0值或下面范圍中的值:-1047到-10-29或10-29到1047
宏程序報(bào)警的系統(tǒng)變量:
變量號(hào) |
功能 |
#3000 |
當(dāng)變量#3000的值為0~200時(shí),CNC停止運(yùn)行且報(bào)警。 可在表達(dá)式后指定不超過26個(gè)字符的報(bào)警信息。 LCD屏幕上顯示報(bào)警號(hào)和報(bào)警信息,其中報(bào)警號(hào)為變量#3000的值加上3000 |
接口信號(hào)的系統(tǒng)變量:(參數(shù)N0.6001#0(MIF)=0時(shí))
變量號(hào) |
功能 |
#1000—#1015#1032 |
把16位信號(hào)從PMC送到用戶宏程序,變量#1000到#1035用于按位讀取信號(hào),變量#1032,用于一次讀取16位信號(hào) |
#1100—#1115#1132 |
把32位信號(hào)從用戶宏程序送到PMC。變量#1100到#1135用于按位寫信號(hào)。變量#1032用于一次讀取16位信號(hào) |
#1133 |
變量#1133用于從用戶宏程序一次寫一個(gè)32位信號(hào)到PMC。注意,#1133的值為-99999999到+99999999 |
(參數(shù)N0.6001#0(MIF)=1時(shí))
變量號(hào) |
功能 |
#1000~#1301 |
把32位信號(hào)從PMC送到用戶宏程序,變量#1000到#1031用于按位讀取信號(hào) |
#1100—#1131 |
把32位信號(hào)從用戶宏程序送到PMC。變量#1100到#1131用于按位寫信號(hào) |
#1032—#1035 |
把32位信號(hào)從PMC統(tǒng)一輸出到用戶宏程序的變量。只能在-99999999~+99999999的范圍內(nèi)輸入 |
#1132—#1135 |
把32位信號(hào)統(tǒng)一寫入到用戶宏程序的變量。只能在-99999999~+99999999的范圍內(nèi)指定 |
自動(dòng)運(yùn)行控制(#3003)
#3003 |
單程序段 |
輔助功能的完成 |
0 |
有效 |
等待 |
1 |
無效 |
等待 |
2 |
有效 |
不等待 |
3 |
無效 |
不等待 |
當(dāng)電源接通時(shí),該變量的值為0。當(dāng)單程序段停止無效時(shí),即使單程序段開關(guān)設(shè)為ON,也不執(zhí)行程序段停止。當(dāng)指定不等待輔助功能(M,S和T功能)完成時(shí),在輔助功能完成之前,程序即執(zhí)行到下一程序段。而且分配完成信號(hào)DEN不輸出。
位置信息系統(tǒng)變量
變量號(hào) |
位置信息 |
坐標(biāo)系 |
刀具補(bǔ)償值 |
運(yùn)行時(shí)的讀操作 |
#5001—#5003 |
程序段終止 |
工件坐標(biāo)系 |
不包含 |
可能 |
#5021—#5023 |
當(dāng)前位置 |
機(jī)床坐標(biāo)系 |
包含 |
不可能 |
#5041—#5043 |
當(dāng)前位置 |
工件坐標(biāo)系 |
||
#5061—#5063 |
跳轉(zhuǎn)信息位置 |
可能 |
||
#5081—#5083 |
刀具長(zhǎng)度補(bǔ)償值 |
|
|
不可能 |
#5101—#5103 |
伺服位置誤差 |
|
|
第1位代表軸號(hào)(1~3);
變量#5081~#5083存儲(chǔ)的刀具長(zhǎng)度補(bǔ)償值是當(dāng)前的執(zhí)行值,不是后面程序的處理值;
在G31(跳轉(zhuǎn)功能)程序段中跳轉(zhuǎn)信號(hào)接通時(shí)的刀具位置儲(chǔ)存在變量#5061到#5064中。當(dāng)G31程序段中的跳轉(zhuǎn)信號(hào)未接通時(shí),這些變量中儲(chǔ)存指定程序段的終點(diǎn)值。
移動(dòng)期間不能讀是指由于緩沖(預(yù)讀)功能的原因,不能讀取期望值。
G65P9110X-Y-Z-R-F-L-;
X:圓心的X坐標(biāo)(絕對(duì)值指定)(#24)
Y:圓心的Y坐標(biāo)(絕對(duì)值指定)(#25)
Z:孔深(#26)(絕對(duì)值指定);
R:趨近點(diǎn)坐標(biāo)(絕對(duì)值指定)(#18)
F:切削進(jìn)給速度(#9);
L:重復(fù)次數(shù)
使用系統(tǒng)變量時(shí)的注意事項(xiàng)
含義 |
讀寫 |
變量號(hào) |
注(未指定禁止緩沖的M代碼或G53程序段時(shí)) |
接口信號(hào) |
讀 |
#100—#1015#1032 |
宏語句讀入緩沖后讀入數(shù)據(jù) |
寫 |
#1100—#1115#1132 |
宏語句讀入緩沖后寫入數(shù)據(jù) |
|
刀具補(bǔ)償值 |
寫 |
#10001- |
宏語句讀入緩沖后寫入數(shù)據(jù) |
宏報(bào)警 |
寫 |
#3000 |
在宏語句前最多兩個(gè)程序段處產(chǎn)生報(bào)警 |
送出信息的同時(shí)程序停止 |
寫 |
#3006 |
在宏語句前最多兩個(gè)程序段處產(chǎn)生停止 |
時(shí)間信息 |
讀寫 |
#3001,#3002 |
宏語句讀入緩沖后讀寫入數(shù)據(jù) |
讀 |
#3011,#3012 |
宏語句讀入緩沖后讀入數(shù)據(jù) |
|
自動(dòng)運(yùn)行控制 |
寫 |
#3003,#3004 |
在宏語句前最多兩個(gè)程序段處設(shè)定數(shù)據(jù) |
設(shè)定 |
寫 |
#3005 |
宏語句讀入緩沖后寫入數(shù)據(jù) |
鏡像 |
讀 |
#3007 |
宏語句讀入緩沖后讀入數(shù)據(jù) |
當(dāng)前選擇追加工件坐標(biāo)系 |
讀 |
#4130(P)#4014(G54-G59) |
在宏語句前最多三個(gè)程序段處讀入數(shù)據(jù) |
當(dāng)前位置(機(jī)床坐標(biāo)系 |
讀 |
#5021-#5023 |
讀入移動(dòng)中的不確定位置 |
當(dāng)前位置(工件坐標(biāo)系) |
讀 |
#5021-#5023 |
讀入移動(dòng)中的不確定位置 |
刀長(zhǎng)偏置 |
讀 |
#5021-#5023 |
讀入當(dāng)前程序段的偏置量 |
位置偏差 |
讀 |
#5021-#5023 |
讀入移動(dòng)中的不正確偏差 |
工件零點(diǎn)偏置值 |
寫 |
#5021-#5023#5021-#5023 |
宏語句讀入緩沖后寫入數(shù)據(jù) |
非常感謝您對(duì)我們的網(wǎng)站感興趣并訪問。在您使用本網(wǎng)站之前,請(qǐng)您仔細(xì)閱讀本聲明的所有條款。
1、本站部份資料來自于網(wǎng)絡(luò),資源僅供參考,如有侵犯了您的權(quán)益請(qǐng)立即與我們聯(lián)系!我們將及時(shí)撤除。
2、本站不保證網(wǎng)站內(nèi)容的準(zhǔn)確性、安全性和完整性;請(qǐng)自行檢查是否帶有病毒,同時(shí)本站也不承擔(dān)用戶因使用這些資源對(duì)自己和他人造成任何形式的損失或傷害。
3、本聲明未涉及的問題參見國(guó)家有關(guān)法律法規(guī),當(dāng)本聲明與國(guó)家法律法規(guī)沖突時(shí),以國(guó)家法律法規(guī)為準(zhǔn)。
4、本站內(nèi)容均來源自網(wǎng)絡(luò),素材、圖片版權(quán)屬于原作者,本站轉(zhuǎn)載素材僅供大家欣賞和分享,切勿做為商業(yè)目的使用。
如果侵害了您的合法權(quán)益,請(qǐng)您及時(shí)與我們,我們會(huì)在第一時(shí)間刪除相關(guān)內(nèi)容!
5、我們尊重版權(quán),也致力于保護(hù)版權(quán),如果你是原作者請(qǐng)聯(lián)系本站編輯(838676806&qq.com(&修改為@)),我們將為你的文章注名,感謝你的分享!
6、互聯(lián)網(wǎng)精神:分享、交流、進(jìn)步!