?宏程序開發(fā)循環(huán)代碼系列 之 啄式鉆孔循環(huán) 本文中的宏程序源代碼由微信網友“吳下阿蒙”開發(fā)(微信號:17686124772) 在我們的編程過程中常常會用到一些循環(huán)代碼,比如數控車床中G71、G72、G76和數控銑床中的G81、G82、G83等等,通過這些循環(huán)代碼可以極大的簡化我們的編程,降低程序出錯的概率,隨著數控系統(tǒng)版本的不端升級這些循環(huán)代碼也越來越豐富,但是對于一些版本較低的系統(tǒng),一些新的循環(huán)代碼在系統(tǒng)中是不可以使用的,面對這種情況,有時我們不得不采用最原始的方法,也就是G1和G0的方式來編程,這樣無形中增加了我們編程的復雜度,所要編制的程序段也要特別長,出錯的概率也要成倍增加。那么有沒有一種方法來簡化我們的編程呢,今天就向大家推出一個代碼開發(fā)的系列,這個系列包括,利用宏程序模態(tài)調用開發(fā)循環(huán)代碼;非模態(tài)調用開發(fā)循環(huán)代碼;G代碼開發(fā);M代碼開發(fā)。通過這些循環(huán)代碼對我們版本較低的系統(tǒng)進行升級改造。 今天就先和大家分享一個利用宏程序非模態(tài)調用開發(fā)循環(huán)代碼之啄式鉆孔循環(huán)。這個循環(huán)程序集成了間斷進給的各個動作和錯誤輸入的報警提示信息。 (主程序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)信息,刀具號和刀偏號) M3 S555(主軸正轉,S根據實際需要自行設定) G0 X0 Z1 (快速定位到起點,這里的起點即是循環(huán)開始的起點,也是循環(huán)結束的終點) G65 P9983 L1 X0 Z-55 S100 Q30000 R0.1 F0.15 J1(非模態(tài)調用9983號宏程序1次,并將宏變量傳輸到宏程序;Z-55鉆孔的Z向終點;S100,孔低暫停100毫秒,注意這里的S是暫停時間;Q30000間斷進給的每次進給量選取最小輸入增量30000等于3mm; R0.1間斷進給的每次退刀量0.1mm; F0.15進給速度每轉0.15mm;J1或J0,J1模式下退回到循環(huán)起點可以說成是排銷模式,J0模式下,每次進給一個Q值,然后退回一個R值,然后繼續(xù)循環(huán),直到循環(huán)終點可以說成是斷銷模式) G0 Z100(退刀) M30(程序結束) (子程序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(/報警信息 Z軸終點位置和起點不匹配) N101 G65 H99 P15(/報警信息 每次進給量和退刀量不匹配) N102 G65 H99 P15(/報警信息 每轉進給速度超出限制值) N103 G65 H99 P15(/報警信息 指令位參數J錯誤,只能是0或1) N104 G65 H99 P15(/報警信息 指令位參數J錯誤,只能是0或1) 子程序注釋 #10 = #5043(讀取系統(tǒng)變量5043當前Z軸絕對坐標值,并對變量10賦值) #17 = #17/10000(最小輸入增量單位轉換) #12 = #10(讀取10號變量,對12號變量賦值) #15 = 0.5(安全變量,限制進給量最大每轉0.5mm) #13 = 100(J1模式下Z軸換向暫停時間,單位毫秒) 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(/報警信息 Z軸終點位置和起點不匹配) N101 G65 H99 P15(/報警信息 每次進給量和退刀量不匹配) N102 G65 H99 P15(/報警信息 每轉進給速度超出限制值,限制值由變量#15指定) N103 G65 H99 P15(/報警信息 指令位參數J錯誤,只能是0或1) N104 G65 H99 P15(/報警信息 指令位參數J錯誤,只能是0或1) |
|
來自: 昵稱62419094 > 《待分類》