劉 帥,冉 全,宇文濤
武漢工程大學(xué)計算機科學(xué)與工程學(xué)院,湖北 武漢 430205
為了適應(yīng)市場需要,電解質(zhì)分析儀等對步進電機需求量大的設(shè)備,在增加功能的同時需要提高定時器資源利用率來滿足對步進電機的控制。因此,提高原有芯片上的定時器資源利用率成為亟待解決的問題。步進電機作為一種常用的執(zhí)行機構(gòu),它可以通過輸入脈沖信號控制,定位精度高、控制可靠、定位保持力強、以及可實現(xiàn)開環(huán)控制[1]。因此,步進電機在智能控制系統(tǒng)中的多軸控制領(lǐng)域中具有廣泛的應(yīng)用[2-3]。
傳統(tǒng)的步進電機控制算法有梯形算法和S 形算法。常見的S 形算法有:7 段式S 形算法、5 段式S 形算法[4-5]。在傳統(tǒng)控制中這類算法每個定時器只能控制一個步進電機,當(dāng)資源緊缺的時候往往需要擴展芯片來協(xié)同處理,占用芯片資源較多。而時間片步數(shù)算法(steps-per-time-algorithm,SPTA)是在定時器中斷內(nèi)計算步進電機運動步數(shù),當(dāng)中斷時間能夠滿足計算多個脈沖參數(shù)時,能在各自條件成立時改變芯片引腳輸出狀態(tài)達到輸出多個步進電機脈沖的目的。這樣在一個定時器內(nèi)就可以發(fā)出多個脈沖信號,從而對多臺步進電機進行控制。
本文探討了梯形算法、S 形算法、普通SPTA 算法與改進SPTA 算法在精簡指令集的芯片(advanced RISC machine,ARM)平臺上的實現(xiàn)方法,實驗結(jié)果表明,在頻率段區(qū)間內(nèi)改進SPTA 算法在定時器資源利用率及控制效率等綜合性能上優(yōu)于其他控制算法。
梯形算法主要優(yōu)點在于算法簡單易實現(xiàn),梯形算法在STM32 平臺上運行時擁有較快的響應(yīng)速度,可以實現(xiàn)步進電機的平穩(wěn)運行[6-7]。但由于速度變化時曲線不夠平滑,會導(dǎo)致電機產(chǎn)生柔性沖擊,因此梯形加減速算法應(yīng)用在對加減速變化要求不高的場合。
為解決梯形算法的缺點,通過指數(shù)函數(shù)構(gòu)造加減速運動模型提出7 段S 形算法,該算法相比于梯形算法,由于運動過程中速度變化平緩,在相同工作場合中S 形算法控制下的步進電機基本無沖擊導(dǎo)致丟步的現(xiàn)象[8]。但該算法在提高精度的同時增加了算法的復(fù)雜性,影響電機響應(yīng)時間。5段S 形算法由7 段S 形算法之上演變而來,5 段S 形算法使得程序更加輕量化,較好地降低了存儲資源的占用[9-12]。因此這類S 形算法被廣泛應(yīng)用于對精度要求高的場合。這類算法都是通過改變定時器預(yù)分頻值來改變電機脈沖頻率,實現(xiàn)步進電機的精確控制。但是傳統(tǒng)的控制算法往往一個步進電機就需要單獨的一個定時器來控制。
在定時器資源占用這個問題上,一種新的控制算法被提出,SPTA 算法是將運動時間分割成若干個合適的小時間片。在每個時間片內(nèi)它都將速度參數(shù)加到位置參數(shù)上,如果位置參數(shù)溢出,它就會輸出一個脈沖。速度參數(shù)溢出頻率越高,電機運行的頻率也就越高[13]。該方法很大程度地節(jié)省了芯片資源,SPTA 算法采用4 個狀態(tài)轉(zhuǎn)換來控制步進電機運動。
ARM Corte-M4 處理器在M3 的基礎(chǔ)上強化了運算能力,新加了浮點、DSP、并行計算等,其高效的信號處理功能與Cortex-M4 系列處理器的低功耗、低成本和易于使用的優(yōu)點的組合[14-15]。該處理器在電動機控制、嵌入式系統(tǒng)以及工業(yè)自動化市場有著廣泛的應(yīng)用。本文基于ARM Cortex-M4平臺上實現(xiàn)了改進SPTA 算法與上述梯形算法、S形算法、SPTA 算法的對比實驗。
改進SPTA 控制算法是通過對7 段式S 形算法做改進,去掉勻加速、勻減速階段,引入了Sigmiod函數(shù)曲線作為速度變化曲線。因此,改進SPTA 算法的應(yīng)用,一方面減少如梯形算法中頻率突變帶來柔性沖擊;另一方面也減少了7 段式S 形算法的處理時間,提高了算法運行效率。控制狀態(tài)如圖1所示。
圖1 改進SPTA 的狀態(tài)切換圖Fig.1 State transition diagram of improved SPTA
S 形曲線模型是在原Sigmoid 函數(shù)上轉(zhuǎn)換為分段函數(shù),各段對應(yīng)其加減速控制過程,t0~t2段對應(yīng)加加速階段和減加速階段;t2~t3段對應(yīng)勻速階段;t3~t5段對應(yīng)加減速階段和減減速階段。對應(yīng)ν - t曲線轉(zhuǎn)換成通用表達式為:
式中νmin為電機起始速度,νmax為電機最大速度,b的值控制速度曲線在速度軸方向拉伸,且b 值與頻率差值正相關(guān),關(guān)系為b = νmax- νmin;a 的值控制函數(shù)曲線在時間軸方向的拉伸,各運動狀態(tài)時間段參數(shù)滿足以下關(guān)系:
設(shè)置的加減速時間過長會導(dǎo)致啟停速度變化慢,在實際應(yīng)用上需要將公式(1)中b = νmax- νmin對應(yīng)調(diào)整為b = k1νmax- k2νmin,便于減少啟動以及停止時間。通過設(shè)置參數(shù)a 的值滿足當(dāng)t = t2時ν →νmax。結(jié)合 公式1 將ν - t 函 數(shù)轉(zhuǎn)換為f - t 函數(shù)表達式為:
改進SPTA 算法思想為:電機控制任務(wù)運行后根據(jù)提供的各項參數(shù)和算法處理時間設(shè)置最大定時器中斷時間。頻率調(diào)整后,根據(jù)相應(yīng)參數(shù)調(diào)整若干次中斷發(fā)一脈沖,并在中斷里計算當(dāng)前頻率段脈沖個數(shù)。脈沖數(shù)發(fā)完后重新對相應(yīng)頻率段內(nèi)脈沖數(shù)計數(shù),直到設(shè)定的總步數(shù)運動完成。
控制系統(tǒng)的主控芯片采用ARM Cortex-M4 內(nèi)核的STM32F4 系列32 位微控制器,能夠在復(fù)雜的控制場合很好的滿足應(yīng)用。上位機通過串口與硬件平臺通信實現(xiàn)數(shù)據(jù)通信,下位機通過TB6560AHQ 步進電機驅(qū)動器實現(xiàn)電機的控制,硬件平臺系統(tǒng)框圖如圖2(a)所示。
圖2 (a)系統(tǒng)框圖,(b)程序流程圖Fig.2 (a)System diagram,(b)program flowchart
軟件系統(tǒng)開發(fā)環(huán)境選用keil-MDK,該開發(fā)環(huán)境也是現(xiàn)在主流的開發(fā)環(huán)境之一,環(huán)境穩(wěn)定、調(diào)試便捷。通過調(diào)試功能測試算法運行時間,配置一個常開的定時器,定時器最大頻率能保證算法正常運行完成。設(shè)置計算加減速頻率段來選擇發(fā)一個脈沖所需的中斷數(shù),核心的函數(shù)和變量如表1所示。
表1 核心變量/函數(shù)表Tab.1 Core variable/function
變量interruptCount 用來計算最大中斷頻率下發(fā)一個脈沖所需要進中斷數(shù)量。ParameterHandle()函數(shù)用來獲取上位機傳入的控制參數(shù):電機編號、運動方向、最大頻率、最小頻率、臺階數(shù)、總步數(shù)、加速時間,并通過這些參數(shù)計算出各頻率段頻率值。函數(shù)PulseCountAlgorithm()為中斷內(nèi)處理函數(shù),用于計算當(dāng)前電機各頻率段運動步數(shù),從而實現(xiàn)對步進電機的加減速控制,程序流程圖如圖2(b)所示。
實驗設(shè)置定時器中斷頻率為5 000 Hz,步進電機相關(guān)運動參數(shù)為:起始頻率fmin= 500 Hz,運行最高頻率fmax= 2 000 Hz,加速過程時間為t3- t0=2 s,臺階數(shù)n = 20。通過python 工具仿真頻率-時間曲線,如圖3(a)所示,提取改進SPTA 算法中每個頻率下的脈沖數(shù)和所需時間得到離散數(shù)據(jù)如表2 所示。
圖3 (a)頻率變化曲線圖,(b)頻率變化離散圖Fig.3 (a)Frequency curve,(b)frequency piecewise line
表2 改進SPTA 算法數(shù)據(jù)離散表Tab.2 Discrete data of improved SPTA
表2 記錄了2 s 內(nèi)加速過程的相關(guān)數(shù)據(jù),根據(jù)加速階段的離散數(shù)據(jù)仿真出頻率變化離散曲線,如圖3(b)所示,其中加速和減速分為5 個階段,仿真的曲線與算法曲線一致。
通過軟件調(diào)試,中斷定時器可設(shè)置最大中斷頻率為7 692 Hz,取整為7 500 Hz。通過在電解質(zhì)分析儀上的實驗分析,儀器所需步進電機頻率范圍為2 000~3 000 Hz。改進SPTA 控制算法綜合性能表現(xiàn)良好,儀器運行穩(wěn)定、定位精度符合要求,如圖4(a)、圖4(b)所示。3 臺步進電機同時工作的情況下,各算法實驗數(shù)據(jù)如表3 所示。
圖4 實驗設(shè)備:(a)正視圖,(b)采樣針初始位Fig.4 Experimental equipment:(a)front view,(b)initial position of sampling needle
表3 實驗數(shù)據(jù)表Tab.3 Experimental data
保證定位精度的前提下,通過設(shè)定不同工作頻率,改進SPTA 算法與S 形算法在一個定時器資源下各頻率段內(nèi)控制步進電機數(shù)量的實驗結(jié)果如圖5 所示。
實驗驗證了改進SPTA 算法的可行性。在電解質(zhì)分析儀上步進電機在各頻率段響應(yīng)迅速、運行穩(wěn)定、定位準確,未出現(xiàn)丟步現(xiàn)象。由于工作頻率限制,算法更適用于脈沖頻率不高且要求高精度的場合。
圖5 算法性能圖Fig.5 Algorithm performance diagram
改進SPTA 算法在ARM 硬件平臺上脈沖能穩(wěn)定輸出,實現(xiàn)了步進電機精確控制,并與其他傳統(tǒng)步進電機控制方式在電解質(zhì)分析儀上進行了實驗對比。在2 000~3 000 Hz 頻率段內(nèi)改進SPTA 算法在芯片資源利用率上有明顯優(yōu)勢,資源利用率提高1~2 倍,響應(yīng)速度接近梯形加減速算法,響應(yīng)時間差僅為0.33 ms,連續(xù)循環(huán)運行24 h,過程中未出現(xiàn)丟步現(xiàn)象。改進SPTA 算法適合在醫(yī)療行業(yè)中一些對運動頻率要求不高,但對精度要求高的場合。改進SPTA 算法的研究主要方向是降低算法的復(fù)雜性,提高算法的執(zhí)行速度的上限將決定算法的控制能力上限。
本文提供的控制算法在保證運行的穩(wěn)定性外,芯片資源占用上較傳統(tǒng)算法有明顯優(yōu)勢,對多步進電機控制系統(tǒng)領(lǐng)域研究有參考價值。