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

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

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

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