回复:NC程序编程点滴

已锁定

工控一阳指King

  • 帖子

    183
  • 精华

    2
  • 被关注

    19

论坛等级:侠士

注册时间:2010-08-13

普通 普通 如何晋级?

发布于 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后,机床开启了连续路径模式,即机床尽可能保持相同的运行速度,并会将线段之间的角度进行适当的圆滑,这样不但提高了加工效率,同时也会提高表面粗糙度。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SINUMERIK

共有25766条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。