Re: [问题] CNC macro 如何写,苦手中

楼主: choral   2016-06-27 17:34:20
※ 引述《redapple34 (apple)》之铭言:
: 最近在学macro编成,使用新代控制器,使用上跟发那科大同小异,语法也都相同,
: 我目前想编写一个简易面铣加工,以工作台面为程式Z轴0点,目标是把工件高度
: 铣到成品尺寸,我想编写到向人机接口一样输入我要的数值完成加工,免除繁杂
: 的计算,使用机台是小龙门,macro语法逻辑我还不是很清楚是如何运作,希望各
: 位高手指导指导
: 以下为我目前写的程式(有很多错误请见谅,因未完成不知道如何写):
: //(面铣加工单向进刀)
: #1=230. //(粗铣转速)
: #2=300. //[粗铣进给速度F(mm/min)]
: #3=320. //(精铣转速)
: #4=180. //[精铣进给速度F(mm/min)]
: #5=25.4 //(成品高度)
: #6=2. //(粗铣切削深度)
: #7=0.3 //(精铣切削深度)
: #8=300. //(X轴正向进给行程)
: #9=-300. //(X轴反向进给行程)
: #10=100. //(面铣刀具直径)
: #11=#10*0.8 //(切削总面积百分比)
: #12=80. //(成品切削总宽,Y轴)
: #13=#5+#7 //(粗铣最终高度)
: #14=10. //(提刀安全高度)
: G43 H1
: N010 G00 G90 G92 X0. Y0. Z0. S#1 M03; //(将刀具移动至起始点,粗铣)
: N012 G91 G01 Z-#6 F#2
: N013 X#8;
: N014 G90 G00 Z#14;
: N015 G91 G00 X#9 Y#11;
: N016 G91 G01 Z-#6
: N017 X#8;
: N018 G90 G00 Z#14;
: N019 IF (Z#5+#7>=Z#13) AND (#12<#11) THEN GOTO N020;
: END IF;
: N020 G91 G01 Z-#7 S#3 F#4 //(精铣)
: N021 X#8;
: N022 G90 G00 Z#14;
: N023 G91 G00 X#9 Y#11;
: N024 G91 G01 Z-#7
: N025 X#8;
: N026 G90 G00 Z#14;
: N027 IF (#12<#11) THEN END IF;
: N028 G28 Z#14
: N029 G28 X0.
: N030 M30
: 以上为程式
: 目前先写一个看看
由于原po的macro都是存成固定数值 因此并不会随着加工程序或次数变化
也因此原po的IF并不会等于 TRUE
由于原po在执行IF的前一行已经把刀子提到Z#14的工件座标位置
因此用座标来当判断依据也没用
所以在不变动目前macro设定的前提下 得新增两个macro做暂存区之用
一个储存粗胚高度 #15
一个为计数用#16=0
一个储存铣削后高度 #17=#15-#6*#16
目前建议用WHILE
当执行过一次粗铣 #16就+1
WHILE(#17>#13)
{
//执行粗铣 把整个面都铣掉
G91 G01 Z-#6*#16 F#2
X#8;
G90 G00 Z#14;
G91 G00 X#9 Y#11;
G91 G01 Z-#6*#16
X#8;
G90 G00 Z#14;
//上述指令执行完成后 #16+1
#16=#16+1
}
同时#17的数字也会改变
从#17=#15-#16*0=#15
变成#17=#15-#16*1=#15-#16
只要WHILE的启动条件不被满足 也就是 #17<=#13时(粗铣后的高度<=精铣预留的高度)
程式就会忽略WHILE
往下一行读
接着就把精铣的指令接着写就好
由于原po的图 精铣应该只执行一次
所以就不用任何的loop了
大致上是这样
有错误烦请板友指正 感谢!
作者: redapple34 (apple)   2016-06-27 20:21:00
感恩 我在写看看
作者: honoYang (......)   2016-07-01 21:11:00
应该有个功能 插入循环 可以用对话教导式生出Macro在F2(程式编辑)里

Links booklink

Contact Us: admin [ a t ] ucptt.com