【摘要】 DSP在電機(jī)系統(tǒng)開(kāi)發(fā)中應(yīng)用廣泛,但是在對(duì)DSP進(jìn)行代碼開(kāi)發(fā)時(shí)則比較繁瑣,效率不高,容易出錯(cuò)。Matlab提供的Embedded Coder功能,則可以很好的解決上述問(wèn)題。不僅可以進(jìn)行系統(tǒng)級(jí)仿真,還可以對(duì)自動(dòng)生成的代碼進(jìn)行驗(yàn)證。本文以永磁同步電機(jī)的磁場(chǎng)定向算法為例,詳細(xì)介紹在Matlab中DSP代碼開(kāi)發(fā)的流程。
【關(guān)鍵詞】 基于模型的設(shè)計(jì) Embedded Coder 磁場(chǎng)定向算法 永磁同步電機(jī) PIL
DSP在電力電子控制中的應(yīng)用越來(lái)越廣泛。傳統(tǒng)的開(kāi)發(fā)流程是系統(tǒng)仿真,編寫(xiě)代碼,最后測(cè)試。采用手工編程的方式,難度大、效率低、容易出錯(cuò),測(cè)試和編程不能同步進(jìn)行。Matlab提供的Coder功能,可以將Simulink建立的算法直接生成可以在目標(biāo)處理器中執(zhí)行的C代碼,同時(shí)Maltab提供的PIL測(cè)試功能,可以將測(cè)試和編程同步執(zhí)行,便于前期發(fā)現(xiàn)問(wèn)題,較好的提高開(kāi)發(fā)的效率。
一、磁場(chǎng)定向算法(FOC)模型簡(jiǎn)介
本例中對(duì)于FOC算法,采用Id=0的轉(zhuǎn)速和電流閉環(huán)控制方案,速度環(huán)具有增強(qiáng)系統(tǒng)抗負(fù)載擾動(dòng)的能力,根據(jù)速度給定和速度反饋,通過(guò)速度調(diào)節(jié)器輸出電流轉(zhuǎn)矩分量給定值。電流環(huán)為雙環(huán)結(jié)構(gòu)分別調(diào)節(jié)電流轉(zhuǎn)矩分量與電流勵(lì)磁分量跟蹤給定值的變化,快速提高系統(tǒng)的響應(yīng)性能。經(jīng)兩個(gè)電流調(diào)節(jié)器輸出的d-q軸電壓分量合成為一個(gè)電壓矢量,通過(guò)svpwm調(diào)制,直流母線(xiàn)電壓將以PWM波的方式加到電機(jī)上。
模型中用到的模塊是由matlab中提供的TIC2000系列的Digital Motor Control(DMC)和IQMath庫(kù)構(gòu)建,這些庫(kù)是專(zhuān)門(mén)針對(duì)TIC2000系列處理器編寫(xiě),生成代碼的效率可以和匯編語(yǔ)言相媲美。Target Preference設(shè)置為F2812,具體設(shè)置和處理器相一致。在模型中設(shè)置Rate Tranation2模塊輸出采樣時(shí)間為0.01s,為轉(zhuǎn)速閉環(huán)的采樣周期。電流環(huán)采用系統(tǒng)的采樣時(shí)間5E-5s即PWM頻率為20KHZ。由于TIC2000系列處理器為定點(diǎn)處理器,所以本例在建模時(shí)是按照定點(diǎn)模型建立。對(duì)于FOC所有輸入信號(hào)都采用的是Q17格式,所以空間矢量發(fā)生模塊輸出的也是Q17格式的數(shù)據(jù),但是TIC2000中PWM模塊默認(rèn)的輸入數(shù)據(jù)是Uint16格式,所以要進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換,這一功能由PWM Scaing模塊實(shí)現(xiàn)。
二、處理器在環(huán)測(cè)試
處理器在環(huán)測(cè)試是在Simulink中搭建被控對(duì)象的模型,而將控制器算法代碼下載到目標(biāo)處理器中去執(zhí)行。
系統(tǒng)輸入端口信號(hào)是利用永磁同步電機(jī)控制系統(tǒng)仿真時(shí)產(chǎn)出的數(shù)據(jù),通過(guò)logsout數(shù)據(jù)結(jié)構(gòu)記錄,然后導(dǎo)入到PIL測(cè)試模塊中,最后記錄其輸出的PWM波形。圖中的FOC子系統(tǒng)為Simulink搭建的算法模塊,F(xiàn)OC1是有FOC子系統(tǒng)生成的PIL測(cè)試模塊。通過(guò)Inspect Logged Signals工具觀(guān)察其具體波形,結(jié)果如圖1所示:
通過(guò)觀(guān)察結(jié)果可知其PWM和PWM_PIL波形誤差為零,驗(yàn)證了算法生成代碼在處理器中執(zhí)行的正確性。
三、總結(jié)
基于模型的設(shè)計(jì)優(yōu)勢(shì)在于算法的早期驗(yàn)證,使得開(kāi)發(fā)者可以將主要精力放在算法開(kāi)發(fā)上,代碼則由Matlab自動(dòng)生成,很好的提高工作效率。在實(shí)際的開(kāi)發(fā)中,將算法生成為函數(shù)進(jìn)行調(diào)用,一般底層驅(qū)動(dòng)和控制流程使用匯編語(yǔ)言或者C手工編寫(xiě)。如果通過(guò)Matlab對(duì)底層驅(qū)動(dòng)建模則十分復(fù)雜,得不償失,控制流程開(kāi)發(fā)也沒(méi)有C語(yǔ)言靈活。
參 考 文 獻(xiàn)
[1] 趙紀(jì)倩,賈要勤. 基于Matlab/Simulink的DSP控制代碼開(kāi)發(fā)技術(shù)[J]. 電力電子技術(shù),2010,12:59-61
[2] 劉杰. 基于模型的設(shè)計(jì)及其嵌入式實(shí)現(xiàn)[M]. 北京:北京航空航天大學(xué)出版社,2010
[3] The MathWorks,Inc. Embedded Coder Guide,April 2011
[4] 李勇. 矢量控制技術(shù)在礦井提升機(jī)中的應(yīng)用研究[J]. 煤礦機(jī)械,2012.02:14-16