近期琢磨著這樣一件事,怎樣帶著真實的C代碼去Simulink仿真。 多番嘗試之后,使用Simulink自帶的Sfunction模塊和PLECS嵌入版中的C-Script模塊兩者均可快速實現。 其中C-Script更易上手,本期就對該方法簡短介紹。
01Simulink仿真的一點思考
作者作為一名電力電子控制工程師,常常需要將Simulink仿真的算法轉化為可燒錄到嵌入式芯片的代碼,于是仿真完后還需要費一番心思,將積木式的模型或者m語言翻譯為可用的代碼,而且還不確定代碼是否有bug。 是否能這樣,仿真用的就是真實的C代碼,既節省了翻譯代碼的時間,又讓你的代碼經受了Simulink仿真的檢驗,何樂而不為!
解決方案是這樣的:
1. 建立個人的函數庫,將常見的如PID,SVPWM,PLL,濾波器等寫成函數,定義其對應的c文件和頭文件。
2. Simulink仿真的控制不再積木式搭建,使用C-Script(或者S function)包含個人函數庫,另外在cscript中只需要加入部分代碼即可。
02PLECS C script工具的簡單介紹
作者采用plecs 3.6.1,該軟件可以作為一個工具包嵌入到Simulink中使用。 里面的C-Script是專門用來在simulink仿真中運行c代碼的。 幫助菜單如下介紹C-Script模塊:
打開C script模塊,將代碼分為六層,Code declarations,Start function code,output function code,Updata function code,Derivative function code和Terminate function code。
Code declarations:此代碼部分用于全局聲明和定義,這是包含標準庫標頭的位置(例如math.h 或 stdio.h),可以定義要在C-Script 函數中使用的宏、靜態變量和外部源文件。 包含Simulink模型文件的目錄將自動添加到包含的搜索路徑。
Start function code:開始函數代碼在仿真開始時調用。 一般用于初始化代碼。
Output function code:在主要和次要時間步長期間調用輸出函數,以更新該部分的輸出信號。 可以使用宏Input(i),Output(i)和CurrentTime來訪問塊的輸入和輸出以及當前時間。
Updata function code:如果該塊具有離散的狀態變量,則在處理完輸出函數之后的主要時間步中,將調用一次更新函數。 一般使用較少。
Derivative function code:如果塊具有連續的狀態變量,則在求解器的積分循環期間將調用導數函數。 一般使用較少。
Terminate function code:在仿真結束時調用終止函數。
03示例:三相三電平逆變器的模型搭建
a.將個人的PID函數庫,SPWM函數庫,ADC函數庫以及數據類型定義頭文件放在Simulink文件同路徑下。 用于Simulink模型中C-Script調用。
圖1 C函數庫與simulink模型置于同一路徑
b. 搭建電路模型,模型分為電路部分,C代碼部分,模擬芯片底層的脈沖生成模塊。
圖2 三電平simulink仿真模型結構
c. C-Script 中編輯代碼
首先在C-Script 的設置界面輸入該模塊的輸入個數,輸出格式,運算步長等。
在Code declartions部分包含PID函數庫,SPWM函數庫,ADC函數庫以及數據類型定義頭文件,以及一些宏定義,如下圖示例所示:
圖3 C-Script 中Code declartions的定義
在Start function code中完成系統的初始化,本仿真中只對adc采樣函數初始化。
圖4 C-Script 中Start function code的定義
Output function code執行主要部分,如下截圖所示,Output function code先后分別執行C-Script模塊的輸入,包含三電平逆變器的輸出線電壓和輸出電壓幅度指令。 接著對輸出電壓平均值的計算,輸出電壓平均值與指令值的PID計算,相位的計算以及三電平的SVPWM調制。 最后為C-Script的對外輸出三電平逆變器的脈沖周期,翻轉時間,生成脈沖。
圖5 C-Script 中Output function code的定義
運行模型,三電平模塊輸出電壓波形如下:
濾波后輸出電壓和電流波形如下所示:
模塊輸出電壓波形驗證了三電平SVPWM調制函數的正確性。 濾波后輸出電壓和電流波形可以得到該逆變器從0到目標電壓建立需要0.35s左右,可根據項目實際需要調整PID參數。
-
嵌入式
+關注
關注
5086文章
19143瀏覽量
306094 -
逆變器
+關注
關注
285文章
4731瀏覽量
207135 -
仿真
+關注
關注
50文章
4099瀏覽量
133718 -
Simulink
+關注
關注
22文章
536瀏覽量
62455 -
C代碼
+關注
關注
1文章
89瀏覽量
14321
發布評論請先 登錄
相關推薦
評論