在自動生成代碼時,Simulink模型里的兩類數據是我們需要考慮的:信號(signal)和參數(parameter)。信號對應于Simulink模塊連線,仿真時一般都會變化;而參數則對應于雙擊模塊時所設置的變量,仿真時一般保持不變。
如何控制這些變量在生成的代碼里的實現?
點擊末尾的 “閱讀原文” 下載本文的案例模型
信號和參數的聲明和定義
要得到:
模型參數p1定義為:int32 p1 = 3;extern int32 p1
模型信號mySig定義為:int16 mySig;extern int16 mySig
怎么做:用Data Object。
實例二
1. 建一個簡單的Simulink模型

2. 代碼生成基本配置
求解器:定步長—離散求解器
系統目標文件:ert.tlc
3. 新建數據對象
打開Model Explorer,點擊菜單的Add,在base workspace里定義參數數據對象p1,進行如圖設置:

這樣在生成代碼的時候,參數p1就會定義為int32的數據類型,并且聲明為extern。而且它的聲明和定義代碼會分別寫入myHdr.h以及mySrc.c。
類似的,新建一個 Simulink.Signal,命名為 mySig,設置如圖。它的定義和聲明就會默認的在模型名.c和模型名.h里 :

4. 信號關聯
在信號線上右鍵,將信號與Base Workspace的數據對象關聯在一起。

參數k不需要手動關聯。
5. 生成代碼
Ctrl+B,生成代碼。
如前面所設置的,得到參數p1的定義如圖,寫到自定義的.c.h文件里去了:

信號mySig的聲明和定義如圖,在模型名.c和模型名.h文件里:

E-Coder里對數據的默認定義:

總結
所以說,可以使用數據對象(Data Object)來定義數據在所生成的代碼里的表達方式。
-
信號
+關注
關注
12文章
2914瀏覽量
80130 -
變量
+關注
關注
0文章
616瀏覽量
29506
發布評論請先 登錄
分析嵌入式軟件代碼的漏洞-代碼注入
第7章 變量進階與點陣LED(7.1 7.2)
語法糾錯和testbench的自動生成
使用Simulink自動生成浮點運算HDL代碼(Part 1)
NVIDIA recsys-examples在生成式推薦系統中的高效實踐
關于如何控制變量在生成代碼里的作用分析和介紹
評論