labview的深入探索-----狀態機的基本概念
STATE MACHINE包括三個基本要件,STATE、EVENT 、ACTION,狀態、事件和動作
狀態:是一個抽象的概念在一定條件下或者一定時間內保持不變,等待一個或幾個事件的發生,命名狀態時,往往可以用等待--來定義。
事件:是一個瞬時的概念,表示某件事情發生了,一旦有關的事件發生了,勢必要采取某種動作。
動作:表示一旦事件發生,采取何種處理方式,處理的結果就是另一個穩定的狀態。
狀態(等待事件)---》事件發生----》采取動作----》另一個狀態。
狀態機的概念是非常簡單的,越是簡單的東西越不容易處理,原因是簡單則限制少,則靈活,狀態機設計的好壞完全取決于編程者的水平,這不僅僅指LABVIEW編程的水平,更重要的是編程者的邏輯思維,一個好的狀態機的設計,關鍵是如何定義狀態,狀態少了,則意味著每一個狀態中要處理的事務多了,狀態多了,則整個狀態機就變的復雜了。
以一個簡單的紅綠燈控制來說,簡單地說有兩個狀態,紅色狀態和綠色狀態,事件是綠燈時間到和紅燈時間到,綠色時間到觸發的動作是,綠色燈滅,紅色燈量,紅色時間到觸發的動作是紅色滅,綠燈量。
我過去的文章中多次提到ACTION ENGINE的概念,它與狀態機的區別是,它僅僅定義了ACTION,而沒有定義STATE和EVENT,因此,它的ACTION完全取決于編程者,而狀態機自己本身就可以根據內部或者外部條件的變化,自動采取相應的動作,轉入其它的狀態,實現控制自動化。
有多種形式的STATE MACHINE,我將在后續的文章中陸續介紹,先看一下紅綠燈的實現過程,假如綠燈亮20秒,紅燈亮10秒。
先定義三個基本狀態:初始化(僅在第一次調用時發生),等待綠燈結束和等待紅燈結束。
LABVIEW的嚴格枚舉數據類型是LABVIEW狀態機定義狀態的最好工具,使用狀態機時,必須要使用這種數據類型,好處是增加或者減少狀態,程序可以自動更新。



評論