1. 程式人生 > >基於Simulink模型的嵌入式程式碼生成技術

基於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