劉 帥,冉 全,宇文濤
武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北 武漢 430205
為了適應(yīng)市場(chǎng)需要,電解質(zhì)分析儀等對(duì)步進(jìn)電機(jī)需求量大的設(shè)備,在增加功能的同時(shí)需要提高定時(shí)器資源利用率來滿足對(duì)步進(jìn)電機(jī)的控制。因此,提高原有芯片上的定時(shí)器資源利用率成為亟待解決的問題。步進(jìn)電機(jī)作為一種常用的執(zhí)行機(jī)構(gòu),它可以通過輸入脈沖信號(hào)控制,定位精度高、控制可靠、定位保持力強(qiáng)、以及可實(shí)現(xiàn)開環(huán)控制[1]。因此,步進(jìn)電機(jī)在智能控制系統(tǒng)中的多軸控制領(lǐng)域中具有廣泛的應(yīng)用[2-3]。
傳統(tǒng)的步進(jìn)電機(jī)控制算法有梯形算法和S 形算法。常見的S 形算法有:7 段式S 形算法、5 段式S 形算法[4-5]。在傳統(tǒng)控制中這類算法每個(gè)定時(shí)器只能控制一個(gè)步進(jìn)電機(jī),當(dāng)資源緊缺的時(shí)候往往需要擴(kuò)展芯片來協(xié)同處理,占用芯片資源較多。而時(shí)間片步數(shù)算法(steps-per-time-algorithm,SPTA)是在定時(shí)器中斷內(nèi)計(jì)算步進(jìn)電機(jī)運(yùn)動(dòng)步數(shù),當(dāng)中斷時(shí)間能夠滿足計(jì)算多個(gè)脈沖參數(shù)時(shí),能在各自條件成立時(shí)改變芯片引腳輸出狀態(tài)達(dá)到輸出多個(gè)步進(jìn)電機(jī)脈沖的目的。這樣在一個(gè)定時(shí)器內(nèi)就可以發(fā)出多個(gè)脈沖信號(hào),從而對(duì)多臺(tái)步進(jìn)電機(jī)進(jìn)行控制。
本文探討了梯形算法、S 形算法、普通SPTA 算法與改進(jìn)SPTA 算法在精簡指令集的芯片(advanced RISC machine,ARM)平臺(tái)上的實(shí)現(xiàn)方法,實(shí)驗(yàn)結(jié)果表明,在頻率段區(qū)間內(nèi)改進(jìn)SPTA 算法在定時(shí)器資源利用率及控制效率等綜合性能上優(yōu)于其他控制算法。
梯形算法主要優(yōu)點(diǎn)在于算法簡單易實(shí)現(xiàn),梯形算法在STM32 平臺(tái)上運(yùn)行時(shí)擁有較快的響應(yīng)速度,可以實(shí)現(xiàn)步進(jìn)電機(jī)的平穩(wěn)運(yùn)行[6-7]。但由于速度變化時(shí)曲線不夠平滑,會(huì)導(dǎo)致電機(jī)產(chǎn)生柔性沖擊,因此梯形加減速算法應(yīng)用在對(duì)加減速變化要求不高的場(chǎng)合。
為解決梯形算法的缺點(diǎn),通過指數(shù)函數(shù)構(gòu)造加減速運(yùn)動(dòng)模型提出7 段S 形算法,該算法相比于梯形算法,由于運(yùn)動(dòng)過程中速度變化平緩,在相同工作場(chǎng)合中S 形算法控制下的步進(jìn)電機(jī)基本無沖擊導(dǎo)致丟步的現(xiàn)象[8]。但該算法在提高精度的同時(shí)增加了算法的復(fù)雜性,影響電機(jī)響應(yīng)時(shí)間。5段S 形算法由7 段S 形算法之上演變而來,5 段S 形算法使得程序更加輕量化,較好地降低了存儲(chǔ)資源的占用[9-12]。因此這類S 形算法被廣泛應(yīng)用于對(duì)精度要求高的場(chǎng)合。這類算法都是通過改變定時(shí)器預(yù)分頻值來改變電機(jī)脈沖頻率,實(shí)現(xiàn)步進(jìn)電機(jī)的精確控制。但是傳統(tǒng)的控制算法往往一個(gè)步進(jìn)電機(jī)就需要單獨(dú)的一個(gè)定時(shí)器來控制。
在定時(shí)器資源占用這個(gè)問題上,一種新的控制算法被提出,SPTA 算法是將運(yùn)動(dòng)時(shí)間分割成若干個(gè)合適的小時(shí)間片。在每個(gè)時(shí)間片內(nèi)它都將速度參數(shù)加到位置參數(shù)上,如果位置參數(shù)溢出,它就會(huì)輸出一個(gè)脈沖。速度參數(shù)溢出頻率越高,電機(jī)運(yùn)行的頻率也就越高[13]。該方法很大程度地節(jié)省了芯片資源,SPTA 算法采用4 個(gè)狀態(tài)轉(zhuǎn)換來控制步進(jìn)電機(jī)運(yùn)動(dòng)。
ARM Corte-M4 處理器在M3 的基礎(chǔ)上強(qiáng)化了運(yùn)算能力,新加了浮點(diǎn)、DSP、并行計(jì)算等,其高效的信號(hào)處理功能與Cortex-M4 系列處理器的低功耗、低成本和易于使用的優(yōu)點(diǎn)的組合[14-15]。該處理器在電動(dòng)機(jī)控制、嵌入式系統(tǒng)以及工業(yè)自動(dòng)化市場(chǎng)有著廣泛的應(yīng)用。本文基于ARM Cortex-M4平臺(tái)上實(shí)現(xiàn)了改進(jìn)SPTA 算法與上述梯形算法、S形算法、SPTA 算法的對(duì)比實(shí)驗(yàn)。
改進(jìn)SPTA 控制算法是通過對(duì)7 段式S 形算法做改進(jìn),去掉勻加速、勻減速階段,引入了Sigmiod函數(shù)曲線作為速度變化曲線。因此,改進(jìn)SPTA 算法的應(yīng)用,一方面減少如梯形算法中頻率突變帶來柔性沖擊;另一方面也減少了7 段式S 形算法的處理時(shí)間,提高了算法運(yùn)行效率。控制狀態(tài)如圖1所示。

圖1 改進(jìn)SPTA 的狀態(tài)切換圖Fig.1 State transition diagram of improved SPTA
S 形曲線模型是在原Sigmoid 函數(shù)上轉(zhuǎn)換為分段函數(shù),各段對(duì)應(yīng)其加減速控制過程,t0~t2段對(duì)應(yīng)加加速階段和減加速階段;t2~t3段對(duì)應(yīng)勻速階段;t3~t5段對(duì)應(yīng)加減速階段和減減速階段。對(duì)應(yīng)ν - t曲線轉(zhuǎn)換成通用表達(dá)式為:

式中νmin為電機(jī)起始速度,νmax為電機(jī)最大速度,b的值控制速度曲線在速度軸方向拉伸,且b 值與頻率差值正相關(guān),關(guān)系為b = νmax- νmin;a 的值控制函數(shù)曲線在時(shí)間軸方向的拉伸,各運(yùn)動(dòng)狀態(tài)時(shí)間段參數(shù)滿足以下關(guān)系:

設(shè)置的加減速時(shí)間過長會(huì)導(dǎo)致啟停速度變化慢,在實(shí)際應(yīng)用上需要將公式(1)中b = νmax- νmin對(duì)應(yīng)調(diào)整為b = k1νmax- k2νmin,便于減少啟動(dòng)以及停止時(shí)間。通過設(shè)置參數(shù)a 的值滿足當(dāng)t = t2時(shí)ν →νmax。結(jié)合 公式1 將ν - t 函 數(shù)轉(zhuǎn)換為f - t 函數(shù)表達(dá)式為:

改進(jìn)SPTA 算法思想為:電機(jī)控制任務(wù)運(yùn)行后根據(jù)提供的各項(xiàng)參數(shù)和算法處理時(shí)間設(shè)置最大定時(shí)器中斷時(shí)間。頻率調(diào)整后,根據(jù)相應(yīng)參數(shù)調(diào)整若干次中斷發(fā)一脈沖,并在中斷里計(jì)算當(dāng)前頻率段脈沖個(gè)數(shù)。脈沖數(shù)發(fā)完后重新對(duì)相應(yīng)頻率段內(nèi)脈沖數(shù)計(jì)數(shù),直到設(shè)定的總步數(shù)運(yùn)動(dòng)完成。
控制系統(tǒng)的主控芯片采用ARM Cortex-M4 內(nèi)核的STM32F4 系列32 位微控制器,能夠在復(fù)雜的控制場(chǎng)合很好的滿足應(yīng)用。上位機(jī)通過串口與硬件平臺(tái)通信實(shí)現(xiàn)數(shù)據(jù)通信,下位機(jī)通過TB6560AHQ 步進(jìn)電機(jī)驅(qū)動(dòng)器實(shí)現(xiàn)電機(jī)的控制,硬件平臺(tái)系統(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)試功能測(cè)試算法運(yùn)行時(shí)間,配置一個(gè)常開的定時(shí)器,定時(shí)器最大頻率能保證算法正常運(yùn)行完成。設(shè)置計(jì)算加減速頻率段來選擇發(fā)一個(gè)脈沖所需的中斷數(shù),核心的函數(shù)和變量如表1所示。

表1 核心變量/函數(shù)表Tab.1 Core variable/function
變量interruptCount 用來計(jì)算最大中斷頻率下發(fā)一個(gè)脈沖所需要進(jìn)中斷數(shù)量。ParameterHandle()函數(shù)用來獲取上位機(jī)傳入的控制參數(shù):電機(jī)編號(hào)、運(yùn)動(dòng)方向、最大頻率、最小頻率、臺(tái)階數(shù)、總步數(shù)、加速時(shí)間,并通過這些參數(shù)計(jì)算出各頻率段頻率值。函數(shù)PulseCountAlgorithm()為中斷內(nèi)處理函數(shù),用于計(jì)算當(dāng)前電機(jī)各頻率段運(yùn)動(dòng)步數(shù),從而實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的加減速控制,程序流程圖如圖2(b)所示。
實(shí)驗(yàn)設(shè)置定時(shí)器中斷頻率為5 000 Hz,步進(jìn)電機(jī)相關(guān)運(yùn)動(dòng)參數(shù)為:起始頻率fmin= 500 Hz,運(yùn)行最高頻率fmax= 2 000 Hz,加速過程時(shí)間為t3- t0=2 s,臺(tái)階數(shù)n = 20。通過python 工具仿真頻率-時(shí)間曲線,如圖3(a)所示,提取改進(jìn)SPTA 算法中每個(gè)頻率下的脈沖數(shù)和所需時(shí)間得到離散數(shù)據(jù)如表2 所示。

圖3 (a)頻率變化曲線圖,(b)頻率變化離散圖Fig.3 (a)Frequency curve,(b)frequency piecewise line

表2 改進(jìn)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 個(gè)階段,仿真的曲線與算法曲線一致。
通過軟件調(diào)試,中斷定時(shí)器可設(shè)置最大中斷頻率為7 692 Hz,取整為7 500 Hz。通過在電解質(zhì)分析儀上的實(shí)驗(yàn)分析,儀器所需步進(jìn)電機(jī)頻率范圍為2 000~3 000 Hz。改進(jìn)SPTA 控制算法綜合性能表現(xiàn)良好,儀器運(yùn)行穩(wěn)定、定位精度符合要求,如圖4(a)、圖4(b)所示。3 臺(tái)步進(jìn)電機(jī)同時(shí)工作的情況下,各算法實(shí)驗(yàn)數(shù)據(jù)如表3 所示。

圖4 實(shí)驗(yàn)設(shè)備:(a)正視圖,(b)采樣針初始位Fig.4 Experimental equipment:(a)front view,(b)initial position of sampling needle

表3 實(shí)驗(yàn)數(shù)據(jù)表Tab.3 Experimental data
保證定位精度的前提下,通過設(shè)定不同工作頻率,改進(jìn)SPTA 算法與S 形算法在一個(gè)定時(shí)器資源下各頻率段內(nèi)控制步進(jìn)電機(jī)數(shù)量的實(shí)驗(yàn)結(jié)果如圖5 所示。
實(shí)驗(yàn)驗(yàn)證了改進(jìn)SPTA 算法的可行性。在電解質(zhì)分析儀上步進(jìn)電機(jī)在各頻率段響應(yīng)迅速、運(yùn)行穩(wěn)定、定位準(zhǔn)確,未出現(xiàn)丟步現(xiàn)象。由于工作頻率限制,算法更適用于脈沖頻率不高且要求高精度的場(chǎng)合。

圖5 算法性能圖Fig.5 Algorithm performance diagram
改進(jìn)SPTA 算法在ARM 硬件平臺(tái)上脈沖能穩(wěn)定輸出,實(shí)現(xiàn)了步進(jìn)電機(jī)精確控制,并與其他傳統(tǒng)步進(jìn)電機(jī)控制方式在電解質(zhì)分析儀上進(jìn)行了實(shí)驗(yàn)對(duì)比。在2 000~3 000 Hz 頻率段內(nèi)改進(jìn)SPTA 算法在芯片資源利用率上有明顯優(yōu)勢(shì),資源利用率提高1~2 倍,響應(yīng)速度接近梯形加減速算法,響應(yīng)時(shí)間差僅為0.33 ms,連續(xù)循環(huán)運(yùn)行24 h,過程中未出現(xiàn)丟步現(xiàn)象。改進(jìn)SPTA 算法適合在醫(yī)療行業(yè)中一些對(duì)運(yùn)動(dòng)頻率要求不高,但對(duì)精度要求高的場(chǎng)合。改進(jìn)SPTA 算法的研究主要方向是降低算法的復(fù)雜性,提高算法的執(zhí)行速度的上限將決定算法的控制能力上限。
本文提供的控制算法在保證運(yùn)行的穩(wěn)定性外,芯片資源占用上較傳統(tǒng)算法有明顯優(yōu)勢(shì),對(duì)多步進(jìn)電機(jī)控制系統(tǒng)領(lǐng)域研究有參考價(jià)值。