合肥電子工程學院402教研室 徐 云
仿真模擬由于其靈活方便和投入少等特性,使得在裝備生產、訓練過程中得到了廣泛的使用。在通信對抗裝備仿真中,仿真模型設計直接關系到仿真結果的科學性和有效性。
使用面向對象建模技術建立的仿真模型是對客觀世界活動的自然刻劃,其中的對象是對客觀世界中有形或無形實體的直接模擬。采用面向對象軟件開發技術,能夠減小問題域與解題域之間的語義間隙,使得軟件開發過程顯得比較自然,從而提高軟件生產率。
并發是對象模型的一種潛在特性,為在仿真模型中提供對象的并發行為能力(如多個裝備或系統裝備中同時發生的并發行為),必須在面向對象模型中提供并發描述機制,使其能夠描述裝備中發生的并發行為。而傳統的面向對象編程語言只提供了描述程序順序執行的能力,如何在對象中引入并發機制,使之方便地描述并發系統,這些是很多人都在研究的問題。文獻[4]設計了一種基于事件驅動的并發模型,該模型通過同步或異步消息實現并發行為的驅動執行,當對象收到消息,根據消息種類的不同被動地作出相應的處理,整個處理由各種不同消息驅動,而對象只是被動執行請求的操作,這與面向對象理念不符并且只能算是對傳統面向過程編程的改進。[5]介紹的多線程模型通過線程來模擬對象的并發行為,較好的切合了面向對象的設計理念。然而,很多研究表明:此種方設計時必須考慮并發與面向對象的一些特性相互干擾,如繼承異常等問題[1]。
鑒于此,本文采用面向對象的建模技術,[4-5]中介紹的各種并發技術,提出一種使用事件/消息與多線程的混合并發模型,并應用到通信對抗裝備的并發仿真模型設計中。
通信對抗裝備種類繁多,體系復雜,裝備參數眾多、功能繁雜,使得仿真模型設計難度較大,特別是設計具有并發行為的仿真模型面臨眾多困難。
現代通信對抗裝備已經由早期的單機向系統發展,但是從功能上來說,仍然可以將其劃分為3大類:通信對抗偵察裝備、通信對抗測向裝備、通信對抗干擾裝備,任何復雜的通信對抗系統都是由這三種基本的裝備組合而成,這種模塊化、積木化的發展方式也正是目前裝備發展的趨勢[2]。另外上述三大類裝備還可以進一步劃分:偵察裝備可以按其實現的功能劃分全景搜索接收設備、監測偵聽分析接收設備、信道化接收設備等;測向裝備可以按測向原理劃分為振幅法測向設備、相位法測向設備等;干擾裝備按照干擾帶寬劃分為窄帶瞄準式干擾設備、寬帶攔阻式干擾設備等[2]。在模型設計時需要重點考慮兩個問題:模型的層次劃分與模型參數、行為分配。
(1)模型的層次劃分
模型的層次劃分是指對所描述的對象按照“父—子”關系劃分為不同的層次,子模型可以自動繼承父模型所具備的屬性和行為,同時子模型可以具有自己特有的屬性和行為,并能夠對父模型所具備的部分行為進行“進化”,從而具備更適應自身要求的行為特征。這種清晰的模型層次劃分能夠節省子模型代碼數量,并且修改模型時,對父模型的修改直接被子模型繼承,子模型不需要進行修改,大大方便了模型的修改與維護。
根據通信對抗裝備的分類方法,采用層次化的模型設計方法,設計一個“基類模型”作為所有通信通信對抗裝備的頂層模型,在此基礎上派生出三個第二層模型:通信對抗偵察裝備模型、通信對抗測向裝備模型及通信對抗干擾裝備模型,以此類推,形成完整的模型層次結構,如圖1所示。

圖1 通信對抗裝備層次模型
說明:根據仿真的需要,以上模型設計還可以按照具體的裝備型號進行進一步的劃分,從而形成與型號裝備對應的仿真模型。
(2)模型參數、行為分配
模型層次結構設計好之后,接下來的關鍵則是將模型參數、行為分配到相應的層次中,分配模型參數、行為時應遵循如下原則:
1)盡可能將多種設備共同參數和行為分配到盡可能高一級的模型中;
2)某種設備特有的參數和行為盡可能分配到低一級的模型中;
3)對于含義相同、行為略有差別的行為,可以采用虛擬化技術限定,從而使得下一級模型可以重寫上一級模型的行為,滿足仿真需求;
根據以上設計原則,以頂層模型、第二層偵察裝備模型及第三層全景搜索接收裝備模型為例,將其部分模型參數和行為按圖2所示進行分配。
在通信對抗裝備仿真中,具有典型并發特征的行為主要有三個:偵察、測向和干擾。由于這三種行為都需要消耗大量的時間資源和存貯資源,并且當同時模擬多個設備或較大型的系統設備時,必然存在設備內部及設備與設備之間的各種并發行為。
在傳統的面向過程的程序設計中,常采用集中控制的方式對并發行為進行描述,也就是將所有對象的并發行為集中在一個過程函數中逐一描述,此種方法的優點是過程清晰,并發行為之間的同步設計簡單(如圖3所示)。但是此種過程式的并發行為設計其本質仍然是順序處理而不是真正意義上的并發處理。當并發行為較多時,邏輯控制比較復雜,特別是當并發行為之間如果具有依賴性(如某個并發行為必須等到另一個并發行為結束之后才能進行),將會導致并發行為邏輯控制相當復雜甚至無法進行。同時,此種方法不能充分發揮現代多核處理器的同時多任務處理能力。

圖3 面向過程的并發行為
針對上述面向過程的并發行為存在的問題,[4]提出的基于消息并發對象模型及[1]介紹的在面向對象模型中引入并發機制,根據通信對抗裝備仿真特點和需求,采用C++語言提供的消息、事件、線程等元素[3],設計了基于對象的、主動式的、自治的并發仿真模型,其基本思路是:使用線程作為并發行為的載體,使用消息提供對象之間以及對象與外部控制、顯示模塊進行通信,使用事件實現線程內部對數據處理的同步,如圖4所示,該并發模型的特點是:

圖4 并發行為模型及并發對象之間通信模型
(1)將并發行為的載體——線程封裝在對象之中,高效的利用了多核處理器的處理能力;同時,并發行為由其所屬的對象完全管理,每個模型都是一個高度自治的對象,從而大大降低了并發行為管理的復雜性。
(2)對象與對象之間、對象與外部控制、顯示等模塊之間的通信通過互發消息進行,避免對處理流程的額外干擾。
(3)使用事件進行同步,較好的實現了對具有依賴性的并發行為之間的同步。
根據上述設計,我們以通信對抗偵察設備為例,使用Visual C++語言設計實現其仿真并發模型。
頂層模型中包含所有裝備的共性屬性和行為,其共性屬性主要有裝備類別、平臺類別、工作狀態等,其共性的行為主要有裝備的機動、設備電源的打開與關閉等。下面給出其實現示例代碼:
class CBaseEquip
{
//構造函數與析構函數
public:
CBaseEquip();
virtual~CBaseEquip();
//設備屬性參數
protect:
int m_intEquipType;//裝備類別
int m_intPlatType;//平臺類別
int m_intWorkState;//工作狀態
//設備屬性參數訪問函數(略)
//設備行為
public:
virtual void Move();//設備機動行為
virtual void Power(BOOL bPowerOnOff);//電源開關
};
說明:
(1)為封裝內部數據,屬性參數一般使用protect屬性進行保護,以免外部直接訪問,破壞內部數據狀態,同時通過提供屬性參數訪問接口以便外部統一訪問。
(2)為提供繼承類可以實現特殊的可以修改的行為,在設備行為中增加virtual修飾符,即繼承類可以重寫基類的行為,而編譯器可以根據對象運行時信息確定調用合適的函數。
通信對抗偵察設備仿真模型由基類模型CBaseEquip通過繼承獲得,除了自動具備基類CBaseEquip所有公開和保護的屬性和行為外,還具有自身特有的屬性和行為,如最低工作頻率、最高工作頻率、接收機的靈敏度、解調方式、中頻帶寬等屬性參數以及偵察接收等個性化的行為。
在這里,應重點考慮偵察行為的并發設計。通常,一個完整的偵察流程應包括:設備參數初始化、采集信號、數據處理、數據顯示等四個步驟。其中參數初始化主要用于初始化接收機工作參數(如工作頻率、解調方式、天線衰減、增益控制等),信號采集主要用于從專用的采集設備提取信號數據,數據處理則根據處理需求不同而不同(如進行數據加床、頻域分析等),數據顯示主要用于顯示數據處理的結果。按照1.2設計的并發行為模型,采用在面向對象模型中引進并發機制的方法,使用線程實現并發行為,給出偵察并發行為的實現流程及示例代碼如圖5所示。

圖5 偵察流程及示例代碼
面向對象的模型設計模仿人類認識世界的方法將客觀世界的任何事物看作對象,進而分析事物的組成關系和交互關系,建立描述客觀世界的抽象模型,借助封裝、數據抽象、多態和繼承等手段很好的實現了對客觀事物的描述。針對在裝備仿真中存在的并發行為特征,文章使用在面向對象模型中引進并發機制的方法,設計實現了并發仿真模型,并探討了在并發仿真模型中實現通信及同步的基本方法。
[1] 陳家駿.面向對象程序設計模型中的并發行為[J].2008:3-5.
[2] 蔡曉霞等.通信對抗原理[M].解放軍出版社,2011,01.
[3] Jeffery Richter著.王建生等譯.Windows核心編程[M].機械工業出版社,2000,5:172-190.
[4] 周光明.基于對象的并發模型[J].計算機技術與發展,2008.No12.Vol18:147.
[5] 李慧霸等.網絡程序設計中的并發復雜性[J].軟件學報,Vol.22,No.1,January 2011.