方 偉,張兵強(qiáng),徐 濤,方 君
(海軍航空大學(xué),山東煙臺(tái)264001)
隨著分布仿真技術(shù)的發(fā)展,模擬訓(xùn)練在軍用、民用等領(lǐng)域獲得越來越廣泛的應(yīng)用。對(duì)于飛行仿真系統(tǒng)[1]而言,考慮到平臺(tái)運(yùn)動(dòng)速度快、數(shù)據(jù)交互量大和系統(tǒng)結(jié)構(gòu)復(fù)雜等方面的因素,在人在回路系統(tǒng)中,實(shí)現(xiàn)仿真應(yīng)用間數(shù)據(jù)的高效、可靠的交互,須解決以下3個(gè)方面的問題。
1)網(wǎng)絡(luò)數(shù)據(jù)傳輸量:對(duì)于分布式仿真系統(tǒng),數(shù)據(jù)傳輸質(zhì)量通常受到網(wǎng)絡(luò)帶寬、交互頻率等多方面的影響。同時(shí),隨著系統(tǒng)規(guī)模的擴(kuò)大,網(wǎng)絡(luò)數(shù)據(jù)量[2-4]的增加勢(shì)必對(duì)網(wǎng)絡(luò)傳輸性能產(chǎn)生較大影響,尤其是對(duì)實(shí)時(shí)性較高的系統(tǒng),須在網(wǎng)絡(luò)傳輸數(shù)據(jù)手段上進(jìn)行優(yōu)化。
2)仿真時(shí)鐘同步:時(shí)鐘的不一致將對(duì)分布仿真系統(tǒng)產(chǎn)生時(shí)序顛倒、抖動(dòng)等多方面的問題。如對(duì)于飛行仿真系統(tǒng)而言,非同步的時(shí)鐘,人為感受最強(qiáng)烈的影響就是視景系統(tǒng)[5-6]出現(xiàn)不同程度的跳變。因此,須要通過多種機(jī)制解決仿真應(yīng)用間時(shí)鐘同步的問題。
3)對(duì)應(yīng)用層的影響:在分布式仿真系統(tǒng)中,網(wǎng)絡(luò)通信屬于底層須解決的問題,涉及通信機(jī)制、傳輸方式、時(shí)鐘同步等多方面,將這些問題轉(zhuǎn)移到應(yīng)用層設(shè)計(jì)上,勢(shì)必造成應(yīng)用軟件不必要的開發(fā)量。同時(shí),由于設(shè)計(jì)思路的不一致導(dǎo)致仿真應(yīng)用集成的難度。
本文主要圍繞上述問題,在對(duì)降低網(wǎng)絡(luò)數(shù)據(jù)傳輸量、仿真時(shí)鐘同步方法等進(jìn)行研究的基礎(chǔ)上,闡述了網(wǎng)絡(luò)通信引擎的設(shè)計(jì)思路和方法。
在分布式交互仿真系統(tǒng)中,節(jié)點(diǎn)間要不斷交換大量信息,這將使網(wǎng)絡(luò)負(fù)擔(dān)加重,進(jìn)而影響系統(tǒng)的實(shí)時(shí)性。為了減少網(wǎng)絡(luò)負(fù)擔(dān),一種方案是可以增大網(wǎng)絡(luò)帶寬,另一種方案是可減少網(wǎng)絡(luò)的信息交換量。網(wǎng)絡(luò)帶寬的擴(kuò)容將帶來硬件設(shè)備的更新升級(jí),其受到項(xiàng)目經(jīng)費(fèi)、建設(shè)現(xiàn)狀等多方面的制約,尤其是對(duì)于廣域網(wǎng)環(huán)境。從軟件層面,在保證一定精度的前提下,減少數(shù)據(jù)頻繁交互是解決網(wǎng)絡(luò)數(shù)據(jù)傳輸量行之有效的手段和方法。
在分布式仿真系統(tǒng)中,系統(tǒng)間交互的數(shù)據(jù)主要分為信息和事件2類。在飛行仿真系統(tǒng)中,各仿真應(yīng)用間的數(shù)據(jù)更新包括高頻度數(shù)據(jù)和低頻度數(shù)據(jù)2類。高頻度數(shù)據(jù)主要指更新速度快的信息數(shù)據(jù),典型的是平臺(tái)運(yùn)動(dòng)產(chǎn)生的位置、姿態(tài)等變化數(shù)據(jù),通常按照60Hz的更新頻率進(jìn)行變化;低頻度數(shù)據(jù)指更新速度慢的信息數(shù)據(jù)和事件數(shù)據(jù)。數(shù)據(jù)更新策略如圖1所示。
圖1 數(shù)據(jù)更新策略Fig.1 Data update strategy
對(duì)于低頻度數(shù)據(jù),仿真成員間的數(shù)據(jù)交互主要按照變化即傳輸?shù)幕静呗赃M(jìn)行處理,即對(duì)數(shù)據(jù)變量在發(fā)送前與前次數(shù)據(jù)內(nèi)容進(jìn)行對(duì)比,若數(shù)據(jù)未發(fā)生變化或在容忍誤差范圍內(nèi),則不進(jìn)行傳輸。否則,將進(jìn)行傳輸。
對(duì)于高頻度數(shù)據(jù),主要采用DR算法[7-9]實(shí)現(xiàn),即在保證仿真精度的前提下,降低仿真實(shí)體狀態(tài)在網(wǎng)絡(luò)上的更新頻率,以減少交互數(shù)據(jù)量。其實(shí)現(xiàn)方法是在數(shù)據(jù)發(fā)送端同時(shí)運(yùn)行平臺(tái)數(shù)學(xué)仿真模型和DR模型,每個(gè)仿真步長對(duì)2類模型的運(yùn)算結(jié)果進(jìn)行對(duì)比,超出誤差門限即對(duì)數(shù)據(jù)進(jìn)行發(fā)送。否則,不發(fā)送。同時(shí),數(shù)據(jù)接收端在未接收到發(fā)送端數(shù)據(jù)時(shí),按照已知條件,依據(jù)仿真步長利用DR模型對(duì)后續(xù)狀態(tài)進(jìn)行預(yù)測(cè),接收到新數(shù)據(jù)后,將對(duì)當(dāng)前狀態(tài)進(jìn)行更新。
對(duì)于飛行仿真系統(tǒng)而言,考慮到人在回路對(duì)系統(tǒng)實(shí)時(shí)性的要求,DR模型的選擇上須要在精度和效率間進(jìn)行折中。仿真中,主要采用一階/二階外推算法進(jìn)行姿態(tài)和位置預(yù)測(cè)。
假設(shè):t0時(shí)刻平臺(tái)位置P0=[x0,y0,z0]T,速度v0=[vx0,vy0,vz0]T,加速度A0=[ax0,ay0,az0]T,角速度ω0=[p,q,r]T,姿態(tài)角R0=[?0,θ0,φ0]T,仿真步長為Δt。
位置預(yù)測(cè)采用二階空間位置外推方法,t0+Δt時(shí)刻位置P=[x,y,z]T為:
姿態(tài)角預(yù)測(cè)采用基于四元數(shù)法[10-11]的一階姿態(tài)角外推方法計(jì)算,t0+Δt時(shí)刻姿態(tài)R=[?,θ,φ]T,實(shí)現(xiàn)方法如下。
1)確定初始四元數(shù)值:
仿真實(shí)驗(yàn):以60Hz為仿真周期,采樣飛機(jī)平臺(tái)飛行數(shù)據(jù),利用DR算法對(duì)仿真模型在不同誤差門限下的數(shù)據(jù)傳輸量進(jìn)行測(cè)試,誤差門限主要包括位置誤差以及航向、俯仰和橫滾等姿態(tài)誤差,得到實(shí)驗(yàn)結(jié)果如圖2、3所示。
圖2 不同誤差門限條件下的DR算法傳輸量Fig.2 Transmission amount of DR algorithm for different error thresholds
圖3 不同誤差條件下真實(shí)數(shù)據(jù)與預(yù)測(cè)數(shù)據(jù)偏差量Fig.3 Deviation of true data and forecast data for different error thresholds
由測(cè)試結(jié)果可以看出:
1)采用DR算法后,在容忍的誤差門限范圍內(nèi),網(wǎng)絡(luò)數(shù)據(jù)交互量得到較大幅度的減少;
2)隨著誤差門限要求的提高,網(wǎng)絡(luò)數(shù)據(jù)更新頻率,即需要傳輸?shù)木W(wǎng)絡(luò)數(shù)據(jù)隨之提高。
對(duì)測(cè)試結(jié)果說明以下3個(gè)問題。
1)DR算法的誤差門限設(shè)置。該值與飛行仿真系統(tǒng)自身仿真精度[12]密切相關(guān)。通常在DR模型設(shè)計(jì)中,應(yīng)支持對(duì)仿真不同階段要求誤差門限的動(dòng)態(tài)改變。
2)計(jì)算資源消耗。在數(shù)據(jù)發(fā)送端采用DR算法后,相當(dāng)于在其中同時(shí)運(yùn)行DR模型和設(shè)備物理模型2個(gè)部分,通過在CPU4核3.5 GHz,內(nèi)存16 GB配置的計(jì)算機(jī)上進(jìn)行DR算法實(shí)驗(yàn),DR模型單步解算時(shí)間為0.004 8 ms,對(duì)于飛行仿真中單步16.667 ms的仿真周期而言,其在計(jì)算資源上的影響可以忽略不計(jì)。
3)DR算法雖然能夠有效減少分布仿真環(huán)境下的飛行仿真系統(tǒng)各仿真應(yīng)用間的數(shù)據(jù)交互量,但具體減少數(shù)量與飛機(jī)平臺(tái)的運(yùn)動(dòng)狀態(tài)及設(shè)置的門限大小具有強(qiáng)關(guān)聯(lián),本實(shí)驗(yàn)結(jié)果不能作為絕對(duì)減少量的依據(jù)。
高頻度地使用網(wǎng)絡(luò)傳輸數(shù)據(jù),尤其是一個(gè)時(shí)間點(diǎn)反復(fù)調(diào)用網(wǎng)絡(luò)通信接口對(duì)數(shù)據(jù)進(jìn)行發(fā)送與接收,對(duì)網(wǎng)絡(luò)傳輸效率會(huì)產(chǎn)生較大程度的影響。因此,網(wǎng)絡(luò)通信中,在使用數(shù)據(jù)更新策略減少數(shù)據(jù)傳輸量的基礎(chǔ)上,采用數(shù)據(jù)包策略以降低數(shù)據(jù)的頻繁發(fā)送,過程如下。
1)數(shù)據(jù)發(fā)送端分配一定內(nèi)存空間,并根據(jù)網(wǎng)絡(luò)帶寬、網(wǎng)絡(luò)傳輸質(zhì)量動(dòng)態(tài)對(duì)內(nèi)存大小進(jìn)行調(diào)整。
2)數(shù)據(jù)發(fā)送端以仿真步長為基準(zhǔn),采集仿真應(yīng)用中各個(gè)仿真對(duì)象更新后的信息數(shù)據(jù),并在每個(gè)仿真對(duì)象信息前添加信息類型、對(duì)象標(biāo)識(shí)和數(shù)據(jù)大小等字段,在內(nèi)存空間容量允許的情況下依次存儲(chǔ)于內(nèi)存空間中。
3)封包后,數(shù)據(jù)包通過網(wǎng)絡(luò)通信引擎發(fā)送至各仿真應(yīng)用。
4)各仿真應(yīng)用按照數(shù)據(jù)包大小以及各仿真對(duì)象信息標(biāo)識(shí)對(duì)數(shù)據(jù)包進(jìn)行解包處理,并更新內(nèi)部的各個(gè)仿真對(duì)象。
須說明的是,數(shù)據(jù)包策略主要對(duì)網(wǎng)絡(luò)交互數(shù)據(jù)的信息類數(shù)據(jù)進(jìn)行處理,由于事件類數(shù)據(jù)具有時(shí)間的不確定性,采用即用即發(fā)的方式。
仿真時(shí)鐘同步是確保飛行仿真系統(tǒng)在統(tǒng)一的時(shí)間基準(zhǔn)下,一致、有序地協(xié)同,進(jìn)而實(shí)現(xiàn)全系統(tǒng)可靠運(yùn)行的關(guān)鍵。飛行仿真系統(tǒng)在時(shí)鐘同步[13-16]問題上,須考慮時(shí)鐘對(duì)準(zhǔn)、時(shí)間同步推進(jìn)、不同仿真應(yīng)用對(duì)仿真周期要求和同步穩(wěn)定性等多方面的因素。
時(shí)鐘對(duì)準(zhǔn)主要解決網(wǎng)絡(luò)環(huán)境下分布仿真系統(tǒng)各節(jié)點(diǎn)計(jì)算機(jī)時(shí)鐘由于晶振性能、人為調(diào)整等原因?qū)е碌臅r(shí)鐘的不一致,主要采用NTP協(xié)議[17-18](網(wǎng)絡(luò)時(shí)鐘協(xié)議)予以實(shí)現(xiàn)。考慮到飛行仿真系統(tǒng)實(shí)際,對(duì)NTP協(xié)議收發(fā)方式進(jìn)行了改進(jìn),將由客戶端請(qǐng)求服務(wù)器處理的模式,轉(zhuǎn)化為服務(wù)器統(tǒng)一發(fā)送時(shí)鐘對(duì)準(zhǔn)命令,各仿真節(jié)點(diǎn)對(duì)命令進(jìn)行統(tǒng)一處理,進(jìn)而對(duì)時(shí)鐘的偏移量和傳輸延遲量進(jìn)行計(jì)算,調(diào)整節(jié)點(diǎn)計(jì)算機(jī)時(shí)鐘。
實(shí)現(xiàn)方法:t1時(shí)刻由服務(wù)器發(fā)送同步報(bào)文,仿真節(jié)點(diǎn)接收到同步報(bào)文后記錄時(shí)間t2,仿真節(jié)點(diǎn)在t3時(shí)刻向服務(wù)器發(fā)送時(shí)延請(qǐng)求報(bào)文,服務(wù)器接收到時(shí)延請(qǐng)求報(bào)文時(shí)間記為t4,并將該時(shí)刻以時(shí)延響應(yīng)報(bào)文發(fā)送給仿真節(jié)點(diǎn)。假設(shè)服務(wù)器和仿真節(jié)點(diǎn)間時(shí)鐘偏移量為θ、δ為服務(wù)器和仿真節(jié)點(diǎn)間數(shù)據(jù)包單次傳輸延遲(數(shù)據(jù)包往返延遲假定相同)。
仿真節(jié)點(diǎn)通過計(jì)算的θ、δ結(jié)果,即可對(duì)節(jié)點(diǎn)時(shí)鐘進(jìn)行調(diào)整,保證與服務(wù)器時(shí)鐘的一致性。為保證飛行仿真系統(tǒng)長時(shí)間運(yùn)行時(shí)鐘的一致性,可通過人工和自動(dòng)設(shè)置同步時(shí)間間隔的方式,由服務(wù)器再次發(fā)起時(shí)鐘對(duì)準(zhǔn)命令。
時(shí)鐘對(duì)準(zhǔn)確保了基準(zhǔn)時(shí)間的一致性。在此基礎(chǔ)上,還須對(duì)仿真節(jié)點(diǎn)下各仿真應(yīng)用的同步推進(jìn)進(jìn)行控制,系統(tǒng)在技術(shù)實(shí)現(xiàn)上主要采用軟硬件結(jié)合策略進(jìn)行實(shí)現(xiàn),如圖4所示。
圖4 仿真時(shí)鐘同步推進(jìn)策略Fig.4 Advance strategy of simulation clock synchronization
1)硬件同步策略:系統(tǒng)硬件時(shí)鐘同步信號(hào)的產(chǎn)生主要采用研制的硬件電路實(shí)現(xiàn),通過硬件端口連接至各仿真節(jié)點(diǎn)計(jì)算機(jī),激勵(lì)信號(hào)源包括來自衛(wèi)星天線接收器、電路內(nèi)部晶振和其他高性能仿真節(jié)點(diǎn)計(jì)算機(jī)(如視景仿真計(jì)算機(jī))視頻卡等,3種信號(hào)源根據(jù)使用環(huán)境不同可預(yù)先配置,采集的信號(hào)通過數(shù)據(jù)處理單元產(chǎn)生指定仿真周期的中斷,仿真節(jié)點(diǎn)應(yīng)用程序依據(jù)中斷觸發(fā)信號(hào)完成模型解算和數(shù)據(jù)分發(fā)等工作。圖5以60Hz為仿真周期,測(cè)試時(shí)間為10min,硬件觸發(fā)中斷信號(hào)時(shí)間間隔誤差量最大誤差為0.235 ms,時(shí)鐘中斷平均時(shí)間間隔16.666 ms,標(biāo)準(zhǔn)方差0.035 3 ms,能夠滿足飛行仿真對(duì)時(shí)間同步的要求。
圖5 硬件時(shí)鐘同步精度Fig.5 Synchronization precision of hardware clock
2)軟件同步策略:系統(tǒng)軟件同步主要通過服務(wù)器向各仿真節(jié)點(diǎn)發(fā)送網(wǎng)絡(luò)同步信號(hào)實(shí)現(xiàn),仿真節(jié)點(diǎn)接收到網(wǎng)絡(luò)同步信號(hào)后,仿真應(yīng)用軟件依據(jù)網(wǎng)絡(luò)同步信號(hào)完成模型解算和數(shù)據(jù)分發(fā)等工作。其中,服務(wù)器時(shí)鐘同步計(jì)算方法是采用高精度時(shí)鐘,即通過獲取仿真節(jié)點(diǎn)計(jì)算機(jī)時(shí)鐘頻率和計(jì)數(shù)值,兩者進(jìn)行綜合處理后產(chǎn)生指定仿真周期的軟件網(wǎng)絡(luò)觸發(fā)信號(hào)。
在實(shí)際使用中,考慮到硬件和軟件同步信號(hào)精度、使用環(huán)境、保密性等方面的影響,網(wǎng)絡(luò)通信引擎設(shè)計(jì)時(shí)同時(shí)將硬件和軟件時(shí)鐘同步模型進(jìn)行集成,引擎依據(jù)實(shí)際環(huán)境配置,優(yōu)先選用硬件同步方式,若硬件同步出現(xiàn)故障,則系統(tǒng)自動(dòng)轉(zhuǎn)入軟同步方式處理,以保證系統(tǒng)的同步性。同時(shí),采用軟硬件結(jié)合的方式,也可將位置分散的模擬器內(nèi)部采用軟同步方式進(jìn)行處理,模擬器間采用硬同步進(jìn)行處理,以達(dá)到分層同步的目的。
仿真周期的配置主要解決飛行仿真系統(tǒng)中不同應(yīng)用對(duì)仿真周期需求的不一致,如對(duì)于視景系統(tǒng)、飛行控制系統(tǒng)等須要達(dá)到60Hz的更新頻率,對(duì)于雷達(dá)系統(tǒng)圖像的生成30Hz的仿真周期亦可滿足仿真的需要,不同的仿真應(yīng)用對(duì)仿真周期要求各不相同,但同時(shí)須要保證各仿真應(yīng)用的同步性。
實(shí)現(xiàn)方法:以120Hz作為仿真周期最小時(shí)間間隔基準(zhǔn),以最小時(shí)間間隔整數(shù)倍為仿真周期擴(kuò)展的基本要求,各仿真應(yīng)用根據(jù)自身仿真周期需要,調(diào)用網(wǎng)絡(luò)通信引擎提供的接口設(shè)置仿真步長,引擎依據(jù)設(shè)定的仿真步長自動(dòng)調(diào)整觸發(fā)的時(shí)間間隔,以滿足仿真應(yīng)用需要。
網(wǎng)絡(luò)通信[19]引擎是具備網(wǎng)絡(luò)可靠通信、優(yōu)化數(shù)據(jù)傳輸量、實(shí)現(xiàn)時(shí)鐘同步等功能的網(wǎng)絡(luò)中間件,其為上層應(yīng)用提供了統(tǒng)一網(wǎng)絡(luò)通信框架,以加快應(yīng)用層系統(tǒng)的開發(fā)、調(diào)試等工作。網(wǎng)絡(luò)通信引擎實(shí)現(xiàn)框架如圖6所示。
圖6 網(wǎng)絡(luò)通信引擎Fig.6 Network communication engine
由圖6可以看出,網(wǎng)絡(luò)通信引擎主要由協(xié)議適配器、網(wǎng)絡(luò)管理器、時(shí)鐘同步器、信息、事件等組成,為實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳輸量的優(yōu)化,在信息數(shù)據(jù)下派生了實(shí)體對(duì)象。
1)協(xié)議適配器。主要實(shí)現(xiàn)網(wǎng)絡(luò)通信引擎與最底層通信協(xié)議的無關(guān)性,適配器對(duì)上提供統(tǒng)一的數(shù)據(jù)回調(diào)接口,將網(wǎng)絡(luò)數(shù)據(jù)反射至網(wǎng)絡(luò)管理器處理,對(duì)下封裝TCP/IP、RTI、DDS等各底層通信協(xié)議接口,實(shí)現(xiàn)統(tǒng)一調(diào)度。
2)網(wǎng)絡(luò)管理器。主要負(fù)責(zé)對(duì)來自協(xié)議橋接器反射數(shù)據(jù)的處理,完成對(duì)象數(shù)據(jù)解包與更新,并分發(fā)給各仿真對(duì)象。同時(shí),提供數(shù)據(jù)對(duì)外封包和發(fā)送的接口,供上層應(yīng)用調(diào)用。
3)時(shí)間同步器。主要是對(duì)仿真時(shí)鐘同步技術(shù)進(jìn)行實(shí)現(xiàn),提供時(shí)鐘管理動(dòng)態(tài)鏈接庫,供網(wǎng)絡(luò)管理器進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交互時(shí)時(shí)間管理使用。
4)信息與事件。信息是指網(wǎng)絡(luò)數(shù)據(jù)中周期性更新的數(shù)據(jù),如飛機(jī)平臺(tái)運(yùn)動(dòng)狀態(tài);事件是指突發(fā)性變化的數(shù)據(jù),如武器開火、平臺(tái)爆炸。
5)實(shí)體對(duì)象。派生于信息類,是網(wǎng)絡(luò)通信引擎的一個(gè)擴(kuò)展對(duì)象,其核心是對(duì)實(shí)體位置、姿態(tài)等關(guān)鍵性參數(shù)的定義,將DR算法封裝其中,以自動(dòng)實(shí)現(xiàn)仿真對(duì)象的數(shù)據(jù)更新與外推預(yù)測(cè)。同時(shí),可根據(jù)須進(jìn)行其他對(duì)象的擴(kuò)展。
本文圍繞飛行仿真系統(tǒng)在網(wǎng)絡(luò)數(shù)據(jù)傳輸量、時(shí)鐘同步等方面的問題展開了研究工作,充分考慮飛行仿真系統(tǒng)強(qiáng)實(shí)時(shí)性的要求,利用DR模型和數(shù)據(jù)包等策略降低了網(wǎng)絡(luò)數(shù)據(jù)傳輸量,并利用軟硬件結(jié)合的手段實(shí)現(xiàn)了飛行仿真中各仿真應(yīng)用間的同步?;诖?,研制的網(wǎng)絡(luò)通信引擎在多型號(hào)飛行訓(xùn)練模擬器中得到應(yīng)用。