謝銀銀,裴雪軍,康 勇
(華中科技大學電氣與電子工程學院,武漢 430074)
Saber[1]軟件是一個功能強大的仿真軟件,其仿真器采用的算法可極大地提高仿真計算收斂性,縮短仿真時間。另外,Saber還提供了適合于建立混合仿真模型的硬件描述語言——MAST語言[2-5],它不僅可以建立模擬元件的模型,還可以建立數(shù)字元件的模型,包括電、機械、光和流體等,用戶可以直接建立滿足自己需要的元件模型。相比MATLAB[6],Saber軟件具有更豐富的器件庫,支持多種分析,可考慮器件非理想因素,使得仿真結果更加真實可信,因此在元件級的電路仿真領域得到了廣泛應用。在電力電子產(chǎn)品設計之初,若利用Saber仿真軟件對電路及其控制進行仿真驗證,可以及早地發(fā)現(xiàn)電路設計中存在的問題,大大縮短開發(fā)周期。
目前數(shù)字信號處理器(DSP)[7]已成為電力電子電路數(shù)字控制中的核心部件。然而,在利用Saber仿真軟件對DSP控制的電力電子系統(tǒng)進行仿真建模的時候,存在若干問題。如圖1(a)所示,首先需要在Saber仿真環(huán)境中搭建主電路與控制電路的仿真模型。由于Saber軟件中關于DSP芯片的仿真模塊并不多,因此一般要用各種已有的分立模塊搭建實現(xiàn)DSP的功能。另外,注意到實際的系統(tǒng)是DSP控制的離散數(shù)字系統(tǒng),在仿真環(huán)境中調試完畢后,還需要進行參數(shù)的離散化與編程實現(xiàn),因此最終的實驗結果將與仿真結果有較大的誤差。為此,需在Saber仿真環(huán)境中重新進行參數(shù)調整。如此反復,從而增加了開發(fā)周期。
為了克服上述設計方案的缺點,人們提出了改進的設計方案,利用MATLAB強大的控制工具箱實現(xiàn)控制功能,充分利用了兩者的優(yōu)點而避免了各自的缺點,文獻[8]通過Saber與MATLAB進行聯(lián)合仿真。如圖1(b)所示,利用Saber組建主電路,利用MATLAB組建控制電路;另外,利用Saber仿真軟件中提供的MAST編程語言,可以直接編程實現(xiàn)控制功能,或是以MAST語言為對外接口,進一步調用外部程序(如C語言)來實現(xiàn)復雜的控制方案,如圖1(c)所示。這些改進方案避免了在Saber中用分立元件搭建控制電路,因此大大縮短了建模和仿真時間。然而,上述改進方案通用性不強(針對不同主電路要編寫不同的控制程序),仿真調試完畢后仍需離散化并需轉換成DSP可運行的程序。
為改進上述設計方案的缺點,本文利用Saber仿真軟件自帶的MAST語言編寫了一個虛擬的數(shù)字信號處理器(DSP)模塊。本文以DSP中的事件管理器的實現(xiàn)與控制為例,說明該虛擬模塊的設計方法及工作原理。
圖1 傳統(tǒng)的DSP應用系統(tǒng)設計流程
本節(jié)以Buck電路為例說明本文提出的電路仿真方法。
如圖2(a)所示,對于一個 DSP控制的BUCK電路,其包括了BUCK主電路和DSP控制電路兩部分??刂齐娐窂腂UCK主電路的輸出電壓中得到反饋信號,通過DSP內部的A/D轉換模塊轉化成數(shù)字量,該數(shù)字量將作為PI調節(jié)器的輸入,并通過一定的算法得到輸出的控制量。該控制量將送入DSP的事物管理器模塊,以產(chǎn)生占空比可變的脈寬信號,用于驅動主電路的MOSFET。DSP的上述功能均通過在CCS中編寫不同的程序并燒寫至DSP中實現(xiàn)。在傳統(tǒng)的仿真驗證方法中,BUCK主電路的仿真可以方便地用Saber軟件中自帶的模塊來搭建,但DSP及其程序所實現(xiàn)的功能則要利用各種引言中提出的不同的方法來代替。因此,設計者無法直接驗證所設計的程序是否正確與有效。
圖2 Buck電路應用系統(tǒng)設計流程
為解決上述問題,本文提出的改進型仿真方法如圖2(b)所示。BUCK主電路仍然利用Saber自帶的模塊來搭建;同時利用MAST語言進行編程,在Saber仿真環(huán)境中同時實現(xiàn)DSP中的A/D轉換、事件管理器的功能。注意到真正的DSP中的事件管理器與A/D轉換模塊一旦設定后將以一定的模式進行工作,因此這兩個部件的功能利用MAST語言編程直接實現(xiàn);而實現(xiàn)DSP中的PI控制算法是通過CCS中程序來進行實現(xiàn)的,因此該虛擬DSP中還包括了一個可實現(xiàn)直接調用CCS中PI控制算法程序的模塊。通過該改進仿真方法,可以直接在Saber環(huán)境里對BUCK主電路的運行狀態(tài)與CCS中的程序的控制效果進行仿真驗證;得到較為滿意的結果之后CCS中的程序不經(jīng)過任何修改,直接進行編譯后燒寫到真正的DSP中,對實際主電路進行控制。
該改進仿真方法有如下優(yōu)點:
(1)參數(shù)設計、控制器設計及程序調試的過程均可以在Saber中仿真完成,編寫的程序在仿真中得出滿意的效果后,可直接應用于實現(xiàn)的系統(tǒng)。
Performance of liquid whitening agent CBW-04 and its application in laundry detergent 1 24
(2)該虛擬DSP可作為一個標準的仿真部件,和真正的DSP一樣,可以通過編寫不同的程序,使該虛擬DSP實現(xiàn)不同的調制和控制方法。
DSP中事件管理器的一個重要功能是通過設置相關的寄存器,發(fā)出期望的驅動波形[9]。相關的寄存器有周期寄存器、比較寄存器、通用定時控制寄存器、比較控制寄存器等等。而MAST語言有自帶的事件驅動函數(shù)可以實現(xiàn)該功能:
schedule_envent(time,state_var,values)其中:time為指定時刻;state_var為指定變量;values為指定變量的值。
以圖2中BUCK電路所用到的連續(xù)遞增模式的產(chǎn)生為例。定時器計數(shù)器計數(shù)值T1CNT按圖3所示的階梯式連續(xù)遞增計數(shù)。
事件管理器的功能可以用下面的MAST語句實現(xiàn):
其中,cycle_end是一個周期結束下一個周期開始的標志位;b對應于計數(shù)器的值從0增加至T1CMP所需要的時間;c對應于計數(shù)器的值從0增加至T1PR所需要的時間:
根據(jù)式 (1) 計算得到 b,MAST語句 schedule_event(time+b,dpwm1,l4_1),到b時刻時將PWM波置為高電平。在實際DSP里,計數(shù)器計數(shù)值T1CNT計數(shù)到T1CMP時,發(fā)生匹配,PWM輸出信號反轉。
MAST語句 schedule_event(time+c,cycle_end,~cycle_end),使得c時刻即一個周期結束時,將標志位cycle_end的值取反,語句when(event_on(cycle_end)),表示當cycle_end的值有變化時,開始執(zhí)行下一個時刻的事件,即執(zhí)行語句schedule_event(time+b,dpwm1,l4_1)。在實際DSP里,當計數(shù)器的值(T1CNT)計數(shù)到周期寄存器的值(T1PR)之后,計數(shù)器的值清零,置位下溢中斷標志而后繼續(xù)遞增計數(shù),如此循環(huán)。
用MAST語言實現(xiàn)事件管理器功能,生成虛擬DSP模板。該MAST語言也可以實現(xiàn)其他情況的PWM波,比如,連續(xù)遞增計數(shù)模式下的低電平有效或者連續(xù)增/減計數(shù)模式下的高有效或低有效。圖3(c)是用MAST語言實現(xiàn)遞增計數(shù)模式且高電平有效時的PWM波。
圖3 連續(xù)遞增計數(shù)模式下的驅動波形
綜上所述,MAST語言可以模擬實際DSP發(fā)PWM波的功能。
由于上述的MAST語言只能實現(xiàn)虛擬DSP發(fā)PWM波的功能,不能體現(xiàn)控制器的作用,因此MAST語言需要調用控制器程序,該程序需在VC++[10,11]里編譯。在VC++里新建一個工程,如圖4所示,在工程里新建一個以cpp為后綴的文本,編寫C程序,在定義變量名時,需要采用結構體和指針對事件管理器的相關寄存器進行預處理,使其能等效于DSP的相關寄存器。將設計好的控制器數(shù)字化轉化為C代碼,在VC++里編譯,編譯成功后會生成一個dll文件。dll是一個可執(zhí)行的二進制文件,將該文件與MAST編寫的模板放在同一文件目錄中,在MAST語言的模板體里編寫語句foreign Name,成功地調用外部VC++里的程序。
利用Saber搭建的主電路,其輸出電壓V0作為虛擬DSP模板的輸入,在VC++里,語句V0=in[0]表示將輸出電壓調入VC++里并作為控制器的輸入(其中in[0]是MAST語言傳遞給VC++的第一個數(shù)據(jù)),通過一定的算法得到輸出的控制量,在此文中指的是比較寄存器的值T1CMP,將VC++編譯,生成一個dll文件,在MAST語言的模板體里編寫語句foreign Name,成功調用該文件,將T1CMP的值賦給MAST語言,再在MAST語言模板里,根據(jù)式(1)計算得到b。同理,將T1PR的值賦給MAST語言,根據(jù)式(2)計算得到c。
通過dll文件實現(xiàn)MAST與VC++的接口技術及其混合編程。MAST語言里的語句:(out[0],out[1],out[2],out[3]…)=Name(in[0],in[1],in[2],in[3]...)(其中out[0]是VC++傳遞給MAST語言的第一個數(shù)據(jù)),實現(xiàn)MAST與VC++間的數(shù)據(jù)傳遞,從而構成閉環(huán)系統(tǒng)。這種方法極大地提高了開發(fā)效率,縮短了開發(fā)周期,同時也有利于提高軟件質量。因此,dll文件是MAST語言與外部程序連接的橋梁。
用MAST語言編寫代碼虛擬DSP事件管理器的主要功能,構造了系統(tǒng)的核心模塊,實現(xiàn)閉環(huán)控制策略。這樣,數(shù)據(jù)直接在Saber與VC++之間進行傳遞,使系統(tǒng)工作在統(tǒng)一的仿真環(huán)境里。若把很多通用的功能放在dll中,可以供多個應用程序調用,不僅大大的減少外部存儲空間的占有量,而且能實現(xiàn)代碼的共享。
圖4 MAST語言調用VC++里的程序
Saber里的元器件搭建的主電路接近實際主電路,所以直接用Saber里自帶的模塊搭建主電路,以Buck電路為例,如圖5所示,用Saber自帶的模塊搭建主電路,編寫MAST語言實現(xiàn)虛擬的DSP,在VC++里編寫控制器的C程序,然后MAST語言調用該程序,這樣,MAST與外部C語言聯(lián)合起來生成控制模塊,在Saber環(huán)境下仿真整個系統(tǒng),主要技術參數(shù):輸入直流電壓40~65 V,輸出為30 V,濾波電感0.2 mH,濾波電容47 μF,開關頻率為24 K。在t=0.2 s時,負載由 40 Ω 切到 10 Ω。
圖5 用Saber仿真Buck電路閉環(huán)系統(tǒng)
本文設計了兩種控制器來驗證該方法。控制器1是簡單的PI調節(jié)器,其表達式為:
如圖6所示。其中,當直流輸入電壓為65 V時,其對應的仿真和實驗波形為圖 6(a)、(c),由仿真和實驗波形可知,系統(tǒng)達到穩(wěn)定后0.2 s,將負載由40 Ω切到10 Ω時,仿真得到的輸出電壓與實驗得到的輸出電壓瞬間跌落都是10 V,經(jīng)過約20 ms的調節(jié)時間,系統(tǒng)再次達到穩(wěn)定,仿真波形和實驗波形基本一致;當直流輸入電壓為50 V時,其對應的仿真和實驗波形為圖 6(b)、(d)。由仿真和實驗波形可知,系統(tǒng)達到穩(wěn)定后0.2 s,將負載由40 Ω切到10 Ω時,仿真得到的輸出電壓瞬間跌落8 V,而實驗得到的輸出電壓瞬間跌落9 V,經(jīng)過約20 ms的調節(jié)時間經(jīng)過約20 ms的調節(jié)時間,系統(tǒng)再次達到穩(wěn)定,仿真波形和實驗波形基本一致。控制器2是一個較復雜的二階控制器,其表達式:
圖6 控制器1下的仿真和實驗波形
圖7 控制器2下的仿真和實驗波形
由圖7可知,仿真波形和實驗波形基本一致。
綜上所述,采用MAST語言生成模擬的DSP模塊去控制仿真電路的效果等同于采用真正的DSP控制實際電路,即能準確模擬實際系統(tǒng)的特性,設計及試驗的過程可以在仿真軟件中完成。這種方法既能有效地控制實際系統(tǒng)又能大大地縮短設計與調試周期。
本文采用MAST語言生成了虛擬的DSP模塊,只需將設計在Saber軟件中驗證。在Saber軟件平臺上,實現(xiàn)了Buck電路的系統(tǒng)仿真。仿真結果和實驗結果表明,該方法簡單、可靠,能準確模擬實際系統(tǒng)的特性。設計及試驗的過程可以在仿真軟件中很快地完成,取代了傳統(tǒng)的硬件調試過程,可以較快地給出滿意的設計結果,大大地縮短設計與調試周期。該方法可以拓展到用于各種電源電路中,具有廣泛性和普遍性。因此,基于MAST語言的虛擬DSP實現(xiàn)方法對于控制模型仿真來說,具有重大的理論意義和一定的實際應用價值。
[1] 李晶,劉進軍,王兆安,等.基于saber的風力發(fā)電系統(tǒng)建模及仿真分析 [J].太陽能學報,2008,29(12):1471-1476.
[2] 管福初,鐘炎平.基于Saber的空間矢量PWM實現(xiàn)方法[J].空軍雷達學院學報,2010,24(3):203-206.
[3] 吳俊強,曾國宏.“交直交”電力機車saber仿真方法[J].鐵路計算機應用,2005,14(1):7-8.
[4]Viach M.Modeling and Simulation with Saber[C].ASIC Seminar and Exhibit,1990.Proceedings,Third Annual IEEE,T/11.1-T/11.9.
[5]Kolessar R and Nee H-P.A New Physics-based Circuit Model for 4H-SIC Power Diodes Implemented in Saber[C].APEC,2001,(2):989-994.
[6]Gilbert Sybille,Hoang Le-Huy.Digital Simulation of Power Systems and Power Electronics using the MALAB/Simulink Power System Blockset[C].Power Engineering Society Writer Meeting,.IEEE.2000,(4):2973-2981.
[7] Rahman M F and Baburaj K V.A DSP Laboratory Platform for Teaching Power Electronics and Drivers[C].Power Electronic Drivesand Energy SystemsforIndustrial Growth of International Conference,IEEE,1998, (2):751-756.
[8]Zhenhua Jiang,Roger Dougal.A Novel Approach to Simulating Power Electronic System by Embedding MATLAB Objects into Saber [C].IEEE ICECA,Wuhan,China,2001.
[9] 蘇奎峰,呂強,常天慶,等.TMS320X281X DSP原理及C程序開發(fā)[M].北京:北京航空航天大學出版社,2008.
[10]Zhang Sijin,Wei Ming,Liu Yan-an.The Weather Radar Product Synthetic Programming by VC++&MATLAB[C].CISE,2009.
[11] Fu Hudai,Wang Hua,Yang Wei.Applocation of Mixed Programming between MATLAB and Visual C++on Circles Detection[C].IHMSC,2009.