曹智梅
(廣東松山職業(yè)技術(shù)學(xué)院,韶關(guān) 512126)
對于數(shù)控系統(tǒng)來說,插補(bǔ)就是對曲線的起點(diǎn)、終點(diǎn)之間的空間進(jìn)行數(shù)據(jù)密化,從而形成要求的輪廓軌跡的過程。插補(bǔ)是數(shù)控技術(shù)的核心,在插補(bǔ)過程中,密化的點(diǎn)如何選擇,按照什么規(guī)律進(jìn)行計算,這就是插補(bǔ)算法要研究的核心問題。在數(shù)控加工中,常常遇到非圓曲線的加工,而一般的數(shù)控系統(tǒng)只配備了直線、圓弧等少數(shù)插補(bǔ)功能,因此給定曲線的理論軌跡不一定能直接處理,需要將給定的理論軌跡按允許的誤差進(jìn)行離散逼近,生成一系列直線段(或圓弧段)所描述的刀具運(yùn)動軌跡。
在采用直線逼近曲線的方式中,目前應(yīng)用較廣的有等參數(shù)插補(bǔ)和等誤差插補(bǔ),兩種插補(bǔ)方法各有優(yōu)缺點(diǎn)。等參數(shù)法計算簡單,但對于曲率變化較大的曲線會帶來插補(bǔ)誤差在局部超過允許誤差,從而降低加工的質(zhì)量;等誤差法在控制插補(bǔ)誤差上具有較好的功能,但其節(jié)點(diǎn)的計算涉及到四次方程的求解,計算量大,使用受限。在目前流行的各種CAD/CAM軟件中,采取的方法是通過控制最小的加工誤差生成一系列的直線段,其程序的數(shù)量大,加工時間長,識別度差。
等參數(shù)插補(bǔ)方法在實(shí)際應(yīng)用中還涉及到參數(shù)的選取問題,文獻(xiàn)[1]中分析了不同參變量(也就是等參數(shù)插補(bǔ)中的參數(shù))對橢圓插補(bǔ)誤差的影響,這些分析說明選取的參變量不同,其插補(bǔ)產(chǎn)生誤差的大小和位置也不同,在同一位置采用不同參變量其誤差會有較大差異,這也給等參數(shù)插補(bǔ)的使用帶來了一定的限制。
本文在研究等參數(shù)插補(bǔ)算法的基礎(chǔ)上,提出一種新的參數(shù)自適應(yīng)插補(bǔ)算法,并在橢圓曲線加工中進(jìn)行了驗(yàn)證。參數(shù)自適應(yīng)插補(bǔ)算法是結(jié)合等參數(shù)插補(bǔ)的優(yōu)勢,借用等誤差逼近的原理,將等參數(shù)中的等參數(shù)設(shè)置成變參數(shù),且能適用于不同的參數(shù)選取,通過參數(shù)增量的改變來實(shí)時調(diào)節(jié)插補(bǔ)的誤差,以確保插補(bǔ)誤差滿足允許條件。在保證加工質(zhì)量的前提下,參數(shù)自適應(yīng)插補(bǔ)比等參數(shù)插補(bǔ)算法的有更好的加工質(zhì)量,比等誤差插補(bǔ)算法有更少的計算量。通過實(shí)例應(yīng)用得出該方法既具有等參數(shù)插補(bǔ)計算簡單的優(yōu)點(diǎn),又能兼顧到最大誤差的控制,具有良好的應(yīng)用性和推廣性。
非圓曲線的方程表示為 y = f(x),當(dāng)以自變量x作為參變量時,曲線按等參數(shù)Δx進(jìn)行節(jié)點(diǎn)分割,即每兩個相鄰節(jié)點(diǎn)間的的參數(shù)差值均相同,如圖1所示,D點(diǎn)為曲線上一點(diǎn),其坐標(biāo)為(xi,yi),E點(diǎn)為變量增加了Δx后所對應(yīng)的點(diǎn),其坐標(biāo)為( xi+1,yi+1),DE之間通過直線插補(bǔ),依次例推,完成了整個曲線的插補(bǔ)。
圖1 等參數(shù)插補(bǔ)示意圖
當(dāng)曲線的方程不便直接表達(dá)時,可以轉(zhuǎn)化為參數(shù)方程表示:
對于參數(shù)方程,在等參數(shù)插補(bǔ)中,主要是保證相鄰兩點(diǎn)間的參數(shù)增量為一常數(shù)tΔ,當(dāng)tΔ一定時,插補(bǔ)的節(jié)點(diǎn)可以直接計算得出。
等參數(shù)插補(bǔ)方法中只考慮了兩點(diǎn)間的參數(shù)增量,整個過程計算方便,但是對于各相鄰插補(bǔ)直線段的插補(bǔ)誤差卻并沒有考慮,一般情況下,為了保證插補(bǔ)誤差,只能是最大限度的減小參數(shù)增量,增加走刀的次數(shù),對于曲率變化較大的曲線,等參數(shù)插補(bǔ)算法的應(yīng)用受到了較大的限制。
要保證在插補(bǔ)過程中的計算方便,又要考慮到對最大插補(bǔ)誤差的控制。如果能將各直線段的插補(bǔ)誤差用公式算出,再對比插補(bǔ)誤差和允許誤差,當(dāng)插補(bǔ)誤差大于允許誤差時,減少等參數(shù)插補(bǔ)中的參數(shù)增量,通過控制參數(shù)增量,達(dá)到控制插誤差的目的。
如圖2所示,即先在曲線 y = f(x)上取相鄰兩點(diǎn)D、E,兩點(diǎn)間的參數(shù)增量為Δx,D點(diǎn)對應(yīng)的參數(shù)為 xi,函數(shù)值為 yi,E點(diǎn)對應(yīng)的參數(shù)為 xi+1,函數(shù)值為 yi+1,則 xi+1=xi+Δx,接下來要計算直線DE的插補(bǔ)誤差。求解直線的插補(bǔ)的最大誤差,就是要在曲線 y = f(x)上要找到一條直線MN,此直線既與曲線相切于N點(diǎn),又與直線DE平行,其切點(diǎn)N到直線DE的距離即是最大插補(bǔ)誤差。要計算距離,就先要計算切點(diǎn)N坐標(biāo),計算曲線時求出的點(diǎn)即為切點(diǎn)N。這種求解插補(bǔ)誤差的方法是比較準(zhǔn)確,但是其切點(diǎn)N的坐標(biāo)求解比較復(fù)雜的,特別是對某些導(dǎo)數(shù)不易求出的曲線更是比較難實(shí)現(xiàn)[2~5]。
圖2 直線插補(bǔ)誤差計算示意圖
由于直線插補(bǔ)誤差算法比較復(fù)雜,在研究等參數(shù)插補(bǔ)算法的基礎(chǔ)上,引入中間參數(shù)點(diǎn)概念,用中間參數(shù)點(diǎn)來替代相切點(diǎn),減少了對曲線求導(dǎo)的過程,用中間參數(shù)點(diǎn)到插補(bǔ)直線的距離近似作為插補(bǔ)誤差,這種方法大大減少計算量,同時對數(shù)值準(zhǔn)確性的影響卻很小,有很好的適用性。如圖3所示,在 y = f(x)曲線上取兩點(diǎn)D、E,兩點(diǎn)間的參數(shù)增量為Δx,D點(diǎn)對應(yīng)的參數(shù)為xi,函數(shù)值為 yi,E點(diǎn)對應(yīng)的參數(shù)為 xi+1,函數(shù)值為 yi+1,在DE曲線段上上取一點(diǎn)F,使得將F點(diǎn)對應(yīng)的參數(shù)為D、E這兩點(diǎn)參數(shù)的平均值,即點(diǎn)F對應(yīng)的參數(shù)為通過參數(shù)可計算出中間參數(shù)點(diǎn)F的坐標(biāo),計算此時F點(diǎn)到直線DE的距離作為插補(bǔ)誤差。
圖3 直線插補(bǔ)誤差近似計算示意圖
等參數(shù)直線插補(bǔ)誤差計算的過程中涉及到直線方程的表達(dá),點(diǎn)到直線距離的計算。
如圖4所示,D、E為非圓曲線上的兩點(diǎn),已知兩點(diǎn)的坐標(biāo)為D(x1,y1)、E(x2,y2),若x1=x2,則DE直線的方程可寫為x=x1,改為一般式為:
DE直線方程為y-y1=k(x-x1),改寫成一般式為:
圖4 點(diǎn)到直線距離示意圖
直線的方程一般式為Ax+By+C=0,其中A、B、C為常數(shù),且 A2+B2≠0,點(diǎn)F(x3,y3)到該方程的距離為:
將式(1)與直線方程的一般式進(jìn)行對照,則此時 A=1,B=0,C=-x1。若要求點(diǎn)F( x3,y3)到DE連線的距離,則將此時的A、B、C的數(shù)值,F(xiàn)點(diǎn)的坐標(biāo)代入式(3)可求出點(diǎn)F點(diǎn)到直線DE的距離為:
將式(2)與直線方程的一般式進(jìn)行對照,則此時 A=-k,B=1,C=kx1-y1。若要求點(diǎn)F(x3,y3)到DE連線的距離,則將此時的A、B、C的數(shù)值、F點(diǎn)的坐標(biāo)代入式(3)可求出點(diǎn)F點(diǎn)到直線DE的距離為:
在參數(shù)自適應(yīng)算法中,一般曲線方程采用參數(shù)方程的形式。參數(shù)自適應(yīng)算法的原理如下。
已知曲線的方程可表示為x=X(t),y=Y(t),參數(shù)的取值區(qū)間為[t1, tn]。先在已知曲線上取相鄰兩點(diǎn)D和E,D點(diǎn)對應(yīng)的參數(shù)為ti,E點(diǎn)對應(yīng)的參數(shù)為ti+1,設(shè) ti+1=ti+Δt,設(shè)D點(diǎn)、E點(diǎn)的坐標(biāo)為(xi,yi),(xi+1,yi+1),則有:
此時,F(xiàn)點(diǎn)到弦DE的距離d可通過式(5)進(jìn)行求解(若xi=xi+1則用式(4)進(jìn)行求解),將d也可看作直線插補(bǔ)的最大誤差。將求得的距離d與允許誤差d允進(jìn)行比較,若此時d>d允,則減少參數(shù)增量Δt;若此d≤d允,則DE兩點(diǎn)間直接插補(bǔ)滿足誤差條件,可以直接進(jìn)行插補(bǔ),如此例推,可以計算出所有的插補(bǔ)節(jié)點(diǎn),完成整個曲線的加工。通過在加工過程中適時調(diào)整參數(shù)的增量Δt,使直線插補(bǔ)滿足誤差條件。
在進(jìn)行自適應(yīng)參數(shù)插補(bǔ)運(yùn)算時,首先要給定一個刀具起點(diǎn)位置(參數(shù) t1所對應(yīng)的位置),給定加工的允許插補(bǔ)誤差d允,設(shè)定一個合理的初始參數(shù)增量Δt,誤差Δt設(shè)置過大,增加了循環(huán)計算的次數(shù),Δt設(shè)置過小則起不到減少走刀次數(shù)的作用。
在設(shè)計算法流程框圖時,有三個條件判斷。第一個條件判斷 ti≤tn是判斷是否已經(jīng)插補(bǔ)到終點(diǎn),如果到終點(diǎn)則結(jié)束程序,如果沒有到終點(diǎn),則計算當(dāng)前點(diǎn)D的坐標(biāo),下一插補(bǔ)點(diǎn)E的坐標(biāo),和參數(shù)中間點(diǎn)F的坐標(biāo)。第二個條件判斷是判斷D點(diǎn)的橫坐標(biāo)是否與E點(diǎn)的橫坐標(biāo)相等,若xi=xi+1,則F點(diǎn)到直線DE的距離d =xi′-xi;若xi≠xi+1,則是比較距離d與允許誤差d允的大小,當(dāng)d≤d允,走直線DE,當(dāng)d>d允時,減少插補(bǔ)的參數(shù)增量Δt,用新的Δt重新計算點(diǎn)的坐標(biāo),直至誤差滿足允許條件。走完這段直線DE后,將此時的終點(diǎn)所對的參數(shù)值賦值給下一個起點(diǎn)ti=ti+Δt,重新開始第一個條件判斷。圖5為參數(shù)自適應(yīng)插補(bǔ)算法流程。
圖5 參數(shù)自適應(yīng)插補(bǔ)算法流程圖
為了驗(yàn)證參數(shù)自適應(yīng)插補(bǔ)算法的正確性,現(xiàn)以加工橢圓曲線為例,其橢圓方程為y = 30sint,t的取值區(qū)間為[0,360],采用參數(shù)方程進(jìn)行加工,設(shè)加工的起點(diǎn)為(50,0),在等參數(shù)插補(bǔ)時,采用參數(shù)自適應(yīng)插補(bǔ)算法時我們?nèi)ˇ = 2,根據(jù)參數(shù)自適應(yīng)算法,利用FAUNC機(jī)床自帶的循環(huán)語句[6],編寫宏程序O0001。
O0001 程序名稱
#1=0給參變量t賦初值
#2=50橢圓的長半軸
#3=30橢圓的短半軸
#18=0.005設(shè)定允許插補(bǔ)誤差
S1500 M03主軸正轉(zhuǎn)
G54 G90 G40 G17設(shè)定加工坐標(biāo)系
G00 X#2 Y0 Z50定位到起點(diǎn)
Z2 Z向快速定位
G1 Z-1 Z向下刀
WHILE [#1 LE 360] DO 1當(dāng)參數(shù)t360≤時循環(huán)開始
#4=2給參數(shù)增量tΔ賦值
GOTO 2 跳轉(zhuǎn)到N2程序段
N1 #4=0.7*#4減少tΔ
N2 #14=#1+#4 計算下一點(diǎn)E的參數(shù)
#5=#2*COS[#1] 計算當(dāng)前點(diǎn)D的x坐標(biāo)
#6=#3*SIN[#1] 計算當(dāng)前點(diǎn)D的y坐標(biāo)
#7=#2*COS[#14] 計算下一點(diǎn)E的x坐標(biāo)
#8=#3*SIN[#14] 計算下一點(diǎn)E的y坐標(biāo)
IF[#5 EQ#7] GOTO 3 當(dāng)D、E兩點(diǎn)的橫坐標(biāo)相等時跳轉(zhuǎn)到N3程序段
#9=[#8-#6]/[#7-#5] 計算直線DE的斜率
#10=#1+0.5*#4 計算中間點(diǎn)F的參數(shù)
#11=#2*COS[#10] 計算中間點(diǎn)F的x坐標(biāo)
#12=#3*SIN[#10] 計算中間點(diǎn)F的y坐標(biāo)
#13=ABS[#12-
#9*#11+#9*#5-#6] 計算式(5)的分子
#15=SQRT[1+#9*#9] 計算式(5)的分母
#17=#13/#15 計算F到直線DE的距離d
GOTO 4 跳轉(zhuǎn)到N4程序段
N3 #17=ABS[#11-#5] 計算F到直線DE的距離d
N4 IF [#17 GT #18] GOTO 1當(dāng)允d>d時,跳轉(zhuǎn)到N1程序段
G01 X#7 Y#8 F500 走DE直線
#1=#1+#4 將此時終點(diǎn)的參數(shù)賦值給下一個起點(diǎn)的參數(shù)
END 1 循環(huán)結(jié)束
G1 Z5 抬刀
G0Z50 快速抬刀
G0X0 Y0 快速定位到XY的中心
M05 主軸停止
M30 程序結(jié)束
為了更好的對比等參數(shù)插補(bǔ)算法與參數(shù)自適應(yīng)插補(bǔ)算法,對橢圓曲線進(jìn)行加工。由于橢圓曲線為軸對稱圖形,僅對第一象限的四分之一的橢圓加工進(jìn)行對比。其加工的四分之一橢圓尺寸如圖6所示,要求允許誤差為0.005。
圖6 加工的四分之一橢圓
對于圖6,如果采用等參數(shù)插補(bǔ)算法,取參數(shù)角t為參變量,t∈[0 , 90],參數(shù)增量Δt為2,此時的走刀次數(shù)為45,再通過直線插補(bǔ)誤差算法可計算出此時的最大插補(bǔ)誤差和最小插補(bǔ)誤差分別為0.0076和0.0046。其插補(bǔ)誤差較均勻,但部分位置不滿足允許插補(bǔ)誤差,即不滿足質(zhì)量要求。采用本文1.3所介紹的近似算法與1.2確準(zhǔn)算法間的最大誤差為9. 9×10-15,說明其近似算法能完全滿足插補(bǔ)要求。取橫坐標(biāo)x為參變量時,x∈[0 , 50],此時對應(yīng)于每一個x,有一個y對應(yīng),此時的走刀次數(shù)為50,再通過直線插補(bǔ)誤差公式可計算出此時的最大插補(bǔ)誤差和最小插補(bǔ)誤差分別為0.248和0.0015,其插補(bǔ)誤差不均勻,且部分位置不滿足允許插補(bǔ)誤差,即不滿足質(zhì)量要求。等參數(shù)直線插補(bǔ)中,當(dāng)插補(bǔ)誤差不滿足允許條件時,唯一的辦法只能是減少參數(shù)增量,當(dāng)然此時走刀次數(shù)也會成倍的增加。
當(dāng)采用參數(shù)自適應(yīng)插補(bǔ)算法時,程序O0001是取參數(shù)角t為變量,初始參數(shù)增量Δt為2的參數(shù)自適應(yīng)編程,此時的插補(bǔ)次數(shù)為63(可以通過在程序中設(shè)置計數(shù)變量得到),其最大插補(bǔ)誤差和最小插補(bǔ)誤差分別為0.005和0.0046,其插補(bǔ)誤差的變化幅度非常小,其加工曲線的誤差均勻,加工質(zhì)量好。如果取橫坐標(biāo)x為參變量,初始參數(shù)增量Δx = 1,此時的插補(bǔ)次數(shù)為65,其最大插補(bǔ)誤差和最小插補(bǔ)誤差分別0.005和0.0015。不管以參數(shù)角t還是橫坐標(biāo)x作為參變數(shù),采用參數(shù)自適應(yīng)插補(bǔ)算法均能滿足插補(bǔ)誤差條件。
參數(shù)自適應(yīng)插補(bǔ)算法與等參數(shù)插補(bǔ)算法結(jié)果對比見表1。從結(jié)果我們可以看出,參數(shù)自適應(yīng)插補(bǔ)算法雖然走刀次數(shù)有所增加,但其計算簡單,加工誤差均勻,加工質(zhì)量好,走刀次數(shù)不依賴于參數(shù)增量的大小,且參數(shù)變量的選擇對插補(bǔ)誤差的影響較小[7,8]。
本文在研究等參數(shù)插補(bǔ)的基礎(chǔ)上,提出參數(shù)自適應(yīng)算法,主要研究工作有:
表1 兩種插補(bǔ)算法對比分析
1) 以參數(shù)中間點(diǎn)替代相切點(diǎn)來計算插補(bǔ)誤差,簡化的計算過程,且引起的誤差一般為10-10數(shù)量級甚至更小,對計算結(jié)果的影響可以忽略;
2) 在插補(bǔ)過程中,適時改變參數(shù)增量的大小,來控制插補(bǔ)誤差滿足許可條件;
3) 提出參數(shù)自適應(yīng)直線插補(bǔ)算法,給出了算法的插補(bǔ)原理和算法流程圖;
4) 針對橢圓曲線的加工,將參數(shù)自適應(yīng)插補(bǔ)和等參數(shù)插補(bǔ)方法進(jìn)行對比,驗(yàn)證算法的正確性和適用性。
[1] 陳小紅,姜曉強(qiáng),曹秦崗.橢圓變量編程插補(bǔ)誤差分析與應(yīng)用[J].機(jī)床與液壓,2012,40(16):59-63.
[2] 王愛群,李夢群,馮裕強(qiáng).數(shù)控加工理論與實(shí)用技術(shù)[M].北京:機(jī)械工業(yè)出版社,2009,5
[3] 金艷玲,楊東武,姚東成.數(shù)控加工中非圓曲線輪廓的三圓弧逼近方法[J].組合機(jī)床與自動化加工技術(shù),2013,(9):110-114.
[4] 文豪,高健.數(shù)控系統(tǒng)等誤差直線逼近節(jié)點(diǎn)算法分析與改進(jìn)[J].機(jī)械設(shè)計與制造,2013,(9):217-219+223.
[5] 趙忠華,商瀟瀟.基于NURBS曲線的非圓曲線數(shù)控插補(bǔ)算法研究[J].機(jī)械工程與自動化,2013,(4):24-26.
[6] 陳海舟.數(shù)控銑削加工宏程序及應(yīng)用實(shí)例(第二版)[M].北京:機(jī)械工業(yè)出版社,2007,12.
[7] 孫海洋,范大鵬,李玲.一種參數(shù)曲線實(shí)時數(shù)控插補(bǔ)計算新方法[J].國防科技大學(xué)學(xué)報,2008,30(3):59-63.
[8] 游有鵬,王珉,朱劍英.參數(shù)曲線的自適應(yīng)插補(bǔ)算法[J].南京航空航天大學(xué)學(xué)報,2000,32(6):667-671.