Stateflow_matlab教程_第1頁(yè)
Stateflow_matlab教程_第2頁(yè)
Stateflow_matlab教程_第3頁(yè)
Stateflow_matlab教程_第4頁(yè)
Stateflow_matlab教程_第5頁(yè)
已閱讀5頁(yè),還剩109頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Stateflow系統(tǒng)建模技術(shù)2010年7月5日內(nèi)容提要 Stateflow入門介紹及基本概念入門介紹及基本概念 創(chuàng)建狀態(tài)圖 狀態(tài)轉(zhuǎn)移 流程圖建模 狀態(tài)圖的層次 并行機(jī)制 Stateflow入門介紹 Stateflow是一個(gè)交互式設(shè)計(jì)工具,用來(lái)對(duì)復(fù)雜的事件驅(qū)動(dòng)模型系統(tǒng)進(jìn)行建模與仿真。通過(guò)緊密地與Simulink和MATLAB集成,Stateflow將復(fù)雜的控制和監(jiān)督邏輯有效地結(jié)合到Simulink模型中,為Simulink用戶提供了一個(gè)設(shè)計(jì)嵌入式系統(tǒng)的完美解決方案。 Stateflow入門介紹Stateflow能夠做: 基于有限狀態(tài)機(jī)理論對(duì)復(fù)雜的響應(yīng)型系統(tǒng)進(jìn)行可視化建模與仿真 設(shè)計(jì)和開發(fā)復(fù)雜的

2、監(jiān)控邏輯 在同一個(gè)Stateflow框圖中同時(shí)使用流程圖和狀態(tài)轉(zhuǎn)移圖表示法 自動(dòng)地從模型中生成整數(shù)或浮點(diǎn)數(shù)代碼 可隨時(shí)方便修改設(shè)計(jì),評(píng)估結(jié)果,驗(yàn)證系統(tǒng)性能stateflow基本概念l動(dòng)作l數(shù)據(jù)對(duì)象l連接節(jié)點(diǎn)l缺省轉(zhuǎn)移l狀態(tài)l轉(zhuǎn)移l事件l條件有限元狀態(tài)機(jī)有限元狀態(tài)機(jī)實(shí)例:DVD播放機(jī)8缺省轉(zhuǎn)移1狀態(tài)2轉(zhuǎn)移3事件4條件5動(dòng)作7連接節(jié)點(diǎn)6Counter數(shù)據(jù)對(duì)象一個(gè)狀態(tài)機(jī)(也可以包含多個(gè)Chart)內(nèi)容提要 Stateflow入門介紹及基本概念 創(chuàng)建狀態(tài)圖創(chuàng)建狀態(tài)圖 狀態(tài)轉(zhuǎn)移 流程圖建模 狀態(tài)圖的層次 并行機(jī)制創(chuàng)建狀態(tài)圖插入圖塊Chart 在MATLAB命令窗口輸入 sfnew 直接從stateflo

3、w庫(kù)中拖Chart塊到模型中拖拖創(chuàng)建狀態(tài)圖幾個(gè)術(shù)語(yǔ) 每個(gè)Chart被稱作一個(gè)stateflow圖塊,每個(gè)圖塊都有對(duì)應(yīng)的stateflow框圖,模型中所有的圖塊的集合叫做stateflow狀態(tài)機(jī),且一個(gè)模型中只有一個(gè)狀態(tài)機(jī)狀態(tài)機(jī)圖塊圖塊框圖框圖雙擊雙擊圖塊包含的內(nèi)容圖塊包含的內(nèi)容創(chuàng)建狀態(tài)圖編輯器 可以用編輯器開發(fā)stateflow框圖 仿真過(guò)程中可以用編輯器來(lái)顯示狀態(tài)圖的執(zhí)行過(guò)程創(chuàng)建狀態(tài)圖編輯器 將框圖鎖定的方法: FileChartPropertiesLocked選項(xiàng)創(chuàng)建狀態(tài)圖插入狀態(tài)和節(jié)點(diǎn) 先左鍵單擊選中對(duì)象按鈕,然后在編輯區(qū)左鍵單擊放下對(duì)象 要插入一個(gè)對(duì)象的多個(gè)拷貝,雙擊對(duì)象按鈕,然后再編

4、輯區(qū)左鍵單擊添加,右鍵單擊停止添加 要?jiǎng)h除某個(gè)對(duì)象,選中后按Delete鍵刪除創(chuàng)建狀態(tài)圖框圖的縮放 縮放范圍20%至500% 左鍵單擊zoom按鈕 上部放大,下部縮小 左鍵單擊兩個(gè)zoom按鈕的中間調(diào)用下拉菜單來(lái)選擇縮放的比例 移動(dòng)鼠標(biāo)到兩個(gè)zoom按鈕的中間空白處,左鍵保持在該處直到出現(xiàn)雙箭頭,向上向下拖拉進(jìn)行縮放2個(gè)zoom按鈕創(chuàng)建狀態(tài)圖改變狀態(tài)尺寸 左鍵保持狀態(tài)的一個(gè)圓角拖拉即可,當(dāng)移動(dòng)鼠標(biāo)到狀態(tài)的圓角時(shí),會(huì)出現(xiàn)一個(gè)雙箭頭,這是就可以左鍵保持這個(gè)圓角,然后拖拉直到滿意的尺寸大小創(chuàng)建狀態(tài)圖改變節(jié)點(diǎn)尺寸 右鍵單擊節(jié)點(diǎn),彈出一個(gè)快捷菜單,然后選擇Junction Size選項(xiàng)選擇需要的大小尺寸

5、創(chuàng)建狀態(tài)圖移動(dòng)和復(fù)制對(duì)象 左鍵保持并且拖拉對(duì)象,移動(dòng)一個(gè)狀態(tài)或節(jié)點(diǎn) 右鍵保持拖動(dòng)對(duì)象,拷貝一個(gè)對(duì)象 如果想移動(dòng)或拷貝一組對(duì)象,首先要框選所感興趣的對(duì)象,然后按上面的方法操作 注:?jiǎn)螕魰r(shí)必須點(diǎn)到對(duì)象的邊緣里面創(chuàng)建狀態(tài)圖狀態(tài)的標(biāo)簽 每個(gè)狀態(tài)都必須要有一個(gè)名字。標(biāo)簽一個(gè)狀態(tài)時(shí),左鍵單擊問(wèn)號(hào),在光標(biāo)處輸入文本。注意鼠標(biāo)點(diǎn)接近問(wèn)號(hào)時(shí)它所發(fā)生的變化。狀態(tài)名要以字符串開始,中間不能有空格,但可以寫成多行。編輯狀態(tài)標(biāo)簽時(shí),左鍵單擊標(biāo)簽進(jìn)入文本編輯模式。創(chuàng)建狀態(tài)圖創(chuàng)建轉(zhuǎn)移 從源對(duì)象的邊緣左鍵保持并且拖拉到目標(biāo)對(duì)象邊緣。轉(zhuǎn)移只能開始或終止于狀態(tài)的直線的邊緣(不能是狀態(tài)的圓角)。當(dāng)鼠標(biāo)點(diǎn)接近狀態(tài)的直線邊緣時(shí)光標(biāo)變?yōu)?/p>

6、十字花。 默認(rèn)情況下,轉(zhuǎn)移的精確行為是有效的,要想使他無(wú)效,可以在轉(zhuǎn)移上右鍵單擊,在快捷菜單上清掉Smart選項(xiàng)。創(chuàng)建狀態(tài)圖創(chuàng)建缺省轉(zhuǎn)移 左鍵單擊圖形編輯器左邊的一列工具條上的第三個(gè)按鈕,然后左鍵單擊缺省狀態(tài)的直線邊緣。如果轉(zhuǎn)移從狀態(tài)或節(jié)點(diǎn)的邊緣分離出來(lái),它就會(huì)變成缺省轉(zhuǎn)移。創(chuàng)建狀態(tài)圖轉(zhuǎn)移的變更 從一個(gè)狀態(tài)的邊緣到另一個(gè)狀態(tài)的邊緣,可以改變轉(zhuǎn)移的任何一個(gè)末端(帶箭頭或不帶箭頭的):左鍵保持在想改變的轉(zhuǎn)移的末端,然后拖拉它離開原來(lái)的邊緣 到達(dá)想要的目標(biāo)的邊緣時(shí)釋放轉(zhuǎn)移的末端,重新連接轉(zhuǎn)移 要想改變轉(zhuǎn)移的線路而不影響它的兩端的連接時(shí),左鍵保持在轉(zhuǎn)移的兩個(gè)末端之間的線上,拖拉即可改變創(chuàng)建狀態(tài)圖轉(zhuǎn)移標(biāo)

7、簽及移動(dòng) 給轉(zhuǎn)移加標(biāo)簽:左鍵單擊轉(zhuǎn)移選中它,左鍵單擊出現(xiàn)的問(wèn)號(hào),在光標(biāo)處插入文本。左鍵單擊文本進(jìn)入文本編輯模式進(jìn)行編輯轉(zhuǎn)移的標(biāo)簽 移動(dòng)轉(zhuǎn)移標(biāo)簽:左鍵保持在標(biāo)簽位置,拖拉到想安放的位置,可以把轉(zhuǎn)移標(biāo)簽移到框圖內(nèi)的任何位置創(chuàng)建狀態(tài)圖添加注釋 在框圖中指定位置添加注釋:右鍵單擊框圖中要加注釋的位置,彈出快捷菜單選擇快捷菜單中的Add Note選項(xiàng)在光標(biāo)處插入文本 左鍵單擊文本進(jìn)入到編輯模式編輯文本注釋注釋創(chuàng)建狀態(tài)圖定制對(duì)象屬性 右鍵單擊某一對(duì)象,彈出快捷菜單,選擇Properties選項(xiàng),就會(huì)出現(xiàn)關(guān)于這個(gè)對(duì)象的屬性對(duì)話框。 不同對(duì)象,屬性對(duì)話框有所差異轉(zhuǎn)移屬性對(duì)話框轉(zhuǎn)移屬性對(duì)話框狀態(tài)屬性對(duì)話框狀態(tài)屬

8、性對(duì)話框創(chuàng)建狀態(tài)圖設(shè)置字體大小 設(shè)置狀態(tài)和轉(zhuǎn)移的標(biāo)簽及注釋信息的字體大小:左鍵單擊選中對(duì)象選取Edit菜單下的Set Font Size選項(xiàng)選擇合適的字體 也可以通過(guò)對(duì)象的快捷菜單進(jìn)行設(shè)置:右鍵單擊對(duì)象彈快捷菜單選取Font Size選項(xiàng)選擇合適的尺寸創(chuàng)建狀態(tài)圖設(shè)置箭頭尺寸 修改轉(zhuǎn)移箭頭尺寸的方法: 右鍵單擊轉(zhuǎn)移彈出快捷菜單,從Arrowhead Size子菜單中選取合適的尺寸。從狀態(tài)的快捷菜單下對(duì)該選項(xiàng)進(jìn)行設(shè)置,所有指向該狀態(tài)的邊緣的箭頭尺寸都將改變創(chuàng)建狀態(tài)圖圖形顯示配置 可以配置一個(gè)框圖的圖形風(fēng)格。包括定制狀態(tài)、轉(zhuǎn)移、節(jié)點(diǎn)、標(biāo)簽和背景的顏色,狀態(tài)和轉(zhuǎn)移標(biāo)簽的字體。通過(guò)選取Edit菜單下的S

9、tyle選項(xiàng)打開圖形風(fēng)格對(duì)話框來(lái)進(jìn)行編輯。 對(duì)話框中:左鍵單擊對(duì)象或標(biāo)簽,設(shè)置顏色右鍵單擊標(biāo)簽,設(shè)置字體內(nèi)容提要 Stateflow入門介紹及基本概念 創(chuàng)建狀態(tài)圖 狀態(tài)轉(zhuǎn)移狀態(tài)轉(zhuǎn)移 流程圖建模 狀態(tài)圖的層次 并行機(jī)制狀態(tài)轉(zhuǎn)移概念 Stateflow狀態(tài)圖被稱為“狀態(tài)轉(zhuǎn)移圖”,這些狀態(tài)圖中包含了所謂的狀態(tài)、狀態(tài)轉(zhuǎn)移管理和維護(hù)當(dāng)前內(nèi)存中活動(dòng)的狀態(tài) 一旦包含了狀態(tài)轉(zhuǎn)移的狀態(tài)圖處于活動(dòng)的狀態(tài),則狀態(tài)圖將一直處于這種活動(dòng)狀態(tài),直到整個(gè)模型仿真計(jì)算結(jié)束。 當(dāng)在某一個(gè)制定的時(shí)間步長(zhǎng)內(nèi)完成了必要的工作后,狀態(tài)圖簡(jiǎn)單地進(jìn)入到一種暫時(shí)掛起的狀態(tài),而不是非活動(dòng)狀態(tài)。也就是說(shuō),在連續(xù)兩次觸發(fā)事件之間,狀態(tài)圖是一直處于

10、活動(dòng)狀態(tài)的。狀態(tài)轉(zhuǎn)移概念(續(xù)) 具有狀態(tài)轉(zhuǎn)移的Stateflow狀態(tài)圖相當(dāng)于一種包含了離散系統(tǒng)模塊的觸發(fā)子系統(tǒng)。這種子系統(tǒng)在內(nèi)存中保持自己的狀態(tài),在有觸發(fā)時(shí)更新自己的輸出,而在兩個(gè)連續(xù)的觸發(fā)之間保持自己的狀態(tài)。狀態(tài)轉(zhuǎn)移概念(續(xù)) 當(dāng)一個(gè)狀態(tài)轉(zhuǎn)移圖處于活動(dòng)狀態(tài)時(shí),這個(gè)狀態(tài)轉(zhuǎn)移圖首先嘗試激活相應(yīng)的狀態(tài),以及鄰近的狀態(tài)。如果,狀態(tài)機(jī)處于第一層,則執(zhí)行的第一個(gè)元素是系統(tǒng)的默認(rèn)轉(zhuǎn)移。由于狀態(tài)機(jī)在模型運(yùn)行結(jié)束之前一直處于活動(dòng)狀態(tài),默認(rèn)轉(zhuǎn)移僅僅有效一次,即在狀態(tài)機(jī)被激活的首次有效,這一點(diǎn)必須注意。如果狀態(tài)的第一層僅有一個(gè)狀態(tài),則可以不使用默認(rèn)的轉(zhuǎn)移。一旦進(jìn)入一個(gè)狀態(tài),這個(gè)狀態(tài)就一直處于活動(dòng)狀態(tài),直到退出為止

11、。與狀態(tài)機(jī)類似,狀態(tài)也在連續(xù)兩次觸發(fā)之間掛起而不會(huì)成為不活動(dòng)狀態(tài)。狀態(tài)轉(zhuǎn)移事件驅(qū)動(dòng) 所謂事件是指觸發(fā)的發(fā)生。一個(gè)觸發(fā)可以是隱含存在的,按照預(yù)先的配置自動(dòng)的發(fā)生。同樣,觸發(fā)也可以顯性的定義,在一個(gè)具有過(guò)零特性的信號(hào)發(fā)生,或者被函數(shù)調(diào)用時(shí),觸發(fā)發(fā)生,也就是發(fā)出了事件。由于這種觸發(fā)而引起的相應(yīng)的動(dòng)作執(zhí)行,被稱之為事件驅(qū)動(dòng) 在Stateflow中,所有的狀態(tài)圖的運(yùn)行都是依靠事件驅(qū)動(dòng)。換句話說(shuō),狀態(tài)圖是依賴于事件而活動(dòng)的。事件同樣驅(qū)動(dòng)狀態(tài)的變化。 每次觸發(fā)一次,狀態(tài)圖就重新進(jìn)行判斷一次。狀態(tài)轉(zhuǎn)移過(guò)零觸發(fā) 過(guò)零觸發(fā)事件具有三種形式: 1上升沿觸發(fā):當(dāng)過(guò)零信號(hào)由負(fù)值變?yōu)檎?,或者由?fù)值變?yōu)?,或者由0變?yōu)檎?/p>

12、 2下降沿觸發(fā):當(dāng)過(guò)零信號(hào)由正值變?yōu)樨?fù)值,或者由正值變?yōu)?,或者由0變?yōu)樨?fù)值 3雙邊沿觸發(fā):上述兩種觸發(fā)機(jī)制的結(jié)合下降沿下降沿上升沿上升沿狀態(tài)轉(zhuǎn)移產(chǎn)生事件 利用下列的模塊可以在Simulink中產(chǎn)生相應(yīng)的過(guò)零信號(hào):震蕩函數(shù)脈沖發(fā)生器階躍信號(hào)(每個(gè)階躍信號(hào)僅能產(chǎn)生一個(gè)事件)雙端輸入開關(guān)靜態(tài)模塊狀態(tài)轉(zhuǎn)移輸入事件定義事件類型事件類型狀態(tài)轉(zhuǎn)移定義多個(gè)輸入事件狀態(tài)轉(zhuǎn)移默認(rèn)轉(zhuǎn)移注意事項(xiàng) 當(dāng)其父狀態(tài)被激活的時(shí)候,默認(rèn)轉(zhuǎn)移僅僅執(zhí)行一次。那么當(dāng)父狀態(tài)再次從非活動(dòng)狀態(tài)進(jìn)入到活動(dòng)狀態(tài),默認(rèn)轉(zhuǎn)移將再次執(zhí)行 當(dāng)默認(rèn)轉(zhuǎn)移在狀態(tài)圖的第一層的時(shí)候,需要小心。如果第一次觸發(fā)事件發(fā)生時(shí)默認(rèn)轉(zhuǎn)移無(wú)效,系統(tǒng)將發(fā)出一個(gè)二義性警告,這個(gè)

13、警告錯(cuò)誤一般在父狀態(tài)被激活,而父狀態(tài)下的子狀態(tài)不能確認(rèn)具體哪一個(gè)被激活時(shí)發(fā)出。這時(shí)候,狀態(tài)圖被激活了,但是沒有一個(gè)確定的狀態(tài)被激活。 注:如果在Stateflow調(diào)試器中從錯(cuò)誤檢測(cè)選項(xiàng)字段中去除State Inconsistency,則上述的二義性錯(cuò)誤警告不會(huì)發(fā)出。狀態(tài)轉(zhuǎn)移默認(rèn)轉(zhuǎn)移注意事項(xiàng)(續(xù)) 一定要牢記一點(diǎn),一旦Stateflow狀態(tài)圖被激活,則狀態(tài)圖會(huì)一直處于激活狀態(tài)直到系統(tǒng)仿真的結(jié)束。由于默認(rèn)轉(zhuǎn)移的執(zhí)行需要依賴父狀態(tài)的再次激活,則這里的默認(rèn)轉(zhuǎn)移將不再有機(jī)會(huì)執(zhí)行了。 若需要通過(guò)事件來(lái)控制狀態(tài)的執(zhí)行,則可以建立一個(gè)啞元狀態(tài),或者將狀態(tài)圖置于使能子系統(tǒng)中,將相應(yīng)的觸發(fā)事件設(shè)置為Reset 例

14、子:exp01_1和exp01_2狀態(tài)轉(zhuǎn)移使用數(shù)據(jù)對(duì)象 數(shù)據(jù)對(duì)象主要是用在條件和動(dòng)作語(yǔ)句中??梢愿鶕?jù)需要在Stateflow圖表中限制數(shù)據(jù)對(duì)象的使用,也可以使用數(shù)據(jù)對(duì)象作為chart和外部環(huán)境的接口,這里所說(shuō)的外部環(huán)境即Simulink模型中的其他模塊。用在條件中用在條件中用在動(dòng)作中用在動(dòng)作中狀態(tài)轉(zhuǎn)移定義數(shù)據(jù)對(duì)象添加數(shù)據(jù)添加數(shù)據(jù)數(shù)據(jù)名稱數(shù)據(jù)名稱數(shù)據(jù)對(duì)象范圍數(shù)據(jù)對(duì)象范圍數(shù)據(jù)類型數(shù)據(jù)類型狀態(tài)轉(zhuǎn)移活動(dòng)狀態(tài)輸出 可以將狀態(tài)的活動(dòng)狀態(tài)作為Stateflow塊的輸出,在狀態(tài)屬性對(duì)話框中選中Output State Activity選項(xiàng),stateflow塊就創(chuàng)建了一個(gè)數(shù)據(jù)對(duì)象輸出到模型,而數(shù)據(jù)對(duì)象名稱和狀

15、態(tài)的名稱一致,數(shù)值只能是1或0 例子exp02狀態(tài)轉(zhuǎn)移瀏覽器 使用瀏覽器可以觀察所定義的數(shù)據(jù)和事件 運(yùn)行瀏覽器:使用Tool菜單下的Explorer命令 瀏覽器左邊列顯示了狀態(tài)機(jī)包含的所有層次結(jié)構(gòu)事件事件數(shù)據(jù)數(shù)據(jù)層次結(jié)構(gòu)層次結(jié)構(gòu)狀態(tài)轉(zhuǎn)移瀏覽器(續(xù)) 在瀏覽器中可以定義事件和數(shù)據(jù)對(duì)象屬性 用鼠標(biāo)右鍵拖放事件或數(shù)據(jù)對(duì)象,可以完成復(fù)制操作 瀏覽器中的Add菜單可以對(duì)在層次樹中選擇的stateflow圖表完成添加/定義數(shù)據(jù)和事件對(duì)象的操作狀態(tài)轉(zhuǎn)移使用條件 條件表達(dá)式包括 :使用布爾運(yùn)算符比較兩個(gè)數(shù)據(jù)對(duì)象 以布爾變量作為返回值的函數(shù) 條件表達(dá)式不能通過(guò)調(diào)用函數(shù)而更改數(shù)據(jù)對(duì)象或影響改變圖表中的狀態(tài) 賦值表

16、達(dá)式不能作為條件表達(dá)式 使用“與”操作符“&”完成條件表達(dá)式的與操作 使用“或”操作符“| |”完成條件表達(dá)式的或操作 狀態(tài)轉(zhuǎn)移轉(zhuǎn)移動(dòng)作 轉(zhuǎn)移動(dòng)作標(biāo)簽主要由四個(gè)部分組成 在轉(zhuǎn)移動(dòng)作標(biāo)簽中不一定需要包含所有的上述部分,但是必須按照?qǐng)D中所示的順序書寫轉(zhuǎn)移動(dòng)作標(biāo)簽。 條件動(dòng)作和轉(zhuǎn)移動(dòng)作運(yùn)行有所區(qū)別,條件動(dòng)作在條件滿足的時(shí)候就運(yùn)行了,而轉(zhuǎn)移動(dòng)作需要在整個(gè)轉(zhuǎn)移通路有效時(shí)才運(yùn)行。見例子見例子exp03事件事件條件條件條件動(dòng)作條件動(dòng)作轉(zhuǎn)移動(dòng)作轉(zhuǎn)移動(dòng)作狀態(tài)轉(zhuǎn)移狀態(tài)動(dòng)作在下列情況時(shí),發(fā)生狀態(tài)動(dòng)作 :初始為非活動(dòng)狀態(tài),事件驅(qū)動(dòng)使其激活entry動(dòng)作初始為活動(dòng)狀態(tài),事件驅(qū)動(dòng)使其進(jìn)入非活動(dòng)狀態(tài)exit動(dòng)作 初

17、始為活動(dòng)狀態(tài),事件沒有改變其活動(dòng)的狀態(tài)during動(dòng)作或on動(dòng)作 狀態(tài)動(dòng)作一般作為狀態(tài)名稱標(biāo)簽的一部分,可以緊跟在標(biāo)簽名稱后面 可以使用一些關(guān)鍵字來(lái)標(biāo)識(shí)動(dòng)作的作用類型 狀態(tài)轉(zhuǎn)移狀態(tài)動(dòng)作(續(xù)) 有四種類型狀態(tài)動(dòng)作: entry/en在事件觸發(fā)狀態(tài)進(jìn)入活動(dòng)狀態(tài)時(shí)執(zhí)行exit/ex在事件觸發(fā)狀態(tài)退出活動(dòng)狀態(tài)時(shí)執(zhí)行during/du在事件觸發(fā)發(fā)生,狀態(tài)保持原來(lái)活動(dòng)狀態(tài)時(shí)執(zhí)行on event_name當(dāng)以event_name命名的事件發(fā)生時(shí),狀態(tài)保持原有的活動(dòng)狀態(tài)而執(zhí)行相應(yīng)的動(dòng)作 系統(tǒng)默認(rèn)的狀態(tài)動(dòng)作為entry 狀態(tài)轉(zhuǎn)移動(dòng)作執(zhí)行順序 在有事件驅(qū)動(dòng)且條件滿足的時(shí)候,執(zhí)行相應(yīng)的條件動(dòng)作 整條通路都有效,系統(tǒng)

18、才執(zhí)行轉(zhuǎn)移動(dòng)作 原狀態(tài)的退出動(dòng)作在轉(zhuǎn)移動(dòng)作執(zhí)行之前被執(zhí)行 接著是組含義動(dòng)作,然后是目標(biāo)狀態(tài)的進(jìn)入動(dòng)作狀態(tài)轉(zhuǎn)移動(dòng)作語(yǔ)言 Stateflow的動(dòng)作語(yǔ)言是圖表內(nèi)部進(jìn)行交互,以及圖表和外部環(huán)境進(jìn)行交互的接口 動(dòng)作語(yǔ)言的功能: 執(zhí)行數(shù)學(xué)計(jì)算:操作數(shù)據(jù)對(duì)象調(diào)用函數(shù):使用MATLAB或C語(yǔ)言的函數(shù)觸發(fā)事件:影響內(nèi)部或外部的狀態(tài)狀態(tài)轉(zhuǎn)移支持的數(shù)學(xué)運(yùn)算 二元操作:* / % + - = = = = != & | & | 一元操作: ! - + - 賦值運(yùn)算:= += -+ *= /= 位操作: & | &= = |=狀態(tài)轉(zhuǎn)移調(diào)用MATLAB函數(shù) 調(diào)用MATLAB 函數(shù),需要在函數(shù)

19、的名字前使用MATLAB命名空間運(yùn)算符,如ml y = ml.abs(x) 在使用ml運(yùn)算符調(diào)用MATLAB函數(shù)時(shí)需要注意以下幾點(diǎn):使用ml關(guān)鍵字調(diào)用的MATLAB函數(shù),僅能使用標(biāo)量或者字符串作為函數(shù)的輸入?yún)⒘?調(diào)用函數(shù)時(shí)的圓括號(hào)是必須,無(wú)論被調(diào)用的函數(shù)是否具有參量 如果調(diào)用的函數(shù)具有返回參數(shù),則返回?cái)?shù)值的類型必須為double型 如果具有多個(gè)返回變量,僅有第一個(gè)返回變量被賦值如果返回的參數(shù)不是標(biāo)量,僅向量中的第一個(gè)元素被賦值狀態(tài)轉(zhuǎn)移C語(yǔ)言數(shù)學(xué)函數(shù) 調(diào)用C語(yǔ)言數(shù)學(xué)函數(shù):如y=abs(x) 仿真目標(biāo)代碼生成器提供了min和max函數(shù)的宏定義 下表中所列的數(shù)學(xué)函數(shù)可以被調(diào)用狀態(tài)轉(zhuǎn)移調(diào)用函數(shù) 調(diào)用M

20、ATLAB函數(shù)時(shí)需要使用ml操作符,而調(diào)用C語(yǔ)言函數(shù)的時(shí)候則比較簡(jiǎn)單 ,例例exp04調(diào)用調(diào)用C語(yǔ)言函數(shù)語(yǔ)言函數(shù)調(diào)用調(diào)用MATLAB函數(shù)函數(shù)狀態(tài)轉(zhuǎn)移圖表更新 圖表更新也是可以配置的,更新主要有三種形式:Triggered 或Inherited 狀態(tài)或者被外部輸入的事件觸發(fā),或者按照輸入信號(hào)的采樣頻率進(jìn)行觸發(fā)Sampled 按照一個(gè)固定的頻率觸發(fā)狀態(tài)轉(zhuǎn)換 Continuous每個(gè)仿真步長(zhǎng)觸發(fā)狀態(tài)轉(zhuǎn)換 執(zhí)行File菜單下的Chart Properties命令,在彈出的對(duì)話框中,設(shè)置Update method 字段中的內(nèi)容 系統(tǒng)默認(rèn)的更新方式是Triggered or Inherited 狀態(tài)轉(zhuǎn)移觸

21、發(fā)與繼承通過(guò)觸發(fā)事件更新狀態(tài)圖需要在stateflow塊輸入具有過(guò)零特性的信號(hào)如果具有輸入的事件,必須使用Triggered Inherited更新方法如果沒有輸入的事件,則狀態(tài)圖按照輸入信號(hào)的采樣頻率自動(dòng)更新使用繼承更新方法,狀態(tài)圖依賴輸入信號(hào)的更新而更新 exp05采樣周期設(shè)為采樣周期設(shè)為0.2狀態(tài)轉(zhuǎn)移采樣更新 如果使用采樣更新,則stateflow塊類似于離散塊具有固定的執(zhí)行頻率 采樣更新方法按照固定的時(shí)間步長(zhǎng)觸發(fā)狀態(tài)圖的更新 使用該方法必須指定一個(gè)采樣時(shí)間 采樣更新方法等同于狀態(tài)圖具有固定周期的驅(qū)動(dòng)事件 exp06離散采樣周期離散采樣周期0.2狀態(tài)轉(zhuǎn)移連續(xù)更新 使用連續(xù)更新方法時(shí),狀態(tài)

22、圖的運(yùn)行類似于連續(xù)系統(tǒng)模塊 連續(xù)更新方法在每一個(gè)仿真步長(zhǎng)觸發(fā)狀態(tài)圖的轉(zhuǎn)換 連續(xù)更新方法等同于狀態(tài)圖具有最小時(shí)間步長(zhǎng)的觸發(fā)事件 exp07狀態(tài)轉(zhuǎn)移調(diào)試器 使用stateflow調(diào)試器解決狀態(tài)圖中的錯(cuò)誤 在調(diào)試器中運(yùn)行模型,可以完全控制模型運(yùn)行的過(guò)程 執(zhí)行調(diào)試器:使用Tool菜單下的Debug命令執(zhí)行狀態(tài)執(zhí)行狀態(tài)全局?jǐn)帱c(diǎn)全局?jǐn)帱c(diǎn)調(diào)試動(dòng)作調(diào)試動(dòng)作錯(cuò)誤檢測(cè)錯(cuò)誤檢測(cè)動(dòng)畫控制動(dòng)畫控制控制信息控制信息運(yùn)行信息運(yùn)行信息狀態(tài)轉(zhuǎn)移設(shè)置斷點(diǎn)可以將轉(zhuǎn)移或狀態(tài)作為本地?cái)帱c(diǎn)來(lái)控制狀態(tài)圖的運(yùn)行右鍵單擊對(duì)象在快捷菜單中選擇Properties選項(xiàng)在breakpoints設(shè)置相應(yīng)的屬性設(shè)置也可以將斷點(diǎn)設(shè)置為數(shù)據(jù)對(duì)象的修改或者事

23、件的觸發(fā),而這些設(shè)置在Stateflow瀏覽器中完成。斷點(diǎn)控制斷點(diǎn)控制狀態(tài)轉(zhuǎn)移查詢器從Tool 菜單欄中選擇find選項(xiàng), 你也可以使用按鈕訪問(wèn)finder 你可以限制搜尋的范圍,要么查找Stateflow組件,要么既查找Stateflow組件,同時(shí)也查找Simulink對(duì)象。 內(nèi)容提要 Stateflow入門介紹及基本概念 創(chuàng)建狀態(tài)圖 狀態(tài)轉(zhuǎn)移 流程圖建模流程圖建模 狀態(tài)圖的層次 并行機(jī)制流程圖建模轉(zhuǎn)移檢測(cè)優(yōu)先權(quán)如果有多個(gè)有效的轉(zhuǎn)移,檢測(cè)規(guī)則決定執(zhí)行哪個(gè)轉(zhuǎn)移限制越多的轉(zhuǎn)移,優(yōu)先級(jí)越高:既有事件又有條件的轉(zhuǎn)移第一個(gè)被檢測(cè) 僅具有事件的轉(zhuǎn)移則被第二個(gè)檢測(cè) 僅具有條件的轉(zhuǎn)移第三個(gè)被檢測(cè) 不加任何限

24、制的轉(zhuǎn)移最后被檢測(cè) exp08低低高高流程圖建模轉(zhuǎn)移沖突 如果在同一個(gè)優(yōu)先級(jí)中,具有兩個(gè)合法的轉(zhuǎn)移,在這種情況會(huì)觸發(fā)一個(gè)轉(zhuǎn)移沖突錯(cuò)誤的警告信息。 Stateflow 通過(guò)幾何的方法解決這樣的問(wèn)題:對(duì)于來(lái)自于一個(gè)節(jié)點(diǎn)的轉(zhuǎn)移, 按順時(shí)針?lè)较驒z測(cè)轉(zhuǎn)移 對(duì)于來(lái)自于一個(gè)狀態(tài)的轉(zhuǎn)移, 從狀態(tài)的左上角開始,檢測(cè)轉(zhuǎn)移 新版本的stateflow可以自己設(shè)置轉(zhuǎn)移執(zhí)行的順序流程圖建模流程圖Stateflow 圖如果不包含任何狀態(tài)就構(gòu)成了一個(gè)流程圖 流程圖主要是由轉(zhuǎn)移和連接節(jié)點(diǎn)組成 流程圖并不包含任何存儲(chǔ)器 流程圖一旦被觸發(fā),就會(huì)一直執(zhí)行到退出為止 在兩個(gè)連續(xù)的觸發(fā)之間,這個(gè)流程圖是不活動(dòng)的 流程圖在沒有合法的轉(zhuǎn)移

25、分支的連接節(jié)點(diǎn)處執(zhí)行結(jié)束 流程圖建模終止節(jié)點(diǎn) 終止節(jié)點(diǎn)就是連接節(jié)點(diǎn),只不過(guò)該連接節(jié)點(diǎn)聚集了所有轉(zhuǎn)移路徑 終止節(jié)點(diǎn)類似函數(shù)中的return聲明 在一個(gè)流程圖中,必須要有一個(gè)無(wú)條件路徑來(lái)終止連接,防止無(wú)窮遞歸 在一個(gè)流程圖中, 以 表示的條件動(dòng)作僅僅是一個(gè)可執(zhí)行的動(dòng)作 流程圖建模If else結(jié)構(gòu)If else結(jié)構(gòu)結(jié)構(gòu)If elseif else結(jié)構(gòu)結(jié)構(gòu)流程圖建模迭代循環(huán)結(jié)構(gòu) for 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) While循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)流程圖建模臨時(shí)數(shù)據(jù)vs局部數(shù)據(jù) 狀態(tài)圖中的局部數(shù)據(jù)就相當(dāng)于函數(shù)的全局變量: 只有在狀態(tài)圖中,數(shù)據(jù)才可見當(dāng)狀態(tài)圖第一次被激活時(shí),局部數(shù)據(jù)為初值。隨后在狀態(tài)圖被激活時(shí),局部數(shù)據(jù)

26、為前一次數(shù)值重新賦初值時(shí),它的值必須要重置 狀態(tài)圖中的臨時(shí)數(shù)據(jù)對(duì)象就相當(dāng)于函數(shù)中的一個(gè)局部變量 它的值僅在狀態(tài)圖中可見永遠(yuǎn)從初值開始在狀態(tài)圖的以后激活的情況下,自動(dòng)重置 只有在無(wú)狀態(tài)的狀態(tài)圖中臨時(shí)數(shù)據(jù)才是有效的 2009a版本中已沒有臨時(shí)數(shù)據(jù)類型?流程圖建模密碼檢測(cè)邏輯密碼檢測(cè)邏輯的要求: 密碼是具有四個(gè)數(shù)字的輸入信號(hào) 流程圖應(yīng)分別檢測(cè)每個(gè)數(shù)字是否與預(yù)設(shè)的密碼匹配 把正確的密碼數(shù)字聲明為常量 如果密碼正確,則輸出為1,否則為0 見例見例exp10內(nèi)容提要 Stateflow入門介紹及基本概念 創(chuàng)建狀態(tài)圖 狀態(tài)轉(zhuǎn)移 流程圖建模 狀態(tài)圖的層次狀態(tài)圖的層次 并行機(jī)制狀態(tài)圖層次概念 當(dāng)一個(gè)狀態(tài)圖具有第

27、二層狀態(tài)時(shí)就構(gòu)成了層次 高層次的狀態(tài)就被稱為父狀態(tài),而低層次的狀態(tài)就被稱為子狀態(tài) 狀態(tài)圖中允許擁有的狀態(tài)層次的數(shù)目是沒有任何限制的 Stateflow允許在不同層次狀態(tài)之間存在轉(zhuǎn)移 如果轉(zhuǎn)移穿越了父狀態(tài)的邊界直接到達(dá)了低層次的子狀態(tài),則轉(zhuǎn)移被稱之為超轉(zhuǎn)移 子狀態(tài)的各種對(duì)象僅僅父狀態(tài)活動(dòng)時(shí),才有可能執(zhí)行或者有效 直接從父狀態(tài)發(fā)出的轉(zhuǎn)移,可以不用考慮具體哪一個(gè)子狀態(tài)處于活動(dòng)狀態(tài) 狀態(tài)圖層次層次化轉(zhuǎn)移在具有層次的狀態(tài)之間轉(zhuǎn)移時(shí),一般轉(zhuǎn)移路徑的源頭是從最內(nèi)部的子狀態(tài)出發(fā),而終止于目標(biāo)狀態(tài)的最內(nèi)部的子狀態(tài)。例例exp11狀態(tài)圖層次使用層次的目的在狀態(tài)圖中使用層次有如下幾個(gè)目的: 使用層次,可以將相關(guān)的對(duì)

28、象組合在一起,構(gòu)成族群 可以將一些通用的轉(zhuǎn)移路徑或者動(dòng)作組合成為一個(gè)轉(zhuǎn)移動(dòng)作或路徑,簡(jiǎn)化模型 適當(dāng)?shù)厥褂脤哟危梢杂行У乜s減生成代碼的大小,也能夠提高程序執(zhí)行的效率和可讀性狀態(tài)圖層次生成組合父狀態(tài) 需要將父狀態(tài)組合起來(lái) ,這樣就可以作為一個(gè)整體對(duì)狀態(tài)圖進(jìn)行移動(dòng)、拷貝或者重新定義尺寸操作 方法:右鍵單擊父狀態(tài)彈出快捷菜單,選擇Make Contents子菜單下的Grouped命令或者左鍵雙擊父狀態(tài)狀態(tài)圖層次低層次默認(rèn)轉(zhuǎn)移第二個(gè)層次狀態(tài)的默認(rèn)轉(zhuǎn)移決定了當(dāng)父狀態(tài)被激活時(shí),具體哪一個(gè)子狀態(tài)被激活 思考下圖?例例exp11和和exp12狀態(tài)圖層次歷史節(jié)點(diǎn) 歷史節(jié)點(diǎn)記錄了在父狀態(tài)退出活動(dòng)狀態(tài)時(shí),具體哪一個(gè)

29、子狀態(tài)處于活動(dòng)狀態(tài) 當(dāng)父狀態(tài)再次被激活時(shí),如果子狀態(tài)沒有定義顯性直接轉(zhuǎn)移,則歷史節(jié)點(diǎn)將使其記錄的子狀態(tài)處于活動(dòng)狀態(tài)。 例例exp13 歷史節(jié)點(diǎn)歷史節(jié)點(diǎn)狀態(tài)圖層次內(nèi)部轉(zhuǎn)移 內(nèi)部轉(zhuǎn)移是指從父狀態(tài)邊緣內(nèi)部出發(fā),終止于子狀態(tài)外邊緣的轉(zhuǎn)移,轉(zhuǎn)移始終處于父狀態(tài)的內(nèi)部。例例exp14狀態(tài)圖層次層次轉(zhuǎn)移測(cè)試優(yōu)先權(quán) 轉(zhuǎn)移的測(cè)試從活動(dòng)的父狀態(tài)開始 向外的轉(zhuǎn)移首先被測(cè)試(level 1)接著是內(nèi)部轉(zhuǎn)移(level 2) 然后從活動(dòng)的子狀態(tài)開始檢測(cè)轉(zhuǎn)移穿越父狀態(tài)邊緣的轉(zhuǎn)移首先被檢測(cè)(level 3) 然后是父狀態(tài)內(nèi)部子狀態(tài)之間的轉(zhuǎn)移被檢測(cè) (level 4) 在同等層次的轉(zhuǎn)移之間,具有最嚴(yán)格限制的轉(zhuǎn)移首先被檢測(cè) 狀態(tài)

30、圖層次內(nèi)部轉(zhuǎn)移規(guī)則 狀態(tài)的外部轉(zhuǎn)移優(yōu)先于內(nèi)部轉(zhuǎn)移被首先測(cè)試 內(nèi)部轉(zhuǎn)移僅在沒有有效的外部轉(zhuǎn)移使父狀態(tài)退出活動(dòng)狀態(tài)時(shí)被執(zhí)行 內(nèi)部轉(zhuǎn)移優(yōu)先于子狀態(tài)之間的轉(zhuǎn)移被首先測(cè)試狀態(tài)圖層次狀態(tài)動(dòng)作vs轉(zhuǎn)移測(cè)試 狀態(tài)入口動(dòng)作在默認(rèn)轉(zhuǎn)移之前被執(zhí)行 狀態(tài)的during或on-event動(dòng)作在內(nèi)部轉(zhuǎn)移之前被執(zhí)行 例例exp15狀態(tài)圖層次子狀態(tài)圖 子狀態(tài)圖是從父狀態(tài)圖中創(chuàng)建的 它在功能上有別于父狀態(tài) 子狀態(tài)利用灰色圖塊隱藏內(nèi)部細(xì)節(jié) 簡(jiǎn)化了狀態(tài)圖的復(fù)雜程度 子狀態(tài)圖更類似與Simulink的子系統(tǒng) 創(chuàng)建子狀態(tài)圖:右鍵單擊父狀態(tài)彈出快捷菜單,使用Make Contents子菜單,選擇Subcharted命令狀態(tài)圖層次子狀態(tài)圖

31、之間超轉(zhuǎn)移 從源狀態(tài)出發(fā),左鍵拖放轉(zhuǎn)移 將轉(zhuǎn)移拖過(guò)目標(biāo)狀態(tài)的邊界,這時(shí)在子狀態(tài)圖中心將出現(xiàn)一個(gè)蟲孔 繼續(xù)拖放轉(zhuǎn)移到蟲孔中心,編輯窗體將自動(dòng)切換到子狀態(tài)圖的內(nèi)部,顯示子圖的細(xì)節(jié) 繼續(xù)拖放轉(zhuǎn)移,到最終的子狀態(tài)的邊界,這樣完成了超轉(zhuǎn)移的設(shè)置 蟲孔蟲孔狀態(tài)圖層次狀態(tài)轉(zhuǎn)移流程圖 狀態(tài)之間的轉(zhuǎn)移可以使用流程圖來(lái)完成復(fù)雜的邏輯控制 一旦發(fā)生了觸發(fā),狀態(tài)轉(zhuǎn)移中的流程圖就會(huì)被執(zhí)行,直到其中的一個(gè)分支到達(dá)了某個(gè)狀態(tài) 如果存在終點(diǎn)是連接節(jié)點(diǎn)的轉(zhuǎn)移分支,這個(gè)轉(zhuǎn)移被認(rèn)為無(wú)效 例例exp16狀態(tài)圖層次狀態(tài)中的流程圖包含于狀態(tài)中,而沒有狀態(tài)終點(diǎn)的流程圖能夠控制動(dòng)作的執(zhí)行每次狀態(tài)被激活,則流程圖被執(zhí)行一次流程圖的運(yùn)行直到流程

32、圖到達(dá)終點(diǎn)的節(jié)點(diǎn),或者沒有有效的轉(zhuǎn)移路徑為止當(dāng)流程圖運(yùn)行結(jié)束后,父狀態(tài)保持活動(dòng)狀態(tài)狀態(tài)圖層次定義狀態(tài)本地?cái)?shù)據(jù) 可以將數(shù)據(jù)對(duì)象的作用范圍定義成為L(zhǎng)ocal或者靜態(tài),這樣數(shù)據(jù)對(duì)象的有效范圍就可以在某個(gè)狀態(tài)內(nèi)部了 通過(guò)瀏覽器的狀態(tài)列表,執(zhí)行瀏覽器的Tool菜單下的命令,可以為狀態(tài)添加本地?cái)?shù)據(jù)對(duì)象 利用瀏覽器的狀態(tài)列表,可以右鍵拖放本地?cái)?shù)據(jù)對(duì)象到其他的狀態(tài)中狀態(tài)狀態(tài)添加數(shù)據(jù)按鈕添加數(shù)據(jù)按鈕狀態(tài)圖層次訪問(wèn)數(shù)據(jù)對(duì)象 在其他狀態(tài)中訪問(wèn)其他狀態(tài)的數(shù)據(jù)對(duì)象 ,需使用下面的語(yǔ)法結(jié)構(gòu):state_name.data_name 如果父狀態(tài)中存在與本地?cái)?shù)據(jù)對(duì)象名稱一致的數(shù)據(jù)對(duì)象,訪問(wèn)這個(gè)數(shù)據(jù)對(duì)象時(shí)也要使用下列語(yǔ)法結(jié)構(gòu):

33、parent_name.data_name狀態(tài)圖層次圖形函數(shù) 圖形函數(shù)是指在狀態(tài)圖中以圖形方式存在的函數(shù) 主要結(jié)構(gòu)形式是狀態(tài)圖的流程圖 函數(shù)一旦被創(chuàng)建,就可以重復(fù)使用 允許包含輸入輸出接口來(lái)調(diào)用相應(yīng)的動(dòng)作或者條件狀態(tài)圖層次創(chuàng)建圖形函數(shù)內(nèi)容提要 Stateflow入門介紹及基本概念 創(chuàng)建狀態(tài)圖 狀態(tài)轉(zhuǎn)移 流程圖建模 狀態(tài)圖的層次 并行機(jī)制并行機(jī)制并行機(jī)制概念 邊框?yàn)樘摼€的狀態(tài)表示為并行狀態(tài) 當(dāng)父狀態(tài)處于活動(dòng)狀態(tài)時(shí),并行狀態(tài)也處于活動(dòng)狀態(tài) 將默認(rèn)轉(zhuǎn)移終止到并行的狀態(tài)時(shí)非法的并行機(jī)制設(shè)置狀態(tài)解析關(guān)系 設(shè)置狀態(tài)的并行關(guān)系需要將狀態(tài)默認(rèn)的解析關(guān)系從互斥變?yōu)椴⑿?用鼠標(biāo)右鍵單擊狀態(tài)的父狀態(tài),注意不是每個(gè)狀

34、態(tài),然后在Decomposition子菜單下選擇Parallel命令 對(duì)于頂層的狀態(tài),直接在圖形編輯器背景右鍵單擊,然后在Decomposition子菜單下選擇Parallel命令并行機(jī)制使用層次的并行狀態(tài) 可以在任意的層次上設(shè)置并行狀態(tài) 在同一個(gè)層次上的不同狀態(tài)的解析關(guān)系必須保持一致 即在某個(gè)層次上,所有的狀態(tài)要么是互斥的,要么就是并行的,兩種解析狀態(tài)是不可能同時(shí)存在于同一個(gè)父中 并行機(jī)制并行狀態(tài)的激活順序 并行狀態(tài)的激活是有一定順序的 并行狀態(tài)的激活順序在每一個(gè)狀態(tài)的右上角標(biāo)明 激活次序一般按照“從上至下,從左至右”的規(guī)則激活次序標(biāo)注激活次序標(biāo)注并行機(jī)制并行狀態(tài)執(zhí)行順序 在并行狀態(tài)中的所有

35、有效的狀態(tài)(包含子狀態(tài))執(zhí)行到下一個(gè)有效的狀態(tài)被執(zhí)行為止 exp19執(zhí)行一次的結(jié)果:out=1out=4out=8out=11并行機(jī)制本地事件廣播使用事件廣播,可以在某個(gè)狀態(tài)內(nèi)部觸發(fā)其他并行狀態(tài)的執(zhí)行被廣播的事件在數(shù)據(jù)字典中定義為L(zhǎng)ocal 。例例exp20事件廣播事件廣播并行機(jī)制本地事件優(yōu)先級(jí) 本地事件廣播的優(yōu)先級(jí)相當(dāng)于函數(shù)調(diào)用 當(dāng)出現(xiàn)事件廣播時(shí),原有的執(zhí)行順序被打斷,直到所有與事件廣播有關(guān)的動(dòng)作執(zhí)行完畢 PLAY廣播事件時(shí),先執(zhí)行與其有關(guān)的動(dòng)作 見例見例exp21并行機(jī)制直接事件廣播 使用直接事件廣播可以限制廣播的事件觸發(fā)指定的狀態(tài) 可以防止事件廣播無(wú)意識(shí)的改變整個(gè)狀態(tài)圖的狀態(tài) 使用直接事

36、件廣播的命令格式:send(event_name,state_name) 例例exp22并行機(jī)制定義狀態(tài)的本地事件 可以限制事件的作用范圍在狀態(tài)的內(nèi)部 :在瀏覽器種選擇某個(gè)狀態(tài) 使用瀏覽器的Add 菜單添加事件到數(shù)據(jù)字典也可以通過(guò)瀏覽器修改事件的可見范圍 也可以修改事件到不同的狀態(tài)中 并行機(jī)制受限事件廣播 狀態(tài)之外觸發(fā)狀態(tài)的本地事件需要指定狀態(tài)名,命令格式為:state_name.data_name 使用受限的事件廣播可以將事件限制在具體的狀態(tài)內(nèi)例例exp23并行機(jī)制隱含事件和條件 有助于簡(jiǎn)化并行狀態(tài)之間的依賴關(guān)系 減少數(shù)據(jù)字典中定義的事件數(shù)量,降低狀態(tài)圖的復(fù)雜程度 隱含事件 :entry(s

37、tate_name) 或en(state_name)exit(state_name) 或ex(state_name)change(data_name) 或chg(data_name)wakeup 或tick 隱含條件:in(state_name)并行機(jī)制使用隱含事件和條件例例exp24并行機(jī)制時(shí)間邏輯事件使用時(shí)間邏輯事件,可以根據(jù)事件發(fā)生的次數(shù)決定事件的邏輯轉(zhuǎn)換 時(shí)間邏輯操作符(at, every,after和before)分別完成相應(yīng)的Boolean 運(yùn)算,處理Stateflow事件的發(fā)生次數(shù) 時(shí)間邏輯可以 :監(jiān)測(cè)轉(zhuǎn)移 控制on-event狀態(tài)動(dòng)作 語(yǔ)法:temporal_operator(

38、number,event_name) Stateflow中有四種時(shí)間邏輯:at(n,event) : 當(dāng)事件第n 次觸發(fā)時(shí) every(n,event) :當(dāng)事件每觸發(fā)n 次時(shí)after(n,event) :當(dāng)事件觸發(fā)n 次后before(n,event) :當(dāng)事件第n 次觸發(fā)前 例例exp25并行機(jī)制時(shí)間邏輯事件(續(xù)) 下列情況下,事件計(jì)數(shù)器清零 :具有時(shí)間邏輯轉(zhuǎn)移的源狀態(tài)進(jìn)入活動(dòng)狀態(tài)具有on-event 狀態(tài)動(dòng)作使用時(shí)間邏輯運(yùn)算符的父狀態(tài)被激活時(shí)stateflow基本概念狀態(tài)機(jī) 有限元狀態(tài)機(jī)是具有有限個(gè)狀態(tài)的系統(tǒng)的理論表述。它以某些缺省的狀態(tài)為起點(diǎn),根據(jù)所定義的事件和轉(zhuǎn)移進(jìn)行操作。轉(zhuǎn)移表示

39、狀態(tài)機(jī)如何對(duì)事件進(jìn)行響應(yīng)。它有明確的輸入和輸出個(gè)數(shù),可以明確地配置所有的模式或狀態(tài)。它定義了導(dǎo)致系統(tǒng)從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)的邏輯或事件 直觀理解:模型中包含的所有stateflow塊的集合stateflow基本概念狀態(tài) 在有限元狀態(tài)機(jī)里,狀態(tài)描述的是系統(tǒng)的一種模式。狀態(tài)具有布爾行為,也就是說(shuō)在任何給定的時(shí)刻它或者是活動(dòng)的或者是非活動(dòng)的。 狀態(tài)在系統(tǒng)中被看作為記憶元件。它保持系統(tǒng)的當(dāng)前模式,一旦被激活,狀態(tài)就保持活動(dòng)的模式,直到系統(tǒng)改變模式,狀態(tài)才變?yōu)榉腔顒?dòng)的。 在層次的同一級(jí)里,所有的狀態(tài)要么是互斥(OR)的要么并行(AND)的。如果狀態(tài)之間是互斥的,那么在任何給定的時(shí)刻只有一個(gè)狀態(tài)是活動(dòng)的,如果狀態(tài)之間是并行的,在同一時(shí)刻所有的狀態(tài)都是活動(dòng)的。在同一級(jí)里面不可能有既是互斥的又是并行的狀態(tài)存在。它們必須是或者互斥或者并行。stateflow基本概念轉(zhuǎn)移 轉(zhuǎn)移描述的是有限狀態(tài)系統(tǒng)內(nèi)的邏輯流。轉(zhuǎn)移管理了當(dāng)系統(tǒng)從當(dāng)前狀態(tài)改變時(shí),這個(gè)系統(tǒng)可能發(fā)生的模式改變。當(dāng)轉(zhuǎn)移發(fā)生時(shí),源狀態(tài)變?yōu)榉腔顒?dòng)的,目標(biāo)狀態(tài)變?yōu)榛顒?dòng)的。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論