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