劉利明 ,謝 建 ,于傳強,唐媛莉
(1.第二炮兵工程大學 陜西 西安 710025;2.96627部隊 北京 100085)
某電控模擬系統軟件設計的關鍵工作就是對操作訓練過程中所有可能發生的過程及過程狀態之間的轉移關系進行描述。傳統的事件驅動設計思想,通過建立作為控制程序基本單元的事件例程之間的邏輯關系及響應程序,實現對操作訓練過程的描述。但由于電控模擬系統往往包含有若干不同功能的分系統,而各分系統又包含有一定數目的子系統,使得其結構層級往往比較復雜,采用這種設計思想往往存在著高復雜性和低可讀性的缺點,代碼的可維護性和復用性也較差;因此,本文針對傳統實現方式中存在的缺點和不足,提出了一種基于EHFSM[1,2]控制任務流程推進的軟件控制方案。
電控模擬系統的操作訓練可以看作是基于時間的一系列連續的子過程,每一個子過程描述模擬訓練在某一時間段所處的狀態,并影響或決定后一子過程的初始狀態。因此,可以采用過程建模的方法取代傳統的事件驅動思想實現對電控模擬系統的控制,這種狀態描述的方式也使得系統的結構更加清晰,控制更加高效,有效填補了傳統方式的缺點和不足。過程模型的組成包括:
過程:表達模擬訓練系統中的某個操作的持續時序關系。過程遷移:表達過程之間的遷移。
事件:指電控模擬訓練過程中激活過程遷移的元素,包括外部事件、內部事件。其中外部事件主要指號手控制產生的命令、動作以及信號等事件,內部事件主要是指由于過程的推進產生的某些變化。
過程遷移條件:表達過程轉換的約束規則。
FSM[3-4](Finite State Machine)即有限狀態機,通常被定義為由5個對象組成的有序集合:

f是一個從I×S到S的函數,即由一個輸入Ij和一狀態Sk給出下一個狀態:
g是一個從I×S到O的函數,即由一輸入Ij和一狀態Sk給出下一個輸出。
其工作原理是:狀態機根據系統內接收到的計算結果、系統外輸入事件,產生相應的輸出結果,同時系統會根據轉換機制判斷條件成立與否,來決定是否根據事件發生狀態的轉換,狀態轉換后的輸出狀態作為下一事件的開始狀態。工作原理描述如圖1所示。

圖1 FSM狀態轉換圖Fig.1 state transition of FSM
通過FSM及過程模型各個組成部分的定義發現:電控模擬系統的過程對應于FSM中的轉移,仿真訓練過程中的事件對應于FSM中的事件,過程轉移則對應于FSM中的轉移,過程轉移條件對應于FSM中的轉移規則,可以說模擬訓練過程的模型語義和FSM的語義描述基本一致。因此可以采用FSM方法描述電控模擬系統的過程模型。
電控模擬系統共包括開機自檢、自動、手動、監控及點步等5種工作方式,每一種工作方式下,操作都主要由205號手完成,但同時也需要201號手的配合,這種不同工作方式的劃分以及操作訓練的交叉配合使得訓練過程出現了不同的層次和交叉,傳統的有限狀態機并不支持這種分層和交叉描述。
此外,為滿足號手開展針對性訓練,需要定義一個由狀態Sj經過特殊的觸發事件直接轉換到 Sj的 “跳躍”,如圖 2(b)所示。而在傳統的有限狀態機中,若實現由S1狀態到S3的遷移,只能通過狀態序列(S1,S2,S3)來進行,而無法直接由S1跳轉至S3,如圖2(a)所示。這種變化并不等同于上述跳躍的定義。這種功能需求傳統的有限狀態機同樣是無法實現的。

圖2 有限狀態機示意圖Fig.2 diagram of the statemachine
針對以上問題,對傳統有限狀態機進行改進,引入了擴展分層有限狀態機。其定義如下:

其中:

O是有限輸入字符集合;
L是葉子狀態的有限非空集合;
S={s0,s1,…sn}是有限狀態集合;
A= {α0,α1,…αn}是活動集合,其中每個元素 α1=(in,pre,block)都是一個三元組,in是I中的元素或者為空,pre是關于V中的變量、輸入參數或一些常量的謂詞表達式,block是賦值語句和輸出語句的集合;
δ:S×A→S 是狀態轉換函數;
T={t0, t1,…,tm}是非空轉換集合,每個元素tj=(initial,final,action)都是一個三元組。initial和final是S中狀態,代表tj的初始狀態和結束狀態,action∈A是指發生在該轉換上的活動;V是變量集。
EHFSM示例如圖3所示。

圖3 EHFSM示例圖Fig.3 diagram of EHFSM
根據定義,EHFSM主要是在有限狀態機模型描述的基礎上增加了變量、操作和遷移的前置條件。前置條件pre是程序執行前變量所必須滿足的一組約束條件,只有當前置條件為真時,狀態遷移才能進行,前置條件的存在使得狀態遷移存在不確定性,即EHFSM中的狀態遷移不僅由系統的當前狀態和當前的輸入決定,還與狀態遷移的前置條件有關。這樣就可以采用前置條件來實現狀態的“跳躍”;而且EHFSM的分層描述方式也能滿足對電控模擬訓練過程的分層和交叉的描述需求。
電控模擬系統中,主要的操作工步包括39個操作規程,其中開機自檢包含5個主要操作工步,手動方式包含10個操作工步,自動方式包含6個操作工步,點步工作方式包含13個操作工步,監控工作方式包含5個操作工步。因此,將電控模擬系統的EHFSM分為了三層結構[5-6]。如圖4所示。
其中,電控模擬系統為第一層EHFSM。開機自檢、手動方式、自動方式、點步方式以及監控方式為第二層EHFSM,是第一層的具體細化。39個具體的操作規程是第三層EHFSM,是第二層的具體細化。第四層為單一操作工步EHFSM,根據具體的訓練規程要求進行描述。

圖4 電控模擬系統過程模型框架圖Fig.4 Electronic control simulation model framework system
在電控模擬系統中,采用動態鏈表的方式存儲包含操作工序流程的約束規則,鏈表中的每個節點存儲了一條規則。節點的設計如下:
Struct guize
{
int status://當前狀態 ID
int BJstatus://操作部分物理狀態
int XYBJstatus://響應部件物理狀態
int BXWCoperationID://必須完成操作狀態ID
int JHoperationID://激活操作狀態ID
string CZbujian://操作部件名稱
string XYbujian://響應部件名稱
string guize*pre://上一狀態節點指針
string guize*next://下一狀態節點指針
}:
控制程序流程設計如圖5所示。
其中,前驅轉換約束用于實現回退功能,系統根據上一狀態的節點指針,找到回退目的狀態,并通過將當前響應部件的物理狀態設置為目的狀態來實現;后置轉換約束用于實現快進功能,原理同上。

圖5 單一操作工步流程圖Fig.5 Flow chartof single step operators
文中針對電控模擬系統傳統軟件設計思想中存在的缺點和不足,提出了采用EHFSM過程建模的控制方案,提高了程序設計及系統運行效率。
[1]劉鴻,尹霞.基于分層有限狀態機的一致性測試生成[J].清華大學學報,2003,43(7):993-996[1]LIU Hong,YIN Xia.The conformance testing of hierarchical finite state machine [J].Journal of Tsinghua University based on Generation,2003,43(7):993-996
[2]年曉玲.基于擴展有限狀態機軟件測試用例自動生成的研究[D].成都:西南交通大學,2005
[3]黎文導,盧瑜.有限狀態機(FSM)的實現[J].青海師范大學學報:自然科學版,2001(4):18-21 LIUWen-dao,LU Yu.Achievement of Finite state machine(FSM)[J].Journal of Qinghai Normal University based on Generation:Natural Science Format,2001(4):18-21.
[4]劉偉.面向仿真訓練系統的過程模型框架研究與實現[D].長沙:國防科技大學,2004
[5]侯洪濤.海上補給仿真訓練系統模型框架設計與實現面向仿真訓練系統的過程模型框架研究與實現[D].長沙:國防科技大學,2006.
[6]張海波.基于HLA的分布式鉆井施工仿真培訓系統研究[D].大慶:東北石油大學,2012.