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

上面运用了一个条件判断和一个无条件判断完美解决了这个问题,仿真结果见下图: