周 建,王 健
(杭州電子科技大學電子信息學院,浙江杭州310018)
μC/OS 的層次式狀態(tài)機在人機界面中的應用
周 建,王 健
(杭州電子科技大學電子信息學院,浙江杭州310018)
為提高人機界面設計中軟件的可靠性和可擴展性,該文提出一種基于層次式有限狀態(tài)機的人機界面設計方法,針對嵌入式系統高實時性的要求,將μC/OS-II操作系統應用于人機界面的設計之中,使得人機界面顯示任務層次化、結構化。將層次式有限狀態(tài)機的設計方法在硬件平臺上予以應用,并在該硬件平臺上設計并實現人機界面。
微控制系統;狀態(tài)機;人機界面;事件驅動
隨著電子技術和計算機技術的迅猛發(fā)展,人機界面已經廣泛應用于工業(yè)儀表、通信、消費電子等領域。由于工業(yè)儀器定制化[1]的特點,導致人機界面的設計在可擴展性、可靠性、實時性、可復用性、軟硬件耦合度等方面提出了更高的要求。現階段,國內外研究都針對當前儀器人機界面[2]中軟硬件耦合性過強、軟件復用性差、開發(fā)周期長等缺點進行了改進,其中,國外研究提出了新的人機界面設計思想。本文提出并實現在μC/OS-II操作系統基礎上將層次式有限狀態(tài)機[3]應用于人機界面的設計,使得人機界面的顯示和刷新都由事件觸發(fā)完成,實現人機界面良好可靠的顯示。
層次式有限狀態(tài)機是一種應用非常廣泛的軟件設計方法,其作用主要是描述對象在它的生命周期內所經歷的狀態(tài)序列,引起狀態(tài)轉移的事件,以及因狀態(tài)轉移而伴隨的動作。設計層次式有限狀態(tài)機需要采用對象行為建模工具[4],在面向對象的軟件系統中,一個對象無論簡單或者復雜,都必然會經歷一個從開始創(chuàng)建到最終消亡的完整過程,這通常被稱為對象的生命周期。對象在其生命期內是不可能完全孤立的,它必須通過發(fā)送消息來影響其它對象,或者通過接收消息來改變自身。一般可以用狀態(tài)機對一個對象的生命周期建模,狀態(tài)圖用于顯示狀態(tài)機中狀態(tài)轉移圖。
狀態(tài):對象的生命周期中滿足某種條件,執(zhí)行某些動作或等待某些事件發(fā)生的階段。
事件:事件是一個在時空中顯示出現的特定現象或信號,它可以觸發(fā)狀態(tài)轉換。
轉換:轉換是從一個狀態(tài)結點到另一個狀態(tài)結點的移動。
行為繼承:狀態(tài)嵌套允許子狀態(tài)繼承來自超狀態(tài)中的某些行為操作。
在層次式有限狀態(tài)機中,每個基狀態(tài)都對應一個超狀態(tài),多個子狀態(tài)機相互協作的狀態(tài)機子群構成一個低層次的有限狀態(tài)機。這樣子群內狀態(tài)機間的層次和邏輯關系構成了相應有限狀態(tài)機間的層次和邏輯關系。如圖1所示。屬于父狀態(tài)機的是狀態(tài)1,屬于子狀態(tài)2和狀態(tài)3。層次式狀態(tài)機初始化時進入狀態(tài)1,在狀態(tài)1下經過不同的觸發(fā)事件E或者G轉換到狀態(tài)2或者狀態(tài)3;同理,在其他狀態(tài)下,經過不同的驅動事件,狀態(tài)機發(fā)生相應的轉移。圖1描述在不同事件的驅動下發(fā)生的狀態(tài)轉移。在人機界面的設計中,需要定義子狀態(tài)行為和父狀態(tài)行為的不同之處,而子狀態(tài)可以重用父狀態(tài)中定義的行為。極大方便了代碼的可擴展性和維護性。
圖1 簡單層次狀態(tài)圖
μC/OS是專門為計算機的嵌入式應用設計的實時操作系統,具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良、可移植性優(yōu)和可擴展性強等特點。μC/OS-II采用的是基于優(yōu)先級調度、可剝奪型實時多任務內核,在任何時候μC/OS-II都運行就緒了的最高優(yōu)先級的任務。最高優(yōu)先級的任務一旦處于就緒狀態(tài),則立即搶占正在運行的低優(yōu)先級任務的處理器資源。
在人機界面的設計中使用μC/OS-II操作系統可以保證界面刷新顯示的及時性,結合層次式有限狀態(tài)機[2]保證了對外部事件驅動進行及時處理。
人機界面(Human Machine Interface,HMI)是一種良好的交互語言,良好的界面顯示極大方便了使用者。分析儀器中普遍采用HM I來顯示儀器的狀態(tài)、儀器故障、測量結果等信息。基于層次式有限狀態(tài)的思想來設計分析儀器中HM I的模型如圖2所示。圖2中HMI的切換都是通過事件來進行驅動觸發(fā)的,利用μC/OS-II中OSQPend()函數來查詢消息隊列中是否存在狀態(tài)機的事件,可以保證狀態(tài)機對事件響應的實時性,以便及時刷新顯示界面。層次式有限狀態(tài)機根據用戶事件和系統保留事件驅動狀態(tài)機的切換和執(zhí)行。在HMI設計中,系統根據鍵盤輸入的信息,操作系統會向對狀態(tài)機進行分發(fā)相應的驅動事件,從而完成HMI的刷新和顯示。
層次式有限狀態(tài)機包含許多行為,并且狀態(tài)之間的關系需要根據建立的結構模型來確定。當有限個子狀態(tài)具有共同的行為事件驅動,則子狀態(tài)可以將該行為事件交給共同的父狀態(tài)來統一處理。色譜分析系統中HMI設計中包含很多狀態(tài),在此并沒有畫出所有的狀態(tài),現以部分狀態(tài)結構圖來說明層次式有限狀態(tài)機的工作原理以及程序實現。如圖3所示。
系統啟動初始狀態(tài)為主界面,即為系統的父狀態(tài)或超狀態(tài),其它各子狀態(tài)由此進行躍遷。每進入一個狀態(tài)首先要進行該狀態(tài)的初始化工作,有限狀態(tài)機的實現需要定義進入、退出、超時、初始化等系統事件以及用戶自定義的事件。其中,用戶自定義事件由用戶程序自行處理,其余事件皆由系統自身處理。系統中層次式狀態(tài)機在任一狀態(tài)下,可以通過μC/OS-II中的系統函數獲取狀態(tài)機中的消息事件,如果有事件驅動,系統則在當前狀態(tài)下對事件進行處理并發(fā)生狀態(tài)的躍遷,每進入一個狀態(tài)首先對該狀態(tài)進行初始化工作,在對事件處理的同時刷新HM I的顯示。若發(fā)生事件驅動,當前狀態(tài)不能對該事件進行處理,則將事件交付給其父狀態(tài)處理,若父狀態(tài)無法處理事件,則將事件交給父狀態(tài)的父狀態(tài)進行處理,直至事件被處理。最高層(TOP)可以處理任何事件。在事件被處理的過程中,狀態(tài)機發(fā)生相應狀態(tài)躍遷[5]并根據事件刷新HMI的切換。如圖4所示層次式有限狀態(tài)機在HMI應用中的顯示界面。
層次式有限狀態(tài)機在HMI的設計中用到的主要函數說明:
(1)#define Q_TRAN(target)QHsmTran((QHsm*)me,(QState)(target))
圖2 一級狀態(tài)轉換圖
圖3 部分狀態(tài)機結構圖
圖4 HM I應用截圖
主要功能是實現狀態(tài)機中狀態(tài)的切換和轉移;
(2)#define Q_SUPER(super_)(((QHsm*)me)->state=QStateHandler)(super_),Q_RET_SUPER)
主要功能是在狀態(tài)機中指定一個給定狀態(tài)的父狀態(tài);
(3)#define QHsm_ctor(me_,initial_)((me_)->state=(initial_))
主要功能是構建狀態(tài)機,并賦給狀態(tài)機一個初始狀態(tài);
(4)Void QHSMDispatch(QHsm*me);
主要功能是實現狀態(tài)機對事件或者信號的處理或者響應;
(5)QState QHSMTop(QHsm*me);
QHSMTop()是狀態(tài)機中最根本、最高的狀態(tài),能處理任何信號或者事件。
上述函數完成層次式有限狀態(tài)機在HMI中的初始化、事件的處理、狀態(tài)的轉移。層次式有限狀態(tài)機的使用與建模密不可分,合理的狀態(tài)機建模可以為在后續(xù)開發(fā)和設計中節(jié)省大量的工作。
采用基于層次式有限狀態(tài)機的思想來設計HMI,并根據氣相色譜分析儀器中實際應用的需求,選用MCF52259作為主控芯片,輔之以μC/OS-Ⅱ操作系統,在氣相色譜分析儀器系統中實現HMI。氣相色譜分析儀器系統設計架構如圖5所示。氣相色譜分離混合物的原理是根據混合氣體不同成分的沸點,通過色譜柱溫度的變化使得氣體分離,檢測器對分離出來的氣體成分濃度進行檢測,將檢測到的信號進行處理,通過HMI顯示模塊將測量成分及其濃度顯示出來,從而完成氣相色譜對混合氣體的分離和檢測。在系統中實現了完整的以層次式有限狀態(tài)機為建模思想的HM I的顯示。
圖5 硬件架構圖
嵌入式HM I具有典型的反應式系統的特點,本文通過具體實例闡述層次式狀態(tài)機的構造方法,結合μC/OS-Ⅱ實時操作系統,采用MCF52259的硬件平臺,設計嵌入式HMI,很好地完成了氣相色譜分析系統和HMI中各種復雜狀態(tài)的轉變和相應界面顯示。實際應用表明,用層次式有限狀態(tài)機方法實現人機界面易于擴展菜單,界面轉換迅速、穩(wěn)定可靠、復用性好并有效降低軟硬件的耦合度。
[1]唐東平.網絡時代的人機交互發(fā)展研究[J].礦山機械,2006,34(6):116-118.
[2]盧國偉,蔡武昌.2004年日本工業(yè)自動化儀表概況分析[J].世界儀表與自動化,2006,10(5):20-20.
[3]吉峰,白瑞林.基于UML和μC/OS-II的嵌入式系統設計[J].微計算機應用,2005,26(4):495-497.
[4]李潤博,李明樹.基于狀態(tài)機的UML行為繼承關系[J].計算機科學,2004,31(1):16-19.
[5]劉剛.基于層次式有限狀態(tài)機的織造控制任務設計[J].紡織學報,2008,29(8):25-29.
Human Machine Interface Design BasedμC/OS and Hierarchical Finite State Machine ZHOU Jian,WANG Jian
(School of Electronics Information,Hangzhou Dianzi University,Hangzhou Zhejiang310018,China)
To improve the human-machine interface design in software reliability and scalability,the paper presentsamethod todesign human-machine interface(HMI),which used hierarchical finite statemachineandμC/OS-IIoperating system with real-time demands.TheμC/OS-IIoperating system used in the design of humanmachine interface,making human-machine interface display more hierarchical,structured.Themethod will be applied in the hardware platform to design and implement Human-Machine interface.
μC/OS;statemachine;HMI;event-driven
TP393
A
1001-9146(2010)05-0037-04
2010-07-20
周建(1985-)男,湖北鄂州人,在讀研究生,嵌入式系統.