1 引 言
Matlab" title="Matlab">Matlab具有強(qiáng)大的分析、計(jì)算和可視化功能, 利用MATLAB 提供的專業(yè)工具箱, 可以方便、靈活地實(shí)現(xiàn)對(duì)自動(dòng)控制、信號(hào)處理、通信系統(tǒng)等算法的分析和仿真, 是算法設(shè)計(jì)人員和工程技術(shù)人員不可缺少的軟件工具。
數(shù)字信號(hào)處理器( DSP" title="DSP">DSP)作為一種可編程專用芯片, 是數(shù)字信號(hào)處理理論實(shí)用化的重要工具, 在自動(dòng)控制、語言處理、圖像處理等技術(shù)領(lǐng)域得到了廣泛應(yīng)用。但對(duì)于算法設(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版本中增加的一個(gè)全新的工具箱, 它提供了MATLAB、CCS和DSP目標(biāo)板的接口, 利用此工具可以像操作MATLAB 變量一樣來操作DSP器件的寄存器和存儲(chǔ)器, 極大的提高了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 種連接對(duì)象, 如圖1所示。
CCS IDE的連接對(duì)象: 該對(duì)象支持TI的C2000 /5000 /6000系列DSP, 利用此對(duì)象可創(chuàng)建CCS IDE和M atlab的連接。用戶可以編寫用于DSP程序的Ma tlab語言批處理腳本, 從Matlab 的命令窗中直接運(yùn)行CCS IDE中的應(yīng)用程序, 向硬件DSP的存儲(chǔ)器或寄存器發(fā)送或取出數(shù)據(jù), 檢查DSP的狀態(tài), 停止或啟動(dòng)程序在DSP中的運(yùn)行。
與RTDX(實(shí)時(shí)數(shù)據(jù)交換)的連接對(duì)象: 該對(duì)象提供Matlab和硬件DSP之間的實(shí)時(shí)通信通道。它允許用戶在主機(jī)和目標(biāo)板之間進(jìn)行實(shí)時(shí)的數(shù)據(jù)交換而不用考慮目標(biāo)板程序的運(yùn)行。RTDX連接對(duì)象實(shí)際上是CCS連接對(duì)象的一個(gè)子類, 在創(chuàng)建CCS連接對(duì)象的同時(shí)創(chuàng)建RTDX 連接對(duì)象, 它們不能分別創(chuàng)建。
圖1 CCSL ink的三種接口
嵌入式對(duì)象: 在Matlab 環(huán)境中創(chuàng)建, 該對(duì)象可以代表嵌入在目標(biāo)C 程序中的變量, 由其直接對(duì)嵌入在目標(biāo)DSP存儲(chǔ)器/寄存器中的變量進(jìn)行操作。
3 ETT IC2000環(huán)境
由以上所述可知, CCSLink為T IDSP實(shí)時(shí)應(yīng)用開發(fā)的調(diào)試和測試提供了強(qiáng)大的支持, 而ETT IC2000則為T IC2000 DSP實(shí)時(shí)應(yīng)用開發(fā)的整個(gè)過程(概念設(shè)計(jì)、算法仿真、原代碼編寫、目標(biāo)代碼生成、調(diào)試和測試)都提供了支持。利用ETTIC2000能夠從S imulink模型自動(dòng)生成T I C2000 DSP的可執(zhí)行代碼, 從而在Simu link統(tǒng)一環(huán)境下就可以實(shí)現(xiàn)整個(gè)硬件的在線仿真。
應(yīng)用ETTIC2000開發(fā)實(shí)時(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, 并對(duì)其中參數(shù)進(jìn)行設(shè)置。
實(shí)現(xiàn)A /D 轉(zhuǎn)換的功能模塊是C28x ADC, A /D轉(zhuǎn)換模塊可以選擇模塊A、B 中的任意六個(gè)通道, 這里要注意數(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è)置對(duì)話框
4. 2 擴(kuò)展卡爾曼濾波器的設(shè)計(jì)
擴(kuò)展卡爾曼濾波器是通過內(nèi)嵌S 函數(shù)完成的。
在RTW 中一般可以直接應(yīng)用非內(nèi)嵌C MEX S 函數(shù), 但是在實(shí)時(shí)情況下對(duì)時(shí)間要求比較嚴(yán)格, 而非內(nèi)嵌S函數(shù)的S imstruct數(shù)據(jù)結(jié)構(gòu)需要大量的存儲(chǔ)計(jì)算資源, 運(yùn)行時(shí)調(diào)用S函數(shù)需要很大的系統(tǒng)開支, 此時(shí)就需利用TLC 技術(shù)將S 函數(shù)內(nèi)嵌。TLC 是RTW的一個(gè)內(nèi)部組成部分, 利用它可以自定義從S imulink模型生成的C 代碼, 并為S imulink模型圖生成優(yōu)化的內(nèi)嵌程序代碼。通過自定義, 可以將自定義算法和現(xiàn)存的例程結(jié)合起來形成一個(gè)整體式的程序, 提高代碼質(zhì)量, 減少代碼體積。
內(nèi)嵌S函數(shù)的實(shí)現(xiàn)是通過生成一個(gè)TLC 文件mymode.l t lc完成的。當(dāng)TLC 在閱讀mymode.l rtw時(shí), 如果發(fā)現(xiàn)有S函數(shù)block, 并且在TLC 文件的搜索路徑中有相應(yīng)的TLC 文件, 則S函數(shù)被內(nèi)嵌。
4. 3 代碼生成
以上完成了仿真模型各個(gè)模塊的建立, 如圖3所示。
圖3 仿真系統(tǒng)圖
其中, 電壓和電流的C larke Transformation 模塊和C28x To Memory 模塊是C28x DMC Library 和C2800 DSP Core Support中自帶的模型, 在使用時(shí)只需要拖入仿真系統(tǒng)即可。
進(jìn)入Simulink 的Conf iguration Parameters 對(duì)話框, 對(duì)Real- T im eW orkshop進(jìn)行設(shè)置完成后, 點(diǎn)擊Bu ild即可生成對(duì)應(yīng)的DSP工程文件, 并且DDSL ink自動(dòng)打開CCS, 進(jìn)行編譯調(diào)試, 如圖4所示。
圖4 CCSL ink自動(dòng)調(diào)試DSP代碼
由Mat lab自動(dòng)生成的DSP代碼能夠?qū)崿F(xiàn)AD轉(zhuǎn)換、數(shù)字濾波及卡爾曼濾波計(jì)算, 但是由于程序中使用了很多缺省設(shè)置, 在運(yùn)行中還有一些問題, 如中斷處理程序只對(duì)定時(shí)器中斷進(jìn)行處理, 無法用圖形方式觀測變量值等, 需要進(jìn)一步完善。
5 試驗(yàn)結(jié)果及分析
把修改完善后的代碼加載到DSP實(shí)驗(yàn)板上, 對(duì)電機(jī)的電壓和電流進(jìn)行采樣, 通過圖5可以驗(yàn)證濾波器的效果。
在利用擴(kuò)展卡爾曼濾波進(jìn)行速度估算時(shí), 以異步電機(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)浮動(dòng), 但是基本穩(wěn)定。
通過EKF完成了異步電機(jī)的速度在線辨識(shí), 為以后建立異步電機(jī)無速度傳感器矢量控制系統(tǒng)奠定了基礎(chǔ)。
6 結(jié)束語
試驗(yàn)證明, 應(yīng)用Matlab對(duì)DSP進(jìn)行實(shí)時(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ā)效率。