Simulink仿真入門到精通(九) Simulink的流控制


9.1 Simulink流控制分類

simulink中流控制時通過自帶的模塊實現的,包括If else、Switch、For和While4個種類。

9.2 While流控制

while

如果條件為真,那么子系統在當前的步長內反復執行,直到達到最大循環次數或者判斷條件為假。

參數標簽 功能說明
Maximum number of iteration 最大循環次數
While loop type 循環類型:while/do while
States when starting Held(保持上次狀態)/reset(狀態恢復默認值)
Show iteration number port 勾選則多出一個輸出循環次數的輸出端口
Output data type 結合上一個參數使用,為輸出循環次數設置數據類型

階躍信號1s階躍,最大循環次數保持默認值5。

第一個步長計數器輸出結果為4,因為在第一個循環時,模塊執行一次(初始化)輸出Unit Delya的初始值為0,然后再執行4次。

在計數達到99時,再執行2次不滿足小於等於100的條件,退出循環。

do-while

仿真進行時,子系統內模塊首先要執行一次,然后再去檢查cond輸入條件是否為真,如果為真則繼續循環,直到cond條件不滿足時退出當前步長的仿真,進入下一個步長。

沒有IC輸入,僅需要cond條件即可反復循環。

9.3 For循環控制

參數標簽 功能說明
States when starting 每次循環時保持子系統內的狀態或恢復默認
Iteration limit source 循環次數選擇從內部限制或外部輸入限制
Iteration limit 內部限制時輸入的循環次數
Set next i(iteration variable) externally 通過外部輸入當前循環的循環變量值
Show iteration variable 選擇是否輸出循環變量值
Index mode 循環變量的初始值從0/1開始
Iteration variable data type 循環變量輸出時的數據類型

示例:循環次數由內部決定,不輸出循環變量的值。

示例:循環次數由外部輸入,且輸出循環變量的值。

雖然Sine Wave模塊本身輸出的時double信號,但接入For Iterator之后被強制轉化為整形數據,並取不超過其值的非負整數值。

示例:外部設定Next_i,即下一個循環例循環變量的初始值。

外部框圖同上。

9.4 If else控制

 根據輸入u1判斷,如果滿足條件則從上支輸出信號,不滿足則從下支輸出信號,這2個信號再分別使能一個Action Subsystem,使用Merge模塊將所有If Action Subsystem的輸出集總,得到一個完整的邏輯輸出。If模塊的輸出/輸出端口可由用戶設定。

參數標簽 功能說明
Number of inputs 輸入端口的數目
If expression If分支的判斷條件
Elseif expression

Else分支的判斷條件,

如果期望多個elseif,之間用逗號分隔

Show else condition 是否顯示Else分支的輸出Action信號
Enable zero-crossing detection 使能過零檢測與否

If expression的條件表達式收到的限制比較大:

  • 不支持+-*/和^等數學運算符號;
  • 不支持邏輯關系運算符&&和||;
  • 不支持數據類型函數,如int8,uint16。

If expression也好,Elseif experssion也好,后面都要跟着一個If Action Subsystem。

模型中Merge模塊的作用是將多個Action子系統的輸出合並到一個信號中,這些被合並的子系統需要具備一個條件:在某一個時刻,最多有一個子系統被使能計算,其他子系統是不計算的。

9.5 Switch Case控制

輸入u1如匹配case分支值得要求,則可以觸發次分支后所連接的Switch Case Action Subsystem。

參數標簽 功能說明
Case conditions 通過元胞數組形式輸入分支判斷的值
Show default case 勾選后會出現default分支
Enable zero-crossing detection 勾選后使能過零檢測算法

參數Case condition要求必須使用元胞數組形式輸入,每個分支的case值以單獨的元胞數組形式輸入,並且數據類型必須是int32或者枚舉型

每條case分支可以對應一個或多個數值,混合使用時,此參數最外層使用{ },內部使用[ ]將參數分組,如{3, [5 8]}表示當輸入為3時觸發case[3]所對應的子系統,當輸入為5或8時觸發case[5 8]所對應的子系統。

Switch Case模塊所能判斷的分支是離散的數據點,與if else區間連續的判斷不同。並且要求輸入數據、參數Case conditions等數據類型保持一致,長度保持在有符號32為整數范圍之內,不支持小數的輸入判斷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM