?宏程序開(kāi)發(fā)循環(huán)代碼系列
之
啄式鉆孔循環(huán)
本文中的宏程序源代碼由微信網(wǎng)友“吳下阿蒙”開(kāi)發(fā)(微信號(hào):17686124772)
在我們的編程過(guò)程中常常會(huì)用到一些循環(huán)代碼,比如數(shù)控車(chē)床中G71、G72、G76和數(shù)控銑床中的G81、G82、G83等等,通過(guò)這些循環(huán)代碼可以極大的簡(jiǎn)化我們的編程,降低程序出錯(cuò)的概率,隨著數(shù)控系統(tǒng)版本的不端升級(jí)這些循環(huán)代碼也越來(lái)越豐富,但是對(duì)于一些版本較低的系統(tǒng),一些新的循環(huán)代碼在系統(tǒng)中是不可以使用的,面對(duì)這種情況,有時(shí)我們不得不采用最原始的方法,也就是G1和G0的方式來(lái)編程,這樣無(wú)形中增加了我們編程的復(fù)雜度,所要編制的程序段也要特別長(zhǎng),出錯(cuò)的概率也要成倍增加。那么有沒(méi)有一種方法來(lái)簡(jiǎn)化我們的編程呢,今天就向大家推出一個(gè)代碼開(kāi)發(fā)的系列,這個(gè)系列包括,利用宏程序模態(tài)調(diào)用開(kāi)發(fā)循環(huán)代碼;非模態(tài)調(diào)用開(kāi)發(fā)循環(huán)代碼;G代碼開(kāi)發(fā);M代碼開(kāi)發(fā)。通過(guò)這些循環(huán)代碼對(duì)我們版本較低的系統(tǒng)進(jìn)行升級(jí)改造。
今天就先和大家分享一個(gè)利用宏程序非模態(tài)調(diào)用開(kāi)發(fā)循環(huán)代碼之啄式鉆孔循環(huán)。這個(gè)循環(huán)程序集成了間斷進(jìn)給的各個(gè)動(dòng)作和錯(cuò)誤輸入的報(bào)警提示信息。
(主程序O0001 示例程序)
G99 G97 T101
M3 S555
G0 X0 Z1 M8
G65 P9983 L1 X0 Z-55 S100 Q30000 R0.1 F0.15 J1
G0 Z100
M30
主程序注釋
G99 G97 T101(模態(tài)信息,刀具號(hào)和刀偏號(hào))
M3 S555(主軸正轉(zhuǎn),S根據(jù)實(shí)際需要自行設(shè)定)
G0 X0 Z1 (快速定位到起點(diǎn),這里的起點(diǎn)即是循環(huán)開(kāi)始的起點(diǎn),也是循環(huán)結(jié)束的終點(diǎn))
G65 P9983 L1 X0 Z-55 S100 Q30000 R0.1 F0.15 J1(非模態(tài)調(diào)用9983號(hào)宏程序1次,并將宏變量傳輸?shù)胶瓿绦?;Z-55鉆孔的Z向終點(diǎn);S100,孔低暫停100毫秒,注意這里的S是暫停時(shí)間;Q30000間斷進(jìn)給的每次進(jìn)給量選取最小輸入增量30000等于3mm; R0.1間斷進(jìn)給的每次退刀量0.1mm; F0.15進(jìn)給速度每轉(zhuǎn)0.15mm;J1或J0,J1模式下退回到循環(huán)起點(diǎn)可以說(shuō)成是排銷(xiāo)模式,J0模式下,每次進(jìn)給一個(gè)Q值,然后退回一個(gè)R值,然后繼續(xù)循環(huán),直到循環(huán)終點(diǎn)可以說(shuō)成是斷銷(xiāo)模式)
G0 Z100(退刀)
M30(程序結(jié)束)
(子程序O9983 啄式鉆孔循環(huán)源代碼)
#10 = #5043
#17 = #17/10000
#12 = #10
#15 = 0.5()
#13 = 100()
N1 G0 Z#12
IF[#10 LE#26] GOTO100
IF[#18 GE#17] GOTO101
IF[#9 GE#15] GOTO102
IF[#5 LT0] GOTO103
IF[#5 GT1] GOTO104
IF[#5 EQ0] GOTO2
IF[#5 EQ1] GOTO3
N2 WHILE[#10 GT#26] DO1
#10 = #10-#17
IF[#10 LE#26] THEN#10 = #26
G1 Z#10 F#9
IF[#10 GT#26] GOTO20
IF[#10 EQ#26] GOTO21
N20 #14 = #10+#18
G0 Z#14
END1
N21 G4 P#19
G0 Z#12
M99
N3 WHILE[#10 GT#26] DO1
#10 = #10-#17
IF[#10 LE#26] THEN#10 = #26
G1 Z#10 F#9
IF[#10 GT#26] GOTO30
IF[#10 EQ#26] GOTO31
N30 G0 Z#12
G4 P#13
#14 = #10+#18
G0 Z#14
END1
N31 G4 P#19
G0 Z#12
M99
N100 G65 H99 P15(/報(bào)警信息 Z軸終點(diǎn)位置和起點(diǎn)不匹配)
N101 G65 H99 P15(/報(bào)警信息 每次進(jìn)給量和退刀量不匹配)
N102 G65 H99 P15(/報(bào)警信息 每轉(zhuǎn)進(jìn)給速度超出限制值)
N103 G65 H99 P15(/報(bào)警信息 指令位參數(shù)J錯(cuò)誤,只能是0或1)
N104 G65 H99 P15(/報(bào)警信息 指令位參數(shù)J錯(cuò)誤,只能是0或1)
子程序注釋
#10 = #5043(讀取系統(tǒng)變量5043當(dāng)前Z軸絕對(duì)坐標(biāo)值,并對(duì)變量10賦值)
#17 = #17/10000(最小輸入增量單位轉(zhuǎn)換)
#12 = #10(讀取10號(hào)變量,對(duì)12號(hào)變量賦值)
#15 = 0.5(安全變量,限制進(jìn)給量最大每轉(zhuǎn)0.5mm)
#13 = 100(J1模式下Z軸換向暫停時(shí)間,單位毫秒)
N1 G0 Z#12
IF[#10 LE#26] GOTO100
IF[#18 GE#17] GOTO101
IF[#9 GE#15] GOTO102
IF[#5 LT0] GOTO103
IF[#5 GT1] GOTO104
IF[#5 EQ0] GOTO2
IF[#5 EQ1] GOTO3
N2 WHILE[#10 GT#26] DO1
#10 = #10-#17
IF[#10 LE#26] THEN#10 = #26
G1 Z#10 F#9
IF[#10 GT#26] GOTO20
IF[#10 EQ#26] GOTO21
N20 #14 = #10+#18
G0 Z#14
END1
N21 G4 P#19
G0 Z#12
M99
N3 WHILE[#10 GT#26] DO1
#10 = #10-#17
IF[#10 LE#26] THEN#10 = #26
G1 Z#10 F#9
IF[#10 GT#26] GOTO30
IF[#10 EQ#26] GOTO31
N30 G0 Z#12
G4 P#13
#14 = #10+#18
G0 Z#14
END1
N31 G4 P#19
G0 Z#12
M99
N100 G65 H99 P15(/報(bào)警信息 Z軸終點(diǎn)位置和起點(diǎn)不匹配)
N101 G65 H99 P15(/報(bào)警信息 每次進(jìn)給量和退刀量不匹配)
N102 G65 H99 P15(/報(bào)警信息 每轉(zhuǎn)進(jìn)給速度超出限制值,限制值由變量#15指定)
N103 G65 H99 P15(/報(bào)警信息 指令位參數(shù)J錯(cuò)誤,只能是0或1)
N104 G65 H99 P15(/報(bào)警信息 指令位參數(shù)J錯(cuò)誤,只能是0或1)