□ 張盼盼 □ 吳鳳彪 □ 張子英
山西能源學院 機電工程系 太原 030600
插補計算是數(shù)控系統(tǒng)的核心技術,也是系統(tǒng)軟件對機床實時運動控制的關鍵,可以實現(xiàn)對刀具加工軌跡的插值細化,使刀具軌跡逼近給定零件的輪廓外形,并在各插補周期內輸出機床運動的實時控制數(shù)據(jù)。中低精度數(shù)控機床在復雜曲線加工中,通常采用直線插補法或圓弧插補法,將曲線分解為多段微小線段或圓弧。這種方法的問題在于線段連接處一階不可導,從而嚴重影響加工曲線的光滑性、加工精度和刀具壽命。另一方面,為提高精度,這種方法會生成大量數(shù)據(jù)點,從而造成機床負載嚴重,傳輸錯誤概率增大。為解決以上問題,在高端數(shù)控領域引入了非均勻有理B樣條(NURBS)曲線插補控制技術,但對于具體插補算法,仍有諸多問題需要解決,筆者對此進行研究[1-2]。
數(shù)學研究表明,三維空間下任意形狀曲線都可以表達為特定的NURBS曲線方程。正是由于這一特性,NURBS曲線被廣泛應用于計算機輔助制圖和輔助加工等領域。數(shù)控加工過程中,通過不斷對NURBS曲線進行分段插補計算,最終可以近似得到所要的零件外形。插補周期為系統(tǒng)預設值,插補原理如下:
(1)確定初始插補點的參數(shù)ui和初始點的坐標Ci{x(ui),y(ui),z(ui)};
(2)根據(jù)設定的插補算法,利用初始插補點參數(shù)對下一處的插補點參數(shù)ui+1進行計算;
(3)將插補點參數(shù)ui+1代入NURBS曲線方程,計算新的插補點坐標Ci+1{x(ui+1),y(ui+1),z(ui+1)}。
NURBS曲線方程的可變參數(shù)為u,u是關于時間t的函數(shù)。以上插補過程實際是利用特定插補方法求取ti+1時刻參數(shù)ui+1的過程。這一插補方法的優(yōu)劣直接影響實際所得曲線的逼近誤差和插補計算時間,可見,插補方法是NURBS曲線插補控制的核心技術[2-4]。
泰勒展開法在數(shù)控機床控制系統(tǒng)中應用廣泛,是一種較為傳統(tǒng)和成熟的NURBS曲線插補方法[5-6]。
根據(jù)高等數(shù)學泰勒展開公式,NURBS曲線上參數(shù)u關于t的泰勒展開為:
(1)
式中:TS為設定插補周期,TS=ti+1-ti;HOT為展開式中三階以上的高階項。
根據(jù)速度定義,NURBS曲線上各插補點的瞬時速度v(ui)為曲線方程C(u)的一階導數(shù),可表示為:
(2)
由式(2)可得參數(shù)u的一階導數(shù)為:
(3)
將式(3)代入式(1),忽略二階及高階展開項,則式(1)可簡化為:
(4)
由參數(shù)ui+1表達式的推導過程可知,采用泰勒展開法的主要誤差包括兩個方面。
第一,忽略了二階及高階展開項的影響,降低了ui+1的計算精度[7-9]。
第二,如圖1所示,Ci、Ci+1分別為兩次計算的插補點,兩點之間的實際運動軌跡為由各軸運動合成的短小直線段Li,而泰勒展開對應圖中曲線段,因此在曲線和直線段之間存在弓高誤差δi。顯然,當被插補段曲率較大時,弓高誤差δi較大。另外,當運動速度加快時,單位時間內運動距離增大,則Li增大,此時弓高誤差δi也相應增大。由此可知,若要提高插補計算精度,需要在曲率增大位置密化插補點數(shù)據(jù),同時合理控制運動速度。
▲圖1 弓高誤差示意圖
針對傳統(tǒng)泰勒展開法在曲率較大位置的誤差問題,筆者采用割線法進行NURBS曲線插補。
實際上,任何NURBS曲線插補都是用微小直線段v(ui)TS去逼近曲線‖C(ui+1)-C(ui)‖的過程,由此可構造F(ξ)函數(shù),將求解下一參數(shù)ui+1的計算轉化為對F(ξ)求解的過程。
F(ξ)=‖C(ui+1)-C(ui)‖-v(urefi)TS
(5)
式中:v(urefi)為理想插補進給速度。
如圖2所示,ξ*是函數(shù)F(ξ)的精確解,若直接對函數(shù)F(ξ)求解,則需采用牛頓迭代法等,其中涉及對F(ξ)的求導等操作,計算過程復雜,實時性差。筆者采用割線法來求取下一插補點的參數(shù)ξ,可以有效避免求導,在保證計算精度的前提下,提高計算速度。
▲圖2 割線法原理
ξk及ξk-1為函數(shù)F(ξ)的近似解,利用F(ξk)及F(ξk-1)可以構造出一次函數(shù)P(ξ):
(6)
顯然,函數(shù)P(ξ)的解ξk+1與函數(shù)F(ξ)的精確解ξ*更為接近,因此,可以將ξk+1作為函數(shù)F(ξ)的近似解。ξk+1為:
(7)
根據(jù)割線法基本原理,ξk+1的工程實用計算步驟如下:
(1)分別計算代入初值ξ0和ξ1;
(2)利用函數(shù)F(ξ)分別計算F(ξ0)和F(ξ1);
(3)利用式(7)計算下一插補點參數(shù)ξ2;
(4)判斷|ξ2-ξ1|小于迭代誤差上限是否成立,若成立,則ξ2為當前函數(shù)的近似解;否則,轉入第(3)步,重新計算插補點參數(shù)ξ2,直到滿足要求。
初值計算中,ξ0容易確定,可令ξ0=ui。為保證計算精度,實現(xiàn)快速收斂,需要對ξ1的確定方法進行研究[10-11]。
由圖2可知,ξk越靠近ξk+1,所需的迭代計算次數(shù)越少,收斂速度越快。因此,可令ξk與ξk-1之間的弦長l=v(urefi)TS,則ξ1與ξ0之間的弦長l1為:
(8)
(9)
在某些情況下,上述迭代運算需要經過較多次迭代才能達到預設精度,因此耗時較長,不利于在線應用。通過控制最大迭代次數(shù),可以有效避免以上情況的發(fā)生。
通過在MATLAB軟件中模擬兩種插補方法對于類8字形曲線的插補過程,可以得到插補點分布和計算時間等信息。圖3和圖4分別為泰勒展開法和割線法的NURBS曲線插補弓高誤差變化,可見前者的最大弓高誤差為0.48 μm,而后者僅為0.12 μm。另外,前者計算時間為3 892 ms,而后者為4 021 ms。由此可知,在兩者運算時間接近的情況下,割線法的計算精度遠高于泰勒展開法。分析原因,泰勒展開法得到的插補點均勻分布,導致在曲率較大位置的誤差較大;割線法的收斂準則提高了在曲率較大位置的插補密度,因此弓高誤差顯著減小。與此同時,割線法計算過程包含了三階展開,但不涉及求導過程,可以保證將計算時間控制在合理范圍內。
插補計算是數(shù)控系統(tǒng)的核心技術,對于在復雜曲面數(shù)控加工中常用的NURBS曲線,筆者分析了NURBS曲線插補的一般性原理,對傳統(tǒng)的NURBS曲線插補方法——泰勒展開法進行研究,并分析其在計算精度和時效性等方面的劣勢。在此基礎上,筆者對割線法的原理、迭代運算初值、終止判定等問題進行了研究,結果顯示割線法求解時間短,精度較高,可以滿足高精度數(shù)控機床在線插補控制的要求。
▲圖3 泰勒展開法NURBS曲線插補弓高誤差變化▲圖4 割線法NURBS曲線插補弓高誤差變化