基于有限狀態(tài)機(jī)的自動(dòng)售貨機(jī)控制器
售貨機(jī)上除基本自動(dòng)售貨功能外,增加了諸多功能,如GPRS短信模塊以加強(qiáng)安全監(jiān)控,在售貨機(jī)上播放視頻廣告以提高運(yùn)營(yíng)商的經(jīng)濟(jì)效益等。這就使得存在于售貨機(jī)內(nèi)部的控制器(Vencling Machine Controller,VMC)的復(fù)雜程度也迅速增加,先前的一套用于小規(guī)模嵌入式系統(tǒng)的分析設(shè)計(jì)方法、應(yīng)用程序結(jié)構(gòu)、運(yùn)行效率與易維護(hù)程度在當(dāng)前的售貨機(jī)需求面前顯得有些力不從心了。有限狀態(tài)機(jī)理論在計(jì)算機(jī)應(yīng)用領(lǐng)域有著廣泛的應(yīng)用,狀態(tài)機(jī)對(duì)處理一些復(fù)雜情況也大有裨益。在設(shè)計(jì)階段,開(kāi)發(fā)人員可以利用狀態(tài)機(jī)模型來(lái)描述復(fù)雜的系統(tǒng),從而大大縮短項(xiàng)目的開(kāi)發(fā)周期,且系統(tǒng)易于維護(hù)。魏先民提出了有限狀態(tài)機(jī)在嵌入式領(lǐng)域應(yīng)用的一個(gè)基本框架,但是在這個(gè)框架中,系統(tǒng)中的所有狀態(tài)都是互斥的關(guān)系,盡管有些狀態(tài)之間存在著緊密的關(guān)系。V.Ayvazyan等論述了狀態(tài)之間不僅存在互斥關(guān)系,還存在包含關(guān)系(父狀態(tài)與子狀態(tài))。本文應(yīng)用有限狀態(tài)機(jī)的這些特性,提出一個(gè)層次型有限狀態(tài)機(jī)(Hierarchical FSM,HFSM)模型,對(duì)售貨機(jī)控制器(VMC)進(jìn)行改進(jìn)。
1 有限狀態(tài)機(jī)
有限狀態(tài)機(jī)是一種具有離散輸入輸出系統(tǒng)的模型,在任何時(shí)刻都處于一個(gè)特定的狀態(tài)。對(duì)于事件驅(qū)動(dòng)的程序設(shè)計(jì),它是非常有用的設(shè)計(jì)模型。在某一個(gè)狀態(tài)下有事件發(fā)生時(shí),根據(jù)當(dāng)前狀態(tài)和輸入事件的不同,選擇如何處理該事件以及是否需要轉(zhuǎn)換到下一個(gè)狀態(tài)。一個(gè)有限狀態(tài)機(jī)(FSM)是一個(gè)五元組,M=(K,E,T,S,Z)。其中,K是一個(gè)有限的狀態(tài)集合,它的每個(gè)元素稱(chēng)為“狀態(tài)”;E表示該系統(tǒng)能接收的所有事件的集合,它的每個(gè)元素稱(chēng)為一個(gè)“事件”;T是狀態(tài)轉(zhuǎn)換函數(shù),是K×E→K上的映射;S是系統(tǒng)的一個(gè)特殊狀態(tài),一般是系統(tǒng)啟動(dòng)時(shí)的初始狀態(tài);Z是K的一個(gè)子集,是一個(gè)終態(tài)集。
有限狀態(tài)機(jī)一般有2種表示方式:狀態(tài)轉(zhuǎn)移表和狀態(tài)轉(zhuǎn)移圖。通常用有向圖來(lái)表示有限狀態(tài)機(jī),其節(jié)點(diǎn)代表狀態(tài)。如圖1所示,若在狀態(tài)SO接收到某個(gè)輸入事件e1后轉(zhuǎn)向S1狀態(tài),就在圖中畫(huà)一條從SO到Sl的帶箭頭的弧線,并在弧線上標(biāo)記e1。
2 基本思想
2.1 必要性分析
有限狀態(tài)機(jī)是通過(guò)事件來(lái)觸發(fā)狀態(tài)的轉(zhuǎn)變的,其事件來(lái)源主要有2個(gè):其一是外部觸發(fā)事件,如響應(yīng)用戶鍵盤(pán)的輸入;其二是內(nèi)部觸發(fā)事件,如系統(tǒng)所發(fā)出來(lái)的各種命令。有限狀態(tài)機(jī)這種事件驅(qū)動(dòng)的特性具有良好的開(kāi)放性,可以根據(jù)用戶的要求方便地增加相應(yīng)的狀態(tài)與事件,完成系統(tǒng)功能的擴(kuò)展。本文所研究的自動(dòng)售貨機(jī)配有1個(gè)5×5的管理鍵盤(pán)和1個(gè)3×7用戶鍵盤(pán),二者復(fù)用了部分的鍵盤(pán)掃描線;另外有37個(gè)外部事件源,加上幾條內(nèi)部命令,可能觸發(fā)的事件達(dá)45個(gè)。如此多的事件,當(dāng)某個(gè)事件發(fā)生時(shí),如果采用if…else或switch…case語(yǔ)句進(jìn)行一一判斷,將非常復(fù)雜。而采用有限狀態(tài)機(jī),每個(gè)狀態(tài)維護(hù)一張事件表,無(wú)需比較,大大提高了響應(yīng)速度;并且就擴(kuò)展需求較為頻繁的自動(dòng)售貨機(jī)而言,有限狀態(tài)機(jī)也是便于維護(hù)的。
2.2 實(shí)現(xiàn)方式
根據(jù)系統(tǒng)中各個(gè)狀態(tài)之間是否存在包含關(guān)系,有限狀態(tài)機(jī)可以分為常規(guī)狀態(tài)機(jī)與層次型狀態(tài)機(jī)(hierarchicalstate machine)。對(duì)于前者,系統(tǒng)中各個(gè)狀態(tài)是獨(dú)立的、互斥的,適合應(yīng)用于那些存在狀態(tài)數(shù)量不多的簡(jiǎn)單系統(tǒng);而對(duì)于后者,系統(tǒng)中的狀態(tài)除了互斥關(guān)系以外,還存在真包含的關(guān)系。
分析自動(dòng)售貨機(jī)這樣一個(gè)狀態(tài)機(jī),圖2為自動(dòng)售貨機(jī)的狀態(tài)圖(不完整)。
評(píng)論