循環(huán)邏輯
要得到:
y1 = 0;
for(inx = 0; inx <10; inx++)
{
y1 = u1[inx] + y1;
}
或者
while(flag && (num_iter <= 100)
{
flag = func ();
num_iter ++;
}
怎么做:
Stateflow 有相應(yīng)的流程圖向?qū)Э梢灾苯邮褂茫詣由蓪?yīng)的流程圖結(jié)構(gòu)。
For循環(huán)
1. 模型
在 Stateflow 里有各種控制流的構(gòu)造向?qū)В缦聢D。如果對 Stateflow 的流程圖構(gòu)建不熟悉的話,可以使用它來自動生成,再在它的基礎(chǔ)上進行修改:
從而得到所需要的框圖:
2. 數(shù)據(jù)
定義 Stateflow 模塊的端口和本地變量,輸入端口 u1,輸出端口 yy1,以及本地變量 inx 如下:
在 Base Workspace 里定義輸入輸出信號 u1,yy1 的 Data Object:
3. 關(guān)聯(lián)
在信號線上右鍵,設(shè)置信號屬性,勾選 “Signal name must resolve to Simulink signal object”,將信號與 Base Workspace 的數(shù)據(jù)對象關(guān)聯(lián)在一起。關(guān)聯(lián)輸入輸出信號后,會看到如圖的藍色小叉子:
4. 代碼
Ctrl+B,它所自動生成的代碼:
While循環(huán)
1. 模型
下圖就通過向?qū)?gòu)造的,得到跟 for 循環(huán)類似的流程圖:
這里的func作為一個 事件Event ,觸發(fā)外面的 function call 子系統(tǒng) func 計算flag:
2. 數(shù)據(jù)
Stateflow 內(nèi)的數(shù)據(jù)定義如下圖,輸入端口名稱 u1,輸出端口名稱 yy2,本地變量 num_iter。flag 由外部函數(shù) func 來更新而作為輸入。另外, func 事件觸發(fā)調(diào)用外部的 func 函數(shù)。( inx 這里沒有用)
在 Base Workspace 里定義相應(yīng)的數(shù)據(jù)對象。因為這個 Simulink 模型的信號線上已經(jīng)命名為 u2,所以定義的數(shù)據(jù)對象名稱要跟信號線的名字一致: u2,yy2,flag。
并設(shè)置 flag 的初始值為 true。將數(shù)據(jù)對象與 Simulink 信號線關(guān)聯(lián)。
3. 生成代碼
Ctrl+B,生成的代碼如下圖所示。設(shè)置了 func()子系統(tǒng)的屬性,把它變成一個子函數(shù)來調(diào)用。沒有截圖顯示,但是func() 函數(shù)里修改了全局變量 flag 的值。
代碼正常生成,但此時會得到如下的警告:
也就是說,我們之前對數(shù)據(jù)對象 flag 所設(shè)置的初始值是沒用的,會被模型中 func 子系統(tǒng)的輸出端口 Out1 的初始值所覆蓋。
默認情況下 Out1 端口的初始值為 0 ,所以看下圖的初始化函數(shù)里, flag 被初始化為 false,我們之前所設(shè)置的初始值 true 沒有發(fā)生作用。
主程序里的 while(flag&(inx<100)) 都不會被執(zhí)行。這個問題,通過仿真也會測出來。
所以,需要雙擊 func 子系統(tǒng)的 Out1 端口,設(shè)置初始值為 true,仿真才能得到正確的結(jié)果。同時,也會最后得到下面的初始化代碼。
do while循環(huán)
使用流程圖的向?qū)?,選擇 do while 模式,把 Chart 里面的流程圖改改就行了。另外,被調(diào)用的 func 函數(shù),也可以寫在 Chart 里面。
Stateflow 有相應(yīng)的流程圖向?qū)Э梢灾苯邮褂?,自動生成對?yīng)的流程圖結(jié)構(gòu)。
-
輸出信號
+關(guān)注
關(guān)注
0文章
302瀏覽量
12248 -
初始化
+關(guān)注
關(guān)注
0文章
50瀏覽量
12119
發(fā)布評論請先 登錄
技術(shù)干貨驛站 ▏深入理解C語言:嵌套循環(huán)與循環(huán)控制的底層原理

汽輪機熱力循環(huán)分析
可靠性溫度循環(huán)試驗至少需要幾個循環(huán)?

請問關(guān)于ADS5407內(nèi)部寄存器有沒有相關(guān)的中文介紹的?
CMOS邏輯IC應(yīng)用中的噪聲問題和解決對策

深入理解C語言:循環(huán)語句的應(yīng)用與優(yōu)化技巧

邏輯異或和邏輯或的比較分析
關(guān)于LRU(Least Recently Used)的邏輯實現(xiàn)

利用位反轉(zhuǎn)尋址實現(xiàn)循環(huán)緩沖器

評論