數(shù)控宏程序入門----宏程序調(diào)用
???宏程序可以和普通程序一樣被其他程序當(dāng)做子程序調(diào)用(M98),也可以通過(guò)宏程序?qū)S谜{(diào)用指令(G65,G66)進(jìn)行帶變量數(shù)據(jù)的傳遞調(diào)用。
使用M98調(diào)用時(shí)用法與調(diào)用普通程序相同,具體用法參考M98調(diào)用子程序
非模態(tài)調(diào)用 G65
代碼格式:G65 P_ L_? 變量數(shù)據(jù)。
其中P后面為被調(diào)用的程序號(hào)(完整程序號(hào)0不可省略)
L后面為調(diào)用次數(shù)(省略不寫默認(rèn)一次)
同子程序調(diào)用一樣,宏程序調(diào)用也可進(jìn)行嵌套調(diào)用(嵌套層級(jí)根據(jù)系統(tǒng)有所不同),我感覺(jué)日常加工中也不一定用得到多級(jí)嵌套,就不說(shuō)了
變量數(shù)據(jù)對(duì)應(yīng)的變量號(hào)有下面兩種方式傳遞

示例:G65 P0110 A1 B2 C3 F4
調(diào)用0110的程序一次,同時(shí)為0110程序中的變量賦值#1=1? #2=2 #3=3 #9=4

FANUC系統(tǒng)方式二是否有效由參數(shù)決定,所以無(wú)特殊需求建議使用方式一
在車床加工中的應(yīng)用舉例
車床中進(jìn)行深孔鉆孔
以端面Z0為基準(zhǔn),鉆孔深度50,單次鉆深3MM,鉆孔提前量0.5MM
主程序
O0002
T0101 G99 M3 S500
G0 X0
Z1??
G65 P0001 Z-50 Q3 R0.5 F0.1?(調(diào)用0001號(hào)程序一次 ZQRF對(duì)應(yīng)變量傳遞方式一)
G0 X100 Z100 M5
M30
子程序
O0001
#1=#5043 (記錄當(dāng)前Z軸坐標(biāo)值)
#2=#1?
N1 #2=#2-#17 (每次鉆孔終點(diǎn)Z值)
IF[#2LE#26]THEN #2=#26(防止Z過(guò)切)
#3=#2+#18?(下次鉆孔起點(diǎn)Z值)
G1 Z#2 F#9?(鉆孔)
G0 Z#1?(退回鉆孔起點(diǎn))
IF[#2EQ#26]GOTO 2(判斷鉆孔深度達(dá)到后跳轉(zhuǎn)N2)
G0 Z#3?(定位到下次鉆孔起點(diǎn))
IF[#2GT#26]GOTO 1(判斷鉆孔深度不夠后跳轉(zhuǎn)N1)
N2 G0 Z#1?(退回鉆孔起點(diǎn))
M99
模態(tài)調(diào)用 G66
代碼格式:G66 P_ L_? 變量數(shù)據(jù)。(各項(xiàng)含義同G65)
代碼說(shuō)明:G66執(zhí)行后一直有效,直到G67執(zhí)行取消。
G66模式下,當(dāng)系統(tǒng)執(zhí)行移動(dòng)完指令(G01,G02,G03,G05)后都會(huì)自動(dòng)調(diào)用G66指定的宏程序,執(zhí)行M代碼不會(huì)調(diào)用子程序,不能使用G71等循環(huán)指令。
G66也可進(jìn)行多級(jí)嵌套,但是我個(gè)人不推薦使用,因?yàn)槎嗉?jí)嵌套對(duì)于大部分人都容易搞混淆程序的執(zhí)行順序(非要來(lái)杠說(shuō)你能搞清楚,那你就用,我也不攔著)
G66在車床加工中的應(yīng)用舉例
車床中在不同的位置加工槽

假設(shè)切刀2.5MM寬,編輯文檔的時(shí)候發(fā)現(xiàn)忘記標(biāo)注槽深了,就當(dāng)是5MM深吧
主程序
O0002
T0101 G99 M3 S500
G0 X50
Z5
G66 P0001 U10 W-1.5 F0.1(進(jìn)入G66模式,并設(shè)定變量數(shù)值,刀寬2.5分兩次切槽,借刀寬度1.5MM)
G0 Z-13.5?(調(diào)用0001一次)
Z-21.5(調(diào)用0001一次)
Z-33.5(調(diào)用0001一次)
G67(取消G66模式)
G0 X100 Z100 M5(本段不再調(diào)用子程序)
M30
子程序
O0001
G1 U-#21 F#9(接收變量數(shù)值#21=10,#9=0.1)
G0 U#21
W#23(接收變量數(shù)值#23=-1.5)
G1 U-#21
G0 U#21
M99
?