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