在車載控制器的軟件開發(fā)中,simulink的身影幾乎隨處可見,主要是在控制算法和控制邏輯的實現(xiàn)。平時看同事點點點就生成代碼了,看起來很簡單,但是實際操作起來確各種磕磕絆絆。
下面記錄了一下步驟作為現(xiàn)階段的學習筆記吧。
一、建立任務
Matlab的版本為R2014。下圖是一個簡單的模型,其中Signal為模型輸入接口變量,Act為模型輸出接口變量,每個Task中的內(nèi)容均一樣。


接口配置需要注意其數(shù)據(jù)類型和Storage Class,兩者影響生成代碼中的變量的聲明。在Storage type qualifier中可以加入其他的限定符。
這里將Signal全部設定為Double類型的Imported Entern類型,將Act全部設定為Exported Global類型。

二、環(huán)境配置
在Simlink模型窗口中選擇Simulation | Modele Configuration Parameters命令,彈出如下圖所示的參數(shù)設置對話框。在左邊的目錄樹中我們關心的項有Solver,Hardware Implementation,Code Generation.
1. Sover 配置
Type選項需要配置成定步長。步長時間和任務調(diào)度周期一致。仿真終止時間設置為inf。其他參數(shù)為默認。

2. Hardware配置
根據(jù)自己的開發(fā)環(huán)境,選擇相應的目標板。

3. Code Generation配置
第一頁勾選Generate code only,其它為默認。
在Reprot中勾選生成報告和自動打開報告。
將Interface中data exchange的勾去掉,并將Interface設置為None。配置完畢后點Apply和OK。


三、代碼生成
在模型界面Bulid Modle即可自動生成代碼。由于我們勾選了報告生成,代碼生成完畢后會自動彈出報告。

其中ModelFiles和DataFiles中的5個文件就是和我們模型結(jié)構(gòu)緊密相關的文件。其它的也是運行必須的Mabltab數(shù)據(jù)類型聲明文件。一并拷貝到我們的工程環(huán)境編譯即可。
四、封裝成函數(shù)及優(yōu)先級設置
打開Demo_1.h和Demo_1_Pricat.h可以看到我們定義的輸出變量和出入變量。


生成代碼時除了我們的任務函數(shù)外,Matlab自動生成了初始化的和終止函數(shù)。

我們在模型中我們定義了三個Task,但如果不另外配置,生成代碼時默認只生成一個函數(shù)。如果需要打包到獨立的函數(shù)和文件中,需要做如下配置。
在Task模塊上點右鍵,選擇Block Parameters,勾選treat as acomic unit.


在Code Generation一欄,設置任務的重入屬性,函數(shù)名,文件名信息。
右鍵選擇Block Properties,在Priority一欄中設置Task優(yōu)先級ID,該值越小,則任務的執(zhí)行次序越靠前。

這里我將Task1~3的優(yōu)先級分別設置為2,1,3。
以下是自動生成代碼后的任務順序。生成了Task的.c和.h文件。任務執(zhí)行順序也按照優(yōu)先級順序執(zhí)行。

審核編輯:黃飛
-
控制器
+關注
關注
114文章
17786瀏覽量
193010 -
Simulink
+關注
關注
23文章
551瀏覽量
66032 -
代碼
+關注
關注
30文章
4967瀏覽量
73940
原文標題:Simulink自動生成代碼筆記
文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發(fā)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
使用Simulink自動生成浮點運算HDL代碼(Part 1)
基于模型設計的HDL代碼自動生成技術(shù)綜述
Simulink模型生成代碼
Simulink 自動代碼生成原理分享
快速原型中SIMULINK模型的代碼自動生成
MathWorks推出新款代碼生成工具Simulink
Simulink生成嵌入式代碼的學習筆記(一)
MBD的Simulink使用技巧:詳解代碼生成中的模型與代碼(2)
simulink自動生成ROS代碼
Simulink自動生成代碼現(xiàn)階段的學習筆記
評論