?宏程序開發(fā)循環(huán)代碼系列 之 啄式鉆孔循環(huán) 本文中的宏程序源代碼由微信網(wǎng)友“吳下阿蒙”開發(fā)(微信號(hào):17686124772) 在我們的編程過程中常常會(huì)用到一些循環(huán)代碼,比如數(shù)控車床中G71、G72、G76和數(shù)控銑床中的G81、G82、G83等等,通過這些循環(huán)代碼可以極大的簡(jiǎn)化我們的編程,降低程序出錯(cuò)的概率,隨著數(shù)控系統(tǒng)版本的不端升級(jí)這些循環(huán)代碼也越來越豐富,但是對(duì)于一些版本較低的系統(tǒng),一些新的循環(huán)代碼在系統(tǒng)中是不可以使用的,面對(duì)這種情況,有時(shí)我們不得不采用最原始的方法,也就是G1和G0的方式來編程,這樣無形中增加了我們編程的復(fù)雜度,所要編制的程序段也要特別長(zhǎng),出錯(cuò)的概率也要成倍增加。那么有沒有一種方法來簡(jiǎn)化我們的編程呢,今天就向大家推出一個(gè)代碼開發(fā)的系列,這個(gè)系列包括,利用宏程序模態(tài)調(diào)用開發(fā)循環(huán)代碼;非模態(tài)調(diào)用開發(fā)循環(huán)代碼;G代碼開發(fā);M代碼開發(fā)。通過這些循環(huán)代碼對(duì)我們版本較低的系統(tǒng)進(jìn)行升級(jí)改造。 今天就先和大家分享一個(gè)利用宏程序非模態(tài)調(diào)用開發(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)開始的起點(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)可以說成是排銷模式,J0模式下,每次進(jìn)給一個(gè)Q值,然后退回一個(gè)R值,然后繼續(xù)循環(huán),直到循環(huán)終點(diǎn)可以說成是斷銷模式) 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) |
|