上次发了个“数控车装B指南”的帖子,只是当做
娱乐,有没有干货其实不重要。但是有的人说我编的花哨,对宏程序看不惯的人我也是很无奈。


贴吧上形形色色的人都有,无所谓了,没有任何一个人是完美的.我只不过将我的想法分
享出来,可能不完美更可能有错误,也希望大家可以互相指正,共同进步。
从实用的角度出发,宏程序其实也简便了加工编程的代码量和编程时间。我提到了“模块化”,
那么什么是模块化,我的想法是将编制好的宏程序作为一个模块,这个宏程序就不用动了,只需要将这
程序复制到不同的系统机床上,用g65或者自定义G代码带入参数调用它,这样当不同的系统和机床以及
各种尺寸的工件都可以直接用G65或者自定义G代码加工,省去进入宏程序本体修改变量以及修改变量逻
辑产生错误的风险。
说完了模块化,再说说为什么会有这个帖子,宏程序虽然加工便利,但是一般的师傅对于编写宏程序也
是勉为其难的(比如我),所以模块化的另一个好处是让不太会宏程序的人甚至完全不会宏的人,也能
用宏程序来加工。
这个帖子就是为了让广大不会宏的人也能用宏程序,将我提供的宏程序本体复制到机床里面即可。
正题:
我的帖子“数控车装B指南”中,大略讲到G65调用宏程序,各系统说明书里面也有。那么我们采用这个
方式调用宏程序本体,类似于G76之类的用法。先说说大螺距三角螺纹如何加工,大于4.5mm螺距的三角
螺纹我一般认为是大螺距,4mm或者以下的用G76加工也勉强可以。大螺距当然也可以用两个G76计算好最
后一刀然后分层加工,但仍然是单边斜进,越到后面刀具接触面增大引发震刀爆刀,所以大螺距三角螺
纹我都是采用宏程序左中右进刀,而且因为这种进刀方式去除刀尖两侧余量,可以采用比较大的吃刀。

这是凯恩帝新系统版本的G76错齿进刀,我们可以看到虽然错齿,但是加工过一半以后刀具的两边接触面
仍然过大。

按照思路我们先编辑宏程序本体:
%
O8310
IF[#24EQ#0]THEN#3000=80(如果X值空则报警)
IF[#26EQ#0]THEN#3000=81(如果Z值空则报警)
IF[#9EQ#0]THEN#3000=82(如果F值空则报警)
IF[#11EQ#0]THEN#3000=83(如果H值空则报警)
IF[#17EQ#0]THEN#3000=84(如果Q值空则报警)
IF[#18EQ#0]THEN#3000=85(如果R值空则报警)
IF[#23EQ#0]THEN#3000=86(如果W值空则报警)
IF[#1EQ#0]THEN#3000=87(如果A值空则报警)
IF[#21EQ#0]THEN#3000=88(如果U值空则报警)
(以上报警均是为了某个参数没有输入而报警提醒)
#29=#24 (终点值变量)
#31=#11 (牙高变量)
IF[#21LT0]THEN#30=-2.0
(如果U小于0则系数为负)
IF[#21GT0]THEN#30=2.0
(如果U大于0则系数为正)
IF[#21LT0]THEN#27=#29-2*#11+#21
(如果U小于0,退刀安全点=终点值-2牙高+U值)
IF[#21GT0]THEN#27=#29+2*#11+#21
(如果U大于0,退刀安全点=终点值+2牙高+U值)
G00Z#23 (移动到W定位值)
X#27 (X向安全退刀点值)
#32=#31 (牙高变化量)
N1#32=#32-#17 (牙高递减,每次减Q)
IF[#32LE0]THEN#32=0 (牙高递减小于0则等于0)
#33=#32*TAN[#1/2]
(当前层左右宽=剩余牙高*TAN[角度A除以2])
G00X[#29+#30*#32]
(当前层x为终点值+系数*当前牙高)
Z#23
初始定位
G32Z#26F#9 中间干一刀
G00X#27 退刀
Z#23 初始定位
IF[#32EQ0]GOTO4(如果牙高递减等于0跳转N4)
#28=0 (左右偏移量)
N2#28=#28+#18 (右边偏移一个刀尖R量)
IF[#28GT#33]GOTO3(如果偏移量大于左右宽则跳转N3)
G00X[#29+#30*#32](当前层x为终点值+系数*当前牙高)
Z[#23+#28] (往右偏移刀尖)
G32Z#26F#9
G00X#27
Z#23
G00X[#29+#30*#32]
Z[#23-#28] (往左偏移刀尖)
G32Z#26F#9
G00X#27
Z#23
GOTO2 (重复偏移)
N3G00X[#29+#30*#32]
Z[#23+#33] (当前层最右边)
G32Z#26F#9
G00X#27
Z#23
G00X[#29+#30*#32]
Z[#23-#33] (当前层最左边)
G32Z#26F#9
G00X#27
Z#23
IF[#32GT0]GOTO1(如果牙高大于0跳转N1)
N4G00X#27
Z#23
M99(结束返回主程序)
%
这个O8310就是宏程序本体(发那科适用)
当然我的思路或许使得此程序臃肿,或者说效率不高。应该有更简洁的宏程序,不过我脑子不太聪明,
这已经是我的极限了哈,暂时将就着用吧。
之前看到很多视频平台上拿程序来卖,专门给小白大螺距螺纹编程赚钱,我估计这个帖子会间接断了好
多人的财路?自己动手它不香吗,哈
此本体广数和凯恩帝也基本适用,不过需要改一改报警语句,因为系统不同报警语句也差别。后期会在
百度网盘上传各个系统版本的程序,暂时这个是发那科的。
我们直接将O8310复制进机床中,名字当然也是O8310,然后就不用动了,用G65调用它就可以了,比如我
们需要加工M80*6的螺纹。
大径80
底径72.2
长度50
X轴增量退刀2.0(如果是外螺纹就是2.0,内螺纹就是-2.0)
Z定位点5.0
每次进刀0.3半径值
每刀左右偏移量一个刀尖R0.6
牙高(大径80-小径72.2)/2=3.9
角度60
直接在主程序输入G65P8310X72.2Z-50.0A60.0H3.9U2.0W5.0Q0.3R0.6F6.0
变量对应关系如下

#24为x终点尺寸X
#26为z终点尺寸Z
#9为螺距F
#11为H牙高
#17为Q每刀切深。半径值
#18为R刀尖左右每次偏移量
#23为W轴向初始定位点z轴(刀具偏移量中点)
#1为A三角螺纹角度(支持60或者55度)
#21为U退刀增量值 此值为正时为外螺纹,若为负值则是内螺纹,宏程序根据U值自动判断内外螺纹
就这样,只要把宏程序O8310复制,存到机床里,每次车螺纹就用g65带参数调用它,就和g76差不多了。
如果觉得g65太麻烦,可以将这个O8310的程序内容复制到O9010,然后参数6050号的参数设置为78,注意
:O91010和6050号参数的值是对应的,假如是O9011则是6051号参数(这方法发那科适用,广数凯恩帝也
大同小异)
这样就完成了自定义g代码调用,以后车大螺距螺纹就可以直接将上面的G65P8310改成G78(改成其他也
可以,不是现有G代码就行,比如G77或者G88等等都可以),如同自己设计了一个G代码来专门加工大螺
距三角螺纹。还是有点成就感的哈。


先到这里吧,看得懂的需要的可以找我拿宏程序本体哈,下次有空再发个梯形螺纹宏程序本体吧。梯形
宏程序和这个三角螺纹的差不多,只是多了刀宽和槽底宽的变量,感兴趣的可以自己改一改就可以了。
此贴结束。
ps:我不是装B,只是希望我的数控生涯能在世界里留下印记。
娱乐,有没有干货其实不重要。但是有的人说我编的花哨,对宏程序看不惯的人我也是很无奈。


贴吧上形形色色的人都有,无所谓了,没有任何一个人是完美的.我只不过将我的想法分
享出来,可能不完美更可能有错误,也希望大家可以互相指正,共同进步。
从实用的角度出发,宏程序其实也简便了加工编程的代码量和编程时间。我提到了“模块化”,
那么什么是模块化,我的想法是将编制好的宏程序作为一个模块,这个宏程序就不用动了,只需要将这
程序复制到不同的系统机床上,用g65或者自定义G代码带入参数调用它,这样当不同的系统和机床以及
各种尺寸的工件都可以直接用G65或者自定义G代码加工,省去进入宏程序本体修改变量以及修改变量逻
辑产生错误的风险。
说完了模块化,再说说为什么会有这个帖子,宏程序虽然加工便利,但是一般的师傅对于编写宏程序也
是勉为其难的(比如我),所以模块化的另一个好处是让不太会宏程序的人甚至完全不会宏的人,也能
用宏程序来加工。
这个帖子就是为了让广大不会宏的人也能用宏程序,将我提供的宏程序本体复制到机床里面即可。
正题:
我的帖子“数控车装B指南”中,大略讲到G65调用宏程序,各系统说明书里面也有。那么我们采用这个
方式调用宏程序本体,类似于G76之类的用法。先说说大螺距三角螺纹如何加工,大于4.5mm螺距的三角
螺纹我一般认为是大螺距,4mm或者以下的用G76加工也勉强可以。大螺距当然也可以用两个G76计算好最
后一刀然后分层加工,但仍然是单边斜进,越到后面刀具接触面增大引发震刀爆刀,所以大螺距三角螺
纹我都是采用宏程序左中右进刀,而且因为这种进刀方式去除刀尖两侧余量,可以采用比较大的吃刀。

这是凯恩帝新系统版本的G76错齿进刀,我们可以看到虽然错齿,但是加工过一半以后刀具的两边接触面
仍然过大。

按照思路我们先编辑宏程序本体:
%
O8310
IF[#24EQ#0]THEN#3000=80(如果X值空则报警)
IF[#26EQ#0]THEN#3000=81(如果Z值空则报警)
IF[#9EQ#0]THEN#3000=82(如果F值空则报警)
IF[#11EQ#0]THEN#3000=83(如果H值空则报警)
IF[#17EQ#0]THEN#3000=84(如果Q值空则报警)
IF[#18EQ#0]THEN#3000=85(如果R值空则报警)
IF[#23EQ#0]THEN#3000=86(如果W值空则报警)
IF[#1EQ#0]THEN#3000=87(如果A值空则报警)
IF[#21EQ#0]THEN#3000=88(如果U值空则报警)
(以上报警均是为了某个参数没有输入而报警提醒)
#29=#24 (终点值变量)
#31=#11 (牙高变量)
IF[#21LT0]THEN#30=-2.0
(如果U小于0则系数为负)
IF[#21GT0]THEN#30=2.0
(如果U大于0则系数为正)
IF[#21LT0]THEN#27=#29-2*#11+#21
(如果U小于0,退刀安全点=终点值-2牙高+U值)
IF[#21GT0]THEN#27=#29+2*#11+#21
(如果U大于0,退刀安全点=终点值+2牙高+U值)
G00Z#23 (移动到W定位值)
X#27 (X向安全退刀点值)
#32=#31 (牙高变化量)
N1#32=#32-#17 (牙高递减,每次减Q)
IF[#32LE0]THEN#32=0 (牙高递减小于0则等于0)
#33=#32*TAN[#1/2]
(当前层左右宽=剩余牙高*TAN[角度A除以2])
G00X[#29+#30*#32]
(当前层x为终点值+系数*当前牙高)
Z#23
初始定位
G32Z#26F#9 中间干一刀
G00X#27 退刀
Z#23 初始定位
IF[#32EQ0]GOTO4(如果牙高递减等于0跳转N4)
#28=0 (左右偏移量)
N2#28=#28+#18 (右边偏移一个刀尖R量)
IF[#28GT#33]GOTO3(如果偏移量大于左右宽则跳转N3)
G00X[#29+#30*#32](当前层x为终点值+系数*当前牙高)
Z[#23+#28] (往右偏移刀尖)
G32Z#26F#9
G00X#27
Z#23
G00X[#29+#30*#32]
Z[#23-#28] (往左偏移刀尖)
G32Z#26F#9
G00X#27
Z#23
GOTO2 (重复偏移)
N3G00X[#29+#30*#32]
Z[#23+#33] (当前层最右边)
G32Z#26F#9
G00X#27
Z#23
G00X[#29+#30*#32]
Z[#23-#33] (当前层最左边)
G32Z#26F#9
G00X#27
Z#23
IF[#32GT0]GOTO1(如果牙高大于0跳转N1)
N4G00X#27
Z#23
M99(结束返回主程序)
%
这个O8310就是宏程序本体(发那科适用)
当然我的思路或许使得此程序臃肿,或者说效率不高。应该有更简洁的宏程序,不过我脑子不太聪明,
这已经是我的极限了哈,暂时将就着用吧。

之前看到很多视频平台上拿程序来卖,专门给小白大螺距螺纹编程赚钱,我估计这个帖子会间接断了好
多人的财路?自己动手它不香吗,哈
此本体广数和凯恩帝也基本适用,不过需要改一改报警语句,因为系统不同报警语句也差别。后期会在
百度网盘上传各个系统版本的程序,暂时这个是发那科的。
我们直接将O8310复制进机床中,名字当然也是O8310,然后就不用动了,用G65调用它就可以了,比如我
们需要加工M80*6的螺纹。
大径80
底径72.2
长度50
X轴增量退刀2.0(如果是外螺纹就是2.0,内螺纹就是-2.0)
Z定位点5.0
每次进刀0.3半径值
每刀左右偏移量一个刀尖R0.6
牙高(大径80-小径72.2)/2=3.9
角度60
直接在主程序输入G65P8310X72.2Z-50.0A60.0H3.9U2.0W5.0Q0.3R0.6F6.0
变量对应关系如下

#24为x终点尺寸X
#26为z终点尺寸Z
#9为螺距F
#11为H牙高
#17为Q每刀切深。半径值
#18为R刀尖左右每次偏移量
#23为W轴向初始定位点z轴(刀具偏移量中点)
#1为A三角螺纹角度(支持60或者55度)
#21为U退刀增量值 此值为正时为外螺纹,若为负值则是内螺纹,宏程序根据U值自动判断内外螺纹
就这样,只要把宏程序O8310复制,存到机床里,每次车螺纹就用g65带参数调用它,就和g76差不多了。
如果觉得g65太麻烦,可以将这个O8310的程序内容复制到O9010,然后参数6050号的参数设置为78,注意
:O91010和6050号参数的值是对应的,假如是O9011则是6051号参数(这方法发那科适用,广数凯恩帝也
大同小异)
这样就完成了自定义g代码调用,以后车大螺距螺纹就可以直接将上面的G65P8310改成G78(改成其他也
可以,不是现有G代码就行,比如G77或者G88等等都可以),如同自己设计了一个G代码来专门加工大螺
距三角螺纹。还是有点成就感的哈。



先到这里吧,看得懂的需要的可以找我拿宏程序本体哈,下次有空再发个梯形螺纹宏程序本体吧。梯形
宏程序和这个三角螺纹的差不多,只是多了刀宽和槽底宽的变量,感兴趣的可以自己改一改就可以了。
此贴结束。
ps:我不是装B,只是希望我的数控生涯能在世界里留下印记。