新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > labview的深入探索-----狀態(tài)機(jī)的基本概念

labview的深入探索-----狀態(tài)機(jī)的基本概念

作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏
狀態(tài)機(jī)不是LABVIEW獨(dú)有的概念,早在LABVIEW誕生之前,就有了狀態(tài)機(jī)(STATE MACHINE)的概念,只所以在LABVIEW編程中經(jīng)常強(qiáng)調(diào)狀態(tài)機(jī)是因?yàn)長(zhǎng)ABVIEW特有的圖形編程方式特別適合于采用狀態(tài)機(jī)模式編程,在PLC中有流程圖的編程方式,從本質(zhì)上說(shuō),那是一種特殊的狀態(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í),往往可以用等待--來(lái)定義。

事件:是一個(gè)瞬時(shí)的概念,表示某件事情發(fā)生了,一旦有關(guān)的事件發(fā)生了,勢(shì)必要采取某種動(dòng)作。

動(dòng)作:表示一旦事件發(fā)生,采取何種處理方式,處理的結(jié)果就是另一個(gè)穩(wěn)定的狀態(tài)。

狀態(tài)(等待事件)---》事件發(fā)生----》采取動(dòng)作----》另一個(gè)狀態(tài)。

狀態(tài)機(jī)的概念是非常簡(jiǎn)單的,越是簡(jiǎn)單的東西越不容易處理,原因是簡(jiǎn)單則限制少,則靈活,狀態(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è)簡(jiǎn)單的紅綠燈控制來(lái)說(shuō),簡(jiǎn)單地說(shuō)有兩個(gè)狀態(tài),紅色狀態(tài)和綠色狀態(tài),事件是綠燈時(shí)間到和紅燈時(shí)間到,綠色時(shí)間到觸發(fā)的動(dòng)作是,綠色燈滅,紅色燈量,紅色時(shí)間到觸發(fā)的動(dòng)作是紅色滅,綠燈量。

我過(guò)去的文章中多次提到ACTION ENGINE的概念,它與狀態(tài)機(jī)的區(qū)別是,它僅僅定義了ACTION,而沒(méi)有定義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)過(guò)程,假如綠燈亮20秒,紅燈亮10秒。

先定義三個(gè)基本狀態(tài):初始化(僅在第一次調(diào)用時(shí)發(fā)生),等待綠燈結(jié)束和等待紅燈結(jié)束。
LABVIEW的嚴(yán)格枚舉數(shù)據(jù)類(lèi)型是LABVIEW狀態(tài)機(jī)定義狀態(tài)的最好工具,使用狀態(tài)機(jī)時(shí),必須要使用這種數(shù)據(jù)類(lèi)型,好處是增加或者減少狀態(tài),程序可以自動(dòng)更新。





評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉