□ 张盼盼 □ 吴凤彪 □ 张子英
山西能源学院 机电工程系 太原 030600
插补计算是数控系统的核心技术,也是系统软件对机床实时运动控制的关键,可以实现对刀具加工轨迹的插值细化,使刀具轨迹逼近给定零件的轮廓外形,并在各插补周期内输出机床运动的实时控制数据。中低精度数控机床在复杂曲线加工中,通常采用直线插补法或圆弧插补法,将曲线分解为多段微小线段或圆弧。这种方法的问题在于线段连接处一阶不可导,从而严重影响加工曲线的光滑性、加工精度和刀具寿命。另一方面,为提高精度,这种方法会生成大量数据点,从而造成机床负载严重,传输错误概率增大。为解决以上问题,在高端数控领域引入了非均匀有理B样条(NURBS)曲线插补控制技术,但对于具体插补算法,仍有诸多问题需要解决,笔者对此进行研究[1-2]。
数学研究表明,三维空间下任意形状曲线都可以表达为特定的NURBS曲线方程。正是由于这一特性,NURBS曲线被广泛应用于计算机辅助制图和辅助加工等领域。数控加工过程中,通过不断对NURBS曲线进行分段插补计算,最终可以近似得到所要的零件外形。插补周期为系统预设值,插补原理如下:
(1)确定初始插补点的参数ui和初始点的坐标Ci{x(ui),y(ui),z(ui)};
(2)根据设定的插补算法,利用初始插补点参数对下一处的插补点参数ui+1进行计算;
(3)将插补点参数ui+1代入NURBS曲线方程,计算新的插补点坐标Ci+1{x(ui+1),y(ui+1),z(ui+1)}。
NURBS曲线方程的可变参数为u,u是关于时间t的函数。以上插补过程实际是利用特定插补方法求取ti+1时刻参数ui+1的过程。这一插补方法的优劣直接影响实际所得曲线的逼近误差和插补计算时间,可见,插补方法是NURBS曲线插补控制的核心技术[2-4]。
泰勒展开法在数控机床控制系统中应用广泛,是一种较为传统和成熟的NURBS曲线插补方法[5-6]。
根据高等数学泰勒展开公式,NURBS曲线上参数u关于t的泰勒展开为:
(1)
式中:TS为设定插补周期,TS=ti+1-ti;HOT为展开式中三阶以上的高阶项。
根据速度定义,NURBS曲线上各插补点的瞬时速度v(ui)为曲线方程C(u)的一阶导数,可表示为:
(2)
由式(2)可得参数u的一阶导数为:
(3)
将式(3)代入式(1),忽略二阶及高阶展开项,则式(1)可简化为:
(4)
由参数ui+1表达式的推导过程可知,采用泰勒展开法的主要误差包括两个方面。
第一,忽略了二阶及高阶展开项的影响,降低了ui+1的计算精度[7-9]。
第二,如图1所示,Ci、Ci+1分别为两次计算的插补点,两点之间的实际运动轨迹为由各轴运动合成的短小直线段Li,而泰勒展开对应图中曲线段,因此在曲线和直线段之间存在弓高误差δi。显然,当被插补段曲率较大时,弓高误差δi较大。另外,当运动速度加快时,单位时间内运动距离增大,则Li增大,此时弓高误差δi也相应增大。由此可知,若要提高插补计算精度,需要在曲率增大位置密化插补点数据,同时合理控制运动速度。
▲图1 弓高误差示意图
针对传统泰勒展开法在曲率较大位置的误差问题,笔者采用割线法进行NURBS曲线插补。
实际上,任何NURBS曲线插补都是用微小直线段v(ui)TS去逼近曲线‖C(ui+1)-C(ui)‖的过程,由此可构造F(ξ)函数,将求解下一参数ui+1的计算转化为对F(ξ)求解的过程。
F(ξ)=‖C(ui+1)-C(ui)‖-v(urefi)TS
(5)
式中:v(urefi)为理想插补进给速度。
如图2所示,ξ*是函数F(ξ)的精确解,若直接对函数F(ξ)求解,则需采用牛顿迭代法等,其中涉及对F(ξ)的求导等操作,计算过程复杂,实时性差。笔者采用割线法来求取下一插补点的参数ξ,可以有效避免求导,在保证计算精度的前提下,提高计算速度。
▲图2 割线法原理
ξk及ξk-1为函数F(ξ)的近似解,利用F(ξk)及F(ξk-1)可以构造出一次函数P(ξ):
(6)
显然,函数P(ξ)的解ξk+1与函数F(ξ)的精确解ξ*更为接近,因此,可以将ξk+1作为函数F(ξ)的近似解。ξk+1为:
(7)
根据割线法基本原理,ξk+1的工程实用计算步骤如下:
(1)分别计算代入初值ξ0和ξ1;
(2)利用函数F(ξ)分别计算F(ξ0)和F(ξ1);
(3)利用式(7)计算下一插补点参数ξ2;
(4)判断|ξ2-ξ1|小于迭代误差上限是否成立,若成立,则ξ2为当前函数的近似解;否则,转入第(3)步,重新计算插补点参数ξ2,直到满足要求。
初值计算中,ξ0容易确定,可令ξ0=ui。为保证计算精度,实现快速收敛,需要对ξ1的确定方法进行研究[10-11]。
由图2可知,ξk越靠近ξk+1,所需的迭代计算次数越少,收敛速度越快。因此,可令ξk与ξk-1之间的弦长l=v(urefi)TS,则ξ1与ξ0之间的弦长l1为:
(8)
(9)
在某些情况下,上述迭代运算需要经过较多次迭代才能达到预设精度,因此耗时较长,不利于在线应用。通过控制最大迭代次数,可以有效避免以上情况的发生。
通过在MATLAB软件中模拟两种插补方法对于类8字形曲线的插补过程,可以得到插补点分布和计算时间等信息。图3和图4分别为泰勒展开法和割线法的NURBS曲线插补弓高误差变化,可见前者的最大弓高误差为0.48 μm,而后者仅为0.12 μm。另外,前者计算时间为3 892 ms,而后者为4 021 ms。由此可知,在两者运算时间接近的情况下,割线法的计算精度远高于泰勒展开法。分析原因,泰勒展开法得到的插补点均匀分布,导致在曲率较大位置的误差较大;割线法的收敛准则提高了在曲率较大位置的插补密度,因此弓高误差显著减小。与此同时,割线法计算过程包含了三阶展开,但不涉及求导过程,可以保证将计算时间控制在合理范围内。
插补计算是数控系统的核心技术,对于在复杂曲面数控加工中常用的NURBS曲线,笔者分析了NURBS曲线插补的一般性原理,对传统的NURBS曲线插补方法——泰勒展开法进行研究,并分析其在计算精度和时效性等方面的劣势。在此基础上,笔者对割线法的原理、迭代运算初值、终止判定等问题进行了研究,结果显示割线法求解时间短,精度较高,可以满足高精度数控机床在线插补控制的要求。
▲图3 泰勒展开法NURBS曲线插补弓高误差变化▲图4 割线法NURBS曲线插补弓高误差变化