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

電子產(chǎn)品內(nèi)部散熱措施:灌封膠熱仿真建模研究內(nèi)容

仿真分析誤差來源及減少建模誤差的方法

Simulink中的狀態(tài)機(jī)建模方法 Simulink數(shù)據(jù)可視化與分析功能
VSCode中Markdown借助plantuml繪制流程圖
Matlab/Simulink/Stateflow建模開發(fā)及仿真測試
邏輯組件中的流程塊節(jié)點(diǎn)通常出于什么用途
TI電池監(jiān)控器IC的高級電量監(jiān)測器固件流程圖

時(shí)序邏輯電路的描述方法有哪些
觸發(fā)器和狀態(tài)機(jī)的關(guān)系是什么
如何在FPGA中實(shí)現(xiàn)狀態(tài)機(jī)
邏輯分析儀multisim的應(yīng)用
玩轉(zhuǎn)Spring狀態(tài)機(jī)

評論