Stateflow 是一個基于狀態機和流程圖來構建組合和時序邏輯決策模型并進行仿真的環境。Stateflow 可以將圖形表示和表格表示(包括狀態轉換圖、流程圖、狀態轉換表和真值表)結合在一起,針對系統對事件、基于時間的條件以及外部輸入信號的反應方式進行建模。
Stateflow 可用于設計有關監控、任務調度以及故障管理應用程序的邏輯。Stateflow 包括狀態圖動畫及靜態和運行時檢查,可以在實施前測試設計的一致性和完整性。
主要功能
構建環境、圖形組件和仿真引擎模型,實現復雜邏輯的建模和仿真;
具有層次結構、并行系統、時間算子和事件的確定性執行語義;
通過狀態圖、狀態轉移表和狀態轉移矩陣表達有限狀態機;
通過狀態圖動畫、狀態活動記錄、數據記錄和集成調試,分析設計和檢測運行時錯誤;
對于周期問題的靜態和運行時檢查,狀態不一致、數據范圍沖突及溢出情況等;
Mealy 和 Moore 有限狀態機。
邏輯設計
Stateflow提供圖形和表格接口,以使用狀態機來進行系統邏輯建模。在狀態機中,可以將系統運作模式構建為狀態模型,通過轉移和結點來表達模式間的切換邏輯。系統中的不同組件可以構建為狀態模型,能夠單獨執行或并行執行。Stateflow 通過分層組織狀態圖對象、函數和組件來管理設計的復雜程度。
在 Stateflow 中,既可以使用流程圖以圖形方式,也可以使用真值表以表格格式,表達組合邏輯。
邏輯設計包括定義待檢查的條件以及所要執行的后續操作。Stateflow 可以使用 C 或 MATLAB 定義條件和操作。您可以通過 Simulink 模型瀏覽器來管理條件和操作中所用的數據。您可以在執行設計前借助 Stateflow 得知可能存在的狀態不一致現象、未使用的數據和事件以及無效的轉移。
這是一個定義鍋爐溫度控制系統邏輯的 Stateflow 圖。該圖使用圖形函數(右側)實現加熱器系統(左側)所調用的公用程序算法。
以圖形方式設計邏輯
Stateflow提供一個編輯器和一些用于繪制狀態機和流程圖的圖形對象。通過從圖形調色板中選擇狀態、轉移和結點,然后將其拖入Stateflow編輯器,即可構建狀態機。您也可以使用流程圖批注、Simulink 子系統、MATLAB 和真值表創建函數。Stateflow圖可以指定為具有擴展功能的 Mealy 和 Moore 混合狀態機、Mealy 狀態機或 Moore 狀態機。
通過繪制由結點連接的轉移,可以創建流程圖,并根據條件邏輯予以執行。使用“Pattern模式向導”,可以創建常用的邏輯流模式。流程圖可以放在圖形函數中,既能用在該狀態圖的許多位置上,也可以用于同一模型的其他狀態圖中。使用流程圖可以設計邏輯,由此在各狀態間進行轉移。
Stateflow 圖(左)使用通過“模式向導”(中)生成的圖形函數(右)。
Stateflow編輯器可提供編輯時檢查,以識別對象的非法位置以及無效轉移。
Stateflow 編輯器正在處理一個冷卻系統的模型。邊界發生交疊的狀態以紅色突出顯示。
以圖形方式設計邏輯
Stateflow中的狀態轉移表為狀態機建模提供了一個結構化環境。通過添加狀態行和狀態間轉移列,可以構建狀態機。狀態轉移表通過提供狀態名稱下拉菜單、自動完成有限狀態機語法和其他編輯時檢查,可以幫助您創建狀態機。您可以在執行模型前運行靜態診斷測試,以檢測語法錯誤、未完成的轉移和無法達到的狀態。
從狀態轉移表生成的狀態轉移矩陣視圖有助于快速識別來自特定狀態的條件和可能的目標狀態。
Stateflow 中的真值表可用于對不需要通過連續運行來維護狀態的邏輯建模。輸入要檢查的條件,然后合并這些條件產生的結果,即可構建真值表。之后,可輸入關于對不同的結果組合的操作。構建真值表后,可以運行靜態診斷檢查,以識別過度指定的條件和指定不足的條件。
左:用于實施在故障檢測算法中選擇有效傳感器讀數的邏輯的真值表。
右:自動生成的真值表圖形表示形式。
組件集成與算法調度
您可以將在 Stateflow 中創建組件的與其他組件相集成,從而構建狀態機算法。Stateflow 組件可以包含 MATLAB 和 Simulink 函數、自定義 C 代碼、圖形函數和真值表。在所構建的算法中,可以使用基于時間和基于條件的邏輯來調度組件和函數的執行。
每個 Stateflow 組件都可以獨立開發、執行和驗證,從而使多個用戶能夠同時處理算法的不同部分。
Simulink 模型(左)合并了一個 Stateflow 圖(右)。Stateflow 圖對升降舵所用的邏輯進行建模,其中包括圖形函數、MATLAB 函數和真值表。
將組件集成到設計中
右鍵單擊組件,將其轉換為原子子圖,并放入庫中,即可跨圖、跨模型重復使用該組件。要使用該組件,可以將其從庫中拖出,然后放入狀態圖或模型中。當更新庫中的某個組件時,該組件的所有實例將自動更新。您可以分層組織組件和函數,以便簡明而準確地表達您的系統。
調度算法
在 Stateflow 中,可對條件邏輯和基于時間的邏輯建模,以調用 Simulink 函數和 MATLAB 函數。在 Stateflow 中,根據邏輯建模的事件可以輸出到 Simulink,以激活對函數調用或控制信號變化做出反應的子系統。
Stateflow 提供基于事件和基于時間的算子(before、after、at 和 every),以便于您根據事件計數和經過的時間來指定狀態轉移邏輯,而無需使用計時器和計數器。
模型仿真與結果分析
通過模型仿真,可以分析系統的行為。通過從任何保存的狀態重新開始仿真,并分析其對不同設置和配置的反應,可以運行條件假設場景。
模型仿真
在 Stateflow 中,通過使用狀態圖動畫突出顯示模型中的活動狀態和轉移,可以實現系統仿真行為可視化。
Stateflow 的調試能力使您得以詳細地對仿真進行逐步調試。您可以設置斷點,監視數據值,并逐步調試狀態圖中的不同函數。您可以通過 Stateflow 調試器窗口來控制仿真的執行情況,顯示狀態圖的調用堆棧以及執行狀態。
Stateflow 調試器可檢測運行時錯誤,其中包括狀態不一致、數據范圍沖突以及可能的無限循環。
分析結果
在仿真過程中,可通過以下方式實現仿真結果可視化:
使用 Simulink 顯示器和示波器查看狀態和數據
在 Simulation Data Inspector (仿真數據檢查器)中查看記錄的數據
使用 MATLAB 構建自定義顯示器
再者,您可以記錄狀態圖和狀態活動數據,以便在 MATLAB 中進行后處理。
Stateflow 中的仿真數據可視化選項。
左上:Simulink Data Inspector(Simulink 數據檢查器)用于比較特定信號;
左下:自定義 MATLAB 界面用于分析數據;
右:Simulink Signal Selector(Simulink 信號選擇器)用于比較狀態。
設計驗證與代碼生成
通過將 Stateflow 與其他 Simulink 產品配合使用,可以根據需求驗證您的設計,并生成代碼以便在嵌入式系統中予以實現。
使用 Simulink Verification and Validation(Simulink 檢驗和驗證),可以將需求直接映射到 Stateflow 對象,檢查是否符合標準,并收集模型覆蓋度量信息。
使用 Simulink Design Verifier(Simulink 設計檢驗器),可以檢測設計錯誤,針對采用常規方法難以發現的錯誤生成測試向量。
-
顯示器
+關注
關注
21文章
4978瀏覽量
139971 -
可視化
+關注
關注
1文章
1194瀏覽量
20938 -
結構化
+關注
關注
0文章
27瀏覽量
10308
發布評論請先 登錄
相關推薦
評論