我們來聊聊結構體。
E-Coder 在做自動代碼生成的時候,在默認情況下,它會把所有的輸入信號定義為一個結構體_U,把所有的輸出信號定義為另一個結構體_Y,把所有的參數(shù)定義為一個結構體_P。雖然這樣的結構體不一定是我們想要的,但至少,說明自動代碼生成是支持結構體的。
本文并不解決“哪些情況下應該使用結構體”這個問題,這里來說說:
怎么實現(xiàn)我想要的結構體?
從之前的文章中我們說到,自動生成代碼時,想讓各種信號、參數(shù)定義和聲明采用什么樣的方式,都是通過數(shù)據(jù)對象 (Data Object) 來實現(xiàn)的。那,如果我希望把信號 a ,b,c 或者參數(shù) k1,k2,k3 定義為一個結構體,該怎么實現(xiàn)呢?
構造結構體
要得到:
typdef struct {
double k1;
double k2;
double k3;
} kk_type;
kk_type kk={2.0,3.0,4.0};
怎么做:
設置數(shù)據(jù)對象的Storage Class屬性為 Struct
或者使用Simulink Bus來定義新的結構體類型 outyy
舉個例子
1.新建如下的簡單模型并生成代碼
先看一下 “正常的” 不使用結構體的情況:
看下面這張圖,定義好了對應的信號數(shù)據(jù)對象 (Simulink.Signal) u1、u2、u3、yy1、yy2、yy3,與參數(shù)數(shù)據(jù)對象(Simulink.Parameter) k1、k2、k3。
通過名字對應以及關聯(lián)操作,實現(xiàn)關聯(lián),也就是上圖中的藍色小叉子。具體如何操作以前介紹過。
Ctrl + B,生成代碼:
2.把參數(shù) k1、k2、k3 放在指定的結構體 kk 里
選中數(shù)據(jù)對象 k1,k2,k3,把 StorageClass 都設置為 Struct(Custom),并指定結構體名字為 kk。這樣在自動生成代碼時,這幾個參數(shù)會自動放入結構體 kk 中。
看到,在生成的代碼里,得到一個新的結構體類型 kk_type:
并且,根據(jù)這幾個參數(shù)的值,得到了結構體變量 kk:
3.把信號 yy1、yy2、yy3 也放在一個輸出結構體里
剛才的參數(shù)結構體是通過設置數(shù)據(jù)對象的 StorageClass 為 Struct 來實現(xiàn)的。而現(xiàn)在,以信號為例,使用另一種方式來實現(xiàn)這個目的: Simulink Bus。
a.首先,通過 Simulink Bus 來定義一個新的結構體數(shù)據(jù)類型 outyy:
定義這個 Bus 的結構,里面的成員名就是最后出現(xiàn)在代碼里的名字:
那么此時,一個新的數(shù)據(jù)類型就構造好了。將來在生成代碼時,這個新的結構體類型就是這樣:
數(shù)據(jù)類型定義好了,接著,我們就要來用它了。
b. 把 Simulink 的三個輸出信號使用 Bus Creator 模塊變成總線信號,取名叫 outStruct:
設置這個 Bus Creator 模塊的數(shù)據(jù)類型為剛定義好的結構體 outyy。另外,還得勾選它為非虛擬總線。那么這樣,它在生成代碼時,就會被當做結構體來看:
c. 如同之前每一個 double\single 類型的信號一樣,接著,也為 outStruct信號定義一個同名的數(shù)據(jù)對象 outStruct。
在 Simulink 模型上的 outStruct 信號線的屬性界面上勾選關聯(lián)到這個數(shù)據(jù)對象,得到藍色小叉子。
4. 最后生成代碼
-
數(shù)據(jù)
+關注
關注
8文章
7157瀏覽量
89640 -
數(shù)據(jù)類型
+關注
關注
0文章
236瀏覽量
13667 -
結構體
+關注
關注
1文章
130瀏覽量
10872
發(fā)布評論請先 登錄
相關推薦
等離子體的定義和特征
結構體成員的順序會影響結構體的大小嗎
ota升級的庫中,結構體upgrade_server_info中pespconn的作用是什么?
射頻分析儀的工作原理和基本結構
矢量信號分析儀的工作原理和基本結構
實時頻譜分析儀的工作原理和基本結構
掃頻頻譜分析儀的工作原理和基本結構
嵌入式中C語言結構體基本實現(xiàn)
![嵌入式中C語言<b class='flag-5'>結構</b><b class='flag-5'>體</b>基本實現(xiàn)](https://file1.elecfans.com//web2/M00/E4/42/wKgZomY_FOKAdlRXAADOabNodfI522.jpg)
一體成型電感發(fā)熱的原因分析
C語言結構體史上最詳細的講解【軟件干貨】
求助,關于G031ADC結構體設置的幾個疑問求解
嵌入式系統(tǒng)中C語言結構體的基礎實現(xiàn)與應用
![嵌入式系統(tǒng)中C語言<b class='flag-5'>結構</b><b class='flag-5'>體</b>的基礎實現(xiàn)與應用](https://file1.elecfans.com/web2/M00/C4/E6/wKgaomXv9r6Aaj6DAAAYJ3PfWAU110.jpg)
評論