摘 要 介紹了反射內(nèi)存網(wǎng)的工作原理及在某半實物仿真系統(tǒng)中的應(yīng)用。結(jié)合該仿真系統(tǒng)的特點和功能要求,詳細(xì)討論了一種適用的反射內(nèi)存通信協(xié)議的設(shè)計方案。該通信協(xié)議已經(jīng)成功應(yīng)用于某半實物仿真系統(tǒng)中。
關(guān)鍵詞 實時網(wǎng)絡(luò), 半實物仿真, 反射內(nèi)存網(wǎng) GEPCI5565 反射內(nèi)存卡 反射內(nèi)存卡價格 反射內(nèi)存出售
1 引 言
半實物仿真又稱為硬件在回路中仿真(Hardware-in-the-loop,簡稱HIL),是一種在仿真系統(tǒng)中接入實物,以取代相應(yīng)部分的數(shù)學(xué)模型的仿真。它通過聯(lián)網(wǎng)技術(shù)將各仿真機連接在一起,以保證節(jié)點之間的數(shù)據(jù)傳遞。實時性是半實物仿真的基本要求。
傳統(tǒng)的網(wǎng)絡(luò)技術(shù),如以太網(wǎng)、FDDI等在實時應(yīng)用中存在以下幾方面的缺點:數(shù)據(jù)傳輸速率不高;在網(wǎng)絡(luò)負(fù)載較大時,網(wǎng)上數(shù)據(jù)傳輸延遲較大,且延遲具有不可預(yù)期性;網(wǎng)絡(luò)通信需要借助許多網(wǎng)絡(luò)協(xié)議來完成,降低了通信效率[2]。
反射內(nèi)存網(wǎng)(Reflective memory network)是一種基于高速網(wǎng)絡(luò)的共享存儲器技術(shù)的實時網(wǎng)絡(luò),與傳統(tǒng)的聯(lián)網(wǎng)技術(shù)相比,它除了具有嚴(yán)格的傳輸確定性和可預(yù)測性外,還具有速度高、通信協(xié)議簡單、宿主機負(fù)載輕、軟硬件平臺適應(yīng)性強、支持中斷信號的傳輸?shù)忍攸c[5]。在本系統(tǒng)中,仿真的幀周期為ms級,傳統(tǒng)網(wǎng)絡(luò)技術(shù)無法滿足系統(tǒng)的高實時性要求,所以采用VMIC公司的支持PCI總線的反射內(nèi)存卡(Reflective memory)VMIPCI-5565組建實時網(wǎng)絡(luò)。
2 反射內(nèi)存網(wǎng)工作原理
反射內(nèi)存網(wǎng)主要是由反射內(nèi)存板通過光纖等傳輸介質(zhì)連接而成的。每個反射內(nèi)存板都占有一段內(nèi)存地址,網(wǎng)上任何計算機向本地反射內(nèi)存板寫數(shù)據(jù)時,該數(shù)據(jù)和相應(yīng)的內(nèi)存地址將被廣播到網(wǎng)上所有其他反射內(nèi)存板并存儲在相同的位置[2]。于是,計算機將數(shù)據(jù)寫入其本地反射內(nèi)存板后,在極短的時間內(nèi),網(wǎng)上所有計算機的CPU都可以訪問這個新數(shù)據(jù)。由于反射內(nèi)存使用簡單的讀寫方式,對CPU來說就相當(dāng)于標(biāo)準(zhǔn)的RAM,而且反射內(nèi)存的數(shù)據(jù)更新是通過硬件操作實現(xiàn)的,其網(wǎng)絡(luò)延遲僅是仿真結(jié)點數(shù)n和所用帶寬比例B%的函數(shù),有:τ=f(n,B%)[3],網(wǎng)絡(luò)延遲大大減小,保證了實時性。
3 半實物仿真系統(tǒng)概述
3.1 組成及功能

圖1 某通信對抗半實物分布式仿真系統(tǒng)硬件結(jié)構(gòu)圖
該系統(tǒng)分為數(shù)字仿真和實時仿真兩部分。數(shù)字仿真由仿真管理與控制仿真機、數(shù)據(jù)庫、效能評估工作站及視景仿真機通過1000M以太網(wǎng)組成,負(fù)責(zé)完成仿真數(shù)據(jù)的存儲、顯示及效能評估功能。實時仿真由仿真管理、控制仿真機與四臺實物及實物仿真機組成,負(fù)責(zé)完成系統(tǒng)的實時仿真功能;其中,實物通過接口處理卡與實物仿真機相連,各仿真機之間通過反射內(nèi)存網(wǎng)進(jìn)行仿真命令、仿真參數(shù)及實時仿真數(shù)據(jù)的傳輸。
3.2 系統(tǒng)實時仿真工作過程
當(dāng)實時仿真開始,仿真管理與控制仿真機根據(jù)不同的仿真階段,向?qū)嵨锓抡鏅C發(fā)送不同的仿真參數(shù),并通過發(fā)送命令來控制仿真機進(jìn)行參數(shù)加載工作;各實物仿真機在加載參數(shù)后,每隔100ms向仿真管理與控制仿真機發(fā)送一次實物的實時仿真數(shù)據(jù),并由仿真管理與控制仿真機分發(fā)給數(shù)字仿真的各節(jié)點。
4 反射內(nèi)存網(wǎng)協(xié)議設(shè)計方案
根據(jù)系統(tǒng)的功能及實時仿真工作過程,反射內(nèi)存網(wǎng)協(xié)議可分為兩個部分:命令通信協(xié)議和實時仿真數(shù)據(jù)傳輸協(xié)議。
4.1 命令通信協(xié)議
主要傳輸仿真管理與控制仿真機的各項命令給實物仿真機,以實現(xiàn)仿真系統(tǒng)的各項功能,包括初始化、仿真開始/暫停/恢復(fù)/停止,參數(shù)加載、偵查干擾等。
命令通信分為兩種。第一種為帶參數(shù)命令通信,即發(fā)送方先將該命令所需參數(shù)寫入RFM的命令參數(shù)區(qū),然后發(fā)送命令;接收方收到命令后,到相應(yīng)參數(shù)區(qū)域獲取數(shù)據(jù)。如“想定參數(shù)加載”命令,先向命令參數(shù)區(qū)寫入作戰(zhàn)想定參數(shù),再發(fā)送該命令;接收方收到命令后,到想定參數(shù)區(qū)讀取數(shù)據(jù)。第二種為無參數(shù)命令通信,即不寫參數(shù)直接發(fā)送命令,如“仿真暫停/恢復(fù)”命令。下面主要討論命令的發(fā)送和接收過程。
4.1.1 通信流程設(shè)計
由于系統(tǒng)的仿真命令有時需要連續(xù)發(fā)送,所以,必須確認(rèn)接收方已正確收到該命令,才能發(fā)送下一條命令。根據(jù)這種情況,采用1byte(8位)表示命令類型(即最多可以表示2×8 - 1 = 255個命令),并為發(fā)送方設(shè)置一個發(fā)送標(biāo)志位Status_Send(1byte)用以寫入命令,一個回復(fù)標(biāo)志位Status_Reply(1byte)用來察看接收方的回復(fù)。其中,寫入命令采用RFM提供的Poke函數(shù),查詢命令采用Peek函數(shù)。發(fā)送命令和接收命令的流程如圖2所示:

圖2 反射內(nèi)存網(wǎng)命令發(fā)送和接收流程圖
發(fā)送命令流程:發(fā)送方向Status_Send寫入命令值,并不斷查詢Status_Reply。當(dāng)查詢到同樣的命令值時,表示接收方已經(jīng)正確收到發(fā)送方命令;當(dāng)查詢到與發(fā)送不同的命令值時,表示接收方?jīng)]有正確接收到命令;當(dāng)查詢時間大于1s時,表示接收方?jīng)]有收到命令;然后發(fā)送方復(fù)位Status_Reply為0。
接收命令流程:接收方獲知有命令后,從Status_Send讀取命令值,并將該命令值寫入Status_Reply,同時復(fù)位Status_Send為0。
4.1.2 傳輸方式
接收方獲知命令有兩種方式:①中斷方式,即發(fā)送方寫入命令值后,發(fā)送中斷SendEvent;接收方響應(yīng)中斷CallEvent,到Status_Send讀取命令。②查詢方式,即接收方定時查詢Status_Send,當(dāng)Status_Send等于0為無命令狀態(tài),不等于0為有命令狀態(tài)。
查詢標(biāo)志區(qū)也存在兩種方式:while循環(huán)查詢和1ms多媒體定時器查詢。
根據(jù)傳輸方式的不同,我們設(shè)計了4種方案:
●方案一:發(fā)送方寫入(Poke)命令值,發(fā)送中斷SendEvent,用while查詢(Peek) Status_Reply;接收方響應(yīng)中斷CallEvent。
●方案二:發(fā)送方寫入(Poke)命令值,用1msTimer查詢Status_Reply;接收方用1msTimer查詢(Peek)Status_Send。
●方案三:發(fā)送方寫入(Poke)命令值,用while查詢Status_Reply;接收方用1msTimer查詢(Peek)Status_Send。
●方案四:發(fā)送方寫入(Poke)命令值,用while查詢Status_Reply;接收方用while查詢(Peek)Status_Send。
4種方案的性能測試結(jié)果見表1。

測試結(jié)果分析:
根據(jù)表1所給出的測試結(jié)果,方案一的單次通信時間最短,但平均時間較大,原因是當(dāng)系統(tǒng)同時進(jìn)行其他操作時,RFM中斷響應(yīng)的優(yōu)先級并不是Windows系統(tǒng)中的最高級,導(dǎo)致系統(tǒng)對該中斷響應(yīng)處理較慢。從仿真的穩(wěn)定性考慮,不宜采用該方案。方案四單次通信時間和平均時間最為穩(wěn)定,但測試過程中發(fā)現(xiàn),接收方采用while循環(huán)方式查詢RFM,即使程序創(chuàng)建一個獨立的線程來完成該接收工作,占用的系統(tǒng)資源也是很大的,系統(tǒng)幾乎無法進(jìn)行其他操作,用戶界面響應(yīng)很慢。從系統(tǒng)資源考慮,不宜采用該方案。根據(jù)方案二和方案三的時間對比,宜采用較為穩(wěn)定的方案三作為本系統(tǒng)的命令通信協(xié)議。
4.2 數(shù)據(jù)傳輸協(xié)議設(shè)計
主要傳輸各實物的實時仿真數(shù)據(jù)給仿真管理與控制仿真機。
如果按帶參數(shù)命令方式進(jìn)行發(fā)送,即寫入仿真數(shù)據(jù)后發(fā)送命令通知仿真管理與控制仿真機,則需要3~4(ms)× 4(臺) = 12~16(ms)的時間完成數(shù)據(jù)接收過程,而本系統(tǒng)要求仿真的幀周期小于10ms,無法達(dá)到性能指標(biāo)。
根據(jù)各仿真機所傳數(shù)據(jù)量不大的特點,采用一種在反射內(nèi)存卡上設(shè)置數(shù)據(jù)緩存區(qū)的方法,即通過改變偏移地址將一個數(shù)據(jù)區(qū)增加為多個(N個)相同的數(shù)據(jù)區(qū),每個數(shù)據(jù)區(qū)都設(shè)有一個數(shù)據(jù)標(biāo)志位Data_Flag_N。當(dāng)Data_Flag_ N為0時,表示該數(shù)據(jù)區(qū)為空,即沒有數(shù)據(jù)可以被讀;當(dāng)Data_Flag_ N為1時,表示該數(shù)據(jù)區(qū)已寫完,可以被讀取。仿真開始后,發(fā)送方開啟100ms定時器,按照從1到N的順序向緩存區(qū)寫入數(shù)據(jù),并置位Data_Flag_ N = 1;接收方開啟50ms定時器,按照同樣的順序查詢Data_Flag_ N,當(dāng)Data_Flag_ N = 1時讀取第N個緩存區(qū)的數(shù)據(jù),并復(fù)位Data_Flag_ N為0。
由于該協(xié)議減少了雙方通信握手的復(fù)雜度,而反射內(nèi)存卡的讀寫操作時間約為1ms,實時仿真數(shù)據(jù)傳輸只需要1~2(ms)× 4(臺) = 4~8(ms)即可完成,經(jīng)過實驗測試,能夠滿足本系統(tǒng)的實時性指標(biāo)。
5 小 結(jié)
本文根據(jù)系統(tǒng)的功能需求和性能指標(biāo),為反射內(nèi)存網(wǎng)提出了一種采用查看命令回復(fù)的命令通信協(xié)議和采用讀取數(shù)據(jù)緩存區(qū)的實時數(shù)據(jù)傳輸協(xié)議。該協(xié)議簡單明了、易于編程實現(xiàn),同時具有很好的擴展性,在本仿真系統(tǒng)中已得到很好的驗證。
參考文獻(xiàn)
1 Milan Jovanovic and Veljko Milutinovic. An Overview of Reflective Memory Systems Concurrency, IEEE [see also IEEE Parallel & Distributed Technology] , 1999;7(2): 56~64.
2 顧穎彥. 反射內(nèi)存網(wǎng)實時通信技術(shù)的研究[J]. 計算機工程,2002;(7):143~144.
3 經(jīng)彤,李貴山,康繼昌. 基于高速網(wǎng)絡(luò)結(jié)構(gòu)實時傳輸多媒體信息. 計算機工程與應(yīng)用,1997; (9): 14~17.
4 孔文華. 利用反射內(nèi)存網(wǎng)絡(luò)構(gòu)成分布式實時仿真環(huán)境[J]. 計算機仿真,1997; (10): 8~11.
5 劉志國,王仕成,金光軍.基于實時網(wǎng)絡(luò)的激光制導(dǎo)武器半實物仿真系統(tǒng)設(shè)計[J]. 計算機仿真,2003; (5): 20~21.
|