基於Simulink模型的嵌入式程式碼生成技術
自動生成程式碼技術具有生成的程式碼效率高、一致性好、開發便捷等諸多優點,也正是因為這些優點使得這項技術已經成為汽車、航空航天、工業控制等領域嵌入式軟體開發的主流方式。本次研討會將主要討論如何通過Embedded Coder從Simulink/Stateflow模型生成嵌入式C程式碼,如何通過資料物件定義C程式碼中的變數和引數,如何定製C程式碼的函式原型,如何控制C檔案的生成,如何生成可以重用的C程式碼,如何對被引用的模型進行程式碼生成,如何進行程式碼和模型的等效性測試等話題。
simulink的c程式碼生成工具有3種:
Embedded coder:自動生成嵌入式系統的C/C++程式碼
Simulink coder:自動生成Simulink/Stateflow的C/C++程式碼
Matlab coder:自動生成Matlab的C/C++程式碼
視訊主要內容如下:
1、使用simulink coder生成程式碼;
2、使用embedded coder生成程式碼;
然後對以上兩種方式生成的C/C++程式碼進行管理,主要有以下應用場景:
1.使用資料物件進行資料管理;
2.程式碼生成的優化配置;
3.模型機演算法函式原型的控制;
4.子系統演算法函式以及檔案的控制;
5.從自定義模組生成可重用程式碼;
6.平臺化模型的程式碼生成;
7.程式碼的等效性測試(SIL: software in the loop)。
使用資料物件進行資料管理的過程如下:simulink程式碼生成通過資料物件進行資料管理。具體而言,就是先設定資料物件,然後將資料物件和模型引數關聯,就可以通過配置資料物件影響程式碼生成。
這裡的物件和平時所說的面向物件程式設計是同一個概念,類(class)有一個包,包裡面又會包括幾個類,而類裡面會定義方法(method)和屬性(property)。我們可以通過類去建立物件或者說派生物件,然後可以通過類裡面的屬性值去設定這些類派生物件的屬性。
simulink裡面有兩個包:simulink package、mpt package(專門用於嵌入式程式碼生成)。
簡單的基於simulink的嵌入式程式碼生成
這篇文章生成的是通用行的C程式碼,也就是將生成的程式碼直接加入工程中就可以使用,不存在控制器的差別
模型如下
第一步:設定解算器
固定步長,離散,0.01s執行一次演算法
程式碼生成選項,選擇ert.tlc,這個生成的嵌入式程式碼
程式碼生成頁面
可以看見我們生成的程式碼中的變數是用結構體進行計算的,那麼這麼簡單的演算法,我們能否用平時習慣的變數方式去表示呢,答案是肯定的,這就需要我們進行資料的管理
二、資料管理
首先,雙擊訊號線為訊號線新增名稱,那麼我們就簡單的對訊號線命名為x,y,z。之後點選2選項
這裡儲存型別一定不能是auto.
之後程式碼生成crtl+b