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

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

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

圖3 代理節點界面圖Fig.3 Interface of agent node
HLA聯邦開發相對復雜,RTI運行時,需要兩個配置文件:一個是聯邦執行數據FED;一個是RTI初始化文件RID。創建聯邦執行數據FED文件,FED文件包含了FOM中的信息,包括聯邦成員中各個聯邦成員的對象類、交互類、對象類屬性、交互類參數和路徑空間等數據結構信息。在創建聯邦執行后,需要指定FED文件所在的路徑和文件名。當創建聯邦執行后,FED文件中的信息被讀取和解析,并儲存在一個內部數據庫中。RID初始化文件內容包含了控制RTI運行的配置參數,因此可以通過配置RID文件,使RTI滿足特定的仿真應用。RTI使用環境變量RTI_RID_FILE來確定RID初始化文件的位置和文件名。當聯邦創建之后,所有邦員根據系統中配置的RTI_HOME參數確定聯邦的位置,主動加入聯邦,然后可以在邦員FED文件的規則下,各幫員自由進行信息交互。編程實現的代理節點截圖如圖3所示。
文中研究了STK仿真系統與基于HLA仿真系統交互通信的3種實現方法——代理法,中間件法和橋接器法,比較了3種方法的優缺點,選定代理方法進行了STK仿真系統中與HLA分布式交互仿真系統通信的設計。在研究代理基本工作原理、系統結構模塊的基礎上,使用VC++根據編譯技術編寫了相應的程序,實現了該代理方法通信。
[1]柴旭東,李伯虎.高層體系結構HLA/RTI及其實現綜述[J].系統仿真學報,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網絡仿真[M].北京:清華大學出版社,2004.
[3]張亞崇,孫國基,嚴海蓉,等.RTI中時間推進機制的研究[J].計算機應用研究,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通信網絡仿真平臺的研究[J].無線電通信技術, 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的網絡仿真[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的戰場環境仿真研究 [D].武漢:華中科技大學,2009.
[7]蒲瑋,孫少斌.聯邦成員應用程序的一種模板實現[J].計算機工程與設計,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.