在車載控制器的軟件開發中,simulink的身影幾乎隨處可見,主要是在控制算法和控制邏輯的實現。平時看同事點點點就生成代碼了,看起來很簡單,但是實際操作起來確各種磕磕絆絆。
下面記錄了一下步驟作為現階段的學習筆記吧。
一、建立任務
Matlab的版本為R2014。下圖是一個簡單的模型,其中Signal為模型輸入接口變量,Act為模型輸出接口變量,每個Task中的內容均一樣。
接口配置需要注意其數據類型和Storage Class,兩者影響生成代碼中的變量的聲明。在Storage type qualifier中可以加入其他的限定符。
這里將Signal全部設定為Double類型的Imported Entern類型,將Act全部設定為Exported Global類型。
二、環境配置
在Simlink模型窗口中選擇Simulation | Modele Configuration Parameters命令,彈出如下圖所示的參數設置對話框。在左邊的目錄樹中我們關心的項有Solver,Hardware Implementation,Code Generation.
1. Sover 配置
Type選項需要配置成定步長。步長時間和任務調度周期一致。仿真終止時間設置為inf。其他參數為默認。
2. Hardware配置
根據自己的開發環境,選擇相應的目標板。
3. Code Generation配置
第一頁勾選Generate code only,其它為默認。
在Reprot中勾選生成報告和自動打開報告。
將Interface中data exchange的勾去掉,并將Interface設置為None。配置完畢后點Apply和OK。
三、代碼生成
在模型界面Bulid Modle即可自動生成代碼。由于我們勾選了報告生成,代碼生成完畢后會自動彈出報告。
其中ModelFiles和DataFiles中的5個文件就是和我們模型結構緊密相關的文件。其它的也是運行必須的Mabltab數據類型聲明文件。一并拷貝到我們的工程環境編譯即可。
四、封裝成函數及優先級設置
打開Demo_1.h和Demo_1_Pricat.h可以看到我們定義的輸出變量和出入變量。
生成代碼時除了我們的任務函數外,Matlab自動生成了初始化的和終止函數。
我們在模型中我們定義了三個Task,但如果不另外配置,生成代碼時默認只生成一個函數。如果需要打包到獨立的函數和文件中,需要做如下配置。
在Task模塊上點右鍵,選擇Block Parameters,勾選treat as acomic unit.
在Code Generation一欄,設置任務的重入屬性,函數名,文件名信息。
右鍵選擇Block Properties,在Priority一欄中設置Task優先級ID,該值越小,則任務的執行次序越靠前。
這里我將Task1~3的優先級分別設置為2,1,3。
以下是自動生成代碼后的任務順序。生成了Task的.c和.h文件。任務執行順序也按照優先級順序執行。
審核編輯:黃飛
-
控制器
+關注
關注
112文章
16394瀏覽量
178481 -
Simulink
+關注
關注
22文章
536瀏覽量
62453 -
代碼
+關注
關注
30文章
4798瀏覽量
68728
原文標題:Simulink自動生成代碼筆記
文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論