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