曹智梅
(广东松山职业技术学院,韶关 512126)
对于数控系统来说,插补就是对曲线的起点、终点之间的空间进行数据密化,从而形成要求的轮廓轨迹的过程。插补是数控技术的核心,在插补过程中,密化的点如何选择,按照什么规律进行计算,这就是插补算法要研究的核心问题。在数控加工中,常常遇到非圆曲线的加工,而一般的数控系统只配备了直线、圆弧等少数插补功能,因此给定曲线的理论轨迹不一定能直接处理,需要将给定的理论轨迹按允许的误差进行离散逼近,生成一系列直线段(或圆弧段)所描述的刀具运动轨迹。
在采用直线逼近曲线的方式中,目前应用较广的有等参数插补和等误差插补,两种插补方法各有优缺点。等参数法计算简单,但对于曲率变化较大的曲线会带来插补误差在局部超过允许误差,从而降低加工的质量;等误差法在控制插补误差上具有较好的功能,但其节点的计算涉及到四次方程的求解,计算量大,使用受限。在目前流行的各种CAD/CAM软件中,采取的方法是通过控制最小的加工误差生成一系列的直线段,其程序的数量大,加工时间长,识别度差。
等参数插补方法在实际应用中还涉及到参数的选取问题,文献[1]中分析了不同参变量(也就是等参数插补中的参数)对椭圆插补误差的影响,这些分析说明选取的参变量不同,其插补产生误差的大小和位置也不同,在同一位置采用不同参变量其误差会有较大差异,这也给等参数插补的使用带来了一定的限制。
本文在研究等参数插补算法的基础上,提出一种新的参数自适应插补算法,并在椭圆曲线加工中进行了验证。参数自适应插补算法是结合等参数插补的优势,借用等误差逼近的原理,将等参数中的等参数设置成变参数,且能适用于不同的参数选取,通过参数增量的改变来实时调节插补的误差,以确保插补误差满足允许条件。在保证加工质量的前提下,参数自适应插补比等参数插补算法的有更好的加工质量,比等误差插补算法有更少的计算量。通过实例应用得出该方法既具有等参数插补计算简单的优点,又能兼顾到最大误差的控制,具有良好的应用性和推广性。
非圆曲线的方程表示为 y = f(x),当以自变量x作为参变量时,曲线按等参数Δx进行节点分割,即每两个相邻节点间的的参数差值均相同,如图1所示,D点为曲线上一点,其坐标为(xi,yi),E点为变量增加了Δx后所对应的点,其坐标为( xi+1,yi+1),DE之间通过直线插补,依次例推,完成了整个曲线的插补。
图1 等参数插补示意图
当曲线的方程不便直接表达时,可以转化为参数方程表示:
对于参数方程,在等参数插补中,主要是保证相邻两点间的参数增量为一常数tΔ,当tΔ一定时,插补的节点可以直接计算得出。
等参数插补方法中只考虑了两点间的参数增量,整个过程计算方便,但是对于各相邻插补直线段的插补误差却并没有考虑,一般情况下,为了保证插补误差,只能是最大限度的减小参数增量,增加走刀的次数,对于曲率变化较大的曲线,等参数插补算法的应用受到了较大的限制。
要保证在插补过程中的计算方便,又要考虑到对最大插补误差的控制。如果能将各直线段的插补误差用公式算出,再对比插补误差和允许误差,当插补误差大于允许误差时,减少等参数插补中的参数增量,通过控制参数增量,达到控制插误差的目的。
如图2所示,即先在曲线 y = f(x)上取相邻两点D、E,两点间的参数增量为Δx,D点对应的参数为 xi,函数值为 yi,E点对应的参数为 xi+1,函数值为 yi+1,则 xi+1=xi+Δx,接下来要计算直线DE的插补误差。求解直线的插补的最大误差,就是要在曲线 y = f(x)上要找到一条直线MN,此直线既与曲线相切于N点,又与直线DE平行,其切点N到直线DE的距离即是最大插补误差。要计算距离,就先要计算切点N坐标,计算曲线时求出的点即为切点N。这种求解插补误差的方法是比较准确,但是其切点N的坐标求解比较复杂的,特别是对某些导数不易求出的曲线更是比较难实现[2~5]。
图2 直线插补误差计算示意图
由于直线插补误差算法比较复杂,在研究等参数插补算法的基础上,引入中间参数点概念,用中间参数点来替代相切点,减少了对曲线求导的过程,用中间参数点到插补直线的距离近似作为插补误差,这种方法大大减少计算量,同时对数值准确性的影响却很小,有很好的适用性。如图3所示,在 y = f(x)曲线上取两点D、E,两点间的参数增量为Δx,D点对应的参数为xi,函数值为 yi,E点对应的参数为 xi+1,函数值为 yi+1,在DE曲线段上上取一点F,使得将F点对应的参数为D、E这两点参数的平均值,即点F对应的参数为通过参数可计算出中间参数点F的坐标,计算此时F点到直线DE的距离作为插补误差。
图3 直线插补误差近似计算示意图
等参数直线插补误差计算的过程中涉及到直线方程的表达,点到直线距离的计算。
如图4所示,D、E为非圆曲线上的两点,已知两点的坐标为D(x1,y1)、E(x2,y2),若x1=x2,则DE直线的方程可写为x=x1,改为一般式为:
DE直线方程为y-y1=k(x-x1),改写成一般式为:
图4 点到直线距离示意图
直线的方程一般式为Ax+By+C=0,其中A、B、C为常数,且 A2+B2≠0,点F(x3,y3)到该方程的距离为:
将式(1)与直线方程的一般式进行对照,则此时 A=1,B=0,C=-x1。若要求点F( x3,y3)到DE连线的距离,则将此时的A、B、C的数值,F点的坐标代入式(3)可求出点F点到直线DE的距离为:
将式(2)与直线方程的一般式进行对照,则此时 A=-k,B=1,C=kx1-y1。若要求点F(x3,y3)到DE连线的距离,则将此时的A、B、C的数值、F点的坐标代入式(3)可求出点F点到直线DE的距离为:
在参数自适应算法中,一般曲线方程采用参数方程的形式。参数自适应算法的原理如下。
已知曲线的方程可表示为x=X(t),y=Y(t),参数的取值区间为[t1, tn]。先在已知曲线上取相邻两点D和E,D点对应的参数为ti,E点对应的参数为ti+1,设 ti+1=ti+Δt,设D点、E点的坐标为(xi,yi),(xi+1,yi+1),则有:
此时,F点到弦DE的距离d可通过式(5)进行求解(若xi=xi+1则用式(4)进行求解),将d也可看作直线插补的最大误差。将求得的距离d与允许误差d允进行比较,若此时d>d允,则减少参数增量Δt;若此d≤d允,则DE两点间直接插补满足误差条件,可以直接进行插补,如此例推,可以计算出所有的插补节点,完成整个曲线的加工。通过在加工过程中适时调整参数的增量Δt,使直线插补满足误差条件。
在进行自适应参数插补运算时,首先要给定一个刀具起点位置(参数 t1所对应的位置),给定加工的允许插补误差d允,设定一个合理的初始参数增量Δt,误差Δt设置过大,增加了循环计算的次数,Δt设置过小则起不到减少走刀次数的作用。
在设计算法流程框图时,有三个条件判断。第一个条件判断 ti≤tn是判断是否已经插补到终点,如果到终点则结束程序,如果没有到终点,则计算当前点D的坐标,下一插补点E的坐标,和参数中间点F的坐标。第二个条件判断是判断D点的横坐标是否与E点的横坐标相等,若xi=xi+1,则F点到直线DE的距离d =xi′-xi;若xi≠xi+1,则是比较距离d与允许误差d允的大小,当d≤d允,走直线DE,当d>d允时,减少插补的参数增量Δt,用新的Δt重新计算点的坐标,直至误差满足允许条件。走完这段直线DE后,将此时的终点所对的参数值赋值给下一个起点ti=ti+Δt,重新开始第一个条件判断。图5为参数自适应插补算法流程。
图5 参数自适应插补算法流程图
为了验证参数自适应插补算法的正确性,现以加工椭圆曲线为例,其椭圆方程为y = 30sint,t的取值区间为[0,360],采用参数方程进行加工,设加工的起点为(50,0),在等参数插补时,采用参数自适应插补算法时我们取Δt = 2,根据参数自适应算法,利用FAUNC机床自带的循环语句[6],编写宏程序O0001。
O0001 程序名称
#1=0给参变量t赋初值
#2=50椭圆的长半轴
#3=30椭圆的短半轴
#18=0.005设定允许插补误差
S1500 M03主轴正转
G54 G90 G40 G17设定加工坐标系
G00 X#2 Y0 Z50定位到起点
Z2 Z向快速定位
G1 Z-1 Z向下刀
WHILE [#1 LE 360] DO 1当参数t360≤时循环开始
#4=2给参数增量tΔ赋值
GOTO 2 跳转到N2程序段
N1 #4=0.7*#4减少tΔ
N2 #14=#1+#4 计算下一点E的参数
#5=#2*COS[#1] 计算当前点D的x坐标
#6=#3*SIN[#1] 计算当前点D的y坐标
#7=#2*COS[#14] 计算下一点E的x坐标
#8=#3*SIN[#14] 计算下一点E的y坐标
IF[#5 EQ#7] GOTO 3 当D、E两点的横坐标相等时跳转到N3程序段
#9=[#8-#6]/[#7-#5] 计算直线DE的斜率
#10=#1+0.5*#4 计算中间点F的参数
#11=#2*COS[#10] 计算中间点F的x坐标
#12=#3*SIN[#10] 计算中间点F的y坐标
#13=ABS[#12-
#9*#11+#9*#5-#6] 计算式(5)的分子
#15=SQRT[1+#9*#9] 计算式(5)的分母
#17=#13/#15 计算F到直线DE的距离d
GOTO 4 跳转到N4程序段
N3 #17=ABS[#11-#5] 计算F到直线DE的距离d
N4 IF [#17 GT #18] GOTO 1当允d>d时,跳转到N1程序段
G01 X#7 Y#8 F500 走DE直线
#1=#1+#4 将此时终点的参数赋值给下一个起点的参数
END 1 循环结束
G1 Z5 抬刀
G0Z50 快速抬刀
G0X0 Y0 快速定位到XY的中心
M05 主轴停止
M30 程序结束
为了更好的对比等参数插补算法与参数自适应插补算法,对椭圆曲线进行加工。由于椭圆曲线为轴对称图形,仅对第一象限的四分之一的椭圆加工进行对比。其加工的四分之一椭圆尺寸如图6所示,要求允许误差为0.005。
图6 加工的四分之一椭圆
对于图6,如果采用等参数插补算法,取参数角t为参变量,t∈[0 , 90],参数增量Δt为2,此时的走刀次数为45,再通过直线插补误差算法可计算出此时的最大插补误差和最小插补误差分别为0.0076和0.0046。其插补误差较均匀,但部分位置不满足允许插补误差,即不满足质量要求。采用本文1.3所介绍的近似算法与1.2确准算法间的最大误差为9. 9×10-15,说明其近似算法能完全满足插补要求。取横坐标x为参变量时,x∈[0 , 50],此时对应于每一个x,有一个y对应,此时的走刀次数为50,再通过直线插补误差公式可计算出此时的最大插补误差和最小插补误差分别为0.248和0.0015,其插补误差不均匀,且部分位置不满足允许插补误差,即不满足质量要求。等参数直线插补中,当插补误差不满足允许条件时,唯一的办法只能是减少参数增量,当然此时走刀次数也会成倍的增加。
当采用参数自适应插补算法时,程序O0001是取参数角t为变量,初始参数增量Δt为2的参数自适应编程,此时的插补次数为63(可以通过在程序中设置计数变量得到),其最大插补误差和最小插补误差分别为0.005和0.0046,其插补误差的变化幅度非常小,其加工曲线的误差均匀,加工质量好。如果取横坐标x为参变量,初始参数增量Δx = 1,此时的插补次数为65,其最大插补误差和最小插补误差分别0.005和0.0015。不管以参数角t还是横坐标x作为参变数,采用参数自适应插补算法均能满足插补误差条件。
参数自适应插补算法与等参数插补算法结果对比见表1。从结果我们可以看出,参数自适应插补算法虽然走刀次数有所增加,但其计算简单,加工误差均匀,加工质量好,走刀次数不依赖于参数增量的大小,且参数变量的选择对插补误差的影响较小[7,8]。
本文在研究等参数插补的基础上,提出参数自适应算法,主要研究工作有:
表1 两种插补算法对比分析
1) 以参数中间点替代相切点来计算插补误差,简化的计算过程,且引起的误差一般为10-10数量级甚至更小,对计算结果的影响可以忽略;
2) 在插补过程中,适时改变参数增量的大小,来控制插补误差满足许可条件;
3) 提出参数自适应直线插补算法,给出了算法的插补原理和算法流程图;
4) 针对椭圆曲线的加工,将参数自适应插补和等参数插补方法进行对比,验证算法的正确性和适用性。
[1] 陈小红,姜晓强,曹秦岗.椭圆变量编程插补误差分析与应用[J].机床与液压,2012,40(16):59-63.
[2] 王爱群,李梦群,冯裕强.数控加工理论与实用技术[M].北京:机械工业出版社,2009,5
[3] 金艳玲,杨东武,姚东成.数控加工中非圆曲线轮廓的三圆弧逼近方法[J].组合机床与自动化加工技术,2013,(9):110-114.
[4] 文豪,高健.数控系统等误差直线逼近节点算法分析与改进[J].机械设计与制造,2013,(9):217-219+223.
[5] 赵忠华,商潇潇.基于NURBS曲线的非圆曲线数控插补算法研究[J].机械工程与自动化,2013,(4):24-26.
[6] 陈海舟.数控铣削加工宏程序及应用实例(第二版)[M].北京:机械工业出版社,2007,12.
[7] 孙海洋,范大鹏,李玲.一种参数曲线实时数控插补计算新方法[J].国防科技大学学报,2008,30(3):59-63.
[8] 游有鹏,王珉,朱剑英.参数曲线的自适应插补算法[J].南京航空航天大学学报,2000,32(6):667-671.