教我用 stateflow_stateflow 代碼生成_第三日:SimuLink之后是Stateflow
本文關(guān)鍵詞:stateflow,由筆耕文化傳播整理發(fā)布。
第三日:SimuLink之后是stateflow
經(jīng)過兩日的學(xué)習(xí),對SimuLink已經(jīng)有了基本的了解。今后的應(yīng)用主要集中于基于底層的控制邏輯,需要用到SimuLink的Stateflow進行開發(fā),因此開始了對stateflow的了解。
stateflow的相關(guān)資料比較少,下載了一些還在學(xué)習(xí);同步開始的對MATLAB自帶help的Demo的學(xué)習(xí)就有些困難了,一方面是語言障礙(對英語不是很熟練)所致,另一方面那些Demo本身就比較復(fù)雜,第一個例子家用報警器湊合能懂工作過程,其有限狀態(tài)機就不懂了;第二個雙電梯就只能望洋興嘆,空嘆其精巧而不知所云了。明天晚上起要外出幾天,直到下周二才能回來繼續(xù),學(xué)習(xí)進度稍微放緩一下。
本來打算早點回去,不過感覺晚上什么也沒做,有些不甘心,硬著頭皮繼續(xù)看《基于MATLAB7.x+SIMULINK_STATEFLOW系統(tǒng)仿真、分析及設(shè)計》(這本書pdf很好找)后面的例子。第一個例子很簡單,不過對于我這樣連本科時學(xué)的一點MATLAB皮毛都忘得差不多的人來說還是有些吃力。根據(jù)例子基本搞懂了Stateflow的狀態(tài)(State)、驅(qū)動狀態(tài)轉(zhuǎn)換的事件(Event)、數(shù)據(jù)(Data)這三個stateflow的核心元素以及之間的關(guān)系。例子是一個簡單的狀態(tài)轉(zhuǎn)換,有兩個輸入,一個輸出,一個有限狀態(tài)機。一開始沒明白為什么是兩個輸入(激勵信號),而且對于兩個事件(on_switch和off_switch),只有特定的一個輸入能觸發(fā)一個事件。后來對事件對應(yīng)的input端口號port進行了觀察,并且分析了復(fù)用模塊(mux)的工作原理(外觀是一根線,但實際是兩根線分別接入chart),才明白了兩個輸入信號分別對應(yīng)兩個事件的input,這才基本搞明白。附圖如下:
通過搞明白這個例子,算是額外完成了點學(xué)習(xí)任務(wù),終于初窺門徑了。。。
另外補充一下狀態(tài)遷移標(biāo)記的一般形式:觸發(fā)事件[遷移條件關(guān)系式]{條件動作}/遷移動作。
觸發(fā)事件主要用于標(biāo)記Event的名稱;條件關(guān)系式一般是布爾表達式,,為真時有效,引發(fā)遷移;條件動作表示條件關(guān)系式一旦為真就執(zhí)行的動作;遷移動作是指當(dāng)遷移終點已經(jīng)確認有效才執(zhí)行的動作,即整個遷移完成時才執(zhí)行的動作。
posted on
本文關(guān)鍵詞:stateflow,由筆耕文化傳播整理發(fā)布。
本文編號:100351
本文鏈接:http://sikaile.net/wenshubaike/shangbiaozhuanli/100351.html