陳景芳,單春賢,蔡 健
(江蘇大學 能源與動力工程學院,江蘇 鎮(zhèn)江 212013)
無刷直流電機的基點是用裝有永磁體的轉(zhuǎn)子取代有刷直流電機的定子磁極[1-3],將原直流電機的電樞變成定子。在無刷直流電機控制器設(shè)計時,PI參數(shù)的整定尤為關(guān)鍵。一般的整定方法有臨界比例法、衰減曲線法和經(jīng)驗法。這些方法固然可行,但是都比較繁瑣。本文借助Simulink仿真平臺搭建BLDC控制系統(tǒng)的仿真模型,引入爬蟲算法實現(xiàn)速度環(huán)PI參數(shù)的快速整定。
本文采用最常用的兩相導通三相六狀態(tài)工作的控制方式,在理想情況下即電流為理想的方波、反電動勢為理想的梯形波,作如下假設(shè):
(1)忽略磁路飽和、電機渦輪損耗和磁滯損耗;
(2)忽略電樞、繞組間的互感;
(3)三相繞組的各相參數(shù)完全相同;
(4)驅(qū)動系統(tǒng)的功率器件處于理想狀態(tài)。
于是,無刷直流電機理想狀態(tài)方程的數(shù)學模型[2]為:

式中,Va、Vb、Vc分別為三相端電壓;Vn為中性點電壓;R和L分別為三相電樞繞組的電阻和電感;Ea、Eb、Ec為三相反電動勢;ia、ib、ic為三相繞組電流;P為微分算子)。
無刷直流電機的換相電路,如圖1所示。T1~T6為功率開關(guān)器件,一般在低壓電機電路中使用MOSFET器件,在高壓電機電路中選用IGBT。通過控制6個功率器件的開關(guān)狀態(tài),按循環(huán)順序給A、B、C繞組加電,實現(xiàn)六步換相要求[3]。例如,T1、T4導通,其他開關(guān)管不導通,相應的三相繞組中A、B導通,C相懸空,電流的流動方向是A→B。其他的導通狀態(tài)以此類推。

圖1 BLDC換相電路
根據(jù)二二導通的換相原理,得到換相真值表如表1所示。

表1 120°HALL無刷直流電機換相真值表
爬山算法作為局部優(yōu)化算法的一種,采用啟發(fā)式,不需要遍歷所有可能情況,可以達到快速優(yōu)化的效果,提高效率[4]。從一起點出發(fā),要到達山頂即“目標最大”。以當前點為參考點,和臨近節(jié)點比較。如果當前點較高,那么返回當前點;若臨近節(jié)點較高,那么用臨近節(jié)點替代當前節(jié)點;以此類推不斷優(yōu)化。本文所涉及的PI參數(shù)整定,并不需要找到一個最佳值,而是需要一個合適的值。所以,本文引入爬山算法,充分發(fā)揮其優(yōu)點,以達到快速整定的目的。
本文使用MATLAB R2016a/Simulink進行建模仿真,整體仿真模型如圖2所示。整個模型分為五個模塊[5]:驅(qū)動橋模塊、電機本體模塊、速度調(diào)節(jié)PI控制模塊、邏輯換相模塊和爬山算法模塊。開始時給定速度初始值,與速度反饋進行對比,把誤差傳給爬山算法(根據(jù)誤差調(diào)整PI值)和速度調(diào)節(jié)PI模塊;誤差經(jīng)過比例和積分后,把值傳給邏輯換相模塊;邏輯換相模塊根據(jù)電機轉(zhuǎn)子位置信息和速度調(diào)節(jié)PI模塊傳過來的值,控制驅(qū)動橋模塊中MOS管的開關(guān)狀態(tài);最后驅(qū)動電機轉(zhuǎn)動,達到速度調(diào)節(jié)的效果。
電機是仿真模型中最重要的部分,在Simulink軟件提供了很多電機模型,本文選擇Simscape/Power Systems/Machine中的Permanent Magnet Synchronous Machine(永磁電機),輸出方面選擇霍爾傳感器信號、速度和轉(zhuǎn)矩。
驅(qū)動橋模塊主要有6個IGBT組成,3個上橋臂,3個下橋臂,如圖3所示。模塊中,2個輸入(G_P、G_N)和3個輸出(A、B、C)。輸入是來自邏輯換相模塊的信號,控制IGBT的開閉;輸出直接連接電機的三相電壓輸入,控制電機轉(zhuǎn)動。

圖2 BLDC仿真模型

圖3 驅(qū)動橋模塊
速度PI模塊主要由比例環(huán)節(jié)和積分環(huán)節(jié)組成,主要作用是調(diào)節(jié)轉(zhuǎn)速。參數(shù)kp代表比例系數(shù),參數(shù)ki代表積分系數(shù),參數(shù)的值由爬山算法控制。速度PI采用的是經(jīng)典的PI控制,有Gain和Integrator子模塊構(gòu)建而成,具體連接如圖4所示。

圖4 速度調(diào)節(jié)PI控制模塊
本文主要通過編程控制邏輯換相,換相原理主要根據(jù)表1的換相真值表完成,模塊原理如圖5所示。整個模型有4個S函數(shù)完成,第1個S函數(shù)獲取霍爾傳感器信號,輸出三相電流;第2~4個S函數(shù)控制驅(qū)動橋的關(guān)閉。
開始時,設(shè)kp和ki都為1,kp的搜尋步長為0.5,ki的搜尋步長為0.1;運行程序,調(diào)用Simulink模型得到速度誤差,比較當前速度誤差的值與臨近節(jié)點速度誤差的值;如果當前速度誤差的值較小,則保留當前kp和ki值;若臨近節(jié)點的速度誤差的值較小,則把臨近節(jié)點當做新的目標點,以此類推,直到走完所有步數(shù)。
具體程序如下:
kp_optimized=1;ki_optimized=1;
kp_change_ratio=0.5;ki_change_ratio=0.2;
cur_optimized_cost=inf;
cur_step=5;
kp=kp_optimized;ki=ki_optimized;
while(cur_step>0),
sim(′FinalBLDC′);
overshoot_index=simError<0;
coeffl=ones(size(simError));
coeffl(overshoot_index)=3;
cur_cost=norm(simError.*coeffl,2);
if(cur_cost<cur_optimized_cost)
cur_optimized_cost=cur_cost;
kp_optimized=kp;ki_optimized=ki;
cur_step=cur_step-1;
disp([′step′,num2str(cur_step)]);
disp([kp,ki]);
end
kp=kp_optimized*(1+kp_change_ratio*(rand()-0.5));
ki=ki_optimized*(1+ki_change_ratio*(rand()-0.5));
end
整個仿真在空載下完成。在Matlab/Simulink中搭建好模型后,初始速度設(shè)置為300 r/min,運行0.5 s后速度改為400 r/min。kp和ki的初始值設(shè)置為1,運行爬山算法程序,步長分別設(shè)置為5、10和15,可以得到不同步長下的kp和ki值,輸出速度響應曲線、三相反電動勢和轉(zhuǎn)矩曲線,依次如圖6、圖7和圖8所示。

圖5 邏輯換相模塊
由仿真示波器波形可以看到,速度響應迅速,三相反電動勢符合理論波形,轉(zhuǎn)矩波形中除了啟動時和0.5 s變速時出現(xiàn)轉(zhuǎn)矩波動,運行平穩(wěn)狀態(tài)情況下轉(zhuǎn)矩波動較小。爬山算法的運行步長分別設(shè)置為5、10和15,得到不同步長下的kp和ki值。運行5步時,得到kp=1.86,ki=1.08;運行10步時,得到kp=2.83,ki=0.96;運行15步時,得到kp=4.69,ki=0.82。由圖8不同步長下的速度曲線可知,運行15步時得到的速度曲線,響應速度更快,仿真效果更好,參數(shù)kp和ki的值更加合理。
本文通過分析研究無刷直流電機的數(shù)學原理和控制原理,創(chuàng)新性地引入爬山算法優(yōu)化kp和ki參數(shù),在MATLAB/Simulink進行建模仿真,得到三組不斷優(yōu)化的kp和ki參數(shù)值。由仿真結(jié)果可知,模型搭建合理,爬山算法在優(yōu)化PI參數(shù)方面效果顯著,得到的kp和ki參數(shù)值對實際電路板設(shè)計具有極高的參考價值。

圖6 轉(zhuǎn)矩曲線

圖7 三相反電動勢

圖8 不同步長得到的速度曲線