基於模型設計(MBD)之stateflow學習——計數器demo介紹

按照參考文獻2中的講解,利用stateflow搭建一個計數器,包含stateflow模塊的simulink模型如下圖所示。

計數器的仿真結果如下圖所示。

下面來介紹下該demo涉及到的stateflow的相關基本知識。

(一)如何創建包含stateflow模塊的simulink模型

可以通過如下兩種方法來創建包含stateflow模塊的simulink模型。

a)直接在Matlab命令行中鍵入指令sfnew

b)在simulink庫瀏覽器中找到stateflow的模塊,然後插入到已有的simulink模型中

(二)狀態圖和流程圖

在stateflow模型中,把包含狀態的stateflow框圖稱爲狀態圖,而將不包含任何狀態的stateflow框圖稱爲流程圖。

1)狀態
狀態的標籤一般由三部分組成:狀態名稱、註釋和相應的狀態動作。
Name
/*Comments*/
Keyword:State Actions

狀態動作的關鍵字主要有下面三種:
a)entry:當狀態被激活時執行相應的動作;
b)exit:當狀態退出活動狀態時執行相應的動作;
c)during:當狀態保持其活動狀態時執行相應的動作。

2)連接節點
連接節點作爲轉移通路的判決點或匯合點,在流程圖中,由於不包含任何狀態,因此只有依靠連接節點完成通路的連接和判斷分支。連接節點不是記憶元件,在狀態圖中任何轉移的執行都不能停留在節點上,轉移必須到達某個狀態時才能停止

3)轉移標籤
一個完整的轉移標籤由四部分組成:事件、條件、條件動作和轉移動作,也可以包含相應的註釋。
/*Comments*/
Event[Condition]{Condition Actions}/Transition Actions

a)事件是stateflow非圖形對象的一種。在有限狀態機中,只有當事件發生時,纔可能去執行相應的轉移,因此,stateflow的模型又叫事件驅動系統。
b)位於方括號“[]”中的內容是條件,只有在相應的事件發生且條件也滿足時,相應的轉移纔可能執行。如果在轉移上沒有定義事件和條件,則意味着該轉移在任何事件發生時都會執行。
c)緊接在條件後面的花括號“{}”中的內容就是條件動作,條件動作是在條件滿足時就立即執行的某些表達式。
d)位於“/”後面的內容都是轉移動作,轉移動作只有在整個轉移通路都有效時才能執行。

組成轉移標籤的四個部分不一定完整地出現,但是不論出現哪個部分,標籤的內容都必須遵循上面指定的順序

4)默認轉移
默認轉移是一類特殊的轉移,根據有限狀態機的要求,當有限狀態系統被激活時,必有某個確定的狀態被激活,而默認轉移就定義了當狀態機被激活或者層次模型中父層次狀態被激活時具體哪個子狀態被激活。

參考文獻:
1)Stateflow邏輯系統建模/張威編著.-西安:西安電子科技大學出版社,2007.10
2)Simulink-Stateflow學習——計數器的搭建和stateflow工作過程. CSDN博文,https://blog.csdn.net/zhanshen112/article/details/79697979

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章