FANUC数控铣床编程实例30-两层嵌套分层铣削圆环槽宏程序
本实例是一个用球刀分层铣削圆环槽的宏程序示例。下面图纸所示为一甜甜圈凹模,可以使用球刀沿截面线步进走整圆来加工,需要编制两层嵌套宏程序。
具体截面相关计算尺寸如下图所示:
工件坐标系设置在工件上表面中心,使用R5球刀加工,上图中刀具中心所走轨迹为半径R15半圆,为实现分层加工,将截面半径设置为#4,则刀心的半径为【#4-5】。
以小截面圆心为坐标原点,使用圆的参数方程表达关系,对于任意角度#1,对应的刀具球心的水平坐标是[#4-5]*COS[#1]
垂直坐标是[#4-5]*SIN[#1]
#1的变化范围是[180,360],从360的初始值逐渐递减,直到180,所以此时算出的水平和垂直数值是有正负号的,水平方向,R60之外正值相加,R60以内,加负值,实际为减去。因为截面圆圆心与工件坐标系等高,在R60的中心圆上,所以对于球刀刀尖:
X坐标是#2=60+[#4-5]*COS[#1],相应位置要加工的整圆半径也是#2
Z坐标是#3=[#4-5]*SIN[#1]-5
刀具在截面圆上随着#1的角度的变化,每到达一个位置,则以当前点到坐标原点的水平距离为半径加工一整圆,直到走完截面半圆的所有位置。
注意:在截面圆上的移动要先移动X坐标,再移动Z坐标,否则会产生过切。此处是否考虑周全?
走完一层之后,#4半径扩大,再加工一层,直到加工到R20
整个工件的加工参考程序如下:
G90G54G40G1Z100F1000M03S1500
G1X75Y0
Z5
#4=6
WHILE[#4LE20]DO2
#1=360
WHILE[#1GE180]DO1
#2=60+[#4-5]*COS[#1]
#3=[#4-5]*SIN[#1]-5
G1X#2F300
G1Z#3
G17G3I[-#2]
#1=#1-5
END1
#4=#4+2
END2
G1Z5F200
Z100F1000
M5
M30
毛坯装夹图:
中间过程不同层的加工效果如下:
最终结果半剖效果图
零件加工仿真结果
但仔细观察结果发现,当刀具沿截面线到达最低点之后,仍然是先移动X坐标,再走Z坐标就会产生过切,如下图所示:
如何解决这个问题?需要判断#1是否过了270度,程序修改如下:
G90G54G40G1Z100F1000M03S1500
G1X75Y0
Z5
#4=6
WHILE[#4LE20]DO2
#1=360
WHILE[#1GE180]DO1
#2=60+[#4-5]*COS[#1]
#3=[#4-5]*SIN[#1]-5
IF[#1LE270]GOTO 10
G1X#2F300
G1Z#3
GOTO 20
N10
G1Z#3
G1X#2
N20
G17G3I[-#2]
#1=#1-5
END1
#4=#4+2
END2
G1Z5F200
Z100F1000
M5
M30
解释一下上面程序:中间加了IF判断和跳转指令,#1角度由360逐渐减小,当程序执行到IF[#1LE270]GOTO 10这行时,先做判断,当还大于270时,后面的跳转到10不执行,此时执行其下的
G1X#2F300
G1Z#3
GOTO 20
上面GOTO 20这个跳转是无条件跳转,因为按照上面的方式移动了刀具,就不用执行N10后的移动了,接着执行WHILE里的其他内容至结尾,#1=#1-5,变量递减,再返回,接着判断条件,执行代码,直到#1满足跳转条件,则直接跳过
G1X#2F300
G1Z#3
跳转到
N10
G1Z#3
G1X#2
简单地说就是:不满足条件判断IF[#1LE270]时,执行
G1X#2F300
G1Z#3
GOTO 20
跳过
N10
G1Z#3
G1X#2,
满足条件时,跳过
G1X#2F300
G1Z#3
GOTO 20
执行
N10
G1Z#3
G1X#2
上面运用了一个条件判断和一个无条件判断完美解决了这个问题,仿真结果见下图:
热门跟贴