摘要:加減速控制是數控系統的關鍵技術,對提高數控系統的及速度有重要的意義。提出了一種步進電機三軸聯動的快速加減速算法--動態查表法,該算法結合DDA 插補算法,可以用普通的單片機實現多種加減速曲線的運動控制,具有運算速度快、高等優點。
1 引言
步進電機具有快速啟停能力強、高、轉速容易控制的特點。但是,步進電動機應避免轉動速率的突變,而且從停止到開始轉動有一個較低的起動頻率,隨后才可以平緩地過渡到較高的轉速。相應地在步進電機制動時,也應該平緩過渡。如果由于啟動和停止控制不當,步進電機會出現啟動時抖動和停止時過沖的現象,從面影響系統的控制[1][2][3]。為避免這種情況的發生,要對步進電機進行加減速控制。加減速控制是數控系統的關鍵技術,對提高數控系統的及速度有重要的意義。加減速控制也得到了廣泛的研究與應用。
目前國內外步進電機加減速控制曲線主要包括三種[4]:直線型加減速速度曲線(也稱為梯形曲線)、指數型加減速曲線、S 型加減速曲線。控制算法主要有查表法和插補迭代法。查表法的原理是設置一張時間間隔表,表中的每一項都對應一個轉速,時間間隔按一定的規律變化 [1]。插補迭代法的原理是根據前一步的基準點速度和加、減、勻速狀態來確定當前步的基準點速度[4][5]。
這兩種控制算法都有各自的適用范圍,查表法適用于單軸的加減速控制,具有算法簡單、快速的特點,但不能適用于多軸聯動。插補迭代算法適用于高的控制,算法復雜,對處理器的要求較高,一般需要用到DSP 等處理器[4]。本文結合兩種算法的優點,設計了一種“動態查表法”來實現三軸聯動的快速加減速算法。動態查表法即有查表法簡單、快速的特點,又能夠用一般的單片機來實現高的多軸聯動加減速控制。
2 動態查表法
根據線性插補原理,各插補軸的位移與速度比相等。在加減速過程中,各插補軸的速度、加速度分別與合成的速度、加速度對應成比例[5]。當對合成速度按某種加減速方法進行加減速時,各插補軸在保證空間軌跡的同時,也應按相同的加減速方法進行加減速。查表法具有簡單、快速的特點,但查表法必須事先確定一張加減速的速度表格,不能按比例應用到多軸聯動的場合。本文的思路是結合數字積分法,在加工某條線段前先按比例快速計算好相應的速度表格,再用查表法來完成加減速控制,即“動態查表法”。
數字積分法,也稱 DDA(Digital Differential Analyzer) ,它是建立在數字積分器基礎上的一種插補算法,其特點是易于實現多坐標插補聯動[6]。每一軸設置一個累加器,三軸聯動需要設置三個累加器,每進行插補,對三個累加器分別累加。哪一軸的累加器有溢出則該軸延遲一個定時周期進給一步(注:本文中的“進給一步”代表發脈沖的高電平或低電平,兩次“進給一步”代表一個完整的脈沖)。在實際應用中,會設定一個較大的整數N,一般是2m,本文設置的是0x8000,即215。當累加超過該數時,視為溢出。相應的,根據單片機的定時周期,加工速度將折算成兩個整數用于實際的插補運算,一個整數是n,代表過n 個定時周期進給一步,另一個是dn,代表累加數,當dn 累加到達N 時,延遲一個定時周期進給一步。則:
V 代表的是指定的加工速度,做加減速控制的加速過程需要將速度從起跳速度按照一定的曲線加速到V,減速過程需要將速度從V 再減到起跳速度。
本文設計了一系列速度檔位,檔位就是起跳速度,然后逐步增加到V,每檔速度同時對應一個脈沖數組,及走過多少脈沖后切換到另外一個速度檔位。脈沖與速度構成的曲線可以是梯形曲線、指數型加減速曲線或S 型加減速曲線。每個速度檔位都按照相同的比例縮小速度V,三軸都按照相同的比例,就滿足了線性插補原理,可以在保證空間軌跡的同時,各軸按照相同的加減速方法進行加減速。但計算速度檔位必須在加工線段前進行,而且不能有除法運算,否則一般的單片機難以達到實時性的要求。按一定的比例縮小V 必須用到除法,要避免除法運算就只能采用移位運算來代替。由式(1)~(3)可知,k 與V 成反比,而n 和dn 分別對應k 的整數和小數部分。假設要得到V*p/q 對應的n 和dn,其中p、q 都是自然數且p《q。則k’=k*q/p,要用移位來代替除法必須p=2m,而且要爭取各速度檔位相對均勻。
本文設計的速度檔位因子分別是:1/16, 1/8, 1/4, 2/5,1/2, 2/3, 4/5, 8/9, 共八個檔位。對要求高的還可以設置更多的檔位。確定速度檔位因子后,就可以通過一系列的移位指令來計算V*p/q 對應的n 和dn,以4/5 為例:計算步驟如下:
n=ctrlDatas[i].n*5;// ctrlDatas[i].n 是給定速度對應的n,*5 也可以用左移位+加法代替
ns[j]=n》》2;//ns[j]是每個速度檔位對應的n,》》2 代表除以4
dns[j]=(ctrlDatas[i].dn*5)》》2;// dns[j]是每個速度檔位對應的dn
dns[j]=dns[j]+((n & 0x3)《《13);//將n 的余數補充到dn
ns[j]+=dns[j]》》15;//將dn 對應的整數部分補充到n
dns[j]=dns[j] & 0x7FFF;//取余數
可見通過一系列的位運算和加法運算實現了各速度檔位的計算,而且非常高。實驗證明,常規的單片機完全可以達到實時性的要求。
3 動態查表算法描述
動態查表算法有兩部分,一是加工前計算各檔位速度vc,另一個是實時的加減速控制rtvc。
下面分別描述。
3.1 算法vc,用于加工線段前的預處理,計算各軸各檔位速度對應的n 和dn:
(1)求長軸所在的索引longestIndex。本文將三軸分別編號成0,1,2,分別代表XYZ三軸,長加工軸代表該軸加工速度快,以該軸為基準進行加減速,其他軸同步按比例進行加減速
(2)如果長加工軸的加工脈沖小于系統指定脈沖,以系統指定的低速進行加工,清除加減速標志,不進行加減速控制。算法結束,否則轉第(3)步
(3)如果某軸的速度低于指定速度,該軸不進行加減速控制,全部按照指定速度進行加工。算法結束,否則轉第(4)步
(4)按照第2 節的速度檔位劃分及移位算法計算各軸各檔位速度對應的n 和dn。算法結束3.2 算法rtvc,用于實時加減速控制,根據發出脈沖計數進行相應的加減速控制:
(1)如果有加速標志,代表還需要進行加速控制,轉第(2)步,否則轉第(5)步
(2)如果長加工軸的加工脈沖超過某檔位對應的脈沖數,轉第(3)步,否則轉第(5)步
(3)如果達到檔位,代表已經完成加速,設置各軸實時n 和dn 為指定正常加工速度V 對應的n 和dn,清除加速標志,轉第(5)步。否則轉第(4)步
(4)設置各軸實時n 和dn 為對應加速檔位速度對應的n 和dn
(5)如果有減速標志,代表需要進行減速控制,轉第(6)步,否則算法結束
(6)計算長加工軸距離加工終點還有多少脈沖pulse
(7)如果pulse 小于某檔位對應的脈沖數,轉第(8)步,否則算法結束
(8)如果達到檔位,代表已經完成減速,清除減速標志,算法結束,否則轉第(9)步
(9)設置各軸實時n 和dn 為對應減速檔位速度對應的n 和dn。
算法結束算法 rtvc 的流程圖如圖1 所示,算法vc 的流程圖省略。
算法 vc 只需要在加工某線段前執行,而算法rtvc 用于實時加減速控制,需要在單片機的主循環里面反復調用,但由于調用rtvc 前速度表格已經計算好,只需查表即可,因此算法的實時性非常好。
在實際的加工程序中,除了增加以上兩個算法之外,還是按照常規的DDA 算法進行積分插補,按照常規判斷加工終點到達等等,不再贅述。
4 總結
動態查表法用到的表格有兩個,一個是切換各檔位速度需要走過的脈沖,另一個的各軸各檔位速度對應的n 和dn。后一個表格是動態計算生成的。調整前一個表格可以實現不同的加減速曲線,因此動態查表法可以實現各種加減速曲線,根據實際加工情況自由選擇,而不需要增加算法復雜度。同時,計算各檔位速度對應的n 和dn 只需要進行一系列的位運算和加法運算,一般的單片機即可達到良好的實時性。
動態查表法已經在數控點膠機上得到了很好的應用,實踐表明,用一般的ARM 芯片完全滿足了實時性和高的要求。動態查表法同樣可以應用到其他多軸聯動運動控制場合。
本項目目前出于市場推廣階段,已經創造經濟效益100 多萬元。
作者創新點:本文設計的步進電機三軸聯動快速加減速算法-動態查表法還沒有文獻記載,屬作者原創。該算法可以實現不同的加減速曲線,具有簡單高效的特點,用普通的單片機即可達到良好的實時性。
評論
查看更多