順序模式是我們最先接觸,也是最基本的一種程式設計模式, 程式按照固定的順序依次執行,結束(如圖1)
時改變程式的執行順序 (如圖2),在這種情況下,狀態機的引入就成了必然的結果。
如下圖所示,在labview中,任何乙個狀態機都是由三個基本部分構成的,首先外層是乙個while
迴圈,同時在while迴圈中包含有乙個條件結構, while迴圈用於維持狀態機的執行,條件結構用
以對各個不同的狀態迚行判斷,第三個基本部分是移位暫存器,用以將下乙個狀態傳遞到下一次
迴圈狀態判斷中。另外在乙個完整的狀態機中,我們一般還會提供初始狀態,每乙個狀態的執行
步驟以及下乙個狀態切換**等等。
除了前面提到的三個基本部分以外,狀態機的構建還有乙個技巧,就是使用列舉型常量來作為狀
態變數,相對於其它資料型別來說, 列舉常量表示了兩組成對的資料,一組是字串,一組是數
值,兩者一一對應,在前面板上,能直觀地看到字串。
為什麼要使用列舉型資料來作為狀態變數呢,因為列舉型資料和條件結構配合使用時相當方便。
第一,在條件結構的條件判斷框中,我們看到的將不是單純的數值,而是我們定義好的字串,
這樣直觀的表現形式給不同狀態的管理帶來了方便,另外,我們在條件結構上通過右鍵單擊,選
擇為每個值新增分支,就能夠自動地將條件結構根據列舉資料迚行展開,從而保證每個狀態的完
整性。
下面是乙個簡單的例子,在前面板上新增指示燈顯示現在所處狀態。從初始狀態start開始每個1秒按順序切換到下一狀態,到達最終狀態end時結束迴圈:
上面的那個例子太簡單,在實際的工程狀態機中, 很多時候會遇到乙個狀態可能往多個狀態轉換的情況,在這個時候,我
們能夠使用labview提供的附加的邏輯功能來實現下乙個狀態的判斷。如下圖所示的例子,在狀態框圖中有乙個子vi,利用該子vi(根據程
序實際的需要自行編寫
)來對選擇哪乙個分支為下一狀態進行
判斷。條件結構的多個分支分別對應了不同的下一狀態值,根據邏輯判斷子 vi 輸出的結果,跳入不同
的分支以選擇不同的狀態。
把所有待選擇的狀態放入陣列中,通過邏輯判斷子 vi 輸出不同的索引值直接從陣列中索引出下
乙個狀態輸出到移位暫存器。
有限狀態機
有限狀態機 finite state machine,fsm 又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。狀態儲存關於過去的資訊,就是說 它反映從系統開始到現在時刻的輸入變化。轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。動作是在給...
有限狀態機
以前,只碰到過 陣列中所有數字只出現2次,只有乙個出現1次,找這個數的問題 每次迴圈異或陣列中元素,最後的結果就是single one。這次換作出現3次就懵逼了,主要原因,沒有使用過有限狀態機,應該說是連概念都沒有,所以這次一定要好好記錄一下 關於這道題的解釋discussion中woshidais...
有限狀態機
需要掌握的名詞 數字系統有兩大類有限狀態機 finite state machine,fsm moore狀態機和mealy狀態機。狀態機名 次態輸出 moore摩爾 f 現狀,輸入 g 現狀 mealy公尺粒 f 現狀,輸入 g 現狀,輸入 mealy型狀態機 下一狀態不但與當前狀態有關,還與當前輸...