1.引言
在現(xiàn)代化戰(zhàn)爭中,武器系統(tǒng)及其維修保障過程日益復(fù)雜,采用分布式仿真實(shí)現(xiàn)維修保障過程的可視化和有效管理、提高維修保障仿真效率,顯得越米越重要。與傳統(tǒng)的單個系統(tǒng)仿真相比,分布仿真的關(guān)鍵問題是多個仿真系統(tǒng)間的互操作問題,為此,美國國防領(lǐng)域的相關(guān)組織通過大量的研究,提出r建模與仿真的.高層體系結(jié)構(gòu) (High Level Architecture,簡稱HLA ),HLA的核心思想是互操作和重用,其顯著特點(diǎn)是通過運(yùn)行支撐環(huán)境RTI (Run-Time infrastructure)}提供通用的、相對獨(dú)立的支撐服務(wù)程序,將仿真應(yīng)用同底層的支撐環(huán)境分開,即將具體的仿真功能實(shí)現(xiàn)、仿真運(yùn)行管理和底層通信傳輸=者分離,隱蔽各自的實(shí)現(xiàn)細(xì)節(jié),從而使各部分可以相對獨(dú)立地進(jìn)行開發(fā),并能充分利用各自領(lǐng)域的先進(jìn)技術(shù)。日前,HLA已成為IEEE建模與仿真標(biāo)準(zhǔn),因此基于HLA的分布仿真是今后仿真發(fā)展的主要方向。
在一個基于HLA的分布交互式仿真系統(tǒng),聯(lián)邦成員是基本的仿真單元。一個聯(lián)邦成員需要完成一個相對獨(dú)立的仿真任務(wù),并且需要與仿真系統(tǒng)的其自聯(lián)邦成員交互通信,以組成一個聯(lián)邦,協(xié)同完成分步交互式仿真。我們的日標(biāo)是小僅要構(gòu)建基于HLA的仿真系統(tǒng)和成員,還要能動態(tài)顯示仿真過程和各成員勢態(tài),借助相關(guān)的軟件和工具實(shí)現(xiàn)仿真成員的一維圖形顯示。
2.基于HLA的團(tuán)維修保障仿真系統(tǒng)結(jié)構(gòu)及組成
2.1系統(tǒng)想定
裝備維修保障系統(tǒng)(Maintenance Support System)是經(jīng)過綜合和優(yōu)化的維修保障要索構(gòu)成的總體,是山裝備維修所需的硬件、軟件、人力以及管理組成的復(fù)雜系統(tǒng)。其日標(biāo)是通過采取各項(xiàng)措施和相關(guān)的管理活動保持和恢復(fù)裝備性能,及時(shí)有效的為部隊(duì)提供服務(wù)。
維修保障系統(tǒng)(圖1)主要III EA(裝備管J}機(jī)構(gòu))、EOU(裝備使用單位)、RO(修J}機(jī)構(gòu))、DE(倉庫)、TO(運(yùn)輸機(jī)構(gòu))組成,具體過程為:OEOU提出修理請求;OEA 通知修理所;同時(shí)EA通知TO運(yùn)送故障部件;Cs}To派車輛去EOU裝載故障部件;④車輛裝載故障部件去R0; ORO向EA提出器材請求;)EA通知DE準(zhǔn)備器材;ODE準(zhǔn)備器材完畢通知EA;EA通知TO運(yùn)送器材;⑨T0派車輛去DE裝載器材;⑩車輛運(yùn)送器材到 R0; n當(dāng)④、⑩完成后,RO開始修理,完畢后報(bào)告EA; SEA通知TO運(yùn)送修好的部件;) TO派車輛去RO裝載修好的部件;O車輛運(yùn)送修好的部件到EOU。
2. 2仿真系統(tǒng)體系結(jié)構(gòu)及組成
HLA的一個基木思想是將特定仿真,},的功能與通用的支撐服務(wù)相分離,聯(lián)邦成員通過調(diào)用RTI提供的服務(wù)進(jìn)行交互,交互信息基于HLA的公布 /句購機(jī)制。團(tuán)維修保障仿真系統(tǒng)聯(lián)邦結(jié)構(gòu)如圖2所示,聯(lián)邦,},有裝備股、炮兵連、修理所、倉庫、汽車連5個成員,這些成員的實(shí)現(xiàn)都是基于RTI的AP工函數(shù),基本過程為初始化成員數(shù)據(jù)、創(chuàng)建并加入聯(lián)邦、聲明公布/句購關(guān)系、確定成員的時(shí)間推進(jìn)策略、注冊對象實(shí)例、請求時(shí)間推進(jìn)、進(jìn)行仿真循環(huán)。除此之外,聯(lián)邦,},還加入用于一維勢態(tài)顯示的NLNK工具PVD CPlan View Display), RTI應(yīng)用與PVD的交互通過NLNK的VR-Link接日程序來實(shí)現(xiàn),并將聯(lián)邦仿真成員轉(zhuǎn)化為PVD } I,圖形化的實(shí)體。仿真系統(tǒng)運(yùn)行支撐環(huán)境為MAK-RTI, FOM/SOM設(shè)計(jì)采用OMDT(Object Model DevelopmentTool),開發(fā)環(huán)境為Visual C十十6. 0.
3.聯(lián)邦/仿真對象模型設(shè)計(jì)及FOM映射
3.1 FOM/SOM設(shè)計(jì)
FOM的主要目的是提供聯(lián)邦成員之間以公共的、標(biāo)準(zhǔn)化的格式進(jìn)行數(shù)據(jù)交換的規(guī)范,自描述丁在仿真運(yùn)行過程,將參與聯(lián)邦信息交換的所有對象類、對象屬性、交互類、交互參數(shù)的特性。FONI的所有部件共同建仁丁一個實(shí)現(xiàn)聯(lián)邦成員之間互操作所必須的“信息模型協(xié)議”。SONI是單一聯(lián)邦成員的對象模型,‘自描述了聯(lián)邦成員以對外公布或需要句購的對象類、對象屬性、交互類、交互參數(shù)的特性,這些特性反映了成員在參與聯(lián)邦運(yùn)行時(shí)所具有的能力。
維修保障仿真系統(tǒng)FOM,的對象類包括火炮類Artillery、車輛類Vehicle、修理機(jī)構(gòu)類RepairShop和倉庫類Depot C圖3);交互類主要包括故障維修請求類FaultMaintenance、故障狀況類FaultSituation ,裝載貨物類LoadCargo ,卸載貨物類UnLoadCargo、運(yùn)輸故障部件命令類TransportFaultPartCommand(圖4)等C III于篇幅所限,這里只列出部分分交互類)。
仿真系統(tǒng)中的SOM有5個,分別是裝備股、炮兵連、修理所、倉庫、汽車連,各SOM的公布(P)和訂購(S)關(guān)系如表1所示。
3.2建立 FOM映射
進(jìn)行FONI映射主要是為f將基于RTI的應(yīng)用轉(zhuǎn)化為.y層應(yīng)用(如一維顯示、數(shù)據(jù)}o}放、=位場景等),這一工作我們采用NLVK的VR-Link 來實(shí)現(xiàn),VR-Link是針對HLA的獨(dú)仁于協(xié)議的.高層應(yīng)用程序接日。‘自提供丁圖形化工具FomMapBuilder(圖5)}習(xí)守用戶定義的包含對象類及屬性、交互類及參數(shù)的FED(聯(lián)邦執(zhí)行數(shù)據(jù))文件,與VR-Link定義的獨(dú)}i:于協(xié)議的對象類及屬性、交互類及參數(shù)進(jìn)行映射。VR-Link采用丁面向?qū)ο蟮腃十十實(shí)現(xiàn),使用FomMapBuilder完成映射后將自動生產(chǎn)FONI映射代碼,代碼,},還包含丁對對象類屬性、交互類參數(shù)的編碼 (encode)和解碼(decode),以使RTI信息能被基于VR-Link的.高層應(yīng)用所識別。
FONI映射的鼓終結(jié)果是生成一個共享的動態(tài)連接庫(缺省為myFomMapd. dll ),封裝用戶定義的對象類和交互類到
VR-Link定義的對象類和交互類的映射,以被VR-Link接日程序調(diào)用。
4.仿真系統(tǒng)的勢態(tài)顯示實(shí)現(xiàn)
一維勢態(tài)顯示主要是將仿真過程及成員以圖形化方式顯示出來,開發(fā)工具采用丁NLVK公司的PVD和VR-Link, PVD以實(shí)時(shí)提供淺場的一維勢態(tài)圖,并顯示實(shí)體、聚合和傳感器;VR-Link是快速建仁HLA應(yīng)用、面向?qū)ο蟮腃十十工具包,使開發(fā)主要集中用于仿真應(yīng)用而需要考慮網(wǎng)絡(luò)協(xié)議的細(xì)節(jié)。圖6為團(tuán)維修保障仿真系統(tǒng)的一維勢態(tài)及交互信息顯示,其實(shí)現(xiàn)過程如下:
建立基于HLA的網(wǎng)絡(luò)連接;
DtExerciseConn* exConn=0:
char* execName=(char *)"VR-Link";
char* fedName=(char *)"Maintenance";
char* fedFileName=(char *)"VR-Link.fed";
char* fomMapperLib=(char *)"myFomMapd.dll";
char* fomMapperInitData=(char *)"' ,
double rprFomVersion=1.0:
char* fedFileToUse=0:
exConn=new DtExerciseConn( execName, fedName,
new DtRprFomMapper( rprFomVersion).fedFileToUse. 0):