Stateflow系統建模(全)_第1頁
Stateflow系統建模(全)_第2頁
Stateflow系統建模(全)_第3頁
Stateflow系統建模(全)_第4頁
Stateflow系統建模(全)_第5頁
已閱讀5頁,還剩58頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Stateflow系統建模同濟大學 電子與信息工程學院戴毅茹內容提要 Stateflow入門介紹及基本概念 創建狀態圖 狀態圖仿真 流程圖建模Stateflow的基本簡介:的基本簡介:uStatefolw 是一種圖形化的設計開發工具,是有限狀態機的圖 形實現工具,也稱之為狀態流。u主要用于simulink 中控制和檢測邏輯關系。u使用這種圖形化的工具可以實現各個狀態之間的轉換,解決復 雜的監控邏輯問題。u它和Simulink 同時使用,使得Simulink 更具有事件驅動控制能力。有限狀態機簡介:有限狀態機簡介: Stateflow 的仿真原理是有限狀態機(finite state machi

2、ne,簡稱FSM)理論。 所謂有限狀態機是指系統中存在可數的狀態,在某些事件發生時,系統從一個狀態轉換成另一個狀態,故又稱為事件驅動的系統。 在有限狀態機的描述中,可以設計出由一種狀態轉換至另一種狀態的條件,并將每對可轉換的狀態均設計出狀態遷移的事件,從而構造出狀態遷移圖。有限狀態機示意圖:有限狀態機示意圖:Stateflow允許用戶:(1)建立有限的狀態。(2)用圖形的形式繪制出狀態 遷移的條件。(3)使用規定的命令設計狀 態遷移執行的任務。 完成以上操作即構造出整 個有限狀態機系統。注:Stateflow 模型一般是嵌在Simulink 模型下運行的,Stateflow 是由事件驅動的,這

3、些事件可以來自某一個Stateflow 圖中,也可以來自Simulink。實例:DVD播放機8缺省轉移1狀態2轉移3事件4條件5動作7連接節點6Counter數據對象一個狀態機(可以包含多個Chart) 用戶可以利用Stateflow 編輯界面左側的編輯工具繪制Stateflow圖形,下面介紹常用的編輯工具。1.狀態工具2.歷史交匯工具3.默認轉移4.連接節點5.真值表6.圖形函數工具7.內嵌Matlab函數8.模型整理工具10放大縮小工具9.函數調用創建狀態圖插入圖塊Chart 在MATLAB命令窗口輸入 sfnew 直接從stateflow庫中拖Chart塊到模型中拖拖創建狀態圖幾個術語每

4、個Chart被稱作一個stateflow圖塊,每個圖塊都有對應的stateflow框圖,模型中所有的圖塊的集合叫做stateflow狀態機,且一個模型中只有一個狀態機。狀態機狀態機圖塊圖塊框圖框圖雙擊雙擊圖塊包含的內容圖塊包含的內容創建狀態圖的幾個重要圖形對象 狀態 連接節點 轉移 轉移標簽 默認轉移 添加注釋狀態(Chart)狀態具有層次性父狀態子狀態狀態(Chart)狀態(Chart)狀態(Chart)連接節點轉移轉移標簽事件事件條件條件條件動作條件動作轉移動作轉移動作如果在轉移上沒有定義事件和條件,則意味著該轉移在任何事件發生時都會執行。如果在轉移上沒有定義事件和條件,則意味著該轉移在任

5、何事件發生時都會執行。狀態轉移使用條件 條件表達式包括 :邏輯運算或關系運算以布爾變量作為返回值的函數 條件表達式不能通過調用函數而更改數據對象或影響狀態 賦值表達式不能作為條件表達式 使用“與”操作符“&”完成條件表達式的與操作 使用“或”操作符“| |”完成條件表達式的或操作 轉移標簽事件事件條件條件條件動作條件動作轉移動作轉移動作轉移標簽?C1A1/A2C2A3/A4狀態轉移動作語言 動作語言的功能: 執行數學計算:操作數據對象調用函數:使用MATLAB或C語言的函數觸發事件:影響內部或外部的狀態狀態轉移支持的數學運算 二元操作:* / % + - = = = = != & | & |

6、一元操作: ! - + - 賦值運算:= += -+ *= /= 位操作: & | &= = |=狀態轉移調用MATLAB函數 調用MATLAB 函數,需要在函數的名字前使用MATLAB命名空間運算符,如 y = ml.abs(x) 在使用ml運算符調用MATLAB函數時需要注意以下幾點:使用ml關鍵字調用的MATLAB函數,僅能使用標量或者字符串作為函數的輸入參量 調用函數時的圓括號是必須,無論被調用的函數是否具有參量 如果調用的函數具有返回參數,則返回數值的類型必須為double型 如果具有多個返回變量,僅有第一個返回變量被賦值狀態轉移C語言數學函數 調用C語言數學函數:如y=abs(x)

7、 下表中所列的數學函數可以被調用狀態轉移調用函數 調用MATLAB函數時需要使用ml操作符,而調用C語言函數的時候則比較簡單 ,調用調用C語言函數語言函數調用調用MATLAB函數函數默認轉移默認轉移添加注釋狀態圖基本概念事件觸發狀態圖處于非活動狀態且有事件觸發時(被激活),則執行狀態圖處于非活動狀態且有事件觸發時(被激活),則執行的第一個元素是系統的默認轉移,默認轉移僅僅有效一次,的第一個元素是系統的默認轉移,默認轉移僅僅有效一次,即在狀態機被激活的首次有效,即在狀態機被激活的首次有效,如果狀態圖只有一個狀態,如果狀態圖只有一個狀態,則可以不使用默認轉移。則可以不使用默認轉移。一旦進入一個狀態

8、,這個狀態就一一旦進入一個狀態,這個狀態就一直處于活動狀態,直到退出為止。直處于活動狀態,直到退出為止。事件觸發:事件觸發:事件驅動的發生。在事件驅動的發生。在SIMULINK中,定義的事件中,定義的事件就是某些就是某些過零信號的產生過零信號的產生,只有過零信號才能觸發狀態轉移,只有過零信號才能觸發狀態轉移的發生或者狀態機的激活,由這種觸發引起的相應的動作執的發生或者狀態機的激活,由這種觸發引起的相應的動作執行,被稱為事件驅動。行,被稱為事件驅動。過零觸發 過零信號觸發事件具有三種形式: 1上升沿觸發:當過零信號由負值變為正值,或者由負值變為0,或者由0變為正 2下降沿觸發:當過零信號由正值變

9、為負值,或者由正值變為0,或者由0變為負值 3雙邊沿觸發:上述兩種觸發機制的結合下降沿下降沿上升沿上升沿事件觸發在在SIMULINK中能夠產生過零信號的模塊有:正弦振蕩中能夠產生過零信號的模塊有:正弦振蕩信號、方波產生器、階躍信號、雙端輸入開關和靜態模信號、方波產生器、階躍信號、雙端輸入開關和靜態模塊。塊。事件添加添加事件:通過添加事件:通過Add下的下的Event子菜單子菜單Name:事件的名稱,與一般事件的名稱,與一般C語言變量的命名原則一致,使用字符開頭,可以語言變量的命名原則一致,使用字符開頭,可以用字符及下劃線。用字符及下劃線。事件添加Scope:定義事件的作用類型,分別為:定義事件

10、的作用類型,分別為 Local :在狀態圖的內部發揮作用在狀態圖的內部發揮作用 Input from simulink:從:從simulink框圖輸入到框圖輸入到Stateflow中,也就是中,也就是Stateflow外部觸發事件外部觸發事件 Output to simulink:從:從Stateflow輸出到輸出到simulink中,利用中,利用Stateflow定義的事件驅動或者觸發其它定義的事件驅動或者觸發其它Stateflow系統動作。系統動作。Port屬性:當屬性:當SCOPE定義為定義為 Input from simulink和和output to simulink時才時才發揮作用

11、。當發揮作用。當scope為為Input from simulink時,該屬性對應輸入事件的索引。時,該屬性對應輸入事件的索引。當當scope為為output to simulink時時,該屬性表示事件輸出端口的序號。主要對應該屬性表示事件輸出端口的序號。主要對應定義多個事件。定義多個事件。Trigger屬性:分別為屬性:分別為Either、Falling、Rising、Function Call。分別表示雙。分別表示雙邊沿觸發、下降沿觸發、上升沿觸發、函數調用觸發邊沿觸發、下降沿觸發、上升沿觸發、函數調用觸發Debugger breakpoints:設置斷點,提供調試作用。設置斷點,提供調試

12、作用。事件輸入狀態轉移輸入事件定義事件類型事件類型多個事件輸入只有一個事件輸入端口只有一個事件輸入端口狀態轉移定義多個輸入事件多個事件輸入第一個事件第一個事件最后一個事件最后一個事件當多個事件同時發生,將按照定義事件的索引順序依次處理。當多個事件同時發生,將按照定義事件的索引順序依次處理。事件向量中的索引。事件向量中的索引。數據對象這里使用的是條件動作,沒有增加任這里使用的是條件動作,沒有增加任何事件和條件限制,該轉移為無條件何事件和條件限制,該轉移為無條件的轉移。的轉移。數據對象Name:數據對象命名,與一般C語言變量命名原則一致。Scope屬性:Local:數據對象僅能在所屬狀態圖內使用。

13、Input:接收從SIMULINK模型提供的信號,每個輸入數據對象獨占一個數據輸入端口,Stateflow圖塊上將出現數據輸入端口。Output:將Stateflow數據輸出到SIMULINK模型,每個輸出數據對象獨占一個數據輸出端口,Stateflow圖塊上將出現數據輸出端口。Constant:數據對象為常量,數值不發生變化。Parameter:當Stateflow框圖位于某個封裝子系統內部時,直接獲取封裝子系統設定的參數,在整個仿真過程中,其值不變。Data store memory:該數據對象與SIMULINK工作空間中的數據對象綁定。數據對象Size:數據對象的尺寸。屬性值為5,則數據

14、對象為5個元素的向量,屬性值為2 3,數據對象為矩陣。使用非標量數據對象Dataexp1.mdl狀態圖更新當有外部事件定義時,Stateflow模型仿真按照事件進行觸發。當沒有定義任何輸入事件的系統,狀態圖的仿真按照更新模式進行。三種更新模式:狀態圖更新Inherited:(1)有輸入事件定義。按照事件觸發更新。當相應類型的事件發生時,進行狀態的轉移、動作的執行。(2)未定義輸入事件但定義了輸入數據。模型按照與其連接的SIMULINK輸入信號中更新頻率最高的信號更新周期來仿真。如果輸入數據是常量,按照第三種情況。(3)既未定義輸入事件又未定義輸入數據。模型繼承其父層次模型的更新周期。Discr

15、ete:模型看做具有固定周期的離散塊。在設置該更新模式時,要設置屬性“SAMPLE TIME”作為更新周期,單位秒Continuous:STATEFLOW框圖好比SIMULINK模型中的一個連續系統模塊,按照系統仿真步長完成更新。狀態圖更新按照不同的更新模式進行更新:Inherited:按照單位延遲的采集周期1秒 state_update_inherit.mdlDiscrete:按照設定的Sample time state_update_discrete.mdlContinuous:按照整個系統的仿真長 state_update_continue.mdlz1Unit DelaySine Wav

16、eScope11DisplayinoutcounterChart狀態圖更新exp3.mdlInherited:事件觸發模型查看器流程圖Stateflow 圖如果不包含任何狀態就構成了一個流程圖 流程圖主要是由轉移和連接節點組成 流程圖一旦被觸發,就會一直執行到退出為止 流程圖在沒有合法的轉移分支的連接節點處執行結束 流程圖所在的chart模塊或狀態(流程圖可以嵌套在狀態中)一旦被激活,流程圖立即執行直至終止節點。流程圖建模轉移檢測優先權如果有多個有效的轉移,檢測規則決定執行哪個轉移限制越多的轉移,優先級越高:既有事件又有條件的轉移第一個被檢測 僅具有事件的轉移則被第二個檢測 僅具有條件的轉移第

17、三個被檢測 不加任何限制的轉移最后被檢測 流程圖建模轉移沖突如果在同一個優先級中,具有多個合法的轉移,在這種情況會觸發一個轉移沖突錯誤的警告信息。 Stateflow 通過幾何的方法解決這樣的問題:對于來自于一個節點的轉移, 按順時針方向檢測轉移 對于來自于一個狀態的轉移, 從狀態的左上角開始,檢測轉移 新版本的stateflow可以自己設置轉移執行的順序流程圖建模轉移沖突新版本的stateflow可以自己設置轉移執行的順序transition_conflict流程圖建模-基本邏輯結構選擇結構:流程圖建模-基本邏輯結構選擇結構:流程圖建模-基本邏輯結構選擇結構:流程圖建模-基本邏輯結構循環結構:流程圖建模-基本邏輯結構循環結構:流程圖建模創建流程圖注意事項:因為流程圖中不存在狀態,也就沒有轉移及轉移動作,所有動作都在條件動作中完成。在流程圖中,存在且僅存在一個終止節點,流程圖的更新執行最終終止在流程圖的終止節點上。所有轉移通路都必須最終匯合到終止節點。為每一個分支節點提供無條件的轉移通路,用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論