253804985 发表于 2011-11-3 20:40:04

别得地方看到的我不会,请高手

是发那科加工中心宏程序。我弄了个用小刀倒大孔的倒角宏程序,然后指定了个G代码,比如-101,然后用G101呼叫,用负号就相当于模态呼叫,然后问题是每个孔位置都必须把变量写全,不写全的话它会认为这个变量为空,如何能让后面跟的孔位置只需要XY坐标就行,其他变量默认第一次的?举个例子:用12的倒角刀倒20的孔,我让它转半径6的圆G101 X0 Y0 Z-10 R1 I6 F300(Z为深度,R为进给落刀点,I为转圆的半径)X50(就是这里不行了,要把所有变量写全才可以)X100(就是这里不行了,要把所有变量写全才可以)要写成这样才可以:G101 X0 Y0 Z-10 R1 I6 F300(Z为深度,R为进给落刀点,I为转圆的半径)X50 Z-10 R1 I6 F300X100 Z-10 R1 I6 F300请高手帮忙解决下

空气中的小鱼 发表于 2011-11-4 08:18:25

我给你一个类似的实例,你可以参考下,每个孔位置如果有重复的可以不用写重复的那一个坐标
O30
#100=54    (坐标号)
#1=3       (下刀点)
#2=0.5   (每层切深)
#3=30      (加工深度)
#30=50   (圆直径)
#102=2000(转速)
#103=8   (M代码)
#104=81    (加工模式)
#21=1000   (进给)
#109=20    (刀半径)
M98 P31
(*-*-*-*-*-*-*-*-*)
X30. Y-30.
X0. Y-30.
X-30. Y-30.
X-30. Y0.
X0. Y0.
X30. Y0.
X30. Y30.
X0. Y30.
X-30. Y30.
(*-*-*-*-*-*-*-*-*)
M98 P32
M30

O31
G80 M5
M9
G52 X0 Y0 Z0
G69
#100=FI[#100]
G91 G28 Z0
G90 G0 G#100 X0 Y0
G43 H0 Z150.
M3 S#102
M#103
IF[#104 EQ 3]GO 10
IF[#104 EQ 76]GO 1
IF[#104 EQ 87]GO 1
GO 2
N1
#2=0.1
N2
G#104
IF[#4009 EQ 80]GO 3001
G98 G#104 R#1 Q#2 Z-#3 F#21 L0 K0
GO 20
N10
G66 P9221 A#1 B#2 C#3 D#30 F#21
N20
M99

O32
IF[#4012 EQ 67]GO 1
G67
N1
G80 M5
M9
G91 G28 Z0
M99
N3001
#3000=1 (#104-DATA-ERROR)

O9221 (FORMAT G66 P9221 A_ B_ C_ D_ F_)
IF[#1 EQ #0]GO 3001             /判断下刀点是否传入
IF[#2 EQ #0]GO 3002             /判断每层切深是否传入
IF[#3 EQ #0]GO 3003             /判断加工深度是否传入
IF[#7 EQ #0]GO 3004             /判断圆框直径是否传入
IF[#9*1 LE 0]GO 3005            /判断进给量是否传入或异常
#4=#5021-#*20]/计算当前X坐标点
#5=#5022-#*20]/计算当前Y坐标点
#6=#5003 /记忆当前Z轴高度                  
#10=#1+#2                     /起始下刀深度
IF[#10 GT #3]GO 3006            /判断起始下刀深度是否异常
#21=#9                        /还原主程序变量
#30=#7                        /还原主程序变量
#20=#30/2-#109                  /切宽
IF[#20 LE 0]GO 3007             /判断切宽是否异常
N1
G90 G1 Z-[#10-#2] F1500         /下刀前深度
G1 Z-#10 F100                   /到Z加工深度
G1 X[#4+#20] Y[#5] F#9          /移动至框边
G3 X[#4+#20] Y[#5] I-#20 J0   /螺旋一圈
G0 Z-[#10-.5]                   /抬高Z轴0.5,防止框底打花
G0 X#4 Y#5                     /移动至圆心位置
IF[#10 GE #3]GO 2               /判断加工深度是否到位
#10=#10+#2
IF[#10 LE #3]GO 1
#10=#3
GO 1
N2
G0 Z#6
M99
N3001
#3000=1 (A-DATA-ERROR)
N3002
#3000=2 (B-DATA-ERROR)
N3003
#3000=3 (C-DATA-ERROR)
N3004
#3000=4 (D-DATA-ERROR)
N3005
#3000=5 (F-DATA-ERROR)
N3006
#3000=6 (CHECK-#1\#2-DATA)
N3007
#3000=7 (CHECK-#30\#109-DATA)

253804985 发表于 2011-11-4 20:34:22

谢大神,关注好久了,对你的知识就是羡慕忌妒恨啊,我什么时候才能达到啊!我基础还不太好,要努力努力在努力

空气中的小鱼 发表于 2011-11-5 09:29:10

回复 3# 253804985
呵呵,好好学习,天天向上,你可以实现的。

空气中的小鱼 发表于 2011-11-6 08:09:38

回复 5# gono9981


机床会报警,GOTO只针对于当前执行的程序有效。

bruceding 发表于 2011-11-10 11:09:14

回复 5# gono9981


    不会!这个一试不就知道了还问大师!:L

gnx2011 发表于 2011-11-11 19:53:52

一步一步来

luoxin 发表于 2012-1-9 03:43:11

谁教教我OKUMA 车床的宏程序啊:loveliness:

朱朱 发表于 2021-11-24 09:04:16

学习了,感谢大家

朱朱 发表于 2021-11-24 14:43:27

感谢楼主,学习了
页: [1] 2 3
查看完整版本: 别得地方看到的我不会,请高手