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