張航寧, 李文新, 梁 緒
蘭州空間技術(shù)物理研究所,蘭州 730000
步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成相應(yīng)角位移或線位移的電動(dòng)機(jī),由于其結(jié)構(gòu)簡(jiǎn)單、開(kāi)環(huán)精度高、成本低等優(yōu)點(diǎn)而在大量中低端場(chǎng)合得到廣泛應(yīng)用.步進(jìn)電機(jī)的加減速過(guò)程需要遵循一定的速度曲線,目前常用的速度曲線方案主要有梯形、指數(shù)形、拋物線形和S形等.
最近幾年人們對(duì)步進(jìn)電機(jī)的研究主要專注于解決步進(jìn)電機(jī)存在的低速易振蕩和高速易失步等問(wèn)題[1-2],以及精度不夠高、扭矩紋波大、能量效率低[3-4]等問(wèn)題,或重點(diǎn)研究電機(jī)模型以及如何設(shè)計(jì)速度曲線能夠充分利用步進(jìn)電機(jī)的矩頻特性[5-7],但在很多由微控制器驅(qū)動(dòng)的嵌入式系統(tǒng)中,對(duì)電機(jī)性能要求不高,而且由于受到微控制器的計(jì)算速度的影響,過(guò)于復(fù)雜的算法也限制了電機(jī)和CPU系統(tǒng)性能的發(fā)揮[8],對(duì)于臨時(shí)修改運(yùn)行參數(shù)的情況也少有研究.
為了精確地設(shè)計(jì)梯形速度曲線,文獻(xiàn)[9]提出了利用定時(shí)器生成脈沖的方法,在每次定時(shí)器溢出后重新計(jì)算下一次定時(shí)器計(jì)時(shí)時(shí)長(zhǎng)并設(shè)置為下一次定時(shí)器的溢出值.文獻(xiàn)[10]在其基礎(chǔ)上進(jìn)行了改進(jìn),將步進(jìn)電機(jī)必須從零速度開(kāi)始的限制條件推廣到可以從任意速度啟動(dòng),首先提出了“實(shí)時(shí)”設(shè)計(jì)速度曲線的思想,并從理論上對(duì)誤差進(jìn)行了分析.在人們不斷提出速度曲線的理論方法時(shí),也不斷有人將這一算法進(jìn)行應(yīng)用,如文獻(xiàn)[11]將這一算法應(yīng)用于FPGA,文獻(xiàn)[8]將其應(yīng)用于微控制器,并提出了如何使加速度不突變的方法等.但這些方法和應(yīng)用場(chǎng)景都不適用于需要隨時(shí)對(duì)電機(jī)運(yùn)行參數(shù)進(jìn)行修改的場(chǎng)合,如機(jī)器人或雷達(dá)等場(chǎng)合中需要對(duì)目標(biāo)進(jìn)行隨動(dòng)跟蹤,不斷調(diào)整跟蹤目標(biāo)和運(yùn)動(dòng)速度等.雖然文獻(xiàn)[12]在使用這一算法時(shí)考慮到了在到達(dá)期望速度時(shí)就臨時(shí)開(kāi)始減速的特殊情況,但對(duì)于需要臨時(shí)改變速度、加速度、方向等,以及初速不為零等特殊情況處理仍然較為復(fù)雜,且國(guó)內(nèi)外尚未找到合適的能解決所有特殊情況的解決方案.
自抗擾控制理論是韓京清提出的一種簡(jiǎn)單實(shí)用的控制方法[13],其核心由跟蹤微分器(tracking differentiator, TD)、擴(kuò)張狀態(tài)觀測(cè)器(extended state observer,ESO)和狀態(tài)誤差非線性組合控制律(state error nonlinear control law, SENCL) 3個(gè)部分組成.自抗擾控制算法中的跟蹤微分器一般用于輸入指令信號(hào)及其微分信號(hào)的濾波[14],由于其良好的濾波和跟蹤效果,在得到了廣泛應(yīng)用的同時(shí)[15-17]人們也對(duì)其進(jìn)行了大量改進(jìn)[18-19],其跟蹤輸入信號(hào)的思想?yún)s可用于步進(jìn)電機(jī)指定脈沖步數(shù)的控制中.
為了完善地解決前文所述特殊情況,本文利用跟蹤微分器的思想提出了一種新的方法,將電機(jī)的設(shè)定轉(zhuǎn)動(dòng)角度看作原始信號(hào),電機(jī)的實(shí)際轉(zhuǎn)動(dòng)角度看作跟蹤信號(hào),并提出了將控制周期和電機(jī)脈沖信號(hào)周期獨(dú)立的方法,這一速度曲線設(shè)計(jì)復(fù)雜的難題.文獻(xiàn)[20]對(duì)跟蹤微分器中的離散系統(tǒng)最速控制綜合函數(shù)進(jìn)行了修正,達(dá)到了最小步數(shù).本文根據(jù)實(shí)際需求,在其基礎(chǔ)上對(duì)其進(jìn)行部分修改,加入溫和的最大速度限制功能,使得跟蹤微分器在限制步進(jìn)電機(jī)轉(zhuǎn)速的同時(shí)能夠保持速度變化連續(xù).另外提出了最速控制函數(shù)的另一種形式,使其能夠縮短在微控制器上的運(yùn)行時(shí)間.
本文將這一套使用了具有微控制器運(yùn)行加速和溫和最大速度限制功能的跟蹤微分器,且控制周期與脈沖周期獨(dú)立的步進(jìn)電機(jī)控制策略稱為步進(jìn)電機(jī)的“脈沖自適應(yīng)跟蹤”算法(pulse adaptive tracking, PAT).目前PAT算法已經(jīng)成功應(yīng)用于兩相四線混合式步進(jìn)電機(jī)驅(qū)動(dòng)的小型六軸桌面機(jī)械臂,該算法作為機(jī)械臂關(guān)節(jié)電機(jī)的底層驅(qū)動(dòng)算法,可使機(jī)械臂在工作和運(yùn)動(dòng)過(guò)程中任意修改運(yùn)行參數(shù),減輕了頂層算法設(shè)計(jì)的難度,并在一定程度上簡(jiǎn)化了機(jī)械臂軌跡規(guī)劃的任務(wù)設(shè)計(jì).
本文所述算法的主要難點(diǎn)有兩個(gè),一是如何將跟蹤微分器中的速度映射到步進(jìn)電機(jī)的脈沖寬度上以及這種做法帶來(lái)的累積誤差和速度顫振問(wèn)題,二是在跟蹤微分器中加入最大速度限制并避免速度突變問(wèn)題.
跟蹤微分器是一個(gè)將帶噪聲的原始輸入信號(hào)v(t)輸出為輸入的跟蹤(濾波)信號(hào)x1(t)和它的微分信號(hào)x2(t)的算法.以位置信號(hào)為例,將某一位置以某一速度運(yùn)動(dòng)的物體施加一個(gè)持續(xù)的加速度u(t),在滿足|u(t)|≤r的條件下能使該物體在最短時(shí)間內(nèi)靜止在參考點(diǎn),在這一過(guò)程中,x1(t)就是位置信號(hào),x2(t)就是速度信號(hào).本文所述的跟蹤微分器均為常見(jiàn)的二階跟蹤微分器.對(duì)于二階離散系統(tǒng)
將其中的u[k]取
u[k]=fhan(x1,x2,r,h)
(3)
則可使?fàn)顟B(tài)變量處于x=[x1x2]T的信號(hào)盡可能快地回到[0 0]T點(diǎn).其中的非線性函數(shù)fhan()被稱作離散系統(tǒng)最速控制綜合函數(shù).文獻(xiàn)[13]中給出的函數(shù)表達(dá)式為
(4)
首先提出幾個(gè)關(guān)于周期的概念.
1)脈沖周期T0,指最終輸出給步進(jìn)電機(jī)的脈沖;
2)控制周期,即式(2)中的步長(zhǎng)h,跟蹤微分器的計(jì)算更新周期;
3)計(jì)時(shí)單元周期T,或最低速度分辨率,脈沖周期T0是T的整數(shù)倍,16位定時(shí)器中為1~65 536倍.
PAT算法的基本思路為,設(shè)置計(jì)時(shí)單元周期T及控制周期h,本文以T=10 us和h=20 ms為例.在每個(gè)控制周期中運(yùn)行跟蹤微分器,即根據(jù)當(dāng)前的x1、x2、h和設(shè)置的最大加速度參數(shù)r計(jì)算u[k]=fhan(x1,x2,r,h),按照式(1)和(2)更新了狀態(tài)量x1和x2后,設(shè)置脈沖周期為x2的倒數(shù)并四舍五入取整作為步進(jìn)電機(jī)的脈沖周期.算法流程如圖1所示(為表述方便及結(jié)果清晰起見(jiàn),以下內(nèi)容中的算法說(shuō)明及仿真中均忽略了每半個(gè)脈沖周期翻轉(zhuǎn)電平的步驟).
圖1 PAT算法流程圖Fig.1 Flowchart for PAT algorithm
該算法最重要的特點(diǎn)是控制周期與電機(jī)脈沖周期相互獨(dú)立,如圖2所示,其中控制周期固定,而脈沖周期由每個(gè)控制周期內(nèi)的算法計(jì)算得到,因此避免了文獻(xiàn)[10]中提到的控制周期不固定所帶來(lái)的復(fù)雜計(jì)算問(wèn)題.
圖2 同步周期與異步周期比較Fig.2 Comparison of synchronous and asynchronous periods
這一算法有很多潛在問(wèn)題.第一,在目前的微控制器中廣泛使用16位定時(shí)器,因此由x1的倒數(shù)計(jì)算得到的脈寬可能超過(guò)定時(shí)器的重裝載寄存器上限.第二,變量x2和脈沖步數(shù)均可以代表角度,若使用前文所述算法根據(jù)x2來(lái)計(jì)算u,相當(dāng)于跟蹤微分器的更新和步進(jìn)電機(jī)脈沖步數(shù)的更新相互獨(dú)立,而由于取整過(guò)程中存在誤差,以及電機(jī)脈沖周期與控制周期不同步,這兩個(gè)本應(yīng)完全相等的變量之間的誤差會(huì)越來(lái)越大.第二個(gè)問(wèn)題可以采用的解決方法是,在式(3)中將脈沖步數(shù)代入,即
u=fhan(θ,x2,r,h)
(5)
其中,θ為步進(jìn)電機(jī)當(dāng)前的脈沖步數(shù),相當(dāng)于加入了反饋.但這一加入誤差的做法引入了第三個(gè)問(wèn)題,原本的最速控制函數(shù)因?yàn)榧尤氲倪@一誤差又產(chǎn)生了新的誤差,因此解決了累積誤差問(wèn)題的同時(shí)又引入了速度顫振問(wèn)題.
另外,步進(jìn)電機(jī)的工作需要限制最大速度以保持扭矩,而跟蹤微分器本身并沒(méi)有這一功能,需要對(duì)其進(jìn)行適當(dāng)改進(jìn).
所有問(wèn)題總結(jié)如下:
1)最長(zhǎng)脈寬問(wèn)題(或最慢速度問(wèn)題);
2)取整過(guò)程的累積誤差問(wèn)題;
3)由(2)引入的速度顫振問(wèn)題;
4)最大速度限制問(wèn)題.
問(wèn)題(2)已通過(guò)加入反饋解決,下文分別介紹其余問(wèn)題的解決方法.
跟蹤微分器的核心是離散系統(tǒng)最速控制綜合函數(shù).在文獻(xiàn)[21]中,作者給出的離散系統(tǒng)最速控制綜合函數(shù)fsun的公式為
(6)
其中
原論文中的公式有誤,此處已更正.這一公式的另一種簡(jiǎn)化寫(xiě)法如下:
其中 sat() 函數(shù)也對(duì)應(yīng)地簡(jiǎn)化為
公式的這兩種寫(xiě)法等價(jià),形式不同而結(jié)果相同,后者算法的運(yùn)行速度略快.
速度對(duì)應(yīng)變量x1,而速度要求不能突變,因此需要對(duì)式(3)進(jìn)行擴(kuò)展,改為
u=fhan(x1,x2,h,r,p)
(7)
其中r,p分別為最大限制加速度和最大限制速度.加入最大速度限制功能有幾點(diǎn)考慮,若只對(duì)速度施加死區(qū)限制,則會(huì)發(fā)生提速時(shí)速度連續(xù),但降速時(shí)速度突變的問(wèn)題;若只對(duì)降速情況進(jìn)行處理,則在接近限制速度邊界處會(huì)產(chǎn)生超調(diào).
綜合考慮以上兩點(diǎn),解決的思路是預(yù)測(cè)下一時(shí)刻的速度是否低于限制速度,以x2>0為例,如果
x2+hu>p
則認(rèn)為當(dāng)前處于超速狀態(tài),而由于進(jìn)行了一步預(yù)測(cè),因此當(dāng)前情況下如果令下一步的u=r會(huì)使速度低于限制速度,則當(dāng)前步應(yīng)計(jì)算出一個(gè)u
p=x2[k]+hu[k]
反之當(dāng)x2<0時(shí)
-p=x2[k]+hu[k]
使用sign()函數(shù)將兩式合并,得
將該式加入式(7),則式(4)為
(8)
1.2節(jié)中提到脈沖周期T0是T的整數(shù)倍,一般情況下16位定時(shí)器帶來(lái)的速度分辨率足以滿足大多數(shù)場(chǎng)合使用.若分辨率不滿足要求,可串聯(lián)多個(gè)定時(shí)器使用,或部分微控制器帶有定時(shí)器的預(yù)分頻寄存器可用于擴(kuò)展定時(shí)周期.盡管分辨率足夠高,但速度過(guò)低時(shí)仍需關(guān)閉定時(shí)器而避免超過(guò)定時(shí)器計(jì)時(shí)上限.
此處理方法的不連續(xù)為跟蹤微分器引入了額外的誤差,關(guān)閉定時(shí)器的同時(shí)跟蹤微分器尚未停止工作,因此需要對(duì)跟蹤微分器進(jìn)行程序清零操作.
算法仿真應(yīng)盡可能接近實(shí)際的硬件實(shí)現(xiàn)情況,但部分硬件實(shí)現(xiàn)仍然可以在算法仿真中忽略.具體思路為,控制器的控制周期設(shè)為20 ms,與硬件實(shí)現(xiàn)相同.由于步進(jìn)電機(jī)的控制方式為脈沖控制,每個(gè)上升沿轉(zhuǎn)過(guò)一個(gè)步距角,因此脈沖波形的產(chǎn)生則可以在算法仿真中用增減1代替,而在實(shí)際的硬件實(shí)現(xiàn)中需要每半個(gè)脈沖周期翻轉(zhuǎn)一次電平,或根據(jù)電機(jī)參數(shù)保持一定時(shí)間的高電平脈寬.
跟蹤微分器相平面以及加入限制最大速度的相平面圖如圖3所示.
圖3 跟蹤微分器相平面Fig.3 Phase plane of tracking differentiator
下面以常見(jiàn)的兩相四線混合式步進(jìn)電機(jī)為例進(jìn)行仿真,該電機(jī)一轉(zhuǎn)200個(gè)脈沖,即一個(gè)脈沖對(duì)應(yīng)π/100(rad).限制最大速度、運(yùn)行過(guò)程中不改變參數(shù)的基本功能仿真如圖4所示.從圖中可以看出,如果不進(jìn)行程序清零操作,達(dá)到穩(wěn)態(tài)后會(huì)出現(xiàn)速度顫振問(wèn)題.
圖4 基本功能仿真Fig.4 Basic simulation results
運(yùn)行過(guò)程中目標(biāo)發(fā)生變化的仿真結(jié)果如圖5所示.在1.5 s處設(shè)定的目標(biāo)角度由15π(rad)改為-10π(rad),可見(jiàn)電機(jī)可以穩(wěn)定地?fù)Q向并重新前往設(shè)定目標(biāo).這一仿真加入程序清零步驟后,盡管仍有微小抖動(dòng),但顫振問(wèn)題得以解決.
圖5 設(shè)定目標(biāo)突變仿真Fig.5 Simulation for changing target pulse
速度指令的突變仿真結(jié)果如圖6所示.初始速度為12π(rad/s),設(shè)定最大限制速度為10π(rad/s),1.5 s時(shí)將最大限制速度降至5π(rad/s),并在3 s時(shí)恢復(fù).可見(jiàn)速度-時(shí)間曲線連續(xù),沒(méi)有突變,電機(jī)轉(zhuǎn)動(dòng)平滑穩(wěn)定.
圖6 最大限制速度突變仿真Fig.6 Simulation for changing maximum limiting speed
具體的硬件實(shí)現(xiàn)有兩種方法,一種是前文所述固定定時(shí)器的周期為10us,也就是仿真的最小時(shí)間單位,在每個(gè)控制周期內(nèi)計(jì)算當(dāng)前周期內(nèi)的脈沖寬度近似等長(zhǎng)的定時(shí)器周期數(shù),到達(dá)計(jì)算出的定時(shí)器周期數(shù)后翻轉(zhuǎn)電平;另一種是直接設(shè)置定時(shí)器周期并使其產(chǎn)生的脈沖寬度等于計(jì)算值,在定時(shí)器溢出中斷中翻轉(zhuǎn)電平.兩種方法各有優(yōu)缺點(diǎn)但效果相近,本文的算法仿真和硬件實(shí)現(xiàn)均使用第一種方法.
引腳輸出的波形如圖7所示.(a)(b)為連續(xù)的一段波形,(a)圖展示前往設(shè)定目標(biāo)的波形,(b)圖展示到達(dá)目標(biāo)并換向的波形.兩圖中上面的信號(hào)為脈沖信號(hào),下面的信號(hào)為方向信號(hào).
圖7 引腳輸出波形Fig.7 Pin output waveforms
用增量式旋轉(zhuǎn)編碼器對(duì)步進(jìn)電機(jī)的轉(zhuǎn)角進(jìn)行測(cè)試如圖8所示.8(a)為電機(jī)減速直到停止時(shí)編碼器的輸出波形,8(b)為中間臨時(shí)修改最大限制速度并恢復(fù)的波形.
由于嵌入式系統(tǒng)對(duì)運(yùn)行速度要求嚴(yán)格,因此有必要對(duì)算法耗時(shí)進(jìn)行測(cè)試.2.1節(jié)的兩種算法在不同平臺(tái)下的運(yùn)行耗時(shí)見(jiàn)表1(原文公式為算法一,PAT算法中的公式為算法二).
運(yùn)行速度測(cè)試表明,在兩個(gè)平臺(tái)上算法二的運(yùn)行速度均略快于算法一.STM32上的測(cè)試使用100 kHz和1 MHz的定時(shí)中斷進(jìn)行了兩次測(cè)試,運(yùn)行時(shí)間中包括了進(jìn)出中斷的時(shí)間.所有測(cè)試均未使用編譯優(yōu)化.
圖8 編碼器輸出波形Fig.8 Encoder output waveforms
表1 運(yùn)行速度測(cè)試Tab.1 Running speed test
本文介紹了步進(jìn)電機(jī)的PAT算法中使用跟蹤微分器設(shè)計(jì)梯形速度曲線的具體方法和出現(xiàn)的各種難題,完成了對(duì)于電機(jī)各種轉(zhuǎn)速狀態(tài)和變化的目標(biāo)位置,給定限制最大速度和最大加速度即可自動(dòng)實(shí)時(shí)設(shè)計(jì)速度曲線的目標(biāo).本文也對(duì)各種典型情況進(jìn)行了仿真,展示了PAT算法的可靠性和穩(wěn)定性.目前PAT算法已被成功應(yīng)用于步進(jìn)電機(jī)驅(qū)動(dòng)的機(jī)械臂中,且預(yù)計(jì)將會(huì)在其他使用步進(jìn)電機(jī)且有相關(guān)需求的場(chǎng)合得到廣泛應(yīng)用.