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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

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

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

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

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

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

7、 調(diào)用C語言數(shù)學(xué)函數(shù):如y=abs(x) 下表中所列的數(shù)學(xué)函數(shù)可以被調(diào)用狀態(tài)轉(zhuǎn)移調(diào)用函數(shù) 調(diào)用MATLAB函數(shù)時需要使用ml操作符,而調(diào)用C語言函數(shù)的時候則比較簡單 ,調(diào)用調(diào)用C語言函數(shù)語言函數(shù)調(diào)用調(diào)用MATLAB函數(shù)函數(shù)默認(rèn)轉(zhuǎn)移默認(rèn)轉(zhuǎn)移添加注釋狀態(tài)圖基本概念事件觸發(fā)狀態(tài)圖處于非活動狀態(tài)且有事件觸發(fā)時(被激活),則執(zhí)行狀態(tài)圖處于非活動狀態(tài)且有事件觸發(fā)時(被激活),則執(zhí)行的第一個元素是系統(tǒng)的默認(rèn)轉(zhuǎn)移,默認(rèn)轉(zhuǎn)移僅僅有效一次,的第一個元素是系統(tǒng)的默認(rèn)轉(zhuǎn)移,默認(rèn)轉(zhuǎn)移僅僅有效一次,即在狀態(tài)機被激活的首次有效,即在狀態(tài)機被激活的首次有效,如果狀態(tài)圖只有一個狀態(tài),如果狀態(tài)圖只有一個狀態(tài),則可以不使用默認(rèn)轉(zhuǎn)移

8、。則可以不使用默認(rèn)轉(zhuǎn)移。一旦進(jìn)入一個狀態(tài),這個狀態(tài)就一一旦進(jìn)入一個狀態(tài),這個狀態(tài)就一直處于活動狀態(tài),直到退出為止。直處于活動狀態(tài),直到退出為止。事件觸發(fā):事件觸發(fā):事件驅(qū)動的發(fā)生。在事件驅(qū)動的發(fā)生。在SIMULINK中,定義的事件中,定義的事件就是某些就是某些過零信號的產(chǎn)生過零信號的產(chǎn)生,只有過零信號才能觸發(fā)狀態(tài)轉(zhuǎn)移,只有過零信號才能觸發(fā)狀態(tài)轉(zhuǎn)移的發(fā)生或者狀態(tài)機的激活,由這種觸發(fā)引起的相應(yīng)的動作執(zhí)的發(fā)生或者狀態(tài)機的激活,由這種觸發(fā)引起的相應(yīng)的動作執(zhí)行,被稱為事件驅(qū)動。行,被稱為事件驅(qū)動。過零觸發(fā) 過零信號觸發(fā)事件具有三種形式: 1上升沿觸發(fā):當(dāng)過零信號由負(fù)值變?yōu)檎担蛘哂韶?fù)值變?yōu)?,或者由0

9、變?yōu)檎?2下降沿觸發(fā):當(dāng)過零信號由正值變?yōu)樨?fù)值,或者由正值變?yōu)?,或者由0變?yōu)樨?fù)值 3雙邊沿觸發(fā):上述兩種觸發(fā)機制的結(jié)合下降沿下降沿上升沿上升沿事件觸發(fā)在在SIMULINK中能夠產(chǎn)生過零信號的模塊有:正弦振蕩中能夠產(chǎn)生過零信號的模塊有:正弦振蕩信號、方波產(chǎn)生器、階躍信號、雙端輸入開關(guān)和靜態(tài)模信號、方波產(chǎn)生器、階躍信號、雙端輸入開關(guān)和靜態(tài)模塊。塊。事件添加添加事件:通過添加事件:通過Add下的下的Event子菜單子菜單Name:事件的名稱,與一般事件的名稱,與一般C語言變量的命名原則一致,使用字符開頭,可以語言變量的命名原則一致,使用字符開頭,可以用字符及下劃線。用字符及下劃線。事件添加Scop

10、e:定義事件的作用類型,分別為:定義事件的作用類型,分別為 Local :在狀態(tài)圖的內(nèi)部發(fā)揮作用在狀態(tài)圖的內(nèi)部發(fā)揮作用 Input from simulink:從:從simulink框圖輸入到框圖輸入到Stateflow中,也就是中,也就是Stateflow外部觸發(fā)事件外部觸發(fā)事件 Output to simulink:從:從Stateflow輸出到輸出到simulink中,利用中,利用Stateflow定義的事件驅(qū)動或者觸發(fā)其它定義的事件驅(qū)動或者觸發(fā)其它Stateflow系統(tǒng)動作。系統(tǒng)動作。Port屬性:當(dāng)屬性:當(dāng)SCOPE定義為定義為 Input from simulink和和output

11、 to simulink時才時才發(fā)揮作用。當(dāng)發(fā)揮作用。當(dāng)scope為為Input from simulink時,該屬性對應(yīng)輸入事件的索引。時,該屬性對應(yīng)輸入事件的索引。當(dāng)當(dāng)scope為為output to simulink時時,該屬性表示事件輸出端口的序號。主要對應(yīng)該屬性表示事件輸出端口的序號。主要對應(yīng)定義多個事件。定義多個事件。Trigger屬性:分別為屬性:分別為Either、Falling、Rising、Function Call。分別表示雙。分別表示雙邊沿觸發(fā)、下降沿觸發(fā)、上升沿觸發(fā)、函數(shù)調(diào)用觸發(fā)邊沿觸發(fā)、下降沿觸發(fā)、上升沿觸發(fā)、函數(shù)調(diào)用觸發(fā)事件輸入狀態(tài)轉(zhuǎn)移輸入事件定義事件類型事件類型

12、多個事件輸入只有一個事件輸入端口只有一個事件輸入端口狀態(tài)轉(zhuǎn)移定義多個輸入事件多個事件輸入第一個事件第一個事件最后一個事件最后一個事件當(dāng)多個事件同時發(fā)生,將按照定義事件的索引順序依次處理。當(dāng)多個事件同時發(fā)生,將按照定義事件的索引順序依次處理。事件向量中的索引。事件向量中的索引。數(shù)據(jù)對象這里使用的是條件動作,沒有增加任這里使用的是條件動作,沒有增加任何事件和條件限制,該轉(zhuǎn)移為無條件何事件和條件限制,該轉(zhuǎn)移為無條件的轉(zhuǎn)移。的轉(zhuǎn)移。數(shù)據(jù)對象Name:數(shù)據(jù)對象命名,與一般C語言變量命名原則一致。Scope屬性:Local:數(shù)據(jù)對象僅能在所屬狀態(tài)圖內(nèi)使用。Input:接收從SIMULINK模型提供的信號,

13、每個輸入數(shù)據(jù)對象獨占一個數(shù)據(jù)輸入端口,Stateflow圖塊上將出現(xiàn)數(shù)據(jù)輸入端口。Output:將Stateflow數(shù)據(jù)輸出到SIMULINK模型,每個輸出數(shù)據(jù)對象獨占一個數(shù)據(jù)輸出端口,Stateflow圖塊上將出現(xiàn)數(shù)據(jù)輸出端口。Constant:數(shù)據(jù)對象為常量,數(shù)值不發(fā)生變化。Parameter:當(dāng)Stateflow框圖位于某個封裝子系統(tǒng)內(nèi)部時,直接獲取封裝子系統(tǒng)設(shè)定的參數(shù),在整個仿真過程中,其值不變。Data store memory:該數(shù)據(jù)對象與SIMULINK工作空間中的數(shù)據(jù)對象綁定。數(shù)據(jù)對象Size:數(shù)據(jù)對象的尺寸。屬性值為5,則數(shù)據(jù)對象為5個元素的向量,屬性值為2 3,數(shù)據(jù)對象為矩

14、陣。使用非標(biāo)量數(shù)據(jù)對象Dataexp1.mdl狀態(tài)圖更新當(dāng)有外部事件定義時,Stateflow模型仿真按照事件進(jìn)行觸發(fā)。當(dāng)沒有定義任何輸入事件的系統(tǒng),狀態(tài)圖的仿真按照更新模式進(jìn)行。三種更新模式:狀態(tài)圖更新Inherited:(1)有輸入事件定義。按照事件觸發(fā)更新。當(dāng)相應(yīng)類型的事件發(fā)生時,進(jìn)行狀態(tài)的轉(zhuǎn)移、動作的執(zhí)行。(2)未定義輸入事件但定義了輸入數(shù)據(jù)。模型按照與其連接的SIMULINK輸入信號中更新頻率最高的信號更新周期來仿真。如果輸入數(shù)據(jù)是常量,按照第三種情況。(3)既未定義輸入事件又未定義輸入數(shù)據(jù)。模型繼承其父層次模型的更新周期。Discrete:模型看做具有固定周期的離散塊。在設(shè)置該更新

15、模式時,要設(shè)置屬性“SAMPLE TIME”作為更新周期,單位秒Continuous:STATEFLOW框圖好比SIMULINK模型中的一個連續(xù)系統(tǒng)模塊,按照系統(tǒng)仿真步長完成更新。狀態(tài)圖更新按照不同的更新模式進(jìn)行更新:Inherited:按照單位延遲的采集周期1秒 state_update_inherit.mdlDiscrete:按照設(shè)定的Sample time state_update_discrete.mdlContinuous:按照整個系統(tǒng)的仿真長 state_update_continue.mdlz1Unit DelaySine WaveScope11Displayinoutcount

16、erChart狀態(tài)圖更新exp3.mdlInherited:事件觸發(fā)模型查看器轉(zhuǎn)移檢測優(yōu)先權(quán)如果有多個有效的轉(zhuǎn)移,檢測規(guī)則決定執(zhí)行哪個轉(zhuǎn)移限制越多的轉(zhuǎn)移,優(yōu)先級越高:既有事件又有條件的轉(zhuǎn)移第一個被檢測 僅具有事件的轉(zhuǎn)移則被第二個檢測 僅具有條件的轉(zhuǎn)移第三個被檢測 不加任何限制的轉(zhuǎn)移最后被檢測 轉(zhuǎn)移沖突如果在同一個優(yōu)先級中,具有多個合法的轉(zhuǎn)移,在這種情況會觸發(fā)一個轉(zhuǎn)移沖突錯誤的警告信息。 Stateflow 通過幾何的方法解決這樣的問題:對于來自于一個節(jié)點的轉(zhuǎn)移, 按順時針方向檢測轉(zhuǎn)移 對于來自于一個狀態(tài)的轉(zhuǎn)移, 從狀態(tài)的左上角開始,檢測轉(zhuǎn)移 新版本的stateflow可以自己設(shè)置轉(zhuǎn)移執(zhí)行的順序

17、轉(zhuǎn)移沖突新版本的stateflow可以自己設(shè)置轉(zhuǎn)移執(zhí)行的順序transition_conflict流程圖Stateflow 圖如果不包含任何狀態(tài)就構(gòu)成了一個流程圖 流程圖主要是由轉(zhuǎn)移和連接節(jié)點組成 流程圖一旦被觸發(fā),就會一直執(zhí)行到退出為止 流程圖在沒有合法的轉(zhuǎn)移分支的連接節(jié)點處執(zhí)行結(jié)束 流程圖所在的chart模塊或狀態(tài)(流程圖可以嵌套在狀態(tài)中)一旦被激活,流程圖立即執(zhí)行直至終止節(jié)點。流程圖建模-基本邏輯結(jié)構(gòu)選擇結(jié)構(gòu):流程圖建模-基本邏輯結(jié)構(gòu)選擇結(jié)構(gòu):流程圖建模-基本邏輯結(jié)構(gòu)選擇結(jié)構(gòu):流程圖建模-基本邏輯結(jié)構(gòu)循環(huán)結(jié)構(gòu):流程圖建模-基本邏輯結(jié)構(gòu)循環(huán)結(jié)構(gòu):流程圖建模創(chuàng)建流程圖注意事項:因為流程圖中不存在狀態(tài),也就沒有轉(zhuǎn)移動作,所有動作都在條件動作中完成。在流程圖中,存在且僅存在一個終止節(jié)點,流程圖的更新執(zhí)行最終終止在流程圖的終止節(jié)點上。所有轉(zhuǎn)移通路都必須最終匯合到終止節(jié)點。為每一個分支節(jié)點提供無條件的轉(zhuǎn)移通路,用于控

溫馨提示

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

評論

0/150

提交評論