陳 勇,容曉峰
(西安工業(yè)大學 陜西 西安 710021)
HLA(高級體系結(jié)構(gòu),High Level Architecture),由美國國防領(lǐng)域的相關(guān)組織通過大量的研究提出的用于建模和仿真的高層體系結(jié)構(gòu)。HLA的基本思想就是在體系結(jié)構(gòu)上建立一個框架,設(shè)計、開發(fā)及實現(xiàn)系統(tǒng)不同層次和粒度的對象模型,來獲得仿真部件和仿真系統(tǒng)高層次上的互操作性與可重用性。同時能利用不斷發(fā)展的新技術(shù),來滿足復(fù)雜大系統(tǒng)的仿真需求。HLA通過運行支撐環(huán)境RTI,提供通用的、相對獨立的支撐服務(wù)程序。RTI是HLA接口規(guī)范的具體實現(xiàn),為仿真應(yīng)用提供通用的、相對對立的支撐服務(wù)。在RTI平臺之上,仿真開發(fā)者可以開發(fā)各種自己需要的服務(wù)、構(gòu)建自己的仿真、加入人機交互參與等[1]。
衛(wèi)星工具包STK(Satellite Tool Kit)是航天領(lǐng)域中先進的系統(tǒng)分析軟件,用于分析復(fù)雜的航天、航空、陸地以及海洋任務(wù)。在STK仿真系統(tǒng)中,各模塊、子系統(tǒng)間使用TCP/IP或UNIX Domain Socket進行數(shù)據(jù)傳輸。地面仿真網(wǎng)絡(luò)中,各指揮所、雷達接收站、地面移動部隊等部門的仿真通信多采用基于HLA/RTI高層體系結(jié)構(gòu)的方式進行仿真交互。為實現(xiàn)基于TCP/IP通信的STK仿真網(wǎng)絡(luò)同基于HLA/RTI地面仿真網(wǎng)絡(luò)進行交互,實現(xiàn)天地一體化的大仿真,研究STK-RTI異構(gòu)系統(tǒng)的交互方法成為一個課題。相關(guān)資料中有三種方法實現(xiàn)了這種通信。1)采用中間件,為每對需要交流的異構(gòu)子系統(tǒng)模塊提供中間件,由中間件完成二者之間的通信。2)建立具有通用交互能力的橋接,實現(xiàn)兩個系統(tǒng)的相互編譯,并且具有分布式管理功能。3)采用雙方代理,設(shè)計HLA邦員代理和其他系統(tǒng)代理,由代理完成系統(tǒng)之間的交互通信[2-4]。
本文在內(nèi)容上首先列舉了異構(gòu)系統(tǒng)交互三種方式的優(yōu)缺點,重點對系統(tǒng)代理方式進行研究,分析了具體設(shè)計思路,并且采用VC++編程實現(xiàn)了基于TCP/IP通信的系統(tǒng)和基于HLA/RTI聯(lián)邦通信的系統(tǒng)之間的信息交互。
STK仿真系統(tǒng)遵循TCP/IP通信協(xié)議,而地面戰(zhàn)術(shù)通信網(wǎng)絡(luò)多采用HLA/RTI高層體系結(jié)構(gòu)方法進行通信,下面我們研究總結(jié)出兩類系統(tǒng)間交互通信的3種方法。
當基于TCP/IP協(xié)議通信的STK仿真系統(tǒng)中的模擬器要傳輸數(shù)據(jù)給地面仿真系統(tǒng)HLA邦員時,首先由STK-RTI中間件接收,中間件將符合TCP/IP傳輸?shù)臄?shù)據(jù)轉(zhuǎn)換為符合HLA交互的數(shù)據(jù)并發(fā)送到相應(yīng)的HLA邦員。翻過來,當HLA邦員要傳輸數(shù)據(jù)給仿真模擬器時,也是首先由中間件接收,再將符合HLA的數(shù)據(jù)轉(zhuǎn)換為符合TCP/IP網(wǎng)絡(luò)仿真協(xié)議的數(shù)據(jù)單元后傳送給仿真模擬器。
STK-RTI中間件用于連接STK于RTI,使得STK可以通過RTI與其他HLA聯(lián)邦成員集成,完成更大規(guī)模的仿真。STK-RTI中間件的目的是將STK改造成為符合HLA分布仿真標準的仿真軟件,從而拓展STK仿真軟件的應(yīng)用領(lǐng)域,增強功能,滿足天地一體化作戰(zhàn)建模與仿真的需求。中間件的方法實現(xiàn)的系統(tǒng)耦合度比較低,集成度好。但是,一個仿真對應(yīng)一個中間件。多個仿真模塊就需要多個中間件,是一種資源浪費。
這是一種通用中間件的方法,這種方法不僅局限于某個特定的HLA邦員和特定仿真模擬器之間的互操作,還可以實現(xiàn)多個HLA邦員和多個仿真模擬器之間的互操作,在一定程度上具有通用性。
它的實現(xiàn)原理是橋接器從STK仿真系統(tǒng)中接受到一個TCP/IP協(xié)議數(shù)據(jù)包時,將其轉(zhuǎn)換為HLA/RTI聯(lián)邦FOM文件中的對象類,并向聯(lián)邦執(zhí)行中注冊該對象類實例,從而實現(xiàn)聯(lián)邦內(nèi)成員間交互通信。反方向交互時,由于橋接器在HLA/RTI聯(lián)邦執(zhí)行中實現(xiàn)注冊,橋接器按照邦員規(guī)則接收信息,將其轉(zhuǎn)變?yōu)門CP/IP協(xié)議數(shù)據(jù)包后發(fā)送打偶STK仿真系統(tǒng),完成交互。
跟第一種方法相比,橋接器方法中一個邦員可以同時與多個仿真模擬器通信,一個模擬器也可以同時與多個邦員通信。比較中間件的方法,橋接器方法更具有通用性,編程員和用戶都不需要對所連接的兩類系統(tǒng)內(nèi)部非常了解。用戶可以有更多的選擇。
當仿真模擬器要傳輸數(shù)據(jù)給HLA聯(lián)邦成員時,首先用仿真模擬器代理接收,仿真模擬器代理和HLA聯(lián)邦代理交換數(shù)據(jù)后,由 HLA聯(lián)邦代理將數(shù)據(jù)傳給HLA聯(lián)邦成員。反之,當HLA聯(lián)邦成員要傳輸數(shù)據(jù)給仿真模擬器時,首先用HLA聯(lián)邦代理接收,HLA聯(lián)邦代理和仿真模擬器代理交換數(shù)據(jù)后,由仿真模擬器代理將數(shù)據(jù)傳給仿真模擬器。其結(jié)構(gòu)示意圖如圖1所示。

圖1 系統(tǒng)代理節(jié)點結(jié)構(gòu)Fig.1 The structure of system agent
在實現(xiàn)這種方法的過程中發(fā)現(xiàn),程序思路簡單,主要通過代理節(jié)點完成本系統(tǒng)同其他系統(tǒng)的交互操作。應(yīng)用此種方法需要為每個系統(tǒng)分別設(shè)置代理節(jié)點,要求對系統(tǒng)內(nèi)部通信方式比較了解,工作量較大。
實現(xiàn)某種特定仿真目的系統(tǒng)稱為聯(lián)邦,聯(lián)邦由若干聯(lián)邦成員、RTI和聯(lián)邦對象模型構(gòu)成。聯(lián)邦成員間通過RTI提供的服務(wù)進行交互。仿真應(yīng)用于底層的邦員通信功能分離,RTI提供的服務(wù)實現(xiàn)底層的通信功能,聯(lián)邦成員不必涉及底層的網(wǎng)絡(luò)通信,這一點正是HLA/RTI通信的特別之處。HLA/RTI代理節(jié)點是仿真系統(tǒng)中一個比較特殊的邦員,仿真系統(tǒng)中某個邦員需要與其他系統(tǒng)進行交互時,首先將交互信息發(fā)送到HLA/RTI代理節(jié)點,由代理節(jié)點通過某種策略完成交互。代理節(jié)點接收到其他系統(tǒng)的信息之后,會將信息發(fā)送到目標邦員,從而完成仿真系統(tǒng)中某個節(jié)點與其他系統(tǒng)的信息交互。
STK仿真系統(tǒng)可以借助STK/Connect通信模塊接受第三方軟件程序發(fā)布的控制命令,改變仿真場景的屬性。由此我們可以選定某個HLA邦員作為代理節(jié)點與STK仿真系統(tǒng)進行交互,代理節(jié)點在通信機制上即要遵循STK/Connect模塊的通信原理完成與STK仿真系統(tǒng)交互通信,又能按照HLA通信機制實現(xiàn)與其他邦員節(jié)點進行通信。
STK-RTI代理在本質(zhì)上是一個HLA邦員,可按照聯(lián)邦成員開發(fā)的基本步驟進行開發(fā)和設(shè)計。第三方應(yīng)用程序通過STK/Connect模塊向STK發(fā)送命令,根據(jù)STK/Connect模塊可接收的命令進行STK-RTI代理交互類的設(shè)計。
在每一個仿真步長時間內(nèi),STK-RTI代理訂購HLA成員公布的對象類,由此生成STK場景中相應(yīng)的對象;同時接受來自HLA成員的命令交互,讓后想STK轉(zhuǎn)發(fā)相應(yīng)的命令。接著,STK-RTI代理向STK發(fā)出命令,要求STK返回STK中場景、景象對象的屬性、狀態(tài),STK-RTI代理可將數(shù)據(jù)轉(zhuǎn)發(fā)給其他HLA邦員,讓其對所關(guān)心的數(shù)據(jù)進行處理。代理成員的運行流程如圖2所示。
代理節(jié)點由VC編程實現(xiàn),首先配置支持STK連接的頭文件和庫文件。頭文件包括:AgConnect.h、AgConSendData.h和AgCoUtMsgCommon.h,三者均位于”STK安裝目錄ConnectIncludes”文件夾中。所需的庫文件為:AgConnect.lib位于”STK安裝目錄ConnectLib”文件夾中。在程序代碼中依次初始化連接,打開與STK連接,建立新場景,新建對象并設(shè)置參數(shù),從而實現(xiàn)程序?qū)TK仿真場景的命令控制。仿真模型建立之后,系統(tǒng)可以控制STK進行仿真運行,可用AgConProcessSTKCmd函數(shù)接收仿真場景數(shù)據(jù)。

圖2 代理成員運行流程Fig.2 Operation process of the deputy member
將 STK/Connect函數(shù) int AgConProcessSTKCmd(char**context,char*cmdString,AgTConReturnInfo*returnInfo) 以 交互類的形式實現(xiàn),函數(shù)中的參數(shù) context、cmdStrin、returnInfo表示為交互類的參數(shù)。參數(shù) context、cmdStrin分別表示了接受命令的不同聯(lián)接方式和命令的具體內(nèi)容。參數(shù)returnInfo表示了異步通訊模式、存貯類型、標識符信息、返回數(shù)據(jù)包的數(shù)目,及每一個具體數(shù)據(jù)包的信息。 HLA成員發(fā)出命令交互,STK-RTI代理接受命令交互并向STK轉(zhuǎn)發(fā)命令,STK接受命令后做出應(yīng)答。應(yīng)答包含一個枚舉數(shù)據(jù)類型的參數(shù),其值表示為 AgCNoError、AgCError、AgCNackReturned。 命令交互類實現(xiàn)了 HLA成員作為第三方應(yīng)用程序通過RTI向 STK發(fā)出命令,此時STK-RTI代理的作用是轉(zhuǎn)發(fā)HLA成員的命令,STK接受命令后作出的應(yīng)答。在這種情況下,RTI及STKRTI中間件是透明的,可以視為HLA成員作為第三方應(yīng)用程序與STK通過Connect模塊直接進行通訊。

圖3 代理節(jié)點界面圖Fig.3 Interface of agent node
HLA聯(lián)邦開發(fā)相對復(fù)雜,RTI運行時,需要兩個配置文件:一個是聯(lián)邦執(zhí)行數(shù)據(jù)FED;一個是RTI初始化文件RID。創(chuàng)建聯(lián)邦執(zhí)行數(shù)據(jù)FED文件,F(xiàn)ED文件包含了FOM中的信息,包括聯(lián)邦成員中各個聯(lián)邦成員的對象類、交互類、對象類屬性、交互類參數(shù)和路徑空間等數(shù)據(jù)結(jié)構(gòu)信息。在創(chuàng)建聯(lián)邦執(zhí)行后,需要指定FED文件所在的路徑和文件名。當創(chuàng)建聯(lián)邦執(zhí)行后,F(xiàn)ED文件中的信息被讀取和解析,并儲存在一個內(nèi)部數(shù)據(jù)庫中。RID初始化文件內(nèi)容包含了控制RTI運行的配置參數(shù),因此可以通過配置RID文件,使RTI滿足特定的仿真應(yīng)用。RTI使用環(huán)境變量RTI_RID_FILE來確定RID初始化文件的位置和文件名。當聯(lián)邦創(chuàng)建之后,所有邦員根據(jù)系統(tǒng)中配置的RTI_HOME參數(shù)確定聯(lián)邦的位置,主動加入聯(lián)邦,然后可以在邦員FED文件的規(guī)則下,各幫員自由進行信息交互。編程實現(xiàn)的代理節(jié)點截圖如圖3所示。
文中研究了STK仿真系統(tǒng)與基于HLA仿真系統(tǒng)交互通信的3種實現(xiàn)方法——代理法,中間件法和橋接器法,比較了3種方法的優(yōu)缺點,選定代理方法進行了STK仿真系統(tǒng)中與HLA分布式交互仿真系統(tǒng)通信的設(shè)計。在研究代理基本工作原理、系統(tǒng)結(jié)構(gòu)模塊的基礎(chǔ)上,使用VC++根據(jù)編譯技術(shù)編寫了相應(yīng)的程序,實現(xiàn)了該代理方法通信。
[1]柴旭東,李伯虎.高層體系結(jié)構(gòu)HLA/RTI及其實現(xiàn)綜述[J].系統(tǒng)仿真學報,1999,10(2):92.
CHAI Xu-dong,LI Bo-hu.An overview of HLA/RTI and its implementation[J].Journal of System Simulation,1999,10(2):92.
[2]陳敏.OPNET網(wǎng)絡(luò)仿真[M].北京:清華大學出版社,2004.
[3]張亞崇,孫國基,嚴海蓉,等.RTI中時間推進機制的研究[J].計算機應(yīng)用研究,2005(3):104-109.
ZHANG Ya-chong,SUN Guo-ji,YAN Hai-rong,et al.Research on time advance mechanism in RTI[J].Application Research of Computers,2005(3):104-109.
[4]賀光霞.基于HLA通信網(wǎng)絡(luò)仿真平臺的研究[J].無線電通信技術(shù), 2008, 33(1):39-41.
HE Guang-xia.Based on the HLA communication network simulation platform research [J].Radio Communications Technology,2008,33(1):39-41.
[5]陳長興,高曉光,張敬偉,等.基于OPNET的網(wǎng)絡(luò)仿真[J].空軍工程大學學報:自然科學版,2007,8(2):86-88.
CHEN Chang-xing,GAO Xiao-guang,ZHANG Jing-wei,et al.Network simulation based on OPNET [J].Journal of Air Force Engineering University:NaturalScience Edition,2007,8(2):86-88.
[6]黃為.基于HLA的戰(zhàn)場環(huán)境仿真研究 [D].武漢:華中科技大學,2009.
[7]蒲瑋,孫少斌.聯(lián)邦成員應(yīng)用程序的一種模板實現(xiàn)[J].計算機工程與設(shè)計,2009(4):987-989.
PU Wei,SUN Shao-bin.The federal member for application to a template[J].Computer Engineering and Design,2009(4):987-989.