恭喜,你发布的帖子
发布于 2022-06-04 20:28:07
39楼
神奇的G641连续路径模式
——再谈椭圆加工
前段时间应网友的提问编写的一个关于加工椭圆的程序。当再次查看当时写的程序时,发现该程序还有很多需要改进和提高的地方。本文将介绍,通过IF条件区分出空行程和增加G641连续路径模式对前面编写的程序进行改进和提高。
为了方便问题的讲解,我们先来看看上次编写的程序。
N100 DEF INT _I, _J ; 定义循环控制变量
N110 DEF REAL _A, _B ; 定义椭圆长轴和短轴变量
N120 G90G54G94 ; 初始化程序代码
N130 G0 X0 Y0 Z500 ; 安全位置
N140 T="CUTTER 10" M6 M3 S1000 ; 换刀
N150 WORKPIECE(,"",,"RECTANGLE",0,0,-100,-80,170,110) ; 设置毛坯
N160 G0 Z5 ; 逼近工件
N170 FOR _I=0 TO 4 ; 分5次循环铣削
N180 _A=80+(5-_I)*5 _B=50+(5-_i)*5 ; 椭圆长轴短轴
N190 G1 X=_A+10 F3000 ; 运动到加工起点
N200 G42 Z-2 ; Z向下刀, 刀具半径右补偿
N210 FOR _J=0 TO 360 ; 通过循环每度计算一次X轴和Y轴的坐标
N220 X=_A*COS(_J) Y=_B*SIN(_J)
N230 ENDFOR ; 内循环结束
N240 G0 Z5 ;加工完一刀抬刀
N250 G40 ; 取消刀具补偿
N260 ENDFOR ; 外循环结束
N270 X0 Y0 Z500 ; 加工完成退刀
N280 M30
图1
上述程序在N210到N230行运用了一个FOR循环,用直线插补G1加工360条足够短直线段来达到加工椭圆的目的,这是数控编程中常用的直线段带代替曲线的加工方法。上述程序从N170到N260行,再用一个FOR循环,通过不断改变椭圆长轴和短轴的方法,分5次去除椭圆以外的所有加工余量。这是比较典型的循环编程的思路。当笔者再次模拟上述程序时,发现运行上述程序循环时间是10分23秒(图1所示),直觉告知笔者,这个这样的程序加工效率太低。
因此,笔者试着通过IF条件,将原程序做如下的修改:
N100 DEF INT _I, _J ; 定义循环控制变量
N110 DEF REAL _A, _B, _X, _Y ; 定义椭圆长轴和短轴变量, X和Y轴坐标变量
N120 G90G54G94 ; 初始化程序代码
N130 G0 X0 Y0 Z500 ; 安全位置
N140 T="CUTTER 10" M6 M3 S1000 ; 换刀
N150 WORKPIECE(,"",,"RECTANGLE",0,0,-100,-80,170,110) ; 设置毛坯
N160 G0 Z5 ; 逼近工件
N170 FOR _I=0 TO 4 ; 分5次循环铣削
N180 _A=80+(5-_I)*5 _B=50+(5-_i)*5 ; 椭圆长轴短轴
N190 G1 X=_A+10 F3000 ; 运动到加工起点
N200 G42 Z-2 ; Z向下刀, 刀具半径右补偿
N210 FOR _J=0 TO 360 ; 通过循环每度计算一次X轴和Y轴的坐标
N220 _X=_A*COS(_J) _Y=_B*SIN(_J)
N230 IF (_X<-86) OR (_X>86) OR (_Y<-56) OR (_Y>56) ; 判断是否是空行程
N240 G0 X=_X Y=_Y ; 空行程快速移动
N250 ELSE
N260 G1 X=_X Y=_Y ; 切削行程
N270 ENDIF
N280 ENDFOR ; 内循环结束
N290 G0 Z5 ; 加工完一刀抬刀
N300 G40 ; 取消刀具补偿
N310 ENDFOR ; 外循环结束
N320 X0 Y0 Z500 ; 加工完成退刀
N330 M30
上述程序中,高亮显示部分通过IF条件,判断坐标点是否处于毛坯外,在毛坯外就是空行程,否则是正常加工行程。但是修改后,笔者并未得到预想的效果,加工时间不但没有明显缩短,反而多了1秒,即循环时间为10分24秒。
笔者再次将程序做如下修改:
N100 DEF INT _I, _J ; 定义循环控制变量
N110 DEF REAL _A, _B, _X, _Y ; 定义椭圆长轴和短轴变量, X和Y轴坐标变量
N120 G90G54G94 ; 初始化程序代码
N130 G0 X0 Y0 Z500 ; 安全位置
N140 T="CUTTER 10" M6 M3 S1000 ; 换刀
N150 WORKPIECE(,"",,"RECTANGLE",0,0,-100,-80,170,110) ; 设置毛坯
N160 G0 Z5 ; 逼近工件
N170 FOR _I=0 TO 4 ; 分5次循环铣削
N180 _A=80+(5-_I)*5 _B=50+(5-_i)*5 ; 椭圆长轴短轴
N190 G1 X=_A+10 F3000 ; 运动到加工起点
N200 G42 Z-2 ; Z向下刀, 刀具半径右补偿
N210 G641 ; 连续路径模式
N220 FOR _J=0 TO 360 ; 通过循环每度计算一次X轴和Y轴的坐标
N230 _X=_A*COS(_J) _Y=_B*SIN(_J)
N240 IF (_X<-86) OR (_X>86) OR (_Y<-56) OR (_Y>56) ; 判断是否是空行程
N250 G0 X=_X Y=_Y ; 空行程快速移动
N260 ELSE
N270 G1 X=_X Y=_Y ; 切削行程
N280 ENDIF
N290 ENDFOR ; 内循环结束
N300 G0 G60 Z5 ; 加工完一刀抬刀, 准停模式
N310 G40 ; 取消刀具补偿
N320 ENDFOR ; 外循环结束
N330 X0 Y0 Z500 ; 加工完成退刀
N340 M30
高亮显示的N210行开启连续路径模式,而N300行在走完一个椭圆周后,回到准停模式。修改后的程序的循环时间有原来的10分23秒减少到了50秒(图2所示)。
图2
初一看来,这太神奇了,有些不可思议。其实,在我们未条件N210行的G641时,机床为准停模式,即每走一段编程的线段,机床都会准确的停到编程的坐标点再运行下一段线段,这样,X轴和Y轴不停的处于加速和加速的状态,并未达到编程的进给速度F3000,更未达到快速移动的G0的速度。因此,分开空行程走刀和非空行程走刀并未达到预想的效果。当我们增加N210行的G641后,机床开启了连续路径模式,即机床尽可能保持相同的运行速度,并会将线段之间的角度进行适当的圆滑,这样不但提高了加工效率,同时也会提高表面粗糙度。
请填写推广理由:
分享
只看
楼主