1 引 言
Matlab" title="Matlab">Matlab具有強(qiáng)大的分析,、計(jì)算和可視化功能,, 利用MATLAB 提供的專業(yè)工具箱, 可以方便,、靈活地實(shí)現(xiàn)對自動控制,、信號處理,、通信系統(tǒng)等算法的分析和仿真,, 是算法設(shè)計(jì)人員和工程技術(shù)人員不可缺少的軟件工具。
數(shù)字信號處理器( DSP" title="DSP">DSP)作為一種可編程專用芯片,, 是數(shù)字信號處理理論實(shí)用化的重要工具,, 在自動控制、語言處理,、圖像處理等技術(shù)領(lǐng)域得到了廣泛應(yīng)用,。但對于算法設(shè)計(jì)人員來講, 利用匯編語言和C語言進(jìn)行功能開發(fā),, 具有周期長,、效率低的缺點(diǎn), 不利于算法驗(yàn)證和產(chǎn)品的快速開發(fā),。
由MathWorks公司和TI公司聯(lián)合開發(fā)的MATLAB L ink for CCS" title="CCS">CCS DevelopmentToo l(CCSlink)是MATLAB6. 5版本中增加的一個全新的工具箱,, 它提供了MATLAB、CCS和DSP目標(biāo)板的接口,, 利用此工具可以像操作MATLAB 變量一樣來操作DSP器件的寄存器和存儲器,, 極大的提高了DSP應(yīng)用系統(tǒng)的開發(fā)進(jìn)展。
2 M atlab與CCS及目標(biāo)板間的連接
Matlab可通過3種方式與CCS,、目標(biāo)DSP進(jìn)行連接,、數(shù)據(jù)交換。CCSL ink 向用戶提供了3 種連接對象,, 如圖1所示,。
CCS IDE的連接對象: 該對象支持TI的C2000 /5000 /6000系列DSP, 利用此對象可創(chuàng)建CCS IDE和M atlab的連接,。用戶可以編寫用于DSP程序的Ma tlab語言批處理腳本,, 從Matlab 的命令窗中直接運(yùn)行CCS IDE中的應(yīng)用程序, 向硬件DSP的存儲器或寄存器發(fā)送或取出數(shù)據(jù),, 檢查DSP的狀態(tài),, 停止或啟動程序在DSP中的運(yùn)行。
與RTDX(實(shí)時數(shù)據(jù)交換)的連接對象: 該對象提供Matlab和硬件DSP之間的實(shí)時通信通道,。它允許用戶在主機(jī)和目標(biāo)板之間進(jìn)行實(shí)時的數(shù)據(jù)交換而不用考慮目標(biāo)板程序的運(yùn)行,。RTDX連接對象實(shí)際上是CCS連接對象的一個子類,, 在創(chuàng)建CCS連接對象的同時創(chuàng)建RTDX 連接對象, 它們不能分別創(chuàng)建,。
圖1 CCSL ink的三種接口
嵌入式對象: 在Matlab 環(huán)境中創(chuàng)建,, 該對象可以代表嵌入在目標(biāo)C 程序中的變量, 由其直接對嵌入在目標(biāo)DSP存儲器/寄存器中的變量進(jìn)行操作,。
3 ETT IC2000環(huán)境
由以上所述可知,, CCSLink為T IDSP實(shí)時應(yīng)用開發(fā)的調(diào)試和測試提供了強(qiáng)大的支持, 而ETT IC2000則為T IC2000 DSP實(shí)時應(yīng)用開發(fā)的整個過程(概念設(shè)計(jì),、算法仿真,、原代碼編寫、目標(biāo)代碼生成,、調(diào)試和測試)都提供了支持,。利用ETTIC2000能夠從S imulink模型自動生成T I C2000 DSP的可執(zhí)行代碼, 從而在Simu link統(tǒng)一環(huán)境下就可以實(shí)現(xiàn)整個硬件的在線仿真,。
應(yīng)用ETTIC2000開發(fā)實(shí)時DSP處理的過程如下:
( 1)概念構(gòu)思和DSP處理算法設(shè)計(jì);( 2)在S imulink環(huán)境下,, 利用DSP BLOCKSET,F(xiàn)IXED_POINT BLOCKSET,, C2000 DSPLIB 和Simulink等庫中模塊構(gòu)建算法模型,, 并在S imulink環(huán)境下運(yùn)行仿真;( 3)如果仿真效果滿意, 就可以在模型中加入所需的C2800 DSP Ch ip Support中的模塊,。
( 4)設(shè)置REAL - T IME WORKSHOP中編譯連接( BU ILD)選項(xiàng),。
( 5)利用CCS中的調(diào)試工具、CCSLink或RTDX來調(diào)試目標(biāo)DSP中的程序,。
4 仿真系統(tǒng)的建立及代碼生成
4. 1 ADC 轉(zhuǎn)換及F IR濾波器處理程序設(shè)計(jì)
用Embedded target for T I C2000 工具包設(shè)計(jì)ADC 轉(zhuǎn)換及F IR 濾波,。在新建的S imulink文件中,放入C2000 Target Preference中的F2812 eZdsp,, 并對其中參數(shù)進(jìn)行設(shè)置,。
實(shí)現(xiàn)A /D 轉(zhuǎn)換的功能模塊是C28x ADC, A /D轉(zhuǎn)換模塊可以選擇模塊A,、B 中的任意六個通道,, 這里要注意數(shù)據(jù)格式的轉(zhuǎn)化。
FIR 濾波器設(shè)計(jì)有很多種,, 利用M atlab 中的FDATooo l( F ilter Desiign&Analysis Too l)來設(shè)計(jì)是經(jīng)常使用的一種,。FDATooo l是通過指定濾波器的性能指標(biāo)來快速設(shè)計(jì)F IR 或者IIR 濾波器, 它是一種圖形設(shè)計(jì)界面,, 如圖2所示,。
指定FIR濾波器為低通濾波器( Low pass) , 指定采樣頻率為6kH z,, 低通頻率為1kH z,, 截止頻率為2kHz,, 菜單Analysis用來選擇不同的分析顯示方式,如幅度響應(yīng),、相位響應(yīng),、脈沖響應(yīng)、階躍響應(yīng),、濾波系數(shù)等,。指定完成設(shè)計(jì)參數(shù)后單擊Overw rite generated filter b lock, 完成濾波器的設(shè)計(jì),。
圖2 數(shù)字濾波器設(shè)置對話框
4. 2 擴(kuò)展卡爾曼濾波器的設(shè)計(jì)
擴(kuò)展卡爾曼濾波器是通過內(nèi)嵌S 函數(shù)完成的,。
在RTW 中一般可以直接應(yīng)用非內(nèi)嵌C MEX S 函數(shù), 但是在實(shí)時情況下對時間要求比較嚴(yán)格,, 而非內(nèi)嵌S函數(shù)的S imstruct數(shù)據(jù)結(jié)構(gòu)需要大量的存儲計(jì)算資源,, 運(yùn)行時調(diào)用S函數(shù)需要很大的系統(tǒng)開支,, 此時就需利用TLC 技術(shù)將S 函數(shù)內(nèi)嵌,。TLC 是RTW的一個內(nèi)部組成部分, 利用它可以自定義從S imulink模型生成的C 代碼,, 并為S imulink模型圖生成優(yōu)化的內(nèi)嵌程序代碼,。通過自定義, 可以將自定義算法和現(xiàn)存的例程結(jié)合起來形成一個整體式的程序,, 提高代碼質(zhì)量,, 減少代碼體積。
內(nèi)嵌S函數(shù)的實(shí)現(xiàn)是通過生成一個TLC 文件mymode.l t lc完成的,。當(dāng)TLC 在閱讀mymode.l rtw時,, 如果發(fā)現(xiàn)有S函數(shù)block, 并且在TLC 文件的搜索路徑中有相應(yīng)的TLC 文件,, 則S函數(shù)被內(nèi)嵌,。
4. 3 代碼生成
以上完成了仿真模型各個模塊的建立, 如圖3所示,。
圖3 仿真系統(tǒng)圖
其中,, 電壓和電流的C larke Transformation 模塊和C28x To Memory 模塊是C28x DMC Library 和C2800 DSP Core Support中自帶的模型, 在使用時只需要拖入仿真系統(tǒng)即可,。
進(jìn)入Simulink 的Conf iguration Parameters 對話框,, 對Real- T im eW orkshop進(jìn)行設(shè)置完成后, 點(diǎn)擊Bu ild即可生成對應(yīng)的DSP工程文件,, 并且DDSL ink自動打開CCS,, 進(jìn)行編譯調(diào)試, 如圖4所示,。
圖4 CCSL ink自動調(diào)試DSP代碼
由Mat lab自動生成的DSP代碼能夠?qū)崿F(xiàn)AD轉(zhuǎn)換,、數(shù)字濾波及卡爾曼濾波計(jì)算,, 但是由于程序中使用了很多缺省設(shè)置, 在運(yùn)行中還有一些問題,, 如中斷處理程序只對定時器中斷進(jìn)行處理,, 無法用圖形方式觀測變量值等, 需要進(jìn)一步完善,。
5 試驗(yàn)結(jié)果及分析
把修改完善后的代碼加載到DSP實(shí)驗(yàn)板上,, 對電機(jī)的電壓和電流進(jìn)行采樣, 通過圖5可以驗(yàn)證濾波器的效果,。
在利用擴(kuò)展卡爾曼濾波進(jìn)行速度估算時,, 以異步電機(jī)在兩相靜止坐標(biāo)系下的電流Ia、Iβ,、轉(zhuǎn)子磁鏈Φa,、Φβ、以及轉(zhuǎn)速n 為狀態(tài)變量,, 進(jìn)行一系列計(jì)算,,這樣就可以很方便的觀測到磁鏈圓如圖6( a)和估算的速度曲線如圖6( b)。在計(jì)算過程中,, 由于采樣噪聲,、系統(tǒng)噪聲、電機(jī)參數(shù)隨溫度變化等原因,, 造成估算值在一定范圍內(nèi)浮動,, 但是基本穩(wěn)定。
通過EKF完成了異步電機(jī)的速度在線辨識,, 為以后建立異步電機(jī)無速度傳感器矢量控制系統(tǒng)奠定了基礎(chǔ),。
6 結(jié)束語
試驗(yàn)證明, 應(yīng)用Matlab對DSP進(jìn)行實(shí)時調(diào)試和代碼生成,, 有效地改變了傳統(tǒng)的設(shè)計(jì)方法,。用M atlab快速建立T IDSP模型及直接生成C 語言程序的方法, 簡化了DSP 軟件的開發(fā),。在Embeddedtarget for TI C2000 工具箱中還包含其他工具,, 如PWM 控制、CAN 總線控制及通用I /O 控制等,。利用這些工具與Simu link中的其他工具相結(jié)合,, 能夠完成復(fù)雜功能的DSP程序設(shè)計(jì), 并且只需要進(jìn)行少量修改,, 就可以實(shí)現(xiàn)功能正確的C 語言程序設(shè)計(jì),,大大提高了程序開發(fā)效率。