標籤:

基於stateflow狀態機學習基礎總結

基於stateflow狀態機學習基礎總結

一、狀態圖符號

二、狀態圖畫法

1、添加狀態

圖1

單擊左邊工具欄中的State的工具,進入右邊編輯區域再單擊滑鼠左鍵。

圖2

1)默認遷移

(1) 默認遷移是一種特殊的遷移模式,沒有源對象,它表示狀態圖的起點。

(2) 有時候默認遷移可以加入標籤,限制其所指向目標的激活。

(3) 當同級有多個互斥的狀態時,默認遷移確定了首先激活的狀態。

2)狀態命名

(1) 狀態名只能由數字、字母、下劃線組成。

(2) 按照stateflow分層結構,各個子狀態不允許重名,不同級別的狀態不受限制。

3)狀態動作

具體動作關鍵詞及其縮寫見實例狀態newstate_01和newstate_02。「狀態名」+「/」+「具體動作」默認為進入動作即entry動作。

4)狀態遷移

對於示例中遷移4,newstate_01為遷移源狀態,newstate_02為遷移目標狀態。遷移標籤的命名方式如圖2所示,其中:

(1)事件。事件是指定遷移的觸發事件,如果指定了事件,當事件為真時,觸發遷移;如果沒指定事件,任何事件都能觸發該遷移;多個事件之間用邏輯運算符(|、&、~)連接。

(2)條件。為了boolen表達式,例如,[y>=3]。

(3)條件動作。當條件表達式為真時,立即執行該動作,例如,{y=10}。

(4)遷移動作。當條件表達式為真時,發生遷移時執行此動作。

2、子狀態

圖3

1)子狀態畫法

調整父狀態框大小,直接將子狀態放入父狀態中。

2)子狀態圖

在父狀態內可以將其內部的所有子狀態隱藏,簡化圖表;雙擊子狀態圖可以看到內部細節進行編輯。

圖4

圖5

3)子狀態橫向結構

(1)互斥(OR)狀態

示例圖3中,狀態Run內子狀態為互斥(OR)狀態,其子狀態邊緣為實線,他們只能有一個處於激活狀態,需要默認遷移確定激活的子狀態,但是也可以添加默認遷移標籤確定激活條件以及判斷激活條件的順序。

圖6

(2)並行(AND)狀態

示例圖3中,狀態Cooldown內子狀態為並行(AND)狀態,其子狀態邊緣為虛線,他們可同時處於激活狀態,但是它們的激活是按照一定順序進行的。其默認順序為:從上到下,從左到右。並且每個狀態右上角都標註了其激活的順序。也可以改變其激活順序,具體操作如圖7所示。

圖7

(3)當父狀態為並行關係,它們會按照優先順序先後激活,其內部子狀態的遷移為也會一步步按照激活順序先後執行。

圖8

如圖8所示,Stateflow在運行時,先激活B,通過默認遷移進入子狀態b1;再激活C,通過默認遷移進入子狀態c1;然後b1再遷移至b2,隨後c1再遷移至c2,以此內推。

(4)改變子狀態並行和互斥狀態的方式為:在父狀態內部單擊滑鼠右鍵,然後選擇Decomposition再選擇,如圖9所示

圖9

3、 遷移的層級

1)內部遷移

直接從父狀態激活子狀態時,需要使用內部遷移。如圖9所示,除非PowerOff事件發生,紅黃綠燈就會一直交替亮燈。

圖10

2)不同層次遷移的優先順序

圖11

以圖11為例,說明在狀態圖遷移過程中,如果同時出現多個有效遷移時,其遷移優先順序規則為:

(1)從高層到低層檢測

E1、E2事件觸發的遷移優先順序高於E3、E4事件觸發的遷移。

(2)從外部到內部遷移檢測

E1、E2事件觸發的遷移優先順序高於E5事件觸發的遷移。

(3)同一層次內,超轉移(跨越父狀態不同層級之間的遷移)優先。

E6事件觸發的遷移優先順序高於E4事件觸發的遷移。

4、數據與事件

Stateflow有兩種設置數據和事件的方式:菜單添加、模型瀏覽器。

圖12

如圖12中示例,橢圓區域菜單鍵用於數據和事件的添加和刪除,矩形區域用於設置其相關特性。

圖13

對於事件,還需要指定其觸發方式,Rising表示上升沿觸發、Failing表示下降沿觸發,Either表示兩種觸發方式皆可。

圖14

t

當存在多個數據和事件的時候,可以設置其輸入輸出埠順序,便於以後的Simulink連接,如圖14所示。

5、流程圖與節點

1)在進入下一個模擬步長之前,狀態圖會記錄本地數據和各個狀態的激活情況,供下一步長使用;而流程圖只是使用節點和遷移表示條件、循環、多路選擇等邏輯,沒有狀態。

2)流程圖必須一次執行到終節點,可以用一個遷移表示多個可能發生的遷移,簡化狀態圖。

3)流程圖可以利用嚮導自動建立。

圖15

圖16

圖17

圖17中,節點的遷移有先後順序,也可以手動「右鍵-Executive order」改變其優先順序。

6、狀態圖與節點

1)節點實現遷移的分叉與聯合

很多時候,狀態圖需要利用節點實現遷移的分割,下圖中1號標記處經過節點將遷移條件分割成3個不同優先等級然後進入兩個不同的狀態。

圖18

2)歷史節點

在狀態圖的頂層或者父狀態里放置一個歷史節點,它便能記錄退出父狀態時,正處於激活狀態的子狀態,當再次進入父狀態時,則激活上一次所記錄的子狀態而不是默認遷移的狀態。子狀態的符號如圖18中標記2所示。

推薦閱讀:

口袋魔方:基礎解法
關於GTM⑨的抄書日記-4
優秀的數學家不用Lebesuge積分?
【常微】證明開普勒行星運動三大定律

TAG:數學 |