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