宏程序开发循环代码系列 之 啄式钻孔循环 本文中的宏程序源代码由微信网友“吴下阿蒙”开发(微信号:17686124772) 在我们的编程过程中常常会用到一些循环代码,比如数控车床中G71、G72、G76和数控铣床中的G81、G82、G83等等,通过这些循环代码可以极大的简化我们的编程,降低程序出错的概率,随着数控系统版本的不端升级这些循环代码也越来越丰富,但是对于一些版本较低的系统,一些新的循环代码在系统中是不可以使用的,面对这种情况,有时我们不得不采用最原始的方法,也就是G1和G0的方式来编程,这样无形中增加了我们编程的复杂度,所要编制的程序段也要特别长,出错的概率也要成倍增加。那么有没有一种方法来简化我们的编程呢,今天就向大家推出一个代码开发的系列,这个系列包括,利用宏程序模态调用开发循环代码;非模态调用开发循环代码;G代码开发;M代码开发。通过这些循环代码对我们版本较低的系统进行升级改造。 今天就先和大家分享一个利用宏程序非模态调用开发循环代码之啄式钻孔循环。这个循环程序集成了间断进给的各个动作和错误输入的报警提示信息。 (主程序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(模态信息,刀具号和刀偏号) M3 S555(主轴正转,S根据实际需要自行设定) G0 X0 Z1 (快速定位到起点,这里的起点即是循环开始的起点,也是循环结束的终点) G65 P9983 L1 X0 Z-55 S100 Q30000 R0.1 F0.15 J1(非模态调用9983号宏程序1次,并将宏变量传输到宏程序;Z-55钻孔的Z向终点;S100,孔低暂停100毫秒,注意这里的S是暂停时间;Q30000间断进给的每次进给量选取最小输入增量30000等于3mm; R0.1间断进给的每次退刀量0.1mm; F0.15进给速度每转0.15mm;J1或J0,J1模式下退回到循环起点可以说成是排销模式,J0模式下,每次进给一个Q值,然后退回一个R值,然后继续循环,直到循环终点可以说成是断销模式) G0 Z100(退刀) M30(程序结束) (子程序O9983 啄式钻孔循环源代码) #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(读取系统变量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 > 《待分类》