楊 蕊,張建軍,馬 昭,路 瑜
(西安石油大學(xué),西安710065)
基于MATLAB的SVPWM算法自動(dòng)代碼生成技術(shù)研究*
楊 蕊,張建軍,馬 昭,路 瑜*
(西安石油大學(xué),西安710065)
針對DSP編程復(fù)雜,開發(fā)周期長的問題,給出了一種運(yùn)用MATLAB軟件、Code Composer Studio(CCS)軟件及其內(nèi)嵌工具和鏈接軟件自動(dòng)生成SVPWM代碼的方法。利用MATLAB/Simulink仿真軟件建立了相應(yīng)的算法模型,驗(yàn)證模型的正確性之后,自動(dòng)生成代碼,并編譯、下載到DSP平臺中運(yùn)行,產(chǎn)生的波形與理論相吻合。與手工編寫代碼的方法相比較,該方法簡單易行,開發(fā)周期短,生成代碼效率高。
三相逆變器;空間矢量脈沖寬度調(diào)制;自動(dòng)代碼生成;數(shù)字信號處理器
傳統(tǒng)的DSP軟件開發(fā),都是以編寫復(fù)雜的匯編或C語言代碼為整個(gè)軟件生命周期的核心,在開發(fā)周期中,要不斷地進(jìn)行修改,需投入大量的人力和物力??焖俅a生成已經(jīng)成為了DSP代碼開發(fā)研究的重點(diǎn)[7]。
TI公司和Mathworks公司聯(lián)合推出的嵌入式開發(fā)環(huán)境Embedded Targetfor TI's C2 000/C5 000/ C6 000 DSP Platform[2-3]和接口工具M(jìn)ATLAB Link forCCS Development Tools[4]為自動(dòng)代碼的生成提供了方便。借助于DSP2812開發(fā)平臺,以SVPWM算法自動(dòng)代碼生成為例,對自動(dòng)代碼生成技術(shù)進(jìn)行研究,并驗(yàn)證了SVPWM代碼生成的有效性。
1.1 SVPWM控制原理
SVPWM調(diào)制波形是電力電子中最常用的調(diào)制波,因其直流電壓利用率高,電流諧波含量少,易于數(shù)字控制的特點(diǎn)而受到廣泛青睞。SVPWM是將三相逆變器的交流側(cè)電壓ua,ub,uc在復(fù)平面綜合成電壓矢量,并通過固定的開關(guān)狀態(tài)形成一系列空間電壓矢量u,這些電壓矢量在固定的幅值下以電源角頻率旋轉(zhuǎn),利用這些電壓矢量去逼近基準(zhǔn)電壓圓,形成PWM波[1]。
1.2 SVPWM仿真模型
SVPWM模型結(jié)構(gòu)如圖1[5]所示。
圖1 模型結(jié)構(gòu)圖
1.2.1 坐標(biāo)轉(zhuǎn)換
三相靜止坐標(biāo)系下的物理模型意義清晰,但均為時(shí)變交流量,不利于控制,因此利用如下3/2轉(zhuǎn)換矩陣
將三相電壓轉(zhuǎn)換到兩相靜止坐標(biāo)系(0αβ)下[6],轉(zhuǎn)換模型如圖2所示。
圖2 坐標(biāo)轉(zhuǎn)換
1.2.2 扇區(qū)計(jì)算
在坐標(biāo)系(0αβ)下,定義中間變量Ua,Ub,Uc計(jì)算公式為
如果Ua>0,則A=1,否則,A=0;如果Ub>0,則B= 1,否則,B=0;如果Uc>0,則C=1,否則,C=0。扇區(qū)的計(jì)算公式為Sector=4C+2B+A,計(jì)算模型如圖3所示。
圖3 扇區(qū)計(jì)算
1.2.3 導(dǎo)通時(shí)間t1、t2計(jì)算
設(shè)Uref在第一扇區(qū),Uref可由U1和U2矢量以及U0和U7零矢量合成,根據(jù)平行四邊形法則有
式中,t1為U1的持續(xù)時(shí)間,t2為U2的持續(xù)時(shí)間,T為PWM開關(guān)周期。設(shè)U0、U7的工作時(shí)間為T0,有t1+t2+T0=T。
按照表1,對t1、t2賦值后,還要對其進(jìn)行飽和判斷。若 t1+t2<T,則 t1、t2保持原值不變;若t1+t2>T則t1=t1/(t1+t2)T,t2=t2/(t1+t2)T。
1.2.4 計(jì)算空間電壓矢量切換點(diǎn)定義占空比參數(shù):
在不同的扇區(qū)內(nèi),CMPR1、CMPR2、CMPR3根據(jù)表1進(jìn)行賦值。計(jì)算占空比的模型如圖4所示,仿真結(jié)果如圖5所示。
圖4 計(jì)算占空比的模型
圖5 SVPWM波形仿真結(jié)果
表1 各扇區(qū)導(dǎo)通時(shí)間、切換點(diǎn)
采用TI公司的C2000系列的32位定點(diǎn)芯片TMS320F2812。該芯片采用了高性能的CMOS技術(shù),CPU主頻高達(dá)150MHz,采用低功耗設(shè)計(jì),支持JTAG在線仿真接口,含有片內(nèi)128K×16 bit的Flash等[8]。
DSP2812具有兩個(gè)功能相同的事件管理器EVA和EVB。而此模塊是PWM脈沖生成的特定模塊。每個(gè)EV有2個(gè)16 bit的通用定時(shí)器,3個(gè)比較單元,3個(gè)捕獲單元,1個(gè)正交編碼脈沖。EV的通用定時(shí)器不但能夠計(jì)時(shí),每個(gè)定時(shí)器還能單獨(dú)產(chǎn)生1路獨(dú)立的PWM波形。比較單元又稱全比較單元,主要用來產(chǎn)生PWM波形,每個(gè)比較單元可以產(chǎn)生一對(兩路)互補(bǔ)的PWM波[9]。
在本實(shí)驗(yàn)中,仿真器一端通過JTAG插頭連接到DSP2812目標(biāo)板,另一端通過USB線纜連接到PC機(jī)的USB端口。
在MATLAB中,主要有Real-Time Workshop(RTW)和Stateflow Coder兩種自動(dòng)代碼生成工具,RTW生成的代碼簡潔,可靠,易讀。本文采用RTW模塊代碼生成工具。
自動(dòng)代碼生成流程如圖6所示[10]。
圖6 設(shè)計(jì)流程
(1)添加、設(shè)置Target Preferences模塊。
(2)添加并設(shè)置ePWM模塊。
(3)軟件在環(huán)測試。
(4)功能驗(yàn)證模型。
(5)需要利用Target Preference模塊、Digital Output模塊,進(jìn)一步把功能模型轉(zhuǎn)換為代碼模型。
按照上述步驟設(shè)置完畢后,單擊模型工具欄上的“編譯”按鈕,在MATLAB中自動(dòng)生成的代碼報(bào)告,代碼生成完畢后,由RTW模塊自動(dòng)啟動(dòng)CCS軟件、建立工程,并編譯下載程序到目標(biāo)板。
編譯完成后,.out文件會(huì)自動(dòng)下載到目標(biāo)板并執(zhí)行。取其中一路輸出波形,經(jīng)過阻容濾波接到示波器上,得到的SVPWM波形如圖7(a)所示,與圖5仿真結(jié)果一致。圖7(b)為用TI公司提供的手寫代碼(可認(rèn)為效率已經(jīng)很高)經(jīng)過濾波后得到的SVPWM波形。可以看到,自動(dòng)代碼生成得到的波形與手工編寫程序得到的波形一致。
在代碼效率方面,自動(dòng)編譯生成的.out文件為174 KB(178 450 byte),如圖8(a)所示,手寫代碼編譯生成的.out文件169 KB(173 729),如圖8(b)所示。按照文獻(xiàn)[7]給出的效率計(jì)算方法,自動(dòng)生成得到的代碼效率為173 729/178 450=97.35% 。可見,具有很高的效率。
圖7 SVPWM波形
圖8 效率比較
對于傳統(tǒng)的SVPWM代碼,需要編寫計(jì)算三角函數(shù)的繁雜過程[11],而基于模型設(shè)計(jì)自動(dòng)生成的代碼,只需要在Simulink中根據(jù)所需的算法,建立模型,設(shè)置好參數(shù),按照一定步驟點(diǎn)擊鼠標(biāo)操作,便可自動(dòng)生成所需要的代碼,操作簡單,縮短了開發(fā)周期,保證了代碼的可靠性和執(zhí)行效率。此方法充分體現(xiàn)了一體化系統(tǒng)設(shè)計(jì)的優(yōu)越性,在未來國內(nèi)的電力電子設(shè)計(jì)開發(fā)中具有光明前景。
[1]李紅,陳忠華,王勁松.基于FPGA的SVPWM算法的ESL設(shè)計(jì)[J].電子器件,2009,32(2):409-412.
[2]The Math Works,Inc.Embedded IDE LinkTM 4 User's Guide[S].Natic,MA:The MathWorks,Inc.2010.
[3]The MathWorks,Inc.Target Support PackageTM 4 User's Guide[S].Natic,MA;The MathWorks,Inc.2010.
[4]The MathWorks,Inc.Link for Code Composer Studio Develep?ment Tools[EB/OL].[2006-07-28].
[5](美)可哈尼(Keyhani A),(印尼)馬瓦里(Marwali M N),戴民.綠色可再生能源電力系統(tǒng)接入[M].王志新,等譯.北京:中國電力出版社,2012:31-63.
[6]石昆,章堅(jiān)民,李陽春.基于DSP的三相光伏并網(wǎng)逆變器控制系統(tǒng)設(shè)計(jì)與實(shí)[J].電子器件,2011,34(3):274.
[7]劉杰,周宇博.基于模型的設(shè)計(jì)-MSP430/F28027/F28335DSP篇[M].北京;國防工業(yè)出版社,2011:160-208.
[8]顧衛(wèi)鋼.手把手教你學(xué)DSP-基于TMS320X281x[M].北京航空航天大學(xué)出版社,2011:31-35.
[9]郭元彭,盧子廣,楊達(dá)亮.基于DSP代碼自動(dòng)生成的實(shí)時(shí)控制平臺[J].電力電子技術(shù),2010:10.
[10]王巧明,李中健,姜達(dá)郁.MATLAB平臺DSP自動(dòng)代碼生成技術(shù)研究[J].現(xiàn)代電子技術(shù),2012,35(14):12.
[11]夏加寬,王桐.一種新穎的不對稱六相SVPWM算法[J].電氣傳動(dòng),2014:2.
楊 蕊(1989-),女,漢,陜西渭南,西安石油大學(xué),碩士研究生,研究方向?yàn)殡娏﹄娮优c電力傳動(dòng),475810735@qq.com;
張建軍(1957-),男,漢,陜西西安,西安石油大學(xué),副教授,主要研究方向?yàn)殡娏﹄娮优c電力傳動(dòng),zhangjj@xsyu.edu.cn。
Search on Generating Code Automatically of SVPWM Based on MATLAB*
YANG Rui,ZHANG Jianjun,MA Zhao,LU Yu*
(Xi'anshiyou University,Xi'an 710065,China)
Because of DSP's complicated programming,long developing term,a method is given by using MAT?LAB,CCS and its auxiliary software to generate SVPWM code automatically.MATLAB/Simulink is used to build a corresponding algorithmic model.After testifying the correct of this model,it generats codes,compilies automatical?ly and downloads them to DSP system to operate.The wave is identical with that of the theoretical result.Compared with manuel code,this method is easy to do,and has a short developing term and high efficiency of generating codes.
three-phase inverter;space vector pulse width modulation;automatic code generation;digital signal processor
H127;TP391.1
A
1005-9490(2015)06-1341-05
6120B
10.3969/j.issn.1005-9490.2015.06.027
項(xiàng)目來源:西安石油大學(xué)全日制碩士研究生創(chuàng)新基金項(xiàng)目(2013cx120318)
2015-02-08 修改日期:2015-03-16