梁培生,周玉芳,翟永翠
(中國船舶重工集團公司江蘇自動化研究所,江蘇 連云港 222006)
分布交互仿真(Distributed Interactive Simulation)具有分布性、交互性、異構型、時空一致性和開放性特點[1]。它的體系結構主要經歷了仿真組網(Simulation Networking,SIMNET)、分布交互式仿真(Distributed Interactive Simulation,DIS)、聚合級仿真協議(Aggregate Level Simulation Protocol,ALSP)、高層體系結構(High Level Architecture,HLA)、試驗與訓練使能體系結構[2](Test and Training Enabling Architecture,TENA)等階段。
HLA主要針對建模與仿真領域,因而它主要應用于虛擬和構造仿真,而TENA主要針對靶場領域,它所支持的是真實仿真。因而構建LVC體系結構可以從HLA或者 TENA方面進行研究。考慮到目前 TENA參考資料較少并且只支持真實仿真等原因,本文打算從HLA進行研究。HLA時間管理的出發點是在保證正確地實現聯邦成員間仿真時間的協調推進和數據交換的前提下,定義所需服務的最小集合,它的時間管理原則[3]主要是不存在全局時鐘,可以產生“時戳”是“未來”的事件而且聯邦成員不需要按事件的時戳調度事件。同時它將聯邦成員設為時間控制和時間受限等狀態,時間控制成員只能發送時戳消息,時間受限成員只能接收時戳消息,同時當聯邦成員請求時間推進時,必須得到RTI的同意,這樣就在一定程度上影響了信息傳輸的實時性。
由于真實仿真的實時性要求比較高,而LVC為了支持真實仿真,必須在實時性方面較以往體系結構有較大的改善。為了實現這一目標,在參考了 HLA相關知識的基礎上,本文提出了一套LVC時間管理的實時性方法,并給出了性能測試。測試結果表明該方法的提出對分布交互仿真的發展具有重要的意義。
HLA時間管理在實時性方面主要存在以下幾個問題:
1)在HLA中,每個聯邦成員可以有自己的聯邦成員時間,而各個成員的聯邦成員時間可以不同,這樣雖然可以提高聯邦的交互性。但這樣一個聯邦成員Fi發送消息給另一各聯邦成員 Fj請求知道它目前 t時刻的狀態信息,這里的t時刻是相對Fi的聯邦成員時間來說的,而Fj的 目前聯邦成員時間小于t,Fj等到自己聯邦成員時間到達 t時把自己的信息發送給Fi。這樣,Fi接收到的消息并不是自己想要的信息,從而導致了實時消息的錯誤。
2)在HLA中,由于各個聯邦成員內部都可以有自己的聯邦成員時間[4],當要推進聯邦成員時間時,必須向RTI提出“時間推進請求”服務,而RTI要根據聯邦成員的邏輯時間管理策略、消息傳遞機制和時間推進機制的配置信息來響應這個請求,所以當一個聯邦成員請求時間推進時,不一定可以馬上得到RTI的響應,這樣聯邦成員不能及時推進它的邏輯時間,這樣就產生了聯邦成員邏輯時間推進響應速度比較慢的問題。
3)目前一些 RTI的軟件開發采用的是基于CORBA的技術,而從目前的資料來看,CORBA本身就沒有提供實時功能。如果想真正實現實時,就不能采用CORBA技術,而必須通過調用底層的API函數來實現。
4)聯邦成員間的消息傳遞是通過網絡來完成的,網絡傳輸總存在時延,而且時延還受到網絡的帶寬和流量的限制。當系統要求實時仿真時,就會出現各種預期不到的問題,而無法實現實時要求,這樣就產生了網絡延遲較大的問題。
5)在實際的系統中,DIS仿真系統是實物直接和仿真機互聯,然后接入到DIS系統中,實現的是實時仿真;由于 HLA本身仿真的盟員較多,加上仿真設備性能的影響,會使得仿真不能實時推進,仿真時間與墻鐘(wall clock)不一致。當DIS和HLA系統互聯時,很難實現系統的協調同步,從而在HLA和DIS系統互操作時無法滿足實時仿真的要求[5]。
LVC仿真體系結構的目的是為了同時支持真實仿真(L)、虛擬仿真(V)和構造仿真(C)之間的互操作。對于一個真實仿真來說,實時性的要求是構建一個真實仿真系統的重要因素。對于 HLA來說,HLA時間管理是可選服務,只定義了所需服務的最小集合,目的是盡量減少時間管理服務對消息傳遞的延遲,但是這些措施并不足以滿足真實仿真的要求。真實仿真需要端到端的網絡性能預測能力,但是 HLA沒有提供用于規定端到端性能預測所需要的接口,而且 HLA只支持可靠的(reliable)和盡可能快的(best effort)兩種消息傳遞方式,遠不能滿足真實仿真對消息傳遞的要求。另外,標準的 HLA時間管理并不能區分需要實時處理的消息和非實時消息,因此不能給有實時處理要求的消息優先分配資源。為了實現LVC體系結構的構建,就必須在時間管理的實時性方面進行深入研究。
鑒于 HLA時間管理機制在實時性方面存在上述問題,國內外有不少專家提出了 HLA的實時性改善方法,如提高網絡和主機性能、增加特殊的硬件和采用實時算法[3]等等,但由于其代價比較大,本文提出了如下兩種 LVC時間管理實時性方法:優先級方法HLA雖然提出過,但沒有真正實現;最大發送時間限制是一個新提出的方法,因此LVC的時間管理機制與RTI的時間管理機制不同。
1)優先級方法 優先級方法的本質是減少同一時刻在網絡上傳輸的數據量,優先級在設置時可以對成員設置優先級,也可以對成員發送的消息設置優先級。如對成員設置優先級時,中間件將對各個成員的類型進行判斷,根據仿真需要給各個成員設置不同等級的優先級,優先級高的成員中間件會提前發送,這樣在網絡上傳輸的只是高優先級成員發送的消息,等到高優先級成員消息發送完畢以后,再發送中、低優先級成員的消息。對消息設置不同優先級原理類似,通過給成員發送的消息設置優先級,中間件將會根據消息的優先級大小在網絡上傳輸,這樣也同樣減少了網絡的數據量。
優先級方法實現過程是當聯邦成員需要發送消息時首先向中間件發送一個請求,這個請求中包含了成員的類型,如真實仿真成員、虛擬仿真成員和構造仿真成員。用戶在中間件中給真實仿真成員、虛擬仿真成員和構造仿真成員設置不同級別的優先級,優先級的數值大小是用戶根據自己的實際需要來設置的。這樣當中間件收到各個聯邦成員的消息發送請求時會根據事先設置好的優先級大小來給各個聯邦成員優先級賦值,中間件會根據優先級的大小來將消息發送到接收方。例如若為真實仿真成員,則用戶可以在中間件上將該聯邦成員的優先級設為高優先級,將其他聯邦成員設置中、低優先級,這樣給有實時處理要求的真實仿真成員的消息優先分配資源,從而可以保證真實仿真成員發送的消息能夠及時的發送到消息接收方,其具體的實現過程如圖1所示。

圖1 優先級實現過程
2)最大發送時間限制 最大發送時間限制是中間件所具有的一個對接收到的消息超時與否進行判斷的功能。當接收到的消息發送超時時,中間件將根據仿真成員的要求來請求成員重新發送。具體的實現過程是仿真系統中的聯邦成員在發送的消息中事先增加了一個最大發送時間限制參數,該參數表示此消息必須在規定的時間之內發送到接收方,同時增加了一個發送超時是否重新發送參數。當此參數為真時,表示發送超時將重新發送;若此參數為假,則表示發送超時無須重新發送。當中間件接收到該消息后,它將負責計算接收到的消息的傳輸時間是否超過了規定的最大發送時間限制,若消息沒有在規定的時間內成功發送到中間件,則中間件將發送一個信息發送超時報告,同時根據發送超時是否重新發送參數來判斷是否請求聯邦成員重新發送。這種處理方式在一定程度上提高了信息發送的實時性,也避免了對錯誤信息的處理,提高了仿真的效率。同時為了解決消息發送時發生邏輯錯誤,LVC時間管理的實時性方法還采用了“因果關系處理”服務,為了防止出現聯邦成員接收到的消息邏輯時間前后不一致,中間件將會判斷成員需要接收的多個消息是否具有因果關系,若具有因果關系則LVC時間管理中間件首先將“因消息”發送到接收方,再將“果消息”發送到接收方。這種處理方式在一定程度上解決了“因果顛倒”的問題。
LVC時間管理中間件作為聯邦執行的底層支撐系統,其體系結構的優劣直接關系到仿真系統的性能,從其邏輯結構看,有以下三種結構模型:
1)集中式結構模型 這種結構的特點是具有一個全功能的中心節點,在該中心節點上實現所有的服務。聯邦成員之間無直接的通信關系,所有的成員之間都通過中心節點提供的服務,來實現消息的轉發與交換。其優點是結構簡單,容易實現,但中心節點負擔大,將成為系統的瓶頸,不利于系統規模的擴展。
2)分布式結構模型 這種結構的特點類似于ALSP系統的體系結構,不存在中心節點,但在每個仿真節點機上都有自己的局部 RTI服務器(Local RTI),聯邦成員只需向本地RTI服務進程提出請求,由本地RTI做出響應。如果本地RTI不能完成響應,則請求外部的RTI服務進程協同完成。
3)層次式結構模型 層次式結構模型結合分布式和集中式實現方法,以克服各自存在的問題,這種結構模型中有一個中心服務器,用于執行一些全局操作,在中心服務器下設置一組子RTI服務器,每個子服務器負責一組聯邦成員的服務請求,涉及到全局操作的請求,由中心服務器協調各個子RTI服務器共同完成。
由于層次式結構模型可以減少全局操作的延遲,提高仿真系統運行的效率。對于一些局部操作,由RTI的子服務器分散執行,可降低計算的耦合度,從而提高執行效率。因此本文的LVC時間管理中間件采用這種層次式的結構模型。其系統總體模型如圖2所示。

圖2 系統總體模型圖
LVC時間管理中間件提供給聯邦成員調用的函數及功能主要有以下幾類:
1)MemberJoinRequest()
此函數的主要功能是當中間件發送仿真初始化報文以后,成員調用此函數加入到仿真系統中,如果加入成功的話,中間件會發送一個回執信息。
2)SendPublishMsg()
此函數的主要功能是成員調用此函數后可以向中間件發送自己公布的消息,即成員對外要發送的消息。
3)SendSubscribeMsg()
此函數的主要功能是成員調用此函數后可以向中間件發送自己訂購的消息,即成員要接收的消息。
4)TimeAdvanceRequest()
此函數的主要功能是成員通過調用此函數來實現仿真時間的推進。
此功能的實現算法如下:
①處理異常:如果聯邦成員沒有加入聯邦或者已經處于掛起狀態,則引發異常;如果請求推進的邏輯時間小于聯邦成員的當前邏輯時間,則引發異常。
②計算最大可用邏輯時間(GALT):GALT的計算與推進服務的類型、聯邦成員所處的狀態、Lookahead以及時戳隊列中的最小時標信息等因素有關,絕不能簡單地歸結為min{Ti+Li}(Ti為聯邦成員i的當前邏輯時間,Li為聯邦成員i的Lookahead)。
③重新計算當前邏輯時間 T:如果聯邦成員不是時間受限成員,則 T=theTime;否則T=min{minTSO,GALT,theTime},其中theTime為調用服務的參數,minTSO為獲得的聯邦成員時戳隊列中最小消息的時標。
④處理Lookahead:如果 Lookahead在推進的過程中逐漸變小,此時必須檢查聯邦成員的 Lookahead是否在變化,并重新計算Lookahead。
⑤發送時戳消息:調用 SendPublishMsg()函數,將時戳隊列中的消息按優先級順序發送出去。
⑥中間件同意聯邦成員推進:調用timeAdvanceGrant回調服務,允許聯邦成員推進到邏輯時間T。
LVC時間管理中間件的內部回調函數主要有以下幾類:
1)EnableMemberJoin()
此函數的主要功能是 LVC時間管理中間件內部調用此函數后向成員發送一個加入回執。
2)MiddlewareProcess()
此函數的是LVC時間管理中間件的核心部分,它主要用來完成優先級處理和因果關系處理,中間件內部調用此函數后,會根據優先級的大小來決定發送消息的順序,同時此函數還會根據成員訂購的消息是否具有因果關系來優先發送“因消息”,從而防止出現“因果顛倒”錯誤。
3)Federateprocess()
此函數的主要功能是對接收到的消息進行處理,判斷接收到的消息是否超時,當中間件收到公布消息時,該函數獲得成員發送時間、中間件時間以及最大發送時間等數據之后,來判斷接收到的消息是否超時,若發送超時中間件請求成員重新發送。
4)processovertime()
此函數的主要功能是 LVC時間管理中間件內部調用此函數后對接收到的公布消息的最大發送時間限制進行處理,如果發送超時提示用戶重新發送。
5)timeAdvanceGrant()
中間件同意聯邦成員的時間推進,通知聯邦成員將時間推進到其請求的時刻。
聯邦成員調用 LVC時間管理中間件過程如圖3所示。

圖3 聯邦成員調用LVC時間管理中間件過程
Windows XP操作系統的三臺計算機、MAK RTI1.3V6版本和LVC時間管理中間件。
由于真實仿真成員的實時性要求比較高,因此LVC仿真系統信息傳輸的實時性要求比其他的仿真系統要求要高,這時LVC仿真系統與其他系統的主要區別之一。
設定3個聯邦成員:真實仿真成員Federate1、虛擬仿真成員 Federate2和構造仿真成員 Federate3。Federate1訂購和接收Federate2,Federate3的數據,公布和更新自己的數據。Federate2訂購和接收Federate1的數據,公布和更新自己的數據。Federate3訂購和接收Federate1的數據[6]。
1)Federate1公布自己的數據和訂購 Federate2,Federate3的數據。Federate2訂購Federate1的數據,公布和更新自己的數據。Federate3訂購Federate1的數據,公布自己的數據,接下來進入仿真循環。
2)Federate1更新自己的數據。
3)Federate2和 Federate3確保接收到 Federate1的更新數據。
4)Federate2和Federate3分別更新自己的數據。
5)Federate1確保接收到過程4)中Federate2和Federate3的更新數據。
6)重復過程2)~過程5),直至仿真循環結束。
在不同數據量的情況下,記錄過程2)~過程5)在LVC時間管理中間件中的時間延遲,然后將此同樣 的環境在RTI1.3V6中測試。測試過程如圖4所示。

圖4 LVC時間管理中間件測試過程
在每種數據量下測量500組數據,獲得傳輸延遲的最大延遲和最小延遲,然后獲得這500組數據的均值。部分測試數據如表1所示。

表1 RTI1.3V6和LVC時間管理中間件時間延遲測試數
由均值數據得到的 LVC時間管理中間件與RTI1.3V6延遲大小對比如圖5所示。

圖5 LVC時間管理中間件與RTI1.3V6時間延遲比較
HLA解決了仿真領域中的可重用和互操作問題,但它應用在實時性要求較高的仿真系統中還存在缺陷和不足,從而也就限制了它的應用范圍。LVC體系結構的提出就是為了能夠在真正意義上實現真實、虛擬和構造這三種類型的仿真,而實時問題是LVC能否真正實現的關鍵,也是目前基于LVC分布仿真技術中極具挑戰性的研究方向之一,其應用前景非常廣闊。
本文針對HLA時間管理實時性方面存在的問題,提出了分布交互仿真的實時性改善方法。在綜合考慮LVC時間管理中間件設計時應該注意的問題之后,實現了 LVC時間管理中間件的設計,進而分別對RTI1.3V6和LVC時間管理中間件進行性能測試,測試結果表明 LVC的時間管理在實時性方面較RTI1.3V6有較大的改善,LVC時間管理中間件工程使用的實現將會進一步推動分布交互仿真的發展。
[1]周彥,戴劍偉.HLA仿真程序設計[M].北京:電子工業出版社,2008.
[2]高世峰,蔣海濱,周紅梅.分布交互式仿真體系結構發展狀況的研究[C].2003年全國仿真技術學術會議論文集,2003.
[3]翟永翠,程健慶.HLA中時間管理及其對實時仿真改善方法的研究[J].計算機仿真,2003,8(8):144-147.
[4]徐大勇,蔣曉原,王鈺.HLA時間管理的實時性擴展[J].計算機仿真,2005,6(5):202-207.
[5]姚新宇,黃柯棣.基于HLA時間管理的實時時間控制和樂觀時間同步算法設計[J].國防科技大學學報,1999(6):84-87.
[6]何少情,王懷民,姚益平,等.HLA_RTI時間管理算法性能測試[J].系統仿真學報,2005,2(2):358-361.