王巖
摘 要:針對現(xiàn)有步進(jìn)電機(jī)控制器的不足,設(shè)計一種基于FPGA(Field-Programmable Gate Array)的SpTa自適應(yīng)電機(jī)控制算法。本算法通過簡單的數(shù)學(xué)運算和極低的資源占用、利用FPGA并行執(zhí)行的特點,實現(xiàn)了多軸同步運動、加減速過程加速度可調(diào)的自適應(yīng)電機(jī)控制。使用SpTa算法實現(xiàn)加速度自適應(yīng)的電機(jī)加減速運動,具有很好的實用性。
關(guān)鍵詞:FPGA 電機(jī)控制算法 SpTa 多軸同步控制器
中圖分類號:TP18 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2018)09(a)-0011-02
醫(yī)療設(shè)備、工業(yè)設(shè)備的運動控制系統(tǒng)中,需要多個步進(jìn)電機(jī)同步多角度的運動,以實現(xiàn)復(fù)雜的多方位控制。步進(jìn)電機(jī)的驅(qū)動控制常用的有PLC、MUC、FPGA等方式,其中PLC控制成本較高,不適合在低成本的方案中使用,單一MUC無法實現(xiàn)多電機(jī)的同步運動,F(xiàn)PGA的并行執(zhí)行及低成本的特點能很好地實現(xiàn)在低成本方案中多電機(jī)的同步運動。
現(xiàn)有的電機(jī)控制技術(shù)主要通過加減速算法實現(xiàn)步進(jìn)電機(jī)的平滑運動,加減速算法常用的有梯形加減速、S型加減速。梯形加減速算法加速和減速過程中加速度為一個常數(shù),在FPGA上實現(xiàn)該算法的原理比較簡單,但是該算法加速不平穩(wěn),沖量比較大,運行精度低。S型加減速算法加速和減速過程中加速度按照加加速、勻加速、減加速的過程完成整個變速過程,該算法加速平穩(wěn),沖量小,但是加速度時間比較長,在FPGA上實時計算加速過程的加速度計算量大,占用的FPGA資源比較大,耗時比較長,進(jìn)而影響實時性。
根據(jù)FPGA芯片的特點及現(xiàn)有技術(shù)的不足,提出一種用于控制步進(jìn)電機(jī)的基于FPGA的SpTa自適應(yīng)控制算法。該算法在FPGA上使用簡單的加、減、移位運算,使用很少的資源實現(xiàn)多個步進(jìn)電機(jī)的同步平穩(wěn)運動。該算法實現(xiàn)的電機(jī)控制可應(yīng)用于實時性要求比較高的工業(yè)控制和自動化領(lǐng)域。
1 電機(jī)SpTa自適應(yīng)算法原理
步進(jìn)電機(jī)的整個運行過程包括空閑(停止)、加速階段、勻速階段、減速階段,當(dāng)遇到停止信號后,無論是在加速階段還是勻速階段,步進(jìn)電機(jī)均需要以當(dāng)前的速度按照設(shè)定的加速度進(jìn)行減速,直到步進(jìn)電機(jī)停止運動。其流程圖如圖1所示。
電機(jī)控制算法,常見的有梯形加速算法、拋物線加速算法、S型曲線加速算法。這些算法基本是以固定的曲線進(jìn)行匹配加速,SpTa算法則是以時間計算為中心,根據(jù)時間來計算運動步數(shù)相關(guān)參數(shù),它的做法是將步進(jìn)電機(jī)的運動時間分割成若干個合適的時間片段,在每個時間片段計時達(dá)到后,它都將速度參數(shù)加到位置參數(shù)上,如果位置參數(shù)溢出,它就輸出一個脈沖,控制步進(jìn)電機(jī)運行一步,速度參數(shù)根據(jù)加速度參數(shù)和時間而改變,隨著時間推移,速度參數(shù)越來越大,位置參數(shù)溢出頻率越來越高,則步進(jìn)電機(jī)的運行頻率也越來越高。
基于SpTa算法的步進(jìn)電機(jī)加速、勻速運動如圖2所示,定義3個32bit的寄存器用于實現(xiàn)數(shù)據(jù)的累加及判斷。在電機(jī)運動前,將3個寄存器復(fù)位清零,確保加速度和速度均是從零開始累加。
在速度v還未達(dá)到預(yù)設(shè)的Vo時,用于加速度累加的加法器在時間片段達(dá)到后對寄存器A的值和加速度值進(jìn)行累加存入寄存器A中,同時對寄存器A的高12bit值(相當(dāng)于將A右移20bit或者除以220)進(jìn)行判斷,32bit位置寄存器P主要用于判斷速度的累加是否有溢出,通過該寄存器的高12bit是否有溢出來輸出步進(jìn)電機(jī)運動的脈沖。在一個時間片段觸發(fā)到來時,將當(dāng)前速度寄存器V與位置寄存器P相加,同時將值存儲到位置寄存器P中。對位置寄存器P的高12bit進(jìn)行判斷,如果大于等于1,則認(rèn)為數(shù)據(jù)溢出,此時產(chǎn)生一次步進(jìn)電機(jī)運動的脈沖,同時將位置寄存器P的高12bit清零,并對電機(jī)運動步數(shù)進(jìn)行累加。
根據(jù)FPGA芯片的并行運行的特點,“950ns時間片段加速過程”和“20ns時間片段加速過程”可以同時進(jìn)行運算,且可以在步進(jìn)電機(jī)未完成加速過程時,已經(jīng)計算出減速過程需要運行的步數(shù)。通過這樣的方式,可以實現(xiàn)加速和減速過程的加速度的不相同。對于未加入完成及進(jìn)入減速過程時,此時僅僅需要按照減速過程執(zhí)行即可。
2 本算法技術(shù)帶來的有益效果
利用FPGA并行運行特點,結(jié)合SpTa算法,通過將算法優(yōu)化,在FPGA上實現(xiàn)簡單、資源占用低的高性能步進(jìn)電機(jī)控制算法,實現(xiàn)了低成本高性能的控制方式。
實現(xiàn)加速和減速過程的加速度可調(diào),可以實現(xiàn)慢速啟動,快速停止,提高了靈活性。
利用FPGA并行可實現(xiàn)多個步進(jìn)電機(jī)的同步控制
3 結(jié)語
利用FPGA并行運行特點,結(jié)合SpTa算法,通過將算法優(yōu)化,在FPGA上實現(xiàn)簡單、資源占用低的高性能步進(jìn)電機(jī)控制算法,實現(xiàn)了低成本高性能的控制方式。
實現(xiàn)加速和減速過程的加速度可調(diào),可以實現(xiàn)慢速啟動,快速停止,提高了靈活性。利用FPGA并行可實現(xiàn)多個步進(jìn)電機(jī)的同步控制。
參考文獻(xiàn)
[1] 王邦繼,劉慶想,周磊,等.步進(jìn)電機(jī)速度曲線的設(shè)計與FPGA實現(xiàn)[J].微電機(jī),2012,45(8):67-71.
[2] 張朝暉,陸玉昌,張鈸.利用神經(jīng)網(wǎng)絡(luò)發(fā)現(xiàn)分類規(guī)則[J].計算機(jī)學(xué)報,1999,12(2):108-111.
[3] 陳文偉.決策支持系統(tǒng)及其開發(fā)[M].北京:清華大學(xué)出版社,2000:12-15.