分享

宏程序开发循环代码系列之啄式钻孔循环

 昵称62419094 2019-02-26
​宏程序开发循环代码系列
啄式钻孔循环

本文中的宏程序源代码由微信网友“吴下阿蒙”开发(微信号: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)


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多