游達章,余 煉,張 敏,康亞偉
(湖北工業(yè)大學 機械工程學院, 武漢 430068)
速度和加速度突變引起的沖擊對零件加工精度和表面質(zhì)量有很大影響,速度突變引起的沖擊為剛性沖擊,而加速度突變引起的沖擊為柔性沖擊。在梯形加減速當中,速度突變往往來源于加工路徑方向的改變,加速度突變則主要體現(xiàn)在電機在加減速過程中加速度從無到有或者從有到無的過程。一方面,為了追求高效而使電機頻繁地加速,使之盡可能達到理想的最大速度;另一方面,為了減少沖擊而使電機頻繁地減速,使得電機成為了加減速的矛盾綜合體,導致電機頻繁加減速,進而影響了電機的使用壽命和加工精度。為了兼顧高效和平穩(wěn),對整個插補過程提前做好加減速規(guī)劃十分必要,減少電機加減速頻次通常作為主要手段。為此,不少學者投入了很大精力研究。
王濤等[1]設(shè)計了一種利用圓弧轉(zhuǎn)接的軌跡規(guī)劃算法為減少因加工路徑方向改變引起的剛性沖擊提供了很好的解決思路。陳良驥等[2]根據(jù)相鄰路徑的轉(zhuǎn)角建立了可直接進行段間轉(zhuǎn)接的條件以及條件不成立的修正方法,此外還給出了段內(nèi)加減速的處理方法,使加工效率得以較大提高,尤其適用于程序量較大的情形,但并沒有充分論述段內(nèi)加減速和段間轉(zhuǎn)接的直接聯(lián)系。王耀庭等[3]分析了高速加工微小線段銜接速度計算的約束條件,提出了一種加工軌跡速度前瞻段數(shù)自適應(yīng)控制算法,有效簡化了連接點銜接速度的計算方法,減少了啟停次數(shù),但是效率仍然有提升的空間。葉偉等[4]以離散的方法建立了一種全新的插補算法使得加減速控制連續(xù)平滑,小線段加工過程具有較高的運行速度,但是基于S型加減速的,實際應(yīng)用起來比較復雜,并不適用于一般的嵌入式數(shù)控系統(tǒng)。董靖川等[5]提出的通用型前瞻速度規(guī)劃算法進一步節(jié)約了加工時間并提高了加工質(zhì)量,黃昕等[6]提出的基于雙向掃描算法實現(xiàn)了連續(xù)小段路徑之間的高速銜接,但以上二者算法本質(zhì)還是連續(xù)多段前瞻算法,都并未充分論證規(guī)劃元大小(即一次連續(xù)規(guī)劃段數(shù))對加工效率和平穩(wěn)性的影響,具有一定的局限性。張立先等[7]提出的前瞻處理與動態(tài)修調(diào)方法有效地提高了整體加工速度,所謂的動態(tài)修調(diào)方法即滿足反向速度可達性條件,即第i段末速度要小于初速度的情形,但初衷并不是保證最后一個直線段的出口速度為0,仍未主動避免最后一個直線段出口速度突變?yōu)?引起的剛性沖擊。
為了進一步兼顧高效平穩(wěn),首先分析了連續(xù)多段前瞻算法存在的局限性;其次在連續(xù)多段前瞻算法的基礎(chǔ)之上做了改進,提出了單段前瞻后顧算法;最后通過仿真實驗,對比分析了3種不同速度規(guī)劃算法的效率和平穩(wěn)性。結(jié)果表明,單段前瞻后顧算法能有效避免單次連續(xù)規(guī)劃段數(shù)對效率和平穩(wěn)性的影響,且能夠有效減少電機加減數(shù)次數(shù),執(zhí)行效率也得到了小幅提升,與前人相比有不同程度提高。此外,算法能夠在嵌入式數(shù)控系統(tǒng)平臺(STM32F407)上實現(xiàn),測量結(jié)果與仿真吻合。
為了使規(guī)劃算法更具一般性,通常在規(guī)劃軌跡的運動參數(shù)之前,將圓弧打斷為連續(xù)微小直線段,李彥奎等[8]已經(jīng)提出了比較成熟的打斷算法,此處不再贅述。打斷之后軌跡平滑度下降勢必導致加工路徑方向的改變,從而引發(fā)速度方向突變進而產(chǎn)生剛性沖擊。為了減少沖擊,需要在到達拐點之前按照某種方法將速度降至合適的范圍內(nèi)以實現(xiàn)平穩(wěn)過度,以上計算拐角速度過程稱之為初步規(guī)劃。
如圖1所示,已知第i段與第i-1段線段夾角θ。視兩段直線拐角Pi處為半徑很小的圓周運動,由幾何關(guān)系知
圖1 圓周運動模型示意圖
假設(shè)一段連續(xù)加工軌跡有n段直線,每次連續(xù)規(guī)劃段數(shù)為N,那么至少需要n/N或n/N+1次才能完成整段加工軌跡的規(guī)劃。視起點到終點為一個連續(xù)的加速過程,從終點到起點為一個連續(xù)的反向加速過程。連續(xù)多段前瞻規(guī)劃算法原理如圖2所示。
圖2 連續(xù)多段前瞻規(guī)劃算法原理示意圖
將以上兩個過程疊加,取v0,i=min{vf0,i,vb0,i},vt,i=min{vft,i,vbt,i},分別作為第i段直線的入口速度和出口速度。
為了研究單次連續(xù)前瞻規(guī)劃段數(shù)對效率和平穩(wěn)性的影響,用連續(xù)多段前瞻算法驗證以下一段G代碼,對應(yīng)軌跡如圖3所示。得到效率和平穩(wěn)性隨規(guī)劃段數(shù)的變化關(guān)系,如表1所示。
圖3 插補軌跡
表1 規(guī)劃段數(shù)對連續(xù)多段直線前瞻算法的影響
表1中多出的3段來自被打斷的圓弧。由表可知,規(guī)劃段數(shù)與平均速度相關(guān)性顯著(R=0.895 5,P=0.001 1),但與加減速次數(shù)和沖擊次數(shù)相關(guān)性均不顯著(R=-0.688 6,P=0.040 2;R=-0.620 5,P=0.074 6)。換而言之,對于連續(xù)多段前瞻算法而言,增加單次規(guī)劃段數(shù)雖然能夠提高效率,但是并不確定能減少沖擊,因而設(shè)計人員在選擇規(guī)劃段數(shù)的過程中可能會出現(xiàn)一定的盲目性。此外,過分追求的規(guī)劃段數(shù)會可能額外增加算法時間復雜度和空間復雜度,對系統(tǒng)實時性可能有潛在影響,存在一定局限性。
在本文第1節(jié)中完成了初步規(guī)劃,得到第i段直線與第i+1段直線之間的拐角速度vmj,i;在本文第2節(jié)中分析了連續(xù)多段前瞻算法的局限性。為了避免單次連續(xù)規(guī)劃段數(shù)對平穩(wěn)性和效率的影響,以及保證整個插補過程的最后一段直線出口速度為0和無沖擊地完成每段插補距離S,提出了一種前瞻后顧算法來同時滿足以上需求。
假設(shè)當前第i段直線為所有插補過程中的最后一段,為了保證當前第i段的出口速度vt,i為0,以消除末速度突變引起的剛性沖擊,在加速度(視為反向加速過程)ai與加速距離Si已知的條件下,那么第i段的入口速度(即前瞻速度vf,i)需滿足如下條件:
圖4 前瞻原則示意圖
由于第i-1段直線的入口速度已經(jīng)被規(guī)劃好且為v0,i-1,且加速度(視為正向加速過程)ai-1與加速距離Si-1已知,為了消除出口速度突變產(chǎn)生的剛性沖擊,那么第i-1段的出口速度(即后顧速度vb,i)滿足以下條件:
圖5 后顧原則示意圖
為了同時兼顧最大拐角速度vmj,i,第i段前瞻速度vf,i以及第i段后顧速度vb,i,得到第i段的最終入口速度(也即第i-1段的出口速度)并規(guī)定第1段的入口速度v0,1=0,按照前瞻后顧原則,可規(guī)劃得到所有線段之間最終的銜接速度。動態(tài)規(guī)劃過程如圖6所示。
圖6 動態(tài)規(guī)劃過程示意圖
只有一條直線段時,入口速度和出口速度均為0,如圖6(a)所示。若有新的直線需要規(guī)劃,則根據(jù)新的直線與上一條直線的夾角計算拐角速度,根據(jù)前瞻后顧原則計算前瞻速度和后顧速度,取三者最小值作為新加入直線的入口速度,根據(jù)前瞻原則,新加入直線的出口速度為0,如圖6(b)所示。而后繼續(xù)判斷是否有新的直線加入規(guī)劃過程,若有,則重復上述過程。當直線總段數(shù)n過大時,會占用很大內(nèi)存,為了減少內(nèi)存開銷,可以將以上規(guī)劃過程放入隊列中。
以上規(guī)劃過程流程如圖7所示。
圖7 動態(tài)規(guī)劃流程框圖
為進一步驗證結(jié)果,用以上算法運行2.2節(jié)中G代碼,得到規(guī)劃過程如圖8所示。
圖8 前瞻后顧規(guī)劃過程
以圖8(e)為例,第4段直線與第5段直線銜接處從上到下依次為前瞻速度、后顧速度和拐角速度,取三者之中較小者并規(guī)定為第5段最終的入口速度,如圖8(f)所示。而后再次讀入一段新的直線參數(shù)信息,繼續(xù)規(guī)劃第5段與第6段之間的拐角速度、前瞻速度和后顧速度,再次取較小者規(guī)劃第6段的入口速度……以此類推,其中第一段默認入口速度為0。從圖8中可以看出,在未知G代碼段數(shù)的情況下,也能嚴格保證最后一段的出口速度降為0,以消除速度突變產(chǎn)生的剛性沖擊。
仍然以2.2節(jié)中G代碼為例,分別使用不含前瞻算法、含前瞻后顧算法以及連續(xù)多段前瞻算法執(zhí)行,得到速度-時間關(guān)系如圖9所示,能直觀地看到含前瞻后顧算法比他兩種方法的效率都高;與不含前瞻算法相比,能顯著減少加減速頻次。
以STM32F407作為嵌入式數(shù)控系統(tǒng)平臺為例,通過瞬時速度和相鄰兩次插補時間的關(guān)系,計算得到定時計數(shù)周期。使用串口打印出定時計數(shù)周期來計算實時插補速度,得到速度-時間關(guān)系曲線,如圖10所示,從而驗證了單段直線前瞻后顧算法的可實現(xiàn)性,與仿真結(jié)果相吻合。
圖9 3種不同算法仿真結(jié)果
圖10 前瞻后顧規(guī)劃算法在嵌入式數(shù)控系統(tǒng)平臺上實現(xiàn)時得到的速度-時間關(guān)系曲線
從表2來看,仍然以2.2節(jié)中的G代碼為例。連續(xù)多段前瞻算法以每次規(guī)劃2段為例,單段直線前瞻后顧算法從效率和平穩(wěn)性來看表現(xiàn)更好,其中效率比無前瞻算法提高了72.56%,比連續(xù)多段前瞻算法提升了27.48%;其中加減數(shù)次數(shù)比無前瞻算法減少了30%,與連續(xù)多段前瞻算法相等;柔性沖擊次數(shù)比無前瞻算法減少了34.49%,比連續(xù)多段前瞻算法多了1次。
表2 3種不同算法計算結(jié)果
從表3來看,通過使用含前瞻后顧規(guī)劃算法來執(zhí)行文獻[2-3]中給出的G代碼,仿真結(jié)果顯示,效率比文獻[2]略微提高了14.7%,比文獻[3]高出了64.87%。文獻中加減速次數(shù)和沖擊次數(shù)未給出,不具備對比條件。
表3 相關(guān)文獻計算結(jié)果
綜上所述,在嵌入式數(shù)控系統(tǒng)應(yīng)用當中,前瞻后顧算法在效率和平穩(wěn)度方面均有不同程度提升,在效率上均優(yōu)于以上算法。
在連續(xù)多段前瞻算法的基礎(chǔ)之上做了改進,提出了單段前瞻后顧算法;通過仿真實驗,對比分析了3種不同速度規(guī)劃算法的效率和平穩(wěn)性。在同等條件下,單段直線前瞻后顧算法效率和平穩(wěn)性更好,效率比無前瞻算法提高72.56%,比連續(xù)多段前瞻算法提高27.48%;柔性沖擊次數(shù)比無前瞻算法減少34.49%,比連續(xù)多段前瞻算僅多1次。此外,算法能夠在嵌入式數(shù)控系統(tǒng)平臺(STM32F407)上實現(xiàn),測量結(jié)果與仿真吻合。