王宏志,徐 碩,呂洪武,胡黃水,蘭淼淼
(長春工業(yè)大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,長春 130012)
永磁同步電機(jī)(PMSM)具有結(jié)構(gòu)簡單和可靠性強(qiáng)等特點,在航空、軍事、數(shù)控機(jī)床和機(jī)器人等領(lǐng)域應(yīng)用廣泛[1].在實際應(yīng)用中,PMSM控制采用機(jī)械傳感器的方式估計轉(zhuǎn)子位置和轉(zhuǎn)速信息,但加入傳感器會使PMSM成本變高,增加系統(tǒng)復(fù)雜性,且傳感器也容易受環(huán)境干擾而產(chǎn)生額外的誤差,并增加了系統(tǒng)的不穩(wěn)定性.在PMSM的無傳感器控制中,主要利用電機(jī)轉(zhuǎn)子、電流和磁鏈等物理變量設(shè)計精確模型得到轉(zhuǎn)速信息.目前無傳感器控制算法主要包括比例積分微分控制(PID)[2]、神經(jīng)網(wǎng)絡(luò)算法[3]、擴(kuò)展Kalman濾波(EKF)[4]和無跡Kalman濾波(UKF)等方法[5-6].
基于EKF和UKF的控制方法均為經(jīng)典Kalman濾波在非線性系統(tǒng)應(yīng)用的擴(kuò)展算法,其主要思想均為將非線性系統(tǒng)進(jìn)行線性化處理,再采用Kalman濾波算法框架進(jìn)行近似估計[7],其中EKF算法采用Taylor展開的方式完成近似線性化,由于Taylor展開后忽略了算法的高階項,從而使EKF的狀態(tài)估計損失精度,并需求解非線性函數(shù)的Jacobi矩陣,因此對高階矩陣更容易產(chǎn)生誤差[8].UKF和EKF算法的計算復(fù)雜度相似,但UKF算法使用無跡變換(UT)而不需求解Jacobi矩陣,即未損失高精度項,因此其精度更高.由于UKF算法采用Cholesky分解,在進(jìn)行數(shù)值運算時舍入誤差和截斷誤差的積累和傳遞,因此有可能使協(xié)方差失去正定性而導(dǎo)致系統(tǒng)運行失敗或收斂性變差[9].
針對上述兩種算法存在的問題,王維等[10]提出了一種基于極大似然準(zhǔn)則的自適應(yīng)UKF算法以解決濾波發(fā)散問題;杜洪剛等[11]提出了一種自適應(yīng)UKF算法以解決噪聲估計值不準(zhǔn)確的問題;Zhang等[12]提出了支持向量回歸的狀態(tài)空間模型與無跡Kalman濾波(SVD-UKF)相結(jié)合的算法以解決傳統(tǒng)UKF算法無法解決測量協(xié)方差為非正定的問題;Li等[13]用qr分解和Cholesky分解得到協(xié)方差的平方根矩陣,提出了應(yīng)用于PMSM的平方根無跡Kalman濾波(SRUKF)算法;Xu等[14]將強(qiáng)跟蹤器與SRUKF相結(jié)合提出了新的SRUKF算法;成蘭等[15]提出了迭代SRUKF算法以保證協(xié)方差的非負(fù)定性;許波等[16]提出了基于弱化因子改進(jìn)的SRUKF算法實時修正增益矩陣和協(xié)方差矩陣;楊軍利等[17]將Sage-Husa算法與UKF相結(jié)合以解決模型干擾不確定的問題.
本文對SRUKF算法進(jìn)行改進(jìn),使用誤差協(xié)方差矩陣的平方根矩陣代替UKF的協(xié)方差矩陣進(jìn)行運算,保證協(xié)方差矩陣在大部分情況下滿足半正定性,從而增強(qiáng)PMSM系統(tǒng)的適應(yīng)性,在面對噪聲干擾時可取得更好的穩(wěn)定性,并通過MATLAB軟件仿真結(jié)果驗證該算法的有效性.
假設(shè)非線性系統(tǒng)的數(shù)學(xué)模型為
(1)
其中xk和yk分別為k時刻的系統(tǒng)狀態(tài)向量和測量向量,uk-1為k-1時刻的控制向量,f(·)為系統(tǒng)的狀態(tài)方程,h(·)為系統(tǒng)的測量方程,wk為過程噪聲,其協(xié)方差矩陣定義為Q,vk為過程噪聲,其協(xié)方差矩陣定義為R,二者相互獨立,均值為零,且為Gauss白噪聲.
SRUKF算法的步驟如下.
1) 對算法進(jìn)行初始化:
其中S0為初始協(xié)方差平方根矩陣,chol表示對正定矩陣做Cholesky分解,求解其上三角陣.
2) 計算SRUKF的(2n+1)個sigma采樣點集Xsigma:
(5)
(6)
其中上角標(biāo)表示矩陣的第i維,n=4為狀態(tài)向量的維數(shù),λ=α2(n+k)-n,α通常取0.000 1~1內(nèi)的實數(shù),k為次級采樣因子,一般為0或(3-n).
3) 將采樣點Xsigma代入狀態(tài)方程f(xk,uk)得到預(yù)測矩陣Xsigmapre,并取均值Xpred:
(7)
(8)
(9)
其中Wm表示均值的加權(quán)系數(shù).
4) 計算狀態(tài)預(yù)測誤差的協(xié)方差矩陣Sx,k-1:
(10)
(11)
(12)
5) 計算測量矩陣的sigma點集Ysigmaprd,并計算測量預(yù)測值Ypred:
(13)
(14)
將Ysigma代入h(xk,uk)可得:
(15)
(16)
6) 計算測量殘差協(xié)方差的平方根矩陣Sy,k-1:
(17)
(18)
7) 計算狀態(tài)向量與測量向量間的互協(xié)方差Pxy,k-1:
(19)
K=Pxy,k-1inv((Sy,k-1)TSy,k-1),
(20)
(21)
U=K×Sy,k-1,
(22)
Sk=cholupdate{Sx,k-1,U,-1},
(23)
其中inv表示求矩陣的逆.由于矩陣U為狀態(tài)變量和測量變量的維度,可能不是一個列向量,因此本文取矩陣U的任意列進(jìn)行運算,但結(jié)果相差較小.
本文主要在簡化算法流程和提高適應(yīng)性上改進(jìn)SRUKF算法,由于在對矩陣進(jìn)行Cholesky分解時,該矩陣至少是半正定的,但在實際運算中的矩陣可能并非是半正定的,因此可能導(dǎo)致系統(tǒng)發(fā)散甚至無法運行.在標(biāo)準(zhǔn)無跡Kalman濾波中的狀態(tài)預(yù)測估計協(xié)方差矩陣Pk為
(24)
(25)
由于
Px,k=(qr)T(qr)=rTr,
(26)
因此rT=Sx,k-1.
由式(24)~(26)可將式(10)和式(11)變?yōu)?/p>
(27)
(28)
得到新的狀態(tài)預(yù)測協(xié)方差矩陣.
同理式(17)和式(18)可變?yōu)?/p>
(29)
(30)
在普通SRUKF算法中的狀態(tài)誤差協(xié)方差矩陣Pk可表示為
(31)
根據(jù)協(xié)方差的定義可得
(32)
其中cov表示計算協(xié)方差.
將式(21)代入式(32)可得
Pk=cov(Xk-(Xpredk+K(Yk-Ypredk))).
(33)
將式(1)中的測量方程修改為矩陣方程
Yk=HXk+Vk,
(34)
Ypredk=HXpredk,
(35)
其中H為測量矩陣,Vk為觀測誤差矩陣.將式(34)和式(35)代入式(33)可得
Pk=cov(Xk-(Xpredk+K(HXk+Vk-HXpredk)))=cov((I-KH)(Xk-Xpredk)-KVk),
(36)
其中I為單位矩陣.由于Vk具有獨立性,因此可根據(jù)協(xié)方差的性質(zhì)進(jìn)行推導(dǎo):
根據(jù)式(27)和式(28)即可得到改進(jìn)算法后的更新狀態(tài)估計協(xié)方差平方根矩陣
(38)
(39)
由文獻(xiàn)[13]可知,計算機(jī)計算qr分解的復(fù)雜度為O(xy2),計算矩陣轉(zhuǎn)置的復(fù)雜度為O(xlgx),計算矩陣cholupdate的復(fù)雜度為O(2xy2),因此改進(jìn)后的算法小于未改進(jìn)算法的復(fù)雜度.
在MATLAB/SMULINK仿真軟件中,由于三相永磁同步電機(jī)數(shù)學(xué)模型是在同步旋轉(zhuǎn)坐標(biāo)軸d-q下建立的,因此本文選擇該坐標(biāo)系,其d-q坐標(biāo)系下的定子電壓方程為
(40)
其中ud,uq,id,iq分別為同步旋轉(zhuǎn)坐標(biāo)軸d-q下的定子d軸電壓、q軸電壓、d軸電流和q軸電流,R為定子電阻,ωe為電角速度,φf為永磁體磁鏈,Ls為電感,由于為表貼式永磁同步電機(jī),因此電機(jī)的d軸和q軸電感分量相等均為Ls.
為便于分析,將式(40)改寫為電流方程的形式
(41)
其中θe為轉(zhuǎn)子位置值.
通過式(41)可得狀態(tài)方程為
其中
(44)
(45)
(46)
(47)
將式(42)和式(43)進(jìn)行離散化處理可得
(48)
(49)
其中T1為采樣周期.
將離散后的狀態(tài)方程代入式(1)即可按改進(jìn)的SRUKF算法得到永磁同步電機(jī)的SRUKF觀測器.
改進(jìn)SRUKF無傳感器控制框圖如圖1所示.在MATLAB2018aSIMULINK實驗平臺上進(jìn)行仿真測試,PMSM模型選用SIMULINK自帶的三相永磁同步電機(jī),PMSM參數(shù)設(shè)置列于表1.
圖1 改進(jìn)SRUKF無傳感器控制框圖Fig.1 Block diagram of sensorless control of improved SRUKF
表1 PMSM參數(shù)設(shè)置
設(shè)定初始狀態(tài)為0,初始協(xié)方差矩陣P0、過程噪聲Q和過程噪聲R分別為
(50)
仿真時間為0.3 s,初始給定速度為800 rad/min,并在0.15 s時加入10(N·m)的負(fù)載擾動,在0.2 s時提高轉(zhuǎn)速到1 000 rad/min.
用UKF算法對加入擾動以及轉(zhuǎn)速變化后的轉(zhuǎn)速估計如圖2所示,用SRUKF算法對加入擾動以及轉(zhuǎn)速變化后的轉(zhuǎn)速估計如圖3所示.加入擾動以及轉(zhuǎn)速變化后兩種算法的轉(zhuǎn)速誤差估計如圖4所示.
圖2 用UKF算法對加入擾動以及轉(zhuǎn)速變化后的轉(zhuǎn)速估計Fig.2 Using UKF algorithm to estimate speed after adding disturbance and changing speed
圖3 用SRUKF算法對加入擾動以及轉(zhuǎn)速變化后的轉(zhuǎn)速估計Fig.3 Using SRUKF algorithm to estimate speed after adding disturbance and changing speed
由圖2~圖4可見: 電機(jī)在啟動時兩種算法的誤差基本一致,但SRUKF算法能更快達(dá)到穩(wěn)定,并且相對于期望轉(zhuǎn)速產(chǎn)生的振動和誤差明顯小于UKF算法;在0.15 s加入10(N·m)的負(fù)載后,SRUKF算法明顯優(yōu)于UKF算法的誤差和抖動,在0.2 s轉(zhuǎn)速上升至1 000 rad/min后,兩種算法均有一定的超調(diào),但SRUKF算法應(yīng)對干擾的能力更強(qiáng).兩種算法估計的轉(zhuǎn)子位置誤差如圖5所示.由圖5可見,SRUKF算法預(yù)估的轉(zhuǎn)子位置與期望轉(zhuǎn)子位置更接近,誤差更小,明顯優(yōu)于UKF算法.因此將改進(jìn)SRUKF算法應(yīng)用于有干擾存在的PMSM轉(zhuǎn)速控制中具有較大優(yōu)勢.
圖4 加入擾動以及轉(zhuǎn)速變化后兩種算法的轉(zhuǎn)速誤差估計Fig.4 Estimation of speed errors of two algorithms after adding disturbance and changing speed
圖5 兩種算法估計的轉(zhuǎn)子位置誤差Fig.5 Estimation of rotor positionerrors of two algorithms
綜上,本文提出了一種適用于永磁同步電機(jī)的改進(jìn)SRUKF算法,該算法的計算量更小,通過消去Cholesky分解運算過程,使系統(tǒng)具有更強(qiáng)的適應(yīng)性,解決了計算過程中因協(xié)方差矩陣非正定而產(chǎn)生發(fā)散或運行失敗的問題.該算法與傳統(tǒng)UKF算法在MATLAB/SIMULINK中進(jìn)行的仿真實驗表明,該算法可使干擾影響電機(jī)轉(zhuǎn)速時產(chǎn)生的抖動和誤差進(jìn)一步減小,并更精確估計出轉(zhuǎn)子位置.該算法為永磁同步電機(jī)的抗干擾算法提供了理論依據(jù)和參考.