盧小錦 廣東理工職業(yè)學(xué)院,廣東廣州 510091
基于Matlab的DSP控制系統(tǒng)系統(tǒng)級開發(fā)方法
盧小錦 廣東理工職業(yè)學(xué)院,廣東廣州 510091
傳統(tǒng)的DSP控制系統(tǒng)開發(fā)思路,由于系統(tǒng)設(shè)計與模型仿真分離,實際系統(tǒng)與模型仿真誤差大,代碼編寫任務(wù)繁重,開發(fā)周期長。本文基于系統(tǒng)級的設(shè)計思路,在Matlab環(huán)境下,利用C2000lib工具箱和Matlab Link for CCS Development、ToToarlsget for TI C2000工具包,結(jié)合DSP集成開發(fā)環(huán)境Code Composer Stadiu 3.3(CCS3.3),實現(xiàn)DSP控制系統(tǒng)從概念設(shè)計、建模仿真到代碼的直接生成。本文根據(jù)該設(shè)計思路,以永磁同步電機(PMSM)的DSP矢量控制系統(tǒng)為工程實例,給出了控制系統(tǒng)從建模仿真到DSP程序代碼自動生成的設(shè)計流程。
Matlab;DSP;代碼自動生成;永磁同步電機;矢量控制
Matlab; DSP; Code generating; Permanent Magnet Synchronous Motor; Vector control
Matlab因其強大的分析、計算和可視化功能被廣泛用于控制系統(tǒng)的數(shù)學(xué)建模仿真、方案驗證。開發(fā)一個控制系統(tǒng),一般先用Matlab對系統(tǒng)的控制算法進行數(shù)學(xué)建模仿真,方案通過驗證后才進行DSP系統(tǒng)的硬件設(shè)計及代碼開發(fā),并通過對比實際系統(tǒng)和仿真模型的輸出,完善系統(tǒng)的設(shè)計?;谠撍悸返腄SP控制系統(tǒng)開發(fā),難度大、周期長,且系統(tǒng)設(shè)計與仿真模型分離,結(jié)果偏差大。本文基于系統(tǒng)級的設(shè)計思路,將系統(tǒng)設(shè)計和模型仿真在統(tǒng)一的開發(fā)環(huán)境中實現(xiàn),實現(xiàn)系統(tǒng)和仿真模型的高度一致,提高系統(tǒng)的開發(fā)效率。
Math Works公司和TI公司聯(lián)合開發(fā)的工具包——Matlab Link for CCS Development Tools把Matlab和DSP集成開發(fā)環(huán)境CCS及DSP連接起來。利用此工具可以像操作Matlab變量一樣來操作TI DSP的存儲器或寄存器,開發(fā)人員在 Matlab環(huán)境下就可以完成對CCS的操作。Matlab Link for CCS Development Tools 可以支持CCS能夠識別的任何目標(biāo)板,包括TI公司的DSK、EVM開發(fā)板和用戶自行開發(fā)的DSP板。把Matlab Link for CCS Development Tools工具包與Target for TI C 2000工具包配合使用,則可以直接由Matlab的仿真模型生成DSP的可執(zhí)行代碼,即在Matlab環(huán)境下完成DSP控制系統(tǒng)開發(fā)的整個過程[1]。
基于Matlab的DSP控制系統(tǒng)開發(fā)流程如圖2。開發(fā)人員根據(jù)概念設(shè)計在Matlab平臺下利用Simulink、SimPowerSystems及C2000lib工具箱中的模型搭建系統(tǒng)仿真模型(.mdl),仿真驗證后通過Matlab的Real Time Workshop(RTW)生成面向TI編譯器的工程文件(.prj),并進一步完成代碼的編譯,鏈接生成DSP可執(zhí)行機器碼(. out)并下載到目標(biāo)DSP板,完成系統(tǒng)的開發(fā)[2]。
圖2 基于Matlab的DSP控制系統(tǒng)開發(fā)流程圖
控制系統(tǒng)采用電流反饋跟蹤實現(xiàn)Id=0的PMSM轉(zhuǎn)子磁場定向控制策略(PMSM磁場定向空間矢量控制框圖見圖1)。Id=0控制方式輸出力矩與定子電流成正比,電流調(diào)節(jié)器的輸出為實際定子電流幅值。它們在永磁同步電機生成的合成電流矢量超前且垂直于轉(zhuǎn)子d軸。故采用轉(zhuǎn)子磁場定向的方式控制永磁同步電機,只需準(zhǔn)確地檢測出轉(zhuǎn)子空間位置(d軸),通過控制逆變器使三相定子的合成電流位于q軸上,定子電流在d軸上的分量為零,在q軸上產(chǎn)生轉(zhuǎn)矩勵磁電流,通過控制定子電流的大小,就可以控制轉(zhuǎn)矩[3]。
PMSM磁場定向控制算法包括:矢量控制算法、調(diào)節(jié)器控制算法及電壓空間矢量控制算法。矢量控制算法完成三相坐標(biāo)系到兩相同步旋轉(zhuǎn)坐標(biāo)系的變換及其逆變換,實現(xiàn)永磁同步電動機的解耦控制;速度調(diào)節(jié)器設(shè)計為帶飽和輸出的PID調(diào)節(jié)器,其飽和輸出值設(shè)定為電動機額定力矩電流的兩倍,穩(wěn)態(tài)時實現(xiàn)對速度的誤差控制。動態(tài)調(diào)節(jié)時,限制電動機的最大電流,保證系統(tǒng)安全;PWM算法采用電壓空間矢量控制(SVPWM)算法,具有諧波小和電壓利用率高的特點。
3.1 基于Matlab/Simulink的系統(tǒng)級仿真模型建模及仿真
本文根據(jù)系統(tǒng)控制算法,基于Matlab搭建了基于磁場定向的PMSM空間矢量控制系統(tǒng)仿真模型(見圖3),該仿真模型包括仿真模塊和嵌入式系統(tǒng)模塊兩部分。
3.1.1 仿真模塊設(shè)計
仿真模塊基于Simulink、SimPowerSystems工具箱搭建,實現(xiàn)對功率電路及電機的建模仿真,包含有永磁同步電機模型、三相逆變器模型及數(shù)據(jù)轉(zhuǎn)換1模塊。其中,數(shù)據(jù)轉(zhuǎn)換1模塊包括相電流模數(shù)轉(zhuǎn)換子模塊(見圖4)及編碼器子模塊(見圖5)。
(1)相電流模數(shù)轉(zhuǎn)換子模塊將永磁同步電機模型輸出的相電流值轉(zhuǎn)換成D S P ADC寄存器的數(shù)據(jù)格式,模擬DSP ADC外設(shè)的數(shù)據(jù)采集工作模式。TMS320F2812的ADC為12位,數(shù)據(jù)有效范圍為[4905,0]。相電流模數(shù)轉(zhuǎn)換子模塊將電流值限幅為[40.94,-40.94],換算公式見式1.1。
圖4 相電流模數(shù)轉(zhuǎn)換子模塊
(2)編碼器子模塊模擬DSP EVA 事件管理器正交編碼脈沖QEP電路的解碼和計數(shù)工作模式。DSP EVA 事件管理器正交編碼脈沖QEP電路使用通用定時器2對編碼器的正交編碼脈沖進行計數(shù),計數(shù)器的數(shù)據(jù)格式為無符號16位整形數(shù),最大計數(shù)值為65535。編碼器子模塊將永磁同步電機模型端的角位移值轉(zhuǎn)換為通用定時器計數(shù)值的數(shù)據(jù)格式,以 [0,65535]為計數(shù)范圍循環(huán)計數(shù),換算公式見式1.2。
QEP_sim =angle ×(4× encoderResolution/2/pi) (式1.2)
其中,encoderResolution為編碼器線數(shù),值為2000;angle為電機模型的轉(zhuǎn)子角位移。
圖5 編碼器子模塊
3.1.2 嵌入式系統(tǒng)模塊設(shè)計
嵌入式系統(tǒng)模塊基于Simulink、C2000lib工具箱搭建,該模塊實現(xiàn)系統(tǒng)的控制算法,且可通過該模塊直接生成DSP程序代碼。嵌入式系統(tǒng)模塊主要包括速度調(diào)節(jié)器模塊、Q軸電流調(diào)節(jié)器模塊、D軸電流調(diào)節(jié)器模塊、Park模塊、Clark模塊、I_Park模塊、空間矢量發(fā)生器、C28x PWM 模塊、F2812eZdsp模塊、、電流采樣模塊、位置及轉(zhuǎn)速計算模塊及相應(yīng)的數(shù)據(jù)轉(zhuǎn)換模塊。各模塊的功能分析如下:
(1)速度調(diào)節(jié)器模塊、Q軸電流調(diào)節(jié)器模塊、D軸電流調(diào)節(jié)器模塊、Clark模塊、Park模塊、I_Park模塊以及空間矢量發(fā)生器是Matlab C28x Digital Motor Control Library的模型,各模塊對應(yīng)的功能為:實現(xiàn)帶飽和輸出的PID調(diào)節(jié)器算法;Clark變換運算,實現(xiàn)三相靜止坐標(biāo)到兩相靜止坐標(biāo)的轉(zhuǎn)換;Park變換運算,實現(xiàn)兩相靜止坐標(biāo)到兩相旋轉(zhuǎn)坐標(biāo)的轉(zhuǎn)換;Park逆變換運算,實現(xiàn)兩相旋轉(zhuǎn)坐標(biāo)到兩相靜止坐標(biāo)的轉(zhuǎn)換;計算出應(yīng)用SVPWM產(chǎn)生給定定子參考電壓所需的3個比較值Ta,Tb,Tc。
(2)C28x PWM 模塊是Matlab C28x DSP Chip Support Library 的模型,通過配置該模塊控制DSP PWM的工作模式,包括載波率、有效電平、工作時鐘頻率等。
(3)F2812eZdsp模塊是Matlab Target Preference Library的模型,通過配置該模塊可對DSP目標(biāo)板的工作參數(shù)、存儲器、段及外設(shè)硬件資源進行設(shè)置。
(4)電流采樣模塊(見圖6)主要實現(xiàn)兩個功能:采集定子端a、b相相電流;采集給定速度的輸入信號。
C28x ADC 模塊是Matlab C28x DSP Chip Support Library 的模型,通過配置該模塊可實現(xiàn)對DSP ADC 采樣通道及工作模式等進行設(shè)置。論文使用ADCINA0、ADCINA1通道實現(xiàn)對a、b相相電流信號的采集;使用ADCINA7通道實現(xiàn)對給定速度輸入信號的采集。
圖6中,Environment Controller實現(xiàn)了仿真模塊和嵌入式系統(tǒng)模塊的輸入數(shù)據(jù)切換。Environment Controller有兩個輸入端Sim及RTW,其輸出決定于模型是在Matlab仿真環(huán)境下運行還是在代碼直接生成的情況下運行,當(dāng)模型是在Matlab仿真環(huán)境下運行時輸出Out等于Sim,當(dāng)在代碼直接生成的情況下輸出Out等于RTW。
(5)位置及轉(zhuǎn)速計算模塊(見圖7)由C28x QEP 子模塊、CAP3INT子模塊、QEP_latch子模塊、speed_position子模塊、Starup_ramp子模及IIRfilter子模塊組成,其基本工作原理:在系統(tǒng)啟動階段,編碼器index信號被第一次捕獲前,init_latch標(biāo)志信號為0,電機處于啟動工作模式,由start_ramp子模塊實現(xiàn)電機的啟動;當(dāng)編碼器index信號被第一次捕獲后,init_latch標(biāo)志信號置1,系統(tǒng)切換到正常工作狀態(tài)。系統(tǒng)通過C28x QEP子模塊對正交編碼脈沖進行計數(shù);通過CAP3INT子模塊捕獲編碼器index信號的跳變及跳變時刻正交編碼脈沖的計數(shù)值;通過speed_position子模塊結(jié)合正交編碼脈沖計數(shù)值(QEP)及CAP3INT的捕獲值(cap_value)估算電機轉(zhuǎn)速(speed)及計算電角度(position)。
C28x QEP子模塊(見圖7)是Matlab C28x DSP Chip Support Library 的模型,通過配置該模塊對DSP 正交編碼脈沖QEP電路進行設(shè)置。本論文使用事件管理器A的QEP1、QEP2管腳作為編碼器正交編碼脈沖的輸入端,捕獲單元3(CAP3)管腳作為編碼器index信號的輸入端,其輸出為基于通用定時器2的正交編碼脈沖計數(shù)值。
CAP3INT子模塊(見圖8)實現(xiàn)捕獲單元3對編碼器index信號及正交編碼脈沖計數(shù)值的捕獲。
系統(tǒng)初始化階段,配置CAPCONA(To Memory)、CAPFIFOA(To Memory)對捕獲單元3及其捕獲FIFO狀態(tài)寄存器進行初始化,使能捕獲單元3并設(shè)置檢測捕獲單元3的上升沿;向捕獲單元3的FIFO堆棧狀態(tài)位CAP3FIFO 寫入“01”,隨后每當(dāng)FIFO獲得一個新的捕獲值,都將產(chǎn)生一個捕獲中斷。
系統(tǒng)工作時,將CAPFIFOA1(From Memory)捕獲FIFO狀態(tài)寄存器的值與“0x2000”進行位與運算,判斷捕獲單元3是否發(fā)生新的捕獲。當(dāng)發(fā)生新的捕獲,if子模觸發(fā)系統(tǒng)從捕獲FIFO堆棧1的底層寄存器CAP1BOT讀取捕獲值(CAP_value)。
int_latch信號用于切換電機運行的工作狀態(tài)。系統(tǒng)啟動階段,int_latch默認(rèn)值為0,電機處于啟動狀態(tài);當(dāng)捕獲單元3第一次捕獲編碼器index信號,int_latch信號置1,電機完成啟動,切換到正常工作狀態(tài)。
系統(tǒng)在仿真環(huán)境運行時,由QEP_latch子模塊(見圖9)仿真實現(xiàn)CAP3INT子模塊捕獲正交編碼計數(shù)值的功能;int_latch信號置1,電機無啟動階段。
speed_position子模塊(見圖10)實現(xiàn)電機轉(zhuǎn)速及電角度的計算。系統(tǒng)在20k的頻率下運行,通過計算相鄰兩個機器周期的QEP計數(shù)值的差值便可估算出電機的轉(zhuǎn)速speed;通過編碼器偏移量offset、正交編碼脈沖捕獲值QEP_index、編碼器線數(shù)Encoder Resolution等參數(shù)可計算出電角度position。系統(tǒng)中speed及position的值都被轉(zhuǎn)換為歸一化的Q17數(shù)據(jù)。
IIRfilter子模塊(圖11)是IIR數(shù)字濾波器模塊,有兩個作用:濾波作用,濾除速度給定信號的干擾;實現(xiàn)速度給定信號的緩升緩降,使速度給定信號緩慢變化至設(shè)定值,防止給定速度信號的突變給電機造成沖擊。電機啟動階段,int_latch為0,IIRfilter子模塊將給定速度設(shè)為0.1(歸一化Q 17數(shù)據(jù));當(dāng)發(fā)生第一次捕獲后,int_latch置為1,系統(tǒng)切換到正常工作狀態(tài),IIRfilter子模塊輸出為實際速度給定信號。
Starup_ramp子模塊(見圖12)實現(xiàn)電機的啟動。電機啟動階段,由于無法判定轉(zhuǎn)子位置,Starup_ramp子模塊向系統(tǒng)輸出提供電角度信號,使電機起轉(zhuǎn)。R a m p Control模塊用于設(shè)置電角度信號的頻率,Ramp Generator根據(jù)設(shè)定頻率輸出幅值為[0,1]的電角度信號波。
數(shù)據(jù)轉(zhuǎn)換子模塊實現(xiàn)空間矢量發(fā)生模塊和C28x PWM 之間的數(shù)據(jù)轉(zhuǎn)換。由于空間矢量發(fā)生模塊輸出是一個歸一化的Q24數(shù)據(jù),而C28x PWM 是16位整數(shù),因此需要通過在兩者之間進行數(shù)據(jù)轉(zhuǎn)換匹配。轉(zhuǎn)換公式為:
3.1.3 模型仿真
電機參數(shù)為:額定工作電壓600DCV,額定電流為4A,額定轉(zhuǎn)速為3000prm,額定轉(zhuǎn)矩為3Nm,電機帶載啟動。模型仿真輸出占空比Ta、占空比Tb、電角度、A相相電流、速度給定值及速度估算值的波形如圖13、圖14、圖15。通過觀測仿真波形可知系統(tǒng)控制算法設(shè)計的正確性,系統(tǒng)具有良好的動態(tài)特性且穩(wěn)態(tài)誤差小。
3.2 基于MATLAB 的DSP代碼直接生成
下面實現(xiàn)MATLAB仿真模型的DSP目標(biāo)代碼直接生成。
通過MATLAB直接生成代碼時,首先把仿真模型的仿真模塊去掉,執(zhí)行Ctrl+B組合鍵命令,或在Real-Time Workshop界面點擊generate code按鈕。Matlab根據(jù)設(shè)置自動生成名為“C2812pmsmsim.pjt”的工程文件(包括源文件、庫文件、鏈接文件),并自動連接打開CCS集成開發(fā)環(huán)境(見圖16),并將生成的C代碼編譯、鏈接、下載到目標(biāo)板。
系統(tǒng)硬件采用德州儀器公司的eZdsp F2812平臺作為控制單元。實驗電機參數(shù)為:額定工作電壓220ACV,額定電流為5A,額定轉(zhuǎn)速為2500prm,額定轉(zhuǎn)矩為5Nm,極對數(shù)為4,電機帶載啟動。通過CCS集成開發(fā)環(huán)境的圖形窗口觀察到的占空比Ta、占空比Tb、電角度、A相相電流、速度給定值及速度估算值波形如圖17、圖18、圖19。通過與模型的仿真輸出波形對比,系統(tǒng)輸出與模型仿真結(jié)果一致,系統(tǒng)設(shè)計與仿真模型設(shè)計相符,驗證了本文基于Matlab的DSP系統(tǒng)級開發(fā)開發(fā)思路的正確性。
本文基于系統(tǒng)級的設(shè)計思路,基于Matlab平臺完成了永磁同步電機矢量控制系統(tǒng)的建模仿真及實現(xiàn)了由Matlab仿真模型直接生成DSP代碼。通過該工程實例,展現(xiàn)了一種全新的DSP控制系統(tǒng)開發(fā)思路,實現(xiàn)了系統(tǒng)設(shè)計與模型仿真的統(tǒng)一,使得控制系統(tǒng)從算法設(shè)計、建模仿真到系統(tǒng)實現(xiàn)的整個過程更加緊湊一致,大大減輕了代碼開發(fā)的難度,提高了開發(fā)效率與質(zhì)量。
[1]盧小錦,曾岳南.基于Matlab/Simuli的nk TMS320F2812代碼開發(fā)[J]. 單片機與嵌入式系統(tǒng)應(yīng)用.2009,2:79-81
[2]張詳,楊志剛,張彥生.Matlab/Simuli模nk型到C/C++代碼的自動實現(xiàn)[J].中國測試技術(shù).2005,31(1): 111-113
[3]馮繼營,李向超,李家武.基于SVPWM的永磁同步電機矢量控制系統(tǒng)設(shè)計[J].電子元器件應(yīng)用.2010,12(9):51-54
System Level Development Method Of DSP Control System Based On Mtalab
Lu Xiaojin Guangdong Polytechnic Institute, Guangzhou Guangdong, 510091
Based on the traditional development approach, design of the DSP control system and the model simulation is separate. As a result, it is time-consuming and there is great error between the real system and the simulation model. This paper develops the DSP control system on the System Level Development. In the Matlab environment, carry out the DSP control system , including concept design, modeling, and code generating, by using Simulink, SimPowerSystems, C2000lib toolbox , Matlab Link for CCS Development Tools, Target for TI C2000tools and DSP integrated development environment Code Composer Stadiu3.3(CCS3.3). This paper developed the Permanent Magnet Synchronous Motor DSP Control System based on this approach, and shows the procedure of the system modeling, DSP code generating.
10.3969/j.issn.1001-8972.2011.11.057
盧小錦,碩士研究生,助教;研究方向:運動控制與電力電子技術(shù)。