matlab的stateflow(狀態(tài)流)簡(jiǎn)單應(yīng)用_第1頁(yè)
matlab的stateflow(狀態(tài)流)簡(jiǎn)單應(yīng)用_第2頁(yè)
matlab的stateflow(狀態(tài)流)簡(jiǎn)單應(yīng)用_第3頁(yè)
matlab的stateflow(狀態(tài)流)簡(jiǎn)單應(yīng)用_第4頁(yè)
matlab的stateflow(狀態(tài)流)簡(jiǎn)單應(yīng)用_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——matlab的stateflow(狀態(tài)流)簡(jiǎn)單應(yīng)用

發(fā)信人:xxhn(小湖南),信區(qū):MathTools

標(biāo)題:matlab的stateflow(狀態(tài)流)簡(jiǎn)單應(yīng)用--做一個(gè)計(jì)數(shù)器發(fā)信站:BBS水木清華站(ThuApr2418:00:572023),轉(zhuǎn)信

精華區(qū)里只有關(guān)于stateflow的英文介紹,再加上前幾天有網(wǎng)友問(wèn)我怎么用它,我就拿我以前用stateflow做的計(jì)數(shù)器來(lái)簡(jiǎn)單介紹一下stateflow的用法,希望能夠拋磚引玉。先介紹一下stateflow,從matlab的help中翻譯過(guò)來(lái)的,stateflow要與simulink一起使用,他是一個(gè)用來(lái)在控制和管理中設(shè)計(jì)和開發(fā)規(guī)律圖的工具(翻的不好,請(qǐng)大家見諒)。從我的理解來(lái)說(shuō),stateflow就是用來(lái)作狀態(tài)流圖的,可以用它設(shè)計(jì)一些狀態(tài)和各個(gè)狀態(tài)之間的轉(zhuǎn)換條件,然后放在simulink中仿真。

說(shuō)了這么多,我的手癢起來(lái)了,還是動(dòng)手做吧,^_^。

一.開啟simulink,新建一個(gè)model(保存為time.mdl),在simulink的左邊找到state

flow并選中他,將右邊的chart拖入新建的model中,雙擊這個(gè)chart,就出現(xiàn)了stateflow的編輯器,先介紹一下這里面能畫的東東(在左邊的工具欄上)

1.左邊工具欄上第一個(gè)圖標(biāo)是方框似的東東,將它拖入編輯器中,就表示一個(gè)狀態(tài)(state),雙擊它就可以在其中寫一些

命令,格式如下(%后面的是我自加的,便利解釋):name/%此狀態(tài)的名稱

entry:entryaction%剛轉(zhuǎn)換到此狀態(tài)時(shí)執(zhí)行entryactionduring:duringaction%在此狀態(tài)之中時(shí)執(zhí)行duringaction

exit:exitaction%退出此狀態(tài)時(shí)執(zhí)行exitaction

onevent_name:onevent_nameaction%當(dāng)某事件發(fā)生時(shí)執(zhí)行onevent_nameaction2.左邊工具欄上其次個(gè)圖標(biāo)是一個(gè)圓中有個(gè)H的東東,它的名字叫做歷史節(jié)點(diǎn)(HistoryJunction),可將他拖入一個(gè)狀態(tài)框中(就是上面說(shuō)的).一旦一個(gè)狀態(tài)框中有這個(gè)歷史節(jié)點(diǎn),在退出這個(gè)狀態(tài)時(shí)會(huì)將這個(gè)狀態(tài)的一些信息保存下來(lái),當(dāng)下次再進(jìn)入此狀態(tài)時(shí),此狀態(tài)的初始狀態(tài)就會(huì)是前面保存過(guò)的那些信息。

3.左邊工具欄上第三個(gè)圖標(biāo)是一個(gè)一根線指向一個(gè)方框的東東,叫默認(rèn)轉(zhuǎn)換(defaulttransition),把他拖到一個(gè)狀態(tài)的旁邊,它就會(huì)指向一個(gè)狀態(tài),表示系統(tǒng)啟動(dòng)后將首先進(jìn)入這個(gè)狀態(tài)。

4.左邊工具欄上第四個(gè)圖標(biāo)(他的樣子太繁雜了,不描述了,反正是最終一個(gè),呵呵)代表的東東,叫節(jié)點(diǎn)(Junction),它是便利畫狀態(tài)圖的,當(dāng)各個(gè)狀態(tài)之間的轉(zhuǎn)換很繁雜時(shí),可以設(shè)立中間節(jié)點(diǎn),將一些一致的轉(zhuǎn)換指向它,然后再由它指向各個(gè)狀態(tài)(或另一個(gè)中間節(jié)點(diǎn))

5.還得介紹一下畫轉(zhuǎn)換線(transition),將鼠標(biāo)放在一個(gè)狀態(tài)的旁邊,當(dāng)它變成+形

狀的時(shí)候,按下左鍵不動(dòng),就會(huì)拉出一條線來(lái),當(dāng)拉到另一個(gè)狀態(tài)旁邊時(shí)松開左鍵,這樣就畫出了一條由一個(gè)狀態(tài)指向另一個(gè)狀態(tài)的轉(zhuǎn)線,選中這條線,將鼠標(biāo)停留在上面,鼠標(biāo)會(huì)變成一個(gè)I的樣子,這時(shí)按下鼠標(biāo),就可以在上面寫語(yǔ)句,例:switch(switch事件使?fàn)顟B(tài)轉(zhuǎn)換)或[output>maxtime](當(dāng)此條件滿足時(shí)進(jìn)行狀態(tài)的轉(zhuǎn)變)。

二.再介紹一下stateflow是怎樣跟simulink通訊的,在stateflow編輯器中點(diǎn)tool菜單下的explore,在左邊支開time,選中chart,我們將在此添加一個(gè)事件和兩個(gè)數(shù)據(jù)(計(jì)數(shù)器所需要的)。

1.點(diǎn)Add菜單下event,在右邊就新產(chǎn)生了一行,將它的名字(name)改成switch,范圍

(scope)改成inputfromsimulink,觸發(fā)器形式(Trigger)改成Rising(其實(shí)這兒無(wú)所謂),此時(shí)你看看time.mdl,是不是chart模塊上方多了一個(gè)上升的標(biāo)志,此時(shí)在time.mdl添加一個(gè)pulsegenerator(在simulink\\sources里面),將他的輸出接到chart的上方,就表示每當(dāng)pulsegenerator產(chǎn)生的信號(hào)上升時(shí),switch事件發(fā)生。

2.再添加兩個(gè)data,點(diǎn)Add菜單下data,在右邊將他的名字改成output,scope改成outputtosimulink,此時(shí)time.mdl中chart就多出來(lái)一個(gè)輸出端口,它就是要給simulink用的,在這里output就是計(jì)數(shù)器的輸出(我們的目標(biāo)),可以接上一個(gè)scope或display看輸出結(jié)果(simulink/sinks下,怎么添加及連線就介紹了),再點(diǎn)add--data,將他的名字改成

maxtime,scope改成constant,將它的FrWs畫上勾,表示他是一個(gè)常量,將在matlab的workspace里設(shè)定,這里的含義就是計(jì)數(shù)器的最大值,當(dāng)計(jì)數(shù)器的輸出達(dá)到這個(gè)最大值時(shí),輸出將自動(dòng)清零,表示重新開始計(jì)數(shù)。添加完成后,就可關(guān)閉explore了。

三.有了上述的準(zhǔn)備,就可以在stateflow中畫狀態(tài)流圖了,還是在stateflow編輯器里,從左邊的工具欄上拉出一個(gè)狀態(tài)來(lái)(上面介紹過(guò)方法了),雙擊它,在其中寫上reset/%此狀態(tài)的名稱為reset

entry:output=0;%當(dāng)進(jìn)入此狀態(tài)時(shí),將output賦值為0,表示將計(jì)數(shù)器輸出清零再拉入一個(gè)默認(rèn)轉(zhuǎn)換(Defaulttransition,左邊工具欄上第三個(gè)),拖到reset狀態(tài)的旁

邊,使它指向reset狀態(tài),這樣就表示reset狀態(tài)將是系統(tǒng)啟動(dòng)后第一個(gè)進(jìn)入的狀態(tài)。再拉入一個(gè)狀態(tài),在其中寫上

count/%此狀態(tài)的名稱為count

entry:output++;%當(dāng)進(jìn)入此狀態(tài)時(shí),output加1,說(shuō)明計(jì)數(shù)器記一次數(shù)

此時(shí)再拖入一個(gè)節(jié)點(diǎn)(Junction,左邊工具欄上第四個(gè),其實(shí)可以不用,這兒是介紹一下他的用法),然后畫兩條轉(zhuǎn)換線(transition,上面介紹怎么畫了),一條由reset狀態(tài)指向這

個(gè)節(jié)點(diǎn),一條由count狀態(tài)指向這個(gè)節(jié)點(diǎn),在這兩條線都寫上switch,表示一旦switch事件發(fā)生,不管當(dāng)前是哪個(gè)狀態(tài),都將轉(zhuǎn)換到此節(jié)點(diǎn)上來(lái)(跟simulink聯(lián)系來(lái)講,就是當(dāng)time.m

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論