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