嚴(yán) 琳
(中國(guó)航工業(yè)西安航空計(jì)算技術(shù)研究所第8研究室,陜西西安 710065)
結(jié)合實(shí)際項(xiàng)目需求,提出一種較高性能的輕量級(jí)低耦合RTI軟件架構(gòu),基于該軟件架構(gòu)設(shè)計(jì)并實(shí)現(xiàn)了分布式實(shí)時(shí)仿真系統(tǒng)的軟總線。不同領(lǐng)域的工程人員直接從軟總線上獲取自身系統(tǒng)需要的仿真數(shù)據(jù),避免了學(xué)科交叉的不便,也降低了仿真系統(tǒng)的設(shè)計(jì)的復(fù)雜度。
常見的HLA/RTI架構(gòu)包括:集中式RTI軟件架構(gòu)、全分式RTI軟件架構(gòu)和層次式RTI軟件架構(gòu),針對(duì)不同類型的軟件項(xiàng)目,這些軟件架構(gòu)各有利弊。
集中式RTI[1]軟件架構(gòu),即將所有的RTI功能均部署在服務(wù)器上,服務(wù)器是整個(gè)系統(tǒng)的關(guān)鍵。該軟件架構(gòu)邏輯簡(jiǎn)單、全局維護(hù)效率高、開發(fā)人員易于掌握,但由于服務(wù)器的限制,該軟件架構(gòu)的計(jì)算能力和網(wǎng)絡(luò)通信能力均受限。這種軟件架構(gòu)適合小型仿真系統(tǒng)。
分布式RTI軟件架構(gòu),即沒有中心節(jié)點(diǎn),每個(gè)仿真節(jié)點(diǎn)均需部署本地的RTI服務(wù)器。該軟件架構(gòu)易于系統(tǒng)規(guī)模的擴(kuò)展,但其協(xié)調(diào)算法異常復(fù)雜,從而導(dǎo)致系統(tǒng)運(yùn)行效率低下。這種架構(gòu)適合對(duì)實(shí)時(shí)性要求不高的大型仿真系統(tǒng)。
層次式RTI[2]軟件架構(gòu),即多服務(wù)器模式,位于不同服務(wù)器的仿真節(jié)點(diǎn)之間,需要通過各自所在RTI服務(wù)器進(jìn)行交互。該軟件架構(gòu)的計(jì)算能力和網(wǎng)絡(luò)通信能力均較強(qiáng),但由于多服務(wù)器的模式,會(huì)使得整個(gè)系統(tǒng)設(shè)計(jì)的協(xié)調(diào)算法復(fù)雜、實(shí)時(shí)性差。這種架構(gòu)適合實(shí)驗(yàn)室內(nèi)的科研項(xiàng)目。
傳統(tǒng)的HLA/RTI需提供聯(lián)邦管理服務(wù)、時(shí)間管理服務(wù)、數(shù)據(jù)分發(fā)管理服務(wù)、聲明管理服務(wù)、對(duì)象管理服務(wù)和所有權(quán)管理服務(wù)這6大服務(wù)[3-5]。本文根據(jù)實(shí)際項(xiàng)目需要,對(duì)標(biāo)準(zhǔn)服務(wù)進(jìn)行裁剪,僅提供聯(lián)邦管理、聲明管理和時(shí)間管理服務(wù),刪除系統(tǒng)中不必要的冗余服務(wù),在各個(gè)仿真節(jié)點(diǎn)上部署本地的RTI數(shù)據(jù)處理庫(kù),底層通信采用千兆以太網(wǎng)和反射內(nèi)存卡結(jié)合的方式,保證了仿真過程的安全性、仿真節(jié)點(diǎn)的獨(dú)立性和仿真系統(tǒng)的實(shí)時(shí)性。
該架構(gòu)的優(yōu)點(diǎn)是實(shí)時(shí)性強(qiáng)、架構(gòu)簡(jiǎn)單、易于系統(tǒng)擴(kuò)展和軟件開發(fā),降低了研發(fā)成本。該架構(gòu)的缺點(diǎn)是當(dāng)仿真節(jié)點(diǎn)過多時(shí)中心服務(wù)器計(jì)算能力易產(chǎn)生瓶頸。適合小型仿真系統(tǒng),但擴(kuò)展性較好。
軟總線根據(jù)各仿真節(jié)點(diǎn)的發(fā)布-訂閱關(guān)系對(duì)數(shù)據(jù)進(jìn)行采集和分發(fā),是整個(gè)仿真系統(tǒng)運(yùn)行的基礎(chǔ)。仿真系統(tǒng)通過軟總線對(duì)整個(gè)仿真系統(tǒng)的進(jìn)行時(shí)間推進(jìn)和過程控制[6]。如圖1所示,軟總線系統(tǒng)主要由5個(gè)模塊組成:聯(lián)邦管理服務(wù)、時(shí)間管理服務(wù)、聲明管理服務(wù)、通信服務(wù)和總控服務(wù)。
圖1 軟總線服務(wù)框圖
聯(lián)邦管理服務(wù)。負(fù)責(zé)仿真節(jié)點(diǎn)進(jìn)入和退出仿真系統(tǒng)的管理[7];時(shí)間管理服務(wù)。負(fù)責(zé)整個(gè)實(shí)時(shí)仿真系統(tǒng)的時(shí)間推進(jìn),所有仿真節(jié)點(diǎn)需以等步長(zhǎng)進(jìn)行推進(jìn)[8];聲明管理服務(wù)。負(fù)責(zé)各仿真節(jié)點(diǎn)之間數(shù)據(jù)訂閱-發(fā)布關(guān)系[9];通信服務(wù)。負(fù)責(zé)各仿真節(jié)點(diǎn)之間的數(shù)據(jù)傳輸,需要數(shù)據(jù)實(shí)時(shí)交互的幾個(gè)仿真節(jié)點(diǎn)上部署反射內(nèi)存卡,對(duì)實(shí)時(shí)性要求不夠仿真節(jié)點(diǎn)則部署千兆以太網(wǎng)來(lái)進(jìn)行數(shù)據(jù)傳輸。
總控服務(wù)負(fù)責(zé)整個(gè)仿真系統(tǒng)的開始、結(jié)束和暫停[10]。
反射內(nèi)存卡具有不占用CPU時(shí)間、實(shí)時(shí)性強(qiáng)、讀寫方式簡(jiǎn)單、通信協(xié)議簡(jiǎn)單、傳輸數(shù)據(jù)包小、成本較高的特點(diǎn)。千兆以太網(wǎng)具有傳輸數(shù)據(jù)包大、成本較低廉、實(shí)時(shí)性弱、通信協(xié)議較復(fù)雜的特點(diǎn)。
根據(jù)以上的特點(diǎn)分析,軟總線的通信服務(wù)通過反射內(nèi)存卡和千兆以太網(wǎng)組合的方式來(lái)進(jìn)行實(shí)現(xiàn),千兆以太網(wǎng)用于各仿真節(jié)點(diǎn)與數(shù)據(jù)庫(kù)通信等,對(duì)數(shù)據(jù)實(shí)時(shí)性要求不高的部分,反射內(nèi)存卡部署在各仿真節(jié)點(diǎn)用于各仿真節(jié)點(diǎn)之間的數(shù)據(jù)通信,全面考慮系統(tǒng)的實(shí)時(shí)性、數(shù)據(jù)的可靠性和成本的合理性。
輕量級(jí)低耦合RTI的總體架構(gòu)由RTI服務(wù)器端、RTI客戶端以及RTI數(shù)據(jù)處理庫(kù)構(gòu)成。其中,RTI服務(wù)器端負(fù)責(zé)全局管理工作,單獨(dú)部署在總控計(jì)算機(jī)上;RTI客戶端部署在各個(gè)仿真節(jié)點(diǎn)的主機(jī)上,負(fù)責(zé)和軟總線進(jìn)行數(shù)據(jù)和控制的交互;在總控計(jì)算機(jī)和各個(gè)仿真節(jié)點(diǎn)的主機(jī)上還需分別部署RTI數(shù)據(jù)處理庫(kù)用于消息收發(fā)的處理。輕量級(jí)低耦合RTI邏輯架構(gòu)及部署方案如圖2所示。
圖2 輕量級(jí)低耦合RTI的邏輯架構(gòu)及部署方案
2.2.1 RTI服務(wù)器端
RTI服務(wù)器端負(fù)責(zé)處理各仿真節(jié)點(diǎn)提出的服務(wù)請(qǐng)求,是RTI的主體部分。
(1)聯(lián)邦管理服務(wù)。分布式實(shí)時(shí)仿真系統(tǒng)中的各仿真節(jié)點(diǎn)為聯(lián)邦成員,仿真系統(tǒng)為聯(lián)邦。RTI服務(wù)器端的聯(lián)邦管理服務(wù)的相關(guān)活動(dòng)包括動(dòng)態(tài)新建、變更和刪除聯(lián)邦、聯(lián)邦成員之間的時(shí)間同步以及聯(lián)邦現(xiàn)場(chǎng)的保存和恢復(fù)等服務(wù)。
本文引入同步時(shí)間點(diǎn)機(jī)制。仿真過程分為若干階段,在每個(gè)階段開始處設(shè)置一個(gè)同步時(shí)間點(diǎn),當(dāng)聯(lián)邦成員到達(dá)該同步時(shí)間點(diǎn)后,阻塞等待其他聯(lián)邦成員完成當(dāng)前階段數(shù)據(jù)解算,當(dāng)所有聯(lián)邦成員都到達(dá)該同步時(shí)間點(diǎn)時(shí),各聯(lián)邦成員解除阻塞,繼續(xù)推進(jìn)。
RTI服務(wù)器端為聯(lián)邦成員在聯(lián)邦范圍內(nèi)分配一個(gè)唯一的聯(lián)邦成員句柄,回復(fù)聯(lián)邦成員已入聯(lián)邦并標(biāo)識(shí)聯(lián)邦成員其句柄值,聯(lián)邦成員發(fā)送的每條消息均通過聯(lián)邦句柄和聯(lián)邦成員句柄來(lái)標(biāo)識(shí)。在仿真結(jié)束時(shí),最后一個(gè)退出的聯(lián)邦成員負(fù)責(zé)銷毀聯(lián)邦。聯(lián)邦管理服務(wù)交互過程,如圖3所示。
圖3 聯(lián)邦管理服務(wù)交互過程圖
(2)聲明管理服務(wù)。聲明管理服務(wù)是為了建立聯(lián)邦內(nèi)各聯(lián)邦成員的發(fā)布和訂閱關(guān)系。聲明管理服務(wù)交互過程,如圖4所示。
圖4 聲明管理服務(wù)交互過程圖
(3)時(shí)間管理服務(wù)。輕量級(jí)低耦合RTI采用保守的基于時(shí)間步長(zhǎng)的時(shí)間推進(jìn)機(jī)制。聯(lián)邦成員的邏輯時(shí)間以時(shí)間步長(zhǎng)為單位進(jìn)行時(shí)間推進(jìn)。
在仿真準(zhǔn)備階段,RTI服務(wù)器端和RTI客戶端分別進(jìn)行初始化,初始化當(dāng)前仿真時(shí)間。
輕量級(jí)低耦合RTI在收到時(shí)間推進(jìn)請(qǐng)求后,將更新全局時(shí)間管理表,然后通知其余聯(lián)邦成員,最后發(fā)送代表允許時(shí)間推進(jìn)的回調(diào)函數(shù)。
聯(lián)邦成員一旦收到類型為允許時(shí)間推進(jìn)的回調(diào)函數(shù),就將自己的仿真時(shí)間設(shè)置為當(dāng)前仿真時(shí)間。
2.2.2 RTI客戶端
RTI客戶端負(fù)責(zé)處理RTI服務(wù)器端發(fā)送來(lái)的控制信息和仿真數(shù)據(jù)的處理,是仿真節(jié)點(diǎn)與RTI服務(wù)器端交互的重要中間件。
RTI客戶端分為4個(gè)主線程:第一個(gè)線程負(fù)責(zé)監(jiān)聽RTI服務(wù)器端發(fā)送來(lái)的消息,即反射內(nèi)存卡中與輕量級(jí)低耦合RTI約定好的地址空間上的內(nèi)容,將其放入待處理消息隊(duì)列中;第二個(gè)線程負(fù)責(zé)將待處理消息隊(duì)列中最舊的消息出列并發(fā)送給當(dāng)前仿真節(jié)點(diǎn)的仿真軟件。第三個(gè)線程負(fù)責(zé)監(jiān)聽仿真節(jié)點(diǎn)仿真軟件發(fā)送來(lái)的消息,將其放入結(jié)果待處理消息隊(duì)列中;第四個(gè)線程負(fù)責(zé)將結(jié)果待處理消息隊(duì)列中最舊的消息出列將消息回復(fù)給RTI服務(wù)器端。
反射內(nèi)存卡根據(jù)實(shí)際情況進(jìn)行劃分區(qū)域存儲(chǔ)不同系統(tǒng)的數(shù)據(jù)。RTI客戶端根據(jù)仿真節(jié)點(diǎn)的發(fā)布-訂閱關(guān)系從反射內(nèi)存卡相應(yīng)區(qū)域獲取數(shù)據(jù)和寫入數(shù)據(jù)。圖5為RTI客戶端的工作流程。
2.2.3 RTI數(shù)據(jù)處理庫(kù)
RTI數(shù)據(jù)處理庫(kù)負(fù)責(zé)定義和實(shí)現(xiàn)RTI服務(wù)器端和RTI客戶端公用的全局性數(shù)據(jù)結(jié)構(gòu)。全局性數(shù)據(jù)結(jié)構(gòu)包括聯(lián)邦成員句柄、聯(lián)邦句柄、對(duì)象類句柄、交互類句柄、對(duì)象實(shí)例句柄、屬性句柄、參數(shù)句柄、邏輯時(shí)間、邏輯時(shí)間間隔、發(fā)送和接收消息所需的緩沖區(qū)。
在后續(xù)開發(fā)中可改進(jìn)時(shí)間管理服務(wù),使得時(shí)間管理更加靈活,提高了仿真系統(tǒng)的實(shí)時(shí)性和邏輯的簡(jiǎn)潔性。在后續(xù)的研究工作中,將在現(xiàn)有工作的基礎(chǔ)上,完善整個(gè)仿真平臺(tái)的框架,不斷地引用實(shí)例對(duì)系統(tǒng)進(jìn)行測(cè)試,以保證整個(gè)系統(tǒng)的正確性。
圖5 RTI客戶端流程圖
[1]劉志國(guó),劉太陽(yáng),王仕成,等.基于實(shí)時(shí)網(wǎng)絡(luò)的半實(shí)物仿真集成平臺(tái)研究[J].系統(tǒng)仿真學(xué)報(bào),2007,19(15):3425-347.
[2]姚益平,盧錫城,王懷民.層次式RTI服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)學(xué)報(bào),2003,26(6):716 -721.
[3]IEEE.IEEE standard for modeling and simulation high level architecture-framework and rules:IEEE Std1516.1-2010[S].USA:The Institute of Electrical and Electronics Engineers,Inc,2010.
[4]IEEE.IEEE standard for modeling and simulation high level architecture-object model template:IEEE Std1516.1-2010[S].USA:The Institute of Electrical and Electronics Engineers,Inc,2010.
[5]IEEE.IEEE standard for modeling and simulation high level architecture-federate interface specification:IEEE Std1516.1 -2010[S].USA:The Institute of Electrical and Electronics Engineers,Inc,2010.
[6]Office DMS.High level architecture run - time infrastructure[M].USA:Department of Defense,2000.
[7]Frede Kuhl R W,Judith Dahmann.An introduction to high level architecture[M].北京:國(guó)防工業(yè)出版社,2003.
[8]高霞.分層式HLA/RTI仿真平臺(tái)保守機(jī)制時(shí)間管理的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2006.
[9]Zhang G,Zhang X,Li D.A hybrid ddm algorithm based on weight function[C].Qingdao:FSKD'08 Fifth International Conference,2008.
[10]陳健.分布式實(shí)時(shí)仿真平臺(tái)中總控軟件和數(shù)據(jù)庫(kù)管理軟件的研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2013.