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

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

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

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