控制策略模型建模規范(第五講:Stateflow)


控制策略模型建模規范(STATEFLOW)

 
6.1. 基本行為和狀態
 
1. Stateflow模塊中至少有兩個狀態,且要有默認狀態,每個狀態不能只有一個子狀態。
2. Stateflow狀態圖嵌套不能多於3層。
3. 單一狀態視圖內的子狀態個數控制在6個以內,最高不超過9個。
4. Stateflow中的邏輯,不使用MATLAB函數、指令、運算符。
5. 邏輯類型的信號禁止執行比較操作。(使用if(logical type signal))
6. 邏輯運算不能用於兩個布爾值。([true && false])
7. 布爾類型的信號不能與數字0、1或邏輯值true、false進行比較操作。
8. 不同類型的數據禁止執行比較操作,如果需要必須首先執行顯示類型轉換的操作。
9. 禁止對兩個浮點類型的數值執行嚴格的==或!=判斷操作。
10. 禁止對無符號數執行取負操作[-]。
11. 如果需要翻轉邏輯類型的信號,應使用布爾操作NOT。
12. 取反符號:~用於位操作按位取反,!用於邏輯取反操作。
 
6.2. 事件、變量設置
 
1. 同一個變量在單個Stateflow范圍內不應該有多重定義。
2. 未使用的事件和變量不允許出現在Stateflow圖塊中。
3. 並行的圖塊或狀態機中不允許出現同名的局部數據。
4. Stateflow中除0用於初始化變量,1用於自增自減操作外外,不允許常量和變量直接使用數值。
5. 事件必須定義在chart或者更低的級別,不允許chart之間進行事件交互。
6. 除觸發調用函數調用子系統外,事件不應該用作狀態轉移的驅動條件。
7. 為了便於可讀性,事件en:、du:、ex:每個應單獨起一行;每個事件具體內容也應單獨起一行。
 
6.3. 標簽
 
Stateflow的輸入輸出端口名稱應與相應信號名稱一致。
 
6.4. 條件與條件動作
 
1. 條件表達式只能使用返回值為布爾類型的表達式,不允許使用整形數值。
2. 動作類型(entry(en),during(du),exit(ex),en,du: ,du,ex: ,en,ex: ,en,du,ex:)不能多次重復描述,且合並動作(en,du: ,du,ex: ,en,ex: ,en,du,ex:)的描述只能在動作序列的最頂層或最底層放置。
3. 如果動作序列能在條件動作(condition action)或轉移動作(transition action)以及轉移目標狀態的Entry動作中實現, 就不要使用狀態的Exit動作去實現。
4. 最好不要使用轉移動作,優先使用條件動作。
5. 用於狀態轉移判斷條件的變量的更新操作不允許放置於during動作中。
 
6.5. 內部轉移和狀態轉移
 
1. Stateflow中的轉移連接,不允許相互交叉、重疊,禁止穿過任何狀態、節點或文本框,可轉移到一個內部狀態,轉移標簽連接於相應的轉移上。
2. Stateflow的轉移應遵循:條件在水平方向上標出,動作在豎直方向上標出。
3. Stateflow默認轉移鏈接應置於狀態頂部,默認轉移的終止狀態在同級狀態中應處於最高位置。
4. Stateflow默認轉移符號的繪制不應該超出所處狀態的邊界。
5. Stateflow狀態圖:不允許在單一狀態內使用多個內部轉移分支。
6. Stateflow內部轉移標簽必須從狀態內部的左側邊界起始。
 
6.6. 流程圖
 
SF狀態圖或流程圖應合理避免“回溯”現象。
為便於數據流及代碼生成,流程圖的返回值只能放置在圖表中的某一個位置,不能多次出現。
 

6.7. 函數塊及其它
 
SF狀態圖應選用C語言方式構建,及使能C-bit operation
禁止將含有SF狀態圖的Simulink模型作為更高層級的SF狀態機的子系統。
 


免責聲明!

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



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