馬虎亮,呂 明,楊勝強,王燕青
(太原理工大學機械與運載工程學院,太原 030024)
數(shù)控加工系統(tǒng)中主要以線段和圓弧為主,復雜圖形的加工有兩種辦法,一種是在誤差范圍內(nèi),以多個微小線段和圓弧對曲線進行擬合;第二種是針對B樣條曲線、NURBS曲線直接插補方法。第一種方法簡單,插補算法較多,但得到的加工數(shù)據(jù)量大,不易存儲和執(zhí)行。第二種方法擬合過程復雜,但得到的曲線對象少。在計算結(jié)果方面,線段擬合段數(shù)最多,圓弧擬合段數(shù)次之,曲線擬合最少。因此,當前數(shù)控系統(tǒng)的研究熱點之一便是曲線的擬合和插補方法。
B樣條曲線和NURBS曲線引入與坐標系無關的參數(shù),同時引入控制點,得到控制多邊形,通過控制點和權(quán)因子等形狀控制參數(shù)用多項式對目標曲線進行生成和擬合。同時由于很多設計軟件中已經(jīng)配置了曲線設計功能,在這種情況下,可以直接得到曲線的控制點信息,省去擬合的過程。NURBS已成為當前曲線曲面設計和擬合的標準形式。很多學者也對于NURBS 樣條曲線的插補算法進行了研究[1-3],對NURBS樣條曲線曲面加工技術(shù)也進行了很多研究[4-5]。
NURBS樣條曲線曲面具有很多優(yōu)點:局部可調(diào)性、幾何不變形和仿射不變性等,還可以精確地表示某些圓錐曲線段,但仍然具有一些缺陷[6-8]:①NURBS曲線曲面求導非常麻煩,次數(shù)太高,反復求導則其高階導矢曲線的階數(shù)快速上升;②變量較多,需要設計人員具有一定的數(shù)學基礎;③不能完整的表示整段圓弧、擺線和螺旋線等曲線。 因此研究者們引入了包含三角函數(shù)和雙曲三角函數(shù)的混合曲面曲線[9-10],來表示更高要求的曲面曲線。
圓弧-線段一階混合曲線包含三角函數(shù),用樣條曲線等有理函數(shù)擬合,必然存在誤差和擬合精度等問題。由于其表達式可分解為線段和圓弧的表達式之和,因此提出了將線段和圓弧插補有機組合的插補合成法。
本文對圓弧-線段一階混合曲線的特征進行分析并推導其參數(shù)表達式,然后說明插補合成法的原理和方法,最后對插補方法進行了驗證。
圓弧-線段一階混合曲線是指由圓弧和線段混合而成的曲線,其表達式中包含一階多項式和一階三角函數(shù)。線段與圓弧的混合包含線段與線段的混合、線段和圓弧的混合、兩條圓弧的混合。幾何元素在坐標系中的表達式通常有顯示方程和隱式方程。線段和圓弧的一般顯示方程和隱式方程如表1中所示。線段和圓弧插補算法一般基于表1中的表達式來推導。
表1 線段和圓弧的函數(shù)表達式
表中可以看出,圓弧的表達式包含了二階函數(shù)和平方根等函數(shù)形式,處理起來都比較復雜,為了降低表達式的階數(shù)、便于數(shù)據(jù)處理,對線段和圓弧采用參數(shù)方程的形式,見式(1)和式(2)。圓弧表達式以一階三角函數(shù)代替了平方和開方計算。
(1)
(2)
線段與線段的混合比較簡單,幾何上相當于兩個向量的相加?;旌虾蟮膮?shù)表達式如式(3)所示:
(3)
式中,A、D為線段1斜率相關的系數(shù);B、E為線段2斜率相關系數(shù);C、F為線段起點坐標;t1、t2為線段1和線段2的變量,t1∈[θ1,θ2],t2∈[θ3,θ4]。
圖1 線段與線段的混合
線段和圓弧都屬于最基本的幾何元素,加工中的圖案大部分由線段和圓弧組成。一般而言,圖形組合是指多條線段和多條圓弧首尾相連拼接而成。圖形的混合與此不同,是指將線段與圓弧合并為一個幾何元素,并用其表示一段曲線。單個線段和圓弧混合基本表達式如式(4)所示。
(4)
式中,A、C為與線段斜率相關系數(shù);B、D為曲線起點坐標;R為圓弧的半徑值;t1、t2為線段和圓弧的自變量,t1∈[θ1,θ2],t2∈[θ3,θ4]。
在式(4)中,Rcosθ和Rsinθ是圓弧的參數(shù)表達;At和Ct是線段的參數(shù)表達。雖然t1、t2的取值范圍是線性區(qū)間,但由于三角函數(shù)為無理函數(shù),無法與一次項式進行合并。線段和圓弧的混合幾何效果如圖2所示,實線表示圓弧,點劃線表示線段,虛線表示混合曲線。
圖2 圓弧與線段的混合
圓弧本身屬于曲線,兩段曲線的合成結(jié)果更具變化性。兩段圓弧的混合曲線表達式如式(5)所示。
(5)
式中,R1、R2為兩段圓弧的半徑值;A、B為兩段圓弧圓心相關的系數(shù);t1、t2為兩段圓弧的自變量,t1∈[θ1,θ2],t2∈[θ3,θ4]。
式(5)中,兩條圓弧的混合轉(zhuǎn)換成了三角函數(shù)的和,t1、t2的取值范圍依然是線性區(qū)間,混合的結(jié)果根據(jù)t1、t2的不同而生成不同的曲線。兩個圓弧的混合幾何效果如圖3所示,實線表示圓弧1,點劃線表示圓弧2,虛線表示混合曲線。
圖3 圓弧與圓弧混合
線段與線段的混合結(jié)果還是線段,符合一般線段的特點。線段和圓弧、圓弧和圓弧的合成曲線則除了一般表達式外,在某些特點情況下可以退化為特定的曲線。
2.1.1 線段圓弧合成曲線特例
在式(4)中,取A=0,C=-R,θ和t的取值范圍相同時,公式轉(zhuǎn)換為式 (6)。
(6)
式(6)與擺線的表達式形式一致。根據(jù)擺線的定義,擺線為一個圓沿著一條線段運動時的軌跡,即一個整圓和一條線段的混合,見圖2中右側(cè)圖形。由以上可得結(jié)論:線段與圓弧混合曲線在一定條件下可以形成擺線。
2.1.2 雙圓弧混合曲線特例
如果R1=R2=R,根據(jù)三角函數(shù)的和差化積公式,式(5)可以轉(zhuǎn)換為式(7)。
(7)
若t1-t2或者t1+t2為定值時,公式退化為圓的參數(shù)表達式。
若R1≠R2,t1+t2≡π時,根據(jù)三角函數(shù)誘導公式,公式(5)可以轉(zhuǎn)換為公式(8)。
(8)
公式(8)與橢圓的參數(shù)公式相同,說明圓弧混合曲線在特定情況下可以形成橢圓,見圖3中右側(cè)圖形。以上說明,雙圓弧混合的結(jié)果是包含了圓和橢圓在內(nèi)的一階三角函數(shù)曲線。
式(4)和式(5)中線段與圓弧的混合曲線包含三角函數(shù),在區(qū)間內(nèi)無限可導,符合光滑曲線的特征,其中的特例擺線和橢圓已經(jīng)在工業(yè)中有很多應用。因此,線段和圓弧的一階混合曲線在設計和加工應用中有很大前景。
混合曲線的變量較多,雙元素混合時包含兩個變量,雖然函數(shù)形式不同,但自變量的取值方法是一致的,即從區(qū)間初始值到最終值。對t1、t2進行歸一化處理,即t1、t2統(tǒng)一為變量t,且t∈[0,1]。
(9)
將式(9)代入式(4)、式(5)中即可得到雙元素混合的單變量表達式,見式(10)和式(11)所示。公式引入無量綱參數(shù)t,有利于對其進行各種變換和處理。
(10)
(11)
式中,α=θ1+(θ2-θ1)t,β=θ3+(θ4-θ3)t。
對混合曲線進行歸一化處理之后,除了可以運用曲線插補算法對其進行插補外,還可以采用插補合成法。
插補合成法是先將插補對象分解為基本幾何元素,然后分別對幾何元素進行插補運算,最后把插補結(jié)果進行合成的插補方法。
式(3)~式(5)中曲線是由線段和圓弧混合而成的,因此插補方法可以對基本幾何對象分別進行插補,然后再進行合成,即所謂的插補合成法。插補合成法分為在線插補合成法和離線插補合成法,其主要特征是根據(jù)插補過程是否在線來進行區(qū)分的。
在線插補是將加工信息發(fā)送給硬件插補器,硬件插補器進行實時插補。插補器運算一次得到一次插補運動,交給電機執(zhí)行,然后再進行下一次插補運算。此方法可以利用現(xiàn)有的線段和圓弧的硬件插補電路,再輔助以分配器從而實現(xiàn)對混合曲線的插補運動。在線插補合成法電路功能框圖如圖4所示。
圖4 在線插補合成器功能構(gòu)成
以線段和圓弧混合曲線為例,在線插補合成器的工作流程如圖5所示。獲得混合曲線信息后進行分解,分解出來的信息發(fā)送給對應的線段和圓弧插補器,同時計算出各幾何元素的插補步數(shù)并發(fā)送給插補分配器。插補分配器根據(jù)插補步數(shù)按照均布原則分別使各插補器進行運算,直至插補步數(shù)完成。插補過程中插補器運算一次完成后轉(zhuǎn)換為保持狀態(tài),等待插補分配器的命令。在線插補的缺點在于無法在加工前得到具體的插補結(jié)果,只能依靠硬件算法的準確性。兩個圓弧的混合曲線流程與圖5一致,只需將線段插補器替換為圓弧插補器。
圖5 在線插補合成法運算流程圖
離線插補合成法是指在加工前進行插補運算并得到插補結(jié)果,在加工時直接輸出插補結(jié)果數(shù)據(jù),最后由硬件電路解碼成電機的控制信號即可。離線插補的優(yōu)勢在于節(jié)省了實時插補運算的時間和資源,同時插補結(jié)果可以進行檢查,以保證加工結(jié)果的準確。
離線插補的關鍵技術(shù)在于插補方法和插補結(jié)果的保存形式。由于線段和圓弧的插補方法很多,如逐點比較法、最小偏差法和數(shù)字積分法等等。因此,單個線段或者圓弧的插補可以采用任意種方法,不再詳述。離線插補合成法的關鍵在于插補結(jié)果的保存形式,既要形式簡潔,還要易于存儲和編輯,使其能完成插補結(jié)果的合成運算。
由于離線插補合成的方法便于檢驗,因此以離線插補合成法結(jié)果來驗證混合曲線的插補合成性。
字節(jié)流格式易于保存離線插補尤其是軟件插補的結(jié)果。字節(jié)流格式即以字節(jié)為最小單位,單個比特位為基本元素。一個比特位有兩種含義,一種是表示進給與否,另外一種是表示正反方向。使用兩個比特位保存一個軸的單步插補結(jié)果。一般機床都是多軸,根據(jù)機床的情況決定字節(jié)的格式。若是四軸以內(nèi)的機床,以一個字節(jié)就可以囊括所有軸的單步插補結(jié)果;如果多于4個軸,將軸進行分組,將字節(jié)中的前幾位設定為組號標識,一步可以多個字節(jié)表示。這些字節(jié)以十六進制字符串的形式儲存在計算機中,讀取的時候按照順序進行。以兩軸為例,單字節(jié)的格式如表2所示。
表2 單字節(jié)各個比特位含義(XY軸)
混合曲線中單個幾何元素插補出來的結(jié)果以字節(jié)流的形式保存,然后進行合成。由于字節(jié)流非常適合編輯,因此插補結(jié)果的合成方法也比較簡單。
以線段和圓弧合成為例,線段插補M步,圓弧插補N步,將兩個字符串結(jié)合成一個字符串,流程如圖5所示。將較長字符串設為基準,每讀取一步增加一個步長。檢測當前步長L是否大于1:若L>1,則讀取較短字符串對應字節(jié),同時補償減1;若L<1,則繼續(xù)讀取較長字符串的字節(jié)。步長計算如圖6所示(以M>N為例)。
圖6 運動字節(jié)流合成運算流程
加工對象如圖7所示,共4條曲線。曲線從原點(0,0)經(jīng)過(2,1)、(13,0)和(2,-1)回到原點。其4段表達式見式(12),取值范圍第1段:t1:π→π/2,t2:0→1;第2段:t1:π/2→0,t2:0→10;第3段:t1:0→π/2,t2:0→-10;第4段:t1:(-π)/2→-π,t2:0→-1。相當于一個半徑為1的整圓分成4個圓弧分別和線段混合。每段都可以分解為一段圓弧和一條線段的混合,適用于插補合成法。
(12)
圖7 線段與圓弧混合曲線加工對象
使用VS2010中的C#語言進行編程開發(fā),結(jié)果顯示使用了開源圖表控件ZegGraph。只需要對字節(jié)流進行讀取,并轉(zhuǎn)換為坐標點,添加到ZegGraph控件就可以顯示插補結(jié)果。每段先對圓弧和線段分別進行插補,將插補結(jié)果保存成字節(jié)流的形式,再按照比例將兩個插補結(jié)果進行合成,字節(jié)流形式的插補過程如圖8示意。XY軸單個脈沖增量為1 μm,第1段圓弧插補1 414步,線段插補1 000步,合成結(jié)果共2 414步;第2段,圓弧插補1 414步,線段插補10 000步;第3段,圓弧插補1 414步,線段插補10 000步;第4段,圓弧插補1 414步,線段插補10 000步。離線插補總計27 656步。插補結(jié)果圖形顯示見圖9,為了顯示插補效果,Y軸選擇較大比例,插補結(jié)果達到了加工要求。
圖8 離線插補合成法流程示意
圖9 插補合成法結(jié)果顯示
以上是線段與圓弧混合曲線的插補實例,圓弧和線段的數(shù)量可以增加,組成更為復雜的一階混合曲線表達式。具有混合特征的表達式完全可以進行插補運算,并使用插補合成法進行插補運算,結(jié)果完全符合加工要求。
圓弧-線段一階混合曲線具有圓弧和線段等元素的混合特征,表達式階數(shù)低、幾何含義清晰,不僅可以表示線段和圓弧,還包含了擺線和橢圓。在分析圓弧-線段一階混合曲線的參數(shù)表達式的基礎上,提出的插補合成法可以對其進行有效插補。無論離線還是在線的插補合成法結(jié)構(gòu)清晰、過程簡潔,數(shù)學運算量小,相對于樣條曲線復雜的擬合插補過程有很大的優(yōu)勢。離線插補算法中使用的字節(jié)流表達形式簡潔通用,便于數(shù)據(jù)存儲和數(shù)據(jù)傳輸。