劉利明 ,謝 建 ,于傳強(qiáng),唐媛莉
(1.第二炮兵工程大學(xué) 陜西 西安 710025;2.96627部隊(duì) 北京 100085)
某電控模擬系統(tǒng)軟件設(shè)計(jì)的關(guān)鍵工作就是對(duì)操作訓(xùn)練過(guò)程中所有可能發(fā)生的過(guò)程及過(guò)程狀態(tài)之間的轉(zhuǎn)移關(guān)系進(jìn)行描述。傳統(tǒng)的事件驅(qū)動(dòng)設(shè)計(jì)思想,通過(guò)建立作為控制程序基本單元的事件例程之間的邏輯關(guān)系及響應(yīng)程序,實(shí)現(xiàn)對(duì)操作訓(xùn)練過(guò)程的描述。但由于電控模擬系統(tǒng)往往包含有若干不同功能的分系統(tǒng),而各分系統(tǒng)又包含有一定數(shù)目的子系統(tǒng),使得其結(jié)構(gòu)層級(jí)往往比較復(fù)雜,采用這種設(shè)計(jì)思想往往存在著高復(fù)雜性和低可讀性的缺點(diǎn),代碼的可維護(hù)性和復(fù)用性也較差;因此,本文針對(duì)傳統(tǒng)實(shí)現(xiàn)方式中存在的缺點(diǎn)和不足,提出了一種基于EHFSM[1,2]控制任務(wù)流程推進(jìn)的軟件控制方案。
電控模擬系統(tǒng)的操作訓(xùn)練可以看作是基于時(shí)間的一系列連續(xù)的子過(guò)程,每一個(gè)子過(guò)程描述模擬訓(xùn)練在某一時(shí)間段所處的狀態(tài),并影響或決定后一子過(guò)程的初始狀態(tài)。因此,可以采用過(guò)程建模的方法取代傳統(tǒng)的事件驅(qū)動(dòng)思想實(shí)現(xiàn)對(duì)電控模擬系統(tǒng)的控制,這種狀態(tài)描述的方式也使得系統(tǒng)的結(jié)構(gòu)更加清晰,控制更加高效,有效填補(bǔ)了傳統(tǒng)方式的缺點(diǎn)和不足。過(guò)程模型的組成包括:
過(guò)程:表達(dá)模擬訓(xùn)練系統(tǒng)中的某個(gè)操作的持續(xù)時(shí)序關(guān)系。過(guò)程遷移:表達(dá)過(guò)程之間的遷移。
事件:指電控模擬訓(xùn)練過(guò)程中激活過(guò)程遷移的元素,包括外部事件、內(nèi)部事件。其中外部事件主要指號(hào)手控制產(chǎn)生的命令、動(dòng)作以及信號(hào)等事件,內(nèi)部事件主要是指由于過(guò)程的推進(jìn)產(chǎn)生的某些變化。
過(guò)程遷移條件:表達(dá)過(guò)程轉(zhuǎn)換的約束規(guī)則。
FSM[3-4](Finite State Machine)即有限狀態(tài)機(jī),通常被定義為由5個(gè)對(duì)象組成的有序集合:
f是一個(gè)從I×S到S的函數(shù),即由一個(gè)輸入Ij和一狀態(tài)Sk給出下一個(gè)狀態(tài):
g是一個(gè)從I×S到O的函數(shù),即由一輸入Ij和一狀態(tài)Sk給出下一個(gè)輸出。
其工作原理是:狀態(tài)機(jī)根據(jù)系統(tǒng)內(nèi)接收到的計(jì)算結(jié)果、系統(tǒng)外輸入事件,產(chǎn)生相應(yīng)的輸出結(jié)果,同時(shí)系統(tǒng)會(huì)根據(jù)轉(zhuǎn)換機(jī)制判斷條件成立與否,來(lái)決定是否根據(jù)事件發(fā)生狀態(tài)的轉(zhuǎn)換,狀態(tài)轉(zhuǎn)換后的輸出狀態(tài)作為下一事件的開始狀態(tài)。工作原理描述如圖1所示。
圖1 FSM狀態(tài)轉(zhuǎn)換圖Fig.1 state transition of FSM
通過(guò)FSM及過(guò)程模型各個(gè)組成部分的定義發(fā)現(xiàn):電控模擬系統(tǒng)的過(guò)程對(duì)應(yīng)于FSM中的轉(zhuǎn)移,仿真訓(xùn)練過(guò)程中的事件對(duì)應(yīng)于FSM中的事件,過(guò)程轉(zhuǎn)移則對(duì)應(yīng)于FSM中的轉(zhuǎn)移,過(guò)程轉(zhuǎn)移條件對(duì)應(yīng)于FSM中的轉(zhuǎn)移規(guī)則,可以說(shuō)模擬訓(xùn)練過(guò)程的模型語(yǔ)義和FSM的語(yǔ)義描述基本一致。因此可以采用FSM方法描述電控模擬系統(tǒng)的過(guò)程模型。
電控模擬系統(tǒng)共包括開機(jī)自檢、自動(dòng)、手動(dòng)、監(jiān)控及點(diǎn)步等5種工作方式,每一種工作方式下,操作都主要由205號(hào)手完成,但同時(shí)也需要201號(hào)手的配合,這種不同工作方式的劃分以及操作訓(xùn)練的交叉配合使得訓(xùn)練過(guò)程出現(xiàn)了不同的層次和交叉,傳統(tǒng)的有限狀態(tài)機(jī)并不支持這種分層和交叉描述。
此外,為滿足號(hào)手開展針對(duì)性訓(xùn)練,需要定義一個(gè)由狀態(tài)Sj經(jīng)過(guò)特殊的觸發(fā)事件直接轉(zhuǎn)換到 Sj的 “跳躍”,如圖 2(b)所示。而在傳統(tǒng)的有限狀態(tài)機(jī)中,若實(shí)現(xiàn)由S1狀態(tài)到S3的遷移,只能通過(guò)狀態(tài)序列(S1,S2,S3)來(lái)進(jìn)行,而無(wú)法直接由S1跳轉(zhuǎn)至S3,如圖2(a)所示。這種變化并不等同于上述跳躍的定義。這種功能需求傳統(tǒng)的有限狀態(tài)機(jī)同樣是無(wú)法實(shí)現(xiàn)的。
圖2 有限狀態(tài)機(jī)示意圖Fig.2 diagram of the statemachine
針對(duì)以上問(wèn)題,對(duì)傳統(tǒng)有限狀態(tài)機(jī)進(jìn)行改進(jìn),引入了擴(kuò)展分層有限狀態(tài)機(jī)。其定義如下:
其中:
O是有限輸入字符集合;
L是葉子狀態(tài)的有限非空集合;
S={s0,s1,…sn}是有限狀態(tài)集合;
A= {α0,α1,…αn}是活動(dòng)集合,其中每個(gè)元素 α1=(in,pre,block)都是一個(gè)三元組,in是I中的元素或者為空,pre是關(guān)于V中的變量、輸入?yún)?shù)或一些常量的謂詞表達(dá)式,block是賦值語(yǔ)句和輸出語(yǔ)句的集合;
δ:S×A→S 是狀態(tài)轉(zhuǎn)換函數(shù);
T={t0, t1,…,tm}是非空轉(zhuǎn)換集合,每個(gè)元素tj=(initial,final,action)都是一個(gè)三元組。initial和final是S中狀態(tài),代表tj的初始狀態(tài)和結(jié)束狀態(tài),action∈A是指發(fā)生在該轉(zhuǎn)換上的活動(dòng);V是變量集。
EHFSM示例如圖3所示。
圖3 EHFSM示例圖Fig.3 diagram of EHFSM
根據(jù)定義,EHFSM主要是在有限狀態(tài)機(jī)模型描述的基礎(chǔ)上增加了變量、操作和遷移的前置條件。前置條件pre是程序執(zhí)行前變量所必須滿足的一組約束條件,只有當(dāng)前置條件為真時(shí),狀態(tài)遷移才能進(jìn)行,前置條件的存在使得狀態(tài)遷移存在不確定性,即EHFSM中的狀態(tài)遷移不僅由系統(tǒng)的當(dāng)前狀態(tài)和當(dāng)前的輸入決定,還與狀態(tài)遷移的前置條件有關(guān)。這樣就可以采用前置條件來(lái)實(shí)現(xiàn)狀態(tài)的“跳躍”;而且EHFSM的分層描述方式也能滿足對(duì)電控模擬訓(xùn)練過(guò)程的分層和交叉的描述需求。
電控模擬系統(tǒng)中,主要的操作工步包括39個(gè)操作規(guī)程,其中開機(jī)自檢包含5個(gè)主要操作工步,手動(dòng)方式包含10個(gè)操作工步,自動(dòng)方式包含6個(gè)操作工步,點(diǎn)步工作方式包含13個(gè)操作工步,監(jiān)控工作方式包含5個(gè)操作工步。因此,將電控模擬系統(tǒng)的EHFSM分為了三層結(jié)構(gòu)[5-6]。如圖4所示。
其中,電控模擬系統(tǒng)為第一層EHFSM。開機(jī)自檢、手動(dòng)方式、自動(dòng)方式、點(diǎn)步方式以及監(jiān)控方式為第二層EHFSM,是第一層的具體細(xì)化。39個(gè)具體的操作規(guī)程是第三層EHFSM,是第二層的具體細(xì)化。第四層為單一操作工步EHFSM,根據(jù)具體的訓(xùn)練規(guī)程要求進(jìn)行描述。
圖4 電控模擬系統(tǒng)過(guò)程模型框架圖Fig.4 Electronic control simulation model framework system
在電控模擬系統(tǒng)中,采用動(dòng)態(tài)鏈表的方式存儲(chǔ)包含操作工序流程的約束規(guī)則,鏈表中的每個(gè)節(jié)點(diǎn)存儲(chǔ)了一條規(guī)則。節(jié)點(diǎn)的設(shè)計(jì)如下:
Struct guize
{
int status://當(dāng)前狀態(tài) ID
int BJstatus://操作部分物理狀態(tài)
int XYBJstatus://響應(yīng)部件物理狀態(tài)
int BXWCoperationID://必須完成操作狀態(tài)ID
int JHoperationID://激活操作狀態(tài)ID
string CZbujian://操作部件名稱
string XYbujian://響應(yīng)部件名稱
string guize*pre://上一狀態(tài)節(jié)點(diǎn)指針
string guize*next://下一狀態(tài)節(jié)點(diǎn)指針
}:
控制程序流程設(shè)計(jì)如圖5所示。
其中,前驅(qū)轉(zhuǎn)換約束用于實(shí)現(xiàn)回退功能,系統(tǒng)根據(jù)上一狀態(tài)的節(jié)點(diǎn)指針,找到回退目的狀態(tài),并通過(guò)將當(dāng)前響應(yīng)部件的物理狀態(tài)設(shè)置為目的狀態(tài)來(lái)實(shí)現(xiàn);后置轉(zhuǎn)換約束用于實(shí)現(xiàn)快進(jìn)功能,原理同上。
圖5 單一操作工步流程圖Fig.5 Flow chartof single step operators
文中針對(duì)電控模擬系統(tǒng)傳統(tǒng)軟件設(shè)計(jì)思想中存在的缺點(diǎn)和不足,提出了采用EHFSM過(guò)程建模的控制方案,提高了程序設(shè)計(jì)及系統(tǒng)運(yùn)行效率。
[1]劉鴻,尹霞.基于分層有限狀態(tài)機(jī)的一致性測(cè)試生成[J].清華大學(xué)學(xué)報(bào),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]年曉玲.基于擴(kuò)展有限狀態(tài)機(jī)軟件測(cè)試用例自動(dòng)生成的研究[D].成都:西南交通大學(xué),2005
[3]黎文導(dǎo),盧瑜.有限狀態(tài)機(jī)(FSM)的實(shí)現(xiàn)[J].青海師范大學(xué)學(xué)報(bào):自然科學(xué)版,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]劉偉.面向仿真訓(xùn)練系統(tǒng)的過(guò)程模型框架研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科技大學(xué),2004
[5]侯洪濤.海上補(bǔ)給仿真訓(xùn)練系統(tǒng)模型框架設(shè)計(jì)與實(shí)現(xiàn)面向仿真訓(xùn)練系統(tǒng)的過(guò)程模型框架研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科技大學(xué),2006.
[6]張海波.基于HLA的分布式鉆井施工仿真培訓(xùn)系統(tǒng)研究[D].大慶:東北石油大學(xué),2012.