1. 程式人生 > >labview的深入探索-----狀態機的基本概念

labview的深入探索-----狀態機的基本概念

狀態機不是LABVIEW獨有的概念,早在LABVIEW誕生之前,就有了狀態機(STATE MACHINE)的概念,只所以在LABVIEW程式設計中經常強調狀態機是因為LABVIEW特有的圖形程式設計方式特別適合於採用狀態機模式程式設計,在PLC中有流程圖的程式設計方式,從本質上說,那是一種特殊的狀態機。

STATE MACHINE包括三個基本要件,STATE、EVENT 、ACTION,狀態、事件和動作

狀態:是一個抽象的概念在一定條件下或者一定時間內保持不變,等待一個或幾個事件的發生,命名狀態時,往往可以用等待--來定義。

事件:是一個瞬時的概念,表示某件事情發生了,一旦有關的事件發生了,勢必要採取某種動作。


動作:表示一旦事件發生,採取何種處理方式,處理的結果就是另一個穩定的狀態。

狀態(等待事件)---》事件發生----》採取動作----》另一個狀態。

狀態機的概念是非常簡單的,越是簡單的東西越不容易處理,原因是簡單則限制少,則靈活,狀態機設計的好壞完全取決於程式設計者的水平,這不僅僅指LABVIEW程式設計的水平,更重要的是程式設計者的邏輯思維,一個好的狀態機的設計,關鍵是如何定義狀態,狀態少了,則意味著每一個狀態中要處理的事務多了,狀態多了,則整個狀態機就變的複雜了。

以一個簡單的紅綠燈控制來說,簡單地說有兩個狀態,紅色狀態和綠色狀態,事件是綠燈時間到和紅燈時間到,綠色時間到觸發的動作是,綠色燈滅,紅色燈量,紅色時間到觸發的動作是紅色滅,綠燈量。


我過去的文章中多次提到ACTION ENGINE的概念,它與狀態機的區別是,它僅僅定義了ACTION,而沒有定義STATE和EVENT,因此,它的ACTION完全取決於程式設計者,而狀態機自己本身就可以根據內部或者外部條件的變化,自動採取相應的動作,轉入其它的狀態,實現控制自動化。

有多種形式的STATE MACHINE,我將在後續的文章中陸續介紹,先看一下紅綠燈的實現過程,假如綠燈亮20秒,紅燈亮10秒。

先定義三個基本狀態:初始化(僅在第一次呼叫時發生),等待綠燈結束和等待紅燈結束。
LABVIEW的嚴格列舉資料型別是LABVIEW狀態機定義狀態的最好工具,使用狀態機時,必須要使用這種資料型別,好處是增加或者減少狀態,程式可以自動更新。