蔣 濤 芮 力
(1.海軍工程大學(xué)兵器工程系 武漢 430033)(2.92664部隊(duì) 青島 260023)
仿真技術(shù)的進(jìn)步對(duì)國(guó)防工業(yè)的發(fā)展產(chǎn)生了深遠(yuǎn)的影響,2007年7月美國(guó)國(guó)會(huì)通過(guò)法案承認(rèn)建模&仿真技術(shù)對(duì)美國(guó)國(guó)家安全和繁榮作出的貢獻(xiàn)[1]。基于體系結(jié)構(gòu)的仿真是當(dāng)前仿真發(fā)展的主流,美軍普遍使用公共體系結(jié)構(gòu)將各種虛擬的、真實(shí)的、構(gòu)造的資源組成邏輯試驗(yàn)場(chǎng)來(lái)進(jìn)行試驗(yàn)和訓(xùn)練,提升國(guó)防實(shí)力。當(dāng)前國(guó)內(nèi)外試驗(yàn)場(chǎng)普遍使用三種公共體系結(jié)構(gòu):分布式交互仿真DIS、高層體系結(jié)構(gòu)HLA和試驗(yàn)與訓(xùn)練使能體系結(jié)構(gòu)TENA[2~4]。在實(shí)現(xiàn)基于體系結(jié)構(gòu)的仿真時(shí),需要有相應(yīng)的試驗(yàn)進(jìn)程控制工具,因此本文基于某種仿真試驗(yàn)體系結(jié)構(gòu)開(kāi)發(fā)了一種進(jìn)程控制組件,用于實(shí)現(xiàn)對(duì)試驗(yàn)進(jìn)程的設(shè)計(jì)、執(zhí)行和控制。
進(jìn)程控制組件主要用于在用戶根據(jù)具體任務(wù)選擇參試資源后開(kāi)發(fā)試驗(yàn)流程,從而控制各個(gè)參試資源的運(yùn)行時(shí)序,因此,進(jìn)程控制組件應(yīng)該具有在試驗(yàn)流程中控制參試設(shè)備的功能,其需求分析如下:
1)不同的試驗(yàn)資源所需的試驗(yàn)控制指令不同,因此進(jìn)程控制組件應(yīng)該具有針對(duì)不同試驗(yàn)資源的控制指令設(shè)計(jì)功能。設(shè)計(jì)完成的控制指令應(yīng)該能夠以表格形式存儲(chǔ)于指令數(shù)據(jù)庫(kù)中,以供用戶后續(xù)開(kāi)發(fā)試驗(yàn)流程使用,進(jìn)程控制組件應(yīng)提供對(duì)指令數(shù)據(jù)庫(kù)中指令的添加、編輯和刪除等操作功能。
2)不同的試驗(yàn)任務(wù)所需的試驗(yàn)資源和試驗(yàn)控制流程不同,因此進(jìn)程控制組件應(yīng)該具有根據(jù)不同試驗(yàn)任務(wù)需求設(shè)計(jì)試驗(yàn)流程的功能。設(shè)計(jì)完成的試驗(yàn)流程應(yīng)該能夠以表格形式存儲(chǔ)于流程數(shù)據(jù)庫(kù)中,進(jìn)程控制組件應(yīng)提供對(duì)流程數(shù)據(jù)庫(kù)中試驗(yàn)流程指令集的添加、編輯和刪除等操作功能。
3)進(jìn)程控制組件應(yīng)該提供給用戶根據(jù)不同試驗(yàn)任務(wù)選擇流程數(shù)據(jù)庫(kù)中已開(kāi)發(fā)的試驗(yàn)流程并執(zhí)行的功能,且應(yīng)該具有單步執(zhí)行或順序執(zhí)行的功能。在試驗(yàn)流程執(zhí)行過(guò)程中應(yīng)該提供給用戶動(dòng)態(tài)控制功能,包括試驗(yàn)流程暫停、恢復(fù)和停止等,具有向用戶實(shí)時(shí)顯示流程執(zhí)行信息的功能,以使用戶可以在試驗(yàn)中參與交互。
此外,進(jìn)程控制組件也應(yīng)該具有流程執(zhí)行日志保存/顯示功能,以方便用戶日后查詢。
經(jīng)過(guò)對(duì)大量試驗(yàn)資源控制指令進(jìn)行分析,可將試驗(yàn)資源控制指令按功能抽象為不同的類型,對(duì)每一類型的控制指令設(shè)計(jì)相應(yīng)的操作實(shí)現(xiàn)函數(shù)。在試驗(yàn)流程執(zhí)行時(shí),進(jìn)程控制組件根據(jù)用戶選擇的操作函數(shù)和函數(shù)的參數(shù),調(diào)用對(duì)應(yīng)的內(nèi)置函數(shù),即可完成進(jìn)程的控制。表1列舉了抽象出來(lái)的13種控制指令類型及其對(duì)應(yīng)的操作實(shí)現(xiàn)函數(shù)。

表1 13種控制指令類型及對(duì)應(yīng)函數(shù)

圖1 組件設(shè)計(jì)框架
根據(jù)前面的需求分析,設(shè)計(jì)組件框架如圖1所示。定義控制指令是利用前面設(shè)計(jì)的控制指令開(kāi)發(fā)控制指令表并存入指令數(shù)據(jù)庫(kù)中,同時(shí)針對(duì)每一類型的控制指令按照設(shè)計(jì)開(kāi)發(fā)相應(yīng)實(shí)現(xiàn)函數(shù)實(shí)現(xiàn)指令解析單元。設(shè)計(jì)試驗(yàn)指令是指根據(jù)本次要執(zhí)行的試驗(yàn)任務(wù),從已開(kāi)發(fā)的控制指令表中選出要使用的控制指令,然后開(kāi)發(fā)針對(duì)本次試驗(yàn)要使用的試驗(yàn)指令并存入數(shù)據(jù)庫(kù)中的試驗(yàn)指令表,同時(shí)在實(shí)現(xiàn)函數(shù)中填寫(xiě)相應(yīng)的參數(shù)。開(kāi)發(fā)試驗(yàn)流程由用戶根據(jù)具體試驗(yàn)任務(wù)運(yùn)行流程,從試驗(yàn)指令表中選擇合適的試驗(yàn)指令開(kāi)發(fā)試驗(yàn)流程表并存入數(shù)據(jù)庫(kù)中。用戶執(zhí)行試驗(yàn)任務(wù)時(shí),從數(shù)據(jù)庫(kù)中選擇已經(jīng)開(kāi)發(fā)的試驗(yàn)流程表就可以運(yùn)行相應(yīng)的試驗(yàn)流程,試驗(yàn)流程在運(yùn)行時(shí)調(diào)用指令解析單元,通過(guò)指令和操作函數(shù)的映射,由操作函數(shù)將相應(yīng)的控制命令通過(guò)通信代理發(fā)送給具體的參試資源,同時(shí)從參試資源獲取返回狀態(tài),通過(guò)反映射反饋給用戶具體運(yùn)行的試驗(yàn)流程。在試驗(yàn)流程運(yùn)行過(guò)程中,由日志記錄模塊實(shí)現(xiàn)試驗(yàn)過(guò)程日志記錄功能并存入數(shù)據(jù)庫(kù),以備日后查看。
進(jìn)程控制組件的具體實(shí)現(xiàn)類圖如圖2所示。組件基類主要實(shí)現(xiàn)一些與體系結(jié)構(gòu)交互的接口。進(jìn)程控制主窗口類繼承組件基類的接口并實(shí)現(xiàn)組件的基本功能,同時(shí)分別通過(guò)響應(yīng)鼠標(biāo)右鍵雙擊和左鍵單擊提供導(dǎo)向流程執(zhí)行控制面板和流程編輯對(duì)話框類的功能。組件菜單對(duì)話框類主要響應(yīng)鼠標(biāo)左鍵點(diǎn)擊導(dǎo)向功能。流程編輯對(duì)話框類主要實(shí)現(xiàn)試驗(yàn)流程開(kāi)發(fā)功能,它復(fù)合了試驗(yàn)流程指令編輯類和試驗(yàn)指令設(shè)計(jì)類,試驗(yàn)流程指令編輯類實(shí)現(xiàn)了開(kāi)發(fā)試驗(yàn)流程時(shí)編輯試驗(yàn)流程指令功能,試驗(yàn)指令設(shè)計(jì)類實(shí)現(xiàn)了設(shè)計(jì)試驗(yàn)指令功能,這三個(gè)類分別以對(duì)話框形式和用戶進(jìn)行開(kāi)發(fā)交互。流程執(zhí)行控制面板類主要實(shí)現(xiàn)與運(yùn)行試驗(yàn)流程相關(guān)的功能。指令解析類實(shí)現(xiàn)整個(gè)試驗(yàn)流程運(yùn)行過(guò)程中的指令解析功能。日志記錄/顯示類實(shí)現(xiàn)與日志相關(guān)的功能。

圖2 組件類圖

圖3 試驗(yàn)指令設(shè)計(jì)及流程開(kāi)發(fā)圖
組件測(cè)試是在某仿真試驗(yàn)體系結(jié)構(gòu)下進(jìn)行的,該體系結(jié)構(gòu)可以支持由實(shí)物、半實(shí)物和虛擬試驗(yàn)資源構(gòu)成的試驗(yàn)任務(wù)。首先用戶根據(jù)具體試驗(yàn)任務(wù)選擇試驗(yàn)資源組建基于體系結(jié)構(gòu)的試驗(yàn)工程,然后利用進(jìn)程控制組件開(kāi)發(fā)面向本次試驗(yàn)任務(wù)的試驗(yàn)指令,并根據(jù)所開(kāi)發(fā)的試驗(yàn)指令和具體試驗(yàn)運(yùn)行流程設(shè)計(jì)試驗(yàn)流程。
組件測(cè)試主要測(cè)試設(shè)計(jì)試驗(yàn)指令、開(kāi)發(fā)和執(zhí)行試驗(yàn)流程等組件功能。部分測(cè)試結(jié)果如圖3和圖4所示。圖3顯示了開(kāi)發(fā)試驗(yàn)指令和開(kāi)發(fā)試驗(yàn)流程的部分功能圖,其中前面的對(duì)話框?yàn)樵囼?yàn)指令開(kāi)發(fā)對(duì)話框,后面對(duì)話框?yàn)樵囼?yàn)流程開(kāi)發(fā)對(duì)話框。圖4為顯示執(zhí)行所開(kāi)發(fā)試驗(yàn)流程情況的控制面板,其中在該面板上提供給用戶各種與試驗(yàn)流程執(zhí)行相關(guān)的命令,日志記錄功能在后臺(tái)自動(dòng)完成,通過(guò)保存日志按鈕實(shí)現(xiàn)日志保存,通過(guò)點(diǎn)擊日志管理區(qū)中的記錄日志在下面進(jìn)程控制過(guò)程顯示區(qū)顯示運(yùn)行日志。經(jīng)過(guò)測(cè)試,從圖3、圖4所展現(xiàn)的部分測(cè)試圖片可知組件滿足試驗(yàn)需求。

圖4 試驗(yàn)流程運(yùn)行情況圖
本文所述進(jìn)程控制組件提供給用戶靈活、友好的方式開(kāi)發(fā)試驗(yàn)流程、執(zhí)行試驗(yàn)流程功能,用戶無(wú)需編程即可完成對(duì)整個(gè)試驗(yàn)任務(wù)執(zhí)行控制,節(jié)省了試驗(yàn)任務(wù)開(kāi)發(fā)時(shí)間和成本。
[1]Live Virtual Constructive Architecture Roadmap(LVCAR)Final Report[EB/OL].http://www.msco.mil/files/MSCO Library/LVCAR Final Report 20090814.pdf.
[2]The Test and Training Enabling Architecture Reference Docu-ment,http://www.tena-sda.org/TENA Architecture Document(2002).pdf.
[3]王瓊,蔡小斌,杜承烈,等.分布虛擬試驗(yàn)支撐環(huán)境研究[J].計(jì)算機(jī)仿真,2005,25(5):15-19.
[4]杜承烈,陳進(jìn)朝,尤濤.虛擬試驗(yàn)軟件平臺(tái)技術(shù)的研究與展望[J].計(jì)算機(jī)測(cè)量與控制,2011,19(3):490-492.