杜鵬,謝俊
(南京郵電大學(xué)自動化學(xué)院,南京 210046)
無刷直流電機狀態(tài)方程系數(shù)矩陣的動態(tài)更新
杜鵬,謝俊
(南京郵電大學(xué)自動化學(xué)院,南京 210046)
在無刷直流電機控制系統(tǒng)的仿真中如何快速動態(tài)地求解無刷直流電機的狀態(tài)方程組是一個關(guān)鍵問題。在Matlab/Simulink環(huán)境中,利用C語言形式的系統(tǒng)函數(shù)來構(gòu)建仿真模塊,可靈活快速地實現(xiàn)復(fù)雜系統(tǒng)的仿真建模。把系數(shù)矩陣放在靜態(tài)變量存儲區(qū),可直接修改狀態(tài)方程組的系數(shù)矩陣,達到快速修改此系數(shù)矩陣的目的。另外,在每個仿真步長的輸出階段修改系數(shù)矩陣,達到了動態(tài)更新的目的。仿真結(jié)果表明,文中所提方法可快速實現(xiàn)無刷直流電機控制系統(tǒng)的仿真,并可方便地用于驗證無刷直流電動機的控制算法和策略。
狀態(tài)空間方程組;系統(tǒng)函數(shù);無刷直流電機;仿真
在研究無刷直流電機的過程中,需要建立無刷直流電動機BLDCM控制系統(tǒng)的模型,并根據(jù)數(shù)學(xué)模型采用適當(dāng)?shù)姆抡婕夹g(shù)。為了研究控制算法的有效性和觀察BLDCM的動態(tài)性能,在仿真中需要動態(tài)地求解狀態(tài)空間方程,即動態(tài)地改變狀態(tài)空間方程的參數(shù)矩陣。
文獻[1-2]研究了如何使用Matlab/Simulink以及電力系統(tǒng)模塊集來仿真BLDCM,雖然該方法使用方便運行穩(wěn)定,但是電力系統(tǒng)模塊集是封裝好的,關(guān)鍵模塊的工作機理不清楚,在驗證控制器的控制策略時受到限制。而且所使用的解法器采用固定仿真步長,性能上的改進只能采用減小仿真步長來實現(xiàn),而這又會極大地增加仿真所用時間。因此尋求在Matlab/Simulink中完全自己實現(xiàn)的并且具有相當(dāng)精度的仿真模塊,具有一定的意義。在這方面國內(nèi)外諸多學(xué)者做了有益的探索。文獻[3]利用有限狀態(tài)機對電機的控制回路進行仿真,簡化控制算法的驗證過程,但其研究出發(fā)點僅僅是電機的控制部分,對仿真中相電流的控制沒有特別考慮。文獻[4]和文獻[5]對無刷直流電動機的驅(qū)動和控制的工作過程進行了仿真,但是其著眼點主要在于控制系統(tǒng)部分,沒有對仿真精度進行分析處理,忽略了換相電流的動態(tài)過程,不夠準(zhǔn)確。文獻[5]采用系統(tǒng)函數(shù)對無刷直流電機本體及驅(qū)動電源部件進行仿真,由于沒有使用C-MEX形式的系統(tǒng)函數(shù),不能對相電流的動態(tài)過程做細致的控制。MEX從字面上看是Matlab和EXecutable兩個單詞的縮寫,MEX文件是由C或Fortran語言編寫的源代碼,經(jīng)Matlab編譯器處理而生成的二進制文件,如果源文件是C,那么把生成的MEX文件稱為C-MEX。在Simulink中可以使用C語言來編寫可以直接調(diào)用的系統(tǒng)函數(shù),這種由C語言源文件所編譯生成的系統(tǒng)函數(shù)稱作C-MEX S-Function (C-MEX系統(tǒng)函數(shù))。文獻[6]在仿真精度控制方面做了研究,考慮了換相電流的暫態(tài)過程,但是只進行了初步的分析,而且只考慮了從兩相通電到兩相通電的情形。另外,文獻[6]沒有使用C-MEX形式的系統(tǒng)函數(shù),其對相電流的控制很難做到很精確。文獻[7]使用C-MEX形式的系統(tǒng)函數(shù)實現(xiàn)了永磁同步電機的仿真,對于理解電機的控制和如何使用C-MEX形式的系統(tǒng)函數(shù)方面有借鑒意義。
綜上,雖然對于無刷直流電動機的建模方面已經(jīng)研究得很充分了[8-9],但是在仿真部分,目前的仿真技術(shù)還不是很理想。本文實現(xiàn)了具有高精確度的BLDCM仿真系統(tǒng)(不是建模)。采用C-MEX系統(tǒng)函數(shù)來求解電機本體的狀態(tài)空間方程組,可以動態(tài)改變方程組的系數(shù)矩陣。采用C-MEX系統(tǒng)函數(shù)執(zhí)行速度快,且可以很方便地移植到以數(shù)字信號處理器為核心所構(gòu)成的控制平臺中,既能快速驗證電動機的控制算法,又能快速建立控制器原型[10]。
三相無刷永磁直流電動機系統(tǒng)由控制子系統(tǒng)、驅(qū)動子系統(tǒng)和電動機本體三個模塊組成。建模主要是指驅(qū)動電源和電機本體而言的。驅(qū)動電源有很多形式,本文中采用比較常用的恒壓源的形式;所使用的電機本體的數(shù)學(xué)模型也是學(xué)術(shù)界普遍采用的,很多實際因素的考慮都是理想的。
電機本體的狀態(tài)空間方程:
式中:x=[iaibwm,為狀態(tài)向量;u=[vabvbc,為輸入向量;T表示矩陣的轉(zhuǎn)置,即x,u都是列向量;A,B分別為
電機三相定子繞組采用星形接法,三相繞組完全對稱。ia,ib,ic分別是三相繞組的相電流,單位為(A),規(guī)定流進繞組方向為正;wm是轉(zhuǎn)子的角速度,單位是(rad/s),規(guī)定轉(zhuǎn)子逆時針加速轉(zhuǎn)動wm為正方向;Rs是定子繞組的電阻,單位是(Ω);vab是A相和B相之間的電壓,單位(V);vbc是B相和C相之間的電壓,單位(V);Ls是定子繞組的電感,單位為(H);Φa,Φb,Φc分別是A、B、C相的磁鏈函數(shù),為無量綱的物理量;p是極對數(shù)。
式中:ia,ib,ic產(chǎn)生電磁轉(zhuǎn)矩,記Ta,Tb,Tc分別是A相、B相、C相繞組產(chǎn)生的電磁轉(zhuǎn)矩,Te是三相繞組產(chǎn)生的總的電磁轉(zhuǎn)矩,單位是(N·m),為正表示使轉(zhuǎn)子逆時針轉(zhuǎn)動。F是轉(zhuǎn)子和負載的總的阻尼(摩擦)系數(shù),單位是(N·m/(rad·s-1));Tm是負載加在轉(zhuǎn)動軸上的機械轉(zhuǎn)矩,單位是(N·m),其方向定義和Te一致;θe是電位置角,單位是(rad);J是轉(zhuǎn)子及負載的轉(zhuǎn)動慣量,單位(kg·m2);ea,eb,ec分別為各相繞組的反電動勢,以ea為例:
式中,λ=NBLr。注意在這里的N是一相繞組的邊數(shù),一相繞組可能包括多個線圈,都要算上(比如在4對極的電機中一相繞組一般有4個線圈,每個線圈有20圈,那么N=4×2×20=160);B是永磁體產(chǎn)生氣隙磁密,單位是特斯拉(T);L是定子鐵心軸向有效長度;r是定子內(nèi)徑;v是線速度(m/s);λ是繞組每對極所產(chǎn)生的電動勢的最大值。
考察狀態(tài)空間方程,B矩陣仿真過程中保持不變,而矩陣A中有些元素固定不變另外的元素是和磁鏈函數(shù)Φa,Φb,Φc有關(guān)的,而Φa,Φb,Φc隨著電位置角θe變化而變化,這就是說利用解狀態(tài)方程的方法來仿真無刷直流電動機,必須動態(tài)地更新矩陣A。這樣就牽涉到兩個問題:(1)改變矩陣A,這種仿真方法得到的結(jié)果是否能夠和數(shù)學(xué)模型相吻合;(2)如果能夠,如何改變矩陣A才能高效地求解動態(tài)狀態(tài)空間方程。下面就來解決這兩個問題。
2.1 C-MEX系統(tǒng)函數(shù)的編寫
首先簡單地介紹C-MEX系統(tǒng)函數(shù)的結(jié)構(gòu),以及與Matlab/Simulink引擎和解法器之間的關(guān)系。這里只談及本文涉及的部分,詳細的內(nèi)容請參考Matlab/Simulink相關(guān)幫助文檔。
在C語言系統(tǒng)函數(shù)中主要有五個函數(shù)比較重要。第1,mdlInitializeSizes(SimStruct*S)函數(shù)完成系統(tǒng)函數(shù)的初始化工作,比如初始化結(jié)構(gòu)體SimStruct,設(shè)置輸入輸出端口的寬度并檢查不同模塊間的連接是否合法、設(shè)置采樣時間等。第2,mdlOutputs(SimStruct*S)函數(shù)用于計算連續(xù)時間系統(tǒng)或者離散時間系統(tǒng)的輸出,對于連續(xù)時間系統(tǒng)的仿真輸出值是狀態(tài)x、輸入u和時間t的函數(shù)。第3,mdlDerivatives(SimStruct*S)函數(shù)用于連續(xù)狀態(tài)系統(tǒng)中動態(tài)方程的微分向量的計算,求解器利用此微分向量來進行實際的微分方程(組)的求解。微分向量是狀態(tài)向量x的一階導(dǎo)數(shù),是狀態(tài)x、輸入u和時間t的函數(shù)。第4,mdlZeroCrossings (SimStruct*S)函數(shù)是C-MEX中特有的函數(shù),用來幫助求解器確定一些關(guān)鍵的事件,比如某個狀態(tài)信號或者輸入信號是否過零。第5,mdlTerminate (SimStruct*S)函數(shù)在仿真結(jié)束時調(diào)用。
2.2 非線性系數(shù)矩陣的更新
矩陣A決定于轉(zhuǎn)子的電位置角,電位置角是狀態(tài)方程的一個狀態(tài),需要更新,在mdlOutputs()中只要更新A矩陣即可。實現(xiàn)動態(tài)改變矩陣A的基本思想是,首先把A矩陣存入DWORK內(nèi)存區(qū)(相當(dāng)于C語言中的靜態(tài)變量存儲區(qū))中,每次Matlab/Simulink引擎調(diào)用mdlDerivatives()時,從DWORK中讀入A矩陣和B矩陣。mdlOutputs()在每一步運行都要更新A,即在Major和Minor中都要更新。隨著仿真過程的推進,矩陣A相應(yīng)地隨著狀態(tài)相電流和轉(zhuǎn)子角度的變化而發(fā)生變化,這樣就實現(xiàn)了動態(tài)的仿真。
從狀態(tài)空間方程組來看,這樣更新矩陣A是和理論值有差別的,縮短仿真步長是否可以把此誤差減小,如果可以,仿真步長設(shè)定到多少才合適。對于梯形反電動勢的BLDCM來說,Φa,Φb,Φc是電位置角θe的函數(shù)(雖然不能夠表示為電位置角確定的簡單函數(shù),卻是分段線性的,在仿真中比較容易生成)。在每一個換相狀態(tài)中,Φa,Φb,Φc中只有一個值隨著電位置角θe發(fā)生變化,而且和電位置角成線性關(guān)系。Φa,Φb和Φc在上升或下降變化期間(正好對應(yīng)著一個換相狀態(tài)),其對時間的導(dǎo)數(shù)和電角度θe(以及轉(zhuǎn)子的位置角)也成線性關(guān)系,且轉(zhuǎn)子的位置角和轉(zhuǎn)子角速度wm都不可能突變。從這種線性關(guān)系可推斷誤差和仿真步長成反比,也就是說,減小仿真步長可有效減小誤差,進而總可以減小仿真步長來使誤差達到設(shè)定范圍。由于現(xiàn)實中無刷直流電動機的轉(zhuǎn)速最大數(shù)萬轉(zhuǎn),換相狀態(tài)維持時間最小在1/(24×100000)=4.17× 10-7s(以最大每秒10萬轉(zhuǎn),4對極電動機為例),仿真步長設(shè)定和這個時間成線性關(guān)系,為它的百分之一可以接受的。當(dāng)然這里的分析是定性的,實際仿真結(jié)果也可接受(見本文仿真結(jié)果部分)。
既然改變矩陣A能夠和數(shù)學(xué)模型在任意小誤差范圍內(nèi)相吻合,就剩下如何改變矩陣A的問題了。Matlab/Simulink設(shè)計環(huán)境中提供了用于求解狀態(tài)空間方程組的模塊,但其系數(shù)矩陣在仿真過程中不可改變,這對于仿真像BLDCM控制這樣動態(tài)的系統(tǒng)是不適合的。在Matlab/Simulink中提供了求解此類問題的模塊,但可惜的是,改變系數(shù)矩陣非常麻煩而且效率不高。有研究者提出了改變系數(shù)矩陣的辦法,但已有方法效率不高。采用C語言的系統(tǒng)函數(shù)方式,可提高運算效率縮短仿真所用的運行時間。更重要的是C語言的系統(tǒng)函數(shù)提供了巨大的靈活性,使得僅僅在一個模塊中動態(tài)改變系數(shù)矩陣成為可能。在C語言系統(tǒng)函數(shù)中,輸出功能和微分功能是在不同的函數(shù)中實現(xiàn)的,輸出時用到mdlOutputs(),微分時用mdlDerivatives()。Matlab/Simulink引擎會在合適的時機調(diào)用這兩個函數(shù)。實現(xiàn)動態(tài)仿真的具體步驟是:仿真開始階段設(shè)定系數(shù)矩陣的初始值;在每一個仿真步長的微分階段從靜態(tài)變量存儲區(qū)取回將要用到的系數(shù)矩陣A,進行狀態(tài)更新;在每一個仿真步的輸出階段,改變矩陣A,并把它存入靜態(tài)變量區(qū)中;接下來的微分階段用到的正好是更新過的矩陣A;如此反復(fù),就實現(xiàn)了動態(tài)更新系數(shù)矩陣。另外,矩陣A中實際需要改變的元素只有幾個,所以可以利用這一點,只更新需要更新的元素以達到進一步減小運算量的目的,從而提高了矩陣A系數(shù)更新部分代碼的執(zhí)行效率。
在Matlab/Simulink中搭建仿真系統(tǒng)時,需要Matlab/Simulink元件庫中的模塊來完成積分、微分、增益、加和、滯環(huán)控制、飽和限幅等功能。而利用C-MEX系統(tǒng)函數(shù)來實現(xiàn)仿真,只需四類基本模塊:系統(tǒng)函數(shù)模塊、Mux模塊、Demux模塊、用于給定參考信號的Step模塊。其中最重要的是系統(tǒng)函數(shù)模塊,Mux模塊和Demux模塊用于一個端口信號的復(fù)用和解復(fù)用,只是為了方便系統(tǒng)函數(shù)模塊之間的信號互連的目的,Step模塊用于給定負載參數(shù)等利于仿真的執(zhí)行。圖1是實現(xiàn)系統(tǒng)仿真結(jié)構(gòu)圖,分為控制器、驅(qū)動和電動機本體、輸出模塊??刂破饔糜诳刂齐姍C的驅(qū)動電源,實現(xiàn)不同的控制算法和策略。輸出模塊中主要是用于信號波形的顯示。如圖2所示,驅(qū)動和電動機本體是密切聯(lián)系的,放在一個Matlab/Simulink子系統(tǒng)中。為了驗證相電壓的控制效果,控制器中使用了比例型PID算法,實現(xiàn)了一個簡單的速度控制環(huán)。
為驗證整個系統(tǒng)的性能,設(shè)計了一個簡單的比例型PID控制算法,對電機在動態(tài)改變負載轉(zhuǎn)矩的性能進行了仿真。如圖3所示,仿真中電機參數(shù)設(shè)定為:三相4對極,驅(qū)動電源Vdc=320 V,動慣量J=0.002kg·m2,Ls=2.72×10-3H,M=1.5×10-3H,N=50,定子內(nèi)徑r=0.04 m,定子鐵心軸向有效長度L=0.2 m,永磁體產(chǎn)生氣隙磁密B=0.816 7 T,阻尼系數(shù)為F=0.000 2 N·m/(rad·s-1);極對數(shù)為p=4。仿真參數(shù)的設(shè)定參考作者所在實驗室的一臺電機,此電機的額定功率為2 kW,額定電壓為500 V,額定轉(zhuǎn)速為3 000 r/min,額定電流為10 A,最大瞬時電流為15 A。仿真中使用的電感和互感參數(shù)參考了此電機。
圖1 電機控制系統(tǒng)仿真結(jié)構(gòu)圖Fig.1Simulation structural diagram for control system of BLDCM
圖2 驅(qū)動電源和電機本體仿真結(jié)構(gòu)圖Fig.2Simulation structural diagram for drive power source and body of BLDCM
圖3 速度環(huán)性能(使用簡單的PI控制算法,給定轉(zhuǎn)子轉(zhuǎn)速為1 000 r/min)Fig.3Speed loop performance(with a simple PI algorithm,rotor speed being 1 000 r/min)
如圖3所示,仿真開始負載轉(zhuǎn)矩為零,在0.04 s時,加入10 N·m的負載轉(zhuǎn)矩,速度環(huán)在0.06 s開始起作用,通過逐漸調(diào)整相電流,使轉(zhuǎn)速逐漸回到1 000 r/s的轉(zhuǎn)速,由于僅僅是采用簡單的比例控制算法,在給定速度處有小幅震蕩。
仿真結(jié)果表明,所提方法可使仿真結(jié)果在很高的精度上符合理論模型。采用該仿真架構(gòu)可靈活地驗證各種控制算法和控制策略,使用C語言的控制代碼實現(xiàn)后可以直接用于DSP等實時控制系統(tǒng)中,加快了系統(tǒng)設(shè)計和開發(fā),為分析和設(shè)計無刷直流電機控制系統(tǒng)提供了一個比較理想的實驗和驗證平臺。
在仿真部分,目前的仿真技術(shù)還不是很理想。主要表現(xiàn)在:①仿真型存在的計算效率低;②忽略換相點后電流動態(tài)變化及不夠準(zhǔn)確等問題;③控制系統(tǒng)的加入比較困難,且不實用。本文針對如上3點,實現(xiàn)了具有高精確度的BLDCM仿真系統(tǒng)(不是建模)。針對問題①采用C-MEX系統(tǒng)函數(shù)來求解電機本體的狀態(tài)空間方程組,方程組的系數(shù)矩陣可以動態(tài)改變。針對問題②采用過零檢測方法,幫助求解器來確定相電流的過零點,加上合理設(shè)置仿真步長,使得二極管的續(xù)流截止點可以精確定位。針對問題③使用C語言的系統(tǒng)函數(shù)執(zhí)行速度快,因為是用C語言寫成,可以很方便地移植到以數(shù)字信號處理器為核心所構(gòu)成的控制平臺中,既能快速驗證電動機的控制算法,又能快速建立控制器原型。
在本文中換相方式是兩相通電模式,在三相全部不通電時電流的變化和控制策略密切相關(guān),經(jīng)過分析和設(shè)計,本文實現(xiàn)的仿真方法還允許控制策略和算法中采用電流滯環(huán)的方式。但是BLDCM的驅(qū)動電源有多種形式,本文中實現(xiàn)的仿真是針對電壓源型的,對電動機本體的模型也是非常理想的,這樣實現(xiàn)的仿真其適用范圍是受限制的。完全使用數(shù)值仿真的方法,必須要考慮到驅(qū)動電源的方式和BLDCM電機本體的建模方式,以及換相方式和控制策略的采用,進一步研究可以針對不同驅(qū)動電源形式、三相通電模式等。
[1]Hoang Le-Huy.Modeling and simulation of electrical drives using Matlab/Simulink and power system blockset[C] //27th Annual Conference of the IEEE Industrial Electronics Society,Denver,USA:2001.
[2]Zabalawis A,Nasiri A.State space modeling and simulation of sensorless control of brushless DC motors using instantaneous rotor position tracking[C]//IEEE Vehicle Power and Propulsion Conference,Arlington,USA:2007.
[3]王華斌,劉和平,劉平,等(Wang Huabin,Liu Heping,Liu Ping,et al).有限狀態(tài)機的無刷直流電機系統(tǒng)仿真分析(Simulation of a brushless direct current motor based on finite state machine theory)[J].重慶大學(xué)學(xué)報(Journal of Chongqing University),2008,31(11):1307-1312.
[4]紀志成,沈艷霞,姜建國(Ji Zhicheng,Shen Yanxia,Jiang Jianguo).基于Matlab無刷直流電機系統(tǒng)仿真建模的新方法(A novel method for modeling and simulation of BLDC system based on Matlab)[J].系統(tǒng)仿真學(xué)報(JournalofSystemSimulation),2003,15(12):1745-1749,1758.
[5]鐘君柳,姜孝華(Zhong Junliu,Jiang Xiaohua).基于S-函數(shù)的無刷直流電機系統(tǒng)建模研究(Study on modeling of BLDCM control system based on S-function)[J].微計算機信息(Microcomputer Information),2007,23(3-1):273-275,263.
[6]解后循,高翔(Xie Houxun,Gao Xiang).基于S-函數(shù)的無刷直流電動機自適應(yīng)控制系統(tǒng)建模(Modeling and simulation of BLDCM adaptive control system based on S-function)[J].微電機(Micromotors),2009,42(3):68-72.
[7]沈艷霞,薛花,紀志成(Shen Yanxia,Xue Hua,Ji Zhicheng).基于CMEX S-函數(shù)直流無刷電機控制系統(tǒng)仿真建模研究(Study on modeling and simulation of brushless DC motor control system based on CMEX S-function)[J].中小型電機(S&M Electric Machines),2004,31(6):10-14.
[8]Jeon Y S,Mok H S,Choe G H,et al.A new simulation model of BLDC motor with real back EMF waveform[C]// 7th Workshop on Computers in Power Electronics,Blacksburg,USA:2000.
[9]Pillay P,Krishnan R.Modeling of permanent magnet motor drives[J].IEEE Trans on Industrial Electronics,1988,35 (4):537-541.
[10]劉賀平,汪芳君,張春梅(Liu Heping,Wang Fangjun,Zhang Chunmei).基于DSP的直流無刷電機數(shù)字控制系統(tǒng)的設(shè)計(Design of digital control system for brushless DC motor based on DSP)[J].電力系統(tǒng)及其自動化學(xué)報(Proceedings of the CSU-EPSA),2008,20(1):80-83.
Dynamic Update of State Space Equation Coefficient Matrix in Brushless Direct Current Motor Simulation
DU Peng,XIE Jun
(School of Automation,Nanjing University of Posts and Telecommunications,Nanjing 210046,China)
In control system simulation of brushless direct current motor,to solve state equations of the brushless direct current motor is a key issue.In Matlab/Simulink environment,using C language system functions to build simulation module can be flexible and can achieve fast simulation of complex system modeling.By putting the coefficient matrix in a static variable storage area,the coefficient matrix of the equation of state can be modified directly and quickly.Meanwhile,during the output stage in each simulation step,modification of coefficient matrix can achieve the purpose of dynamically updating the matrix.The simulation results show that the proposed method can achieve fast simulation of brushless direct current motor control system,and can be easily used to validate the control algorithms and strategies of brushless direct current motor.
state space equations;system function;brushless direct current motor(BLDCM);simulation
TM341
A
1003-8930(2013)04-0068-05
杜鵬(1971—),男,博士,講師,研究方向為電機拖動和電力系統(tǒng)自動化。Email:dupeng@njupt.edu.cn
2012-12-20;
2013-03-18
南京郵電大學(xué)引進人才科研啟動資助項目(NY208049)
謝俊(1979—),男,博士,副教授,研究方向為電力系統(tǒng)優(yōu)化調(diào)度與電力市場。Email:jxie@njupt.edu.cn