于愛榮,王 俊,牛彥杰,王遠陽
(1.中國人民解放軍陸軍工程大學 指揮控制工程學院,江蘇 南京 211117;2.南京信息工程大學 管理工程學院,江蘇 南京 210044;3.東部戰區總醫院博士后科研工作站,江蘇 南京 210002)
通信抗干擾技術是指在復雜電磁環境或有針對性的通信干擾環境中,為保持自身通信生存能力而采取的通信反對抗技術體系、方法和措施[1]。為了降低通信裝備研制的投資風險和戰場使用風險,需要對通信裝備或系統的真實抗干擾能力進行客觀、全面的評估。
內場通信抗干擾試驗是指在具有良好電磁屏蔽的試驗室內模擬外界實際電磁環境,考核通信裝備抗干擾性能的一種試驗方式。相對于外場通信抗干擾試驗,內場通信抗干擾試驗具有不受天氣和地理條件約束、模擬電磁信號全程可控、安全保密性高、人員工作強度低、試驗效費比高、試驗仿真規模大、數據反饋與結果處理實時性強等諸多優點,受到各國軍方和科工部門的重視,試驗場建設的重點也逐步由外場轉向內場。近年,隨著通信抗干擾試驗規模的日益增大,試驗中涉及的設備種類和型號繁多,以往的試驗系統大都針對單臺或單類網絡設備,可擴充性、靈活性、通用性差,難以適應目前中大規模組網試驗的需求[2]。
內場通信抗干擾試驗作為一種綜合利用數字信號處理、設備控制、場景仿真和大數據分析與計算機應用技術的半實物仿真試驗平臺,可對復雜電磁環境下的被試裝備通信能力(誤碼率、丟幀率、主客觀話音清晰度、主客觀句子可懂度)和同步能力等動態指標進行量化考核,通過多次試驗結果的積累可對通信裝備的戰技術性能有比較全面的評估[3-4]。
內場通信抗干擾試驗流程如圖1所示,主要劃分為試驗規劃、試驗任務內容編排、試驗任務調度、試驗測試與控制和數據分析與評估五個階段。

圖1 內場通信抗干擾試驗系統試驗流程
其中試驗規劃階段用于解析上級下發的試驗任務,并將本次試驗任務的要求和內容進行明確。試驗規劃階段主要通過網絡拓撲圖形式展示待試驗的網絡結構,該階段完成后將能夠生成本次試驗的總體設計規劃和方案,載體形式為文檔;試驗任務編排完成對每一項任務中的測試對象、參試和陪試設備/儀表的細粒度時序和指令的規劃和有機組合;試驗任務調度階段對多個試驗任務按照權重優先級,使用ISE算法進行統一的調度;試驗測試與控制階段采用指令序列化方式實現對設備的流程化自動控制,涵蓋測試的啟動、參數配置、結果獲取、異常處理和終止等;數據分析與評估階段完成對內場測試過程中采集的結果、過程等數據進行存儲,實現對試驗結果、中間狀態、設備參數等各類數據的高效管理和對存儲的試驗結果進行查詢、對比和統計的功能[4-6]。
系統采用分層架構進行設計實現,系統從下至上分別為數據管理層、指令控制層、業務邏輯層和展現與分析層,在借鑒前后端分離設計理念的基礎上,綜合使用Vue、Restful和Redis等開發技術,將系統設計的著力點聚焦于架構的高可用[7-9],技術架構如圖2所示。
(1)展現與分析層:采用Vue.js這種漸進式框架構建試驗管理與用戶交互的界面。
(2)業務邏輯層:采用基于Restful架構將定義好的接口與不同的服務聯系起來。其中任務權重模型構建和ISE算法調度是系統業務處理的核心模塊。
(3)指令控制層:采用集中控制的總線結構,實現指令的集中控制。
(4)數據管理層:在使用MySQL的基礎上結合Redis內存數據庫高效能特性,為設備的高速數據傳輸提供數據支持,實現各類參數、過程、結果數據的存儲和管理[10-11]。

圖2 內場通信抗干擾試驗系統技術架構
在文中的通信抗干擾試驗系統中,任務調度定位與在有限的資源保障條件(有限人員、裝備和時間等)下,如何最大效率地統籌內場環境中的試驗任務執行,保障試驗過程中的各項試驗任務、計劃和方案能夠更加準確、高效、快速的執行,從而滿足試驗規劃和試驗組織實施人員對試驗任務運行的要求。除此之外,如何有效地分解、編排和組合各類試驗任務,如何高效調度試驗任務中可用的各類設備、儀表、人員、場地等資源,以及如何正確完成試驗方案要求與執行時序廣義上來說都是屬于調度的研究范疇。
任務不僅是抗干擾內場試驗調度的核心內容,也是資源分配的關鍵單位。它包含有試驗任務所需的各類需求信息。一般來說,一個試驗任務至少包含一個試驗方案,一個試驗方案中至少包含試驗場景和試驗指標。其中,試驗場景信息主要定義了試驗過程中被試設備與參試設備的網絡環境和連接關系,試驗指標則包含本次需要試驗得出的考核內容,如:丟幀率、通信效率、誤碼率等。其中試驗場景和試驗指標可以被多個試驗任務所共享[12]。
(1)有效提升內場試驗自動化執行效率。通過將調度技術引入抗干擾內場試驗,參加試驗的人員可采用預先加載的方式,將多個試驗任務有序安排至等待隊列中。隨后,在綜合考慮試驗資源條件和任務權重的基礎上,分析計算并決定是否將該任務調度執行。某試驗任務只要滿足調度運行的條件,系統將會使其運行起來,無需手工干預,有效提高了試驗執行的自動化效率。此外,在引入任務自動化調度機制的背景下,系統也為后期的遠程、分布式網絡環境下的并行試驗墊定了一定的技術基礎。后期,在試驗環境和資源保障到位的基礎上,系統可在同一時間段內,并行開展多個試驗任務,滿足大型內場試驗的運行時效的需求。
(2)試驗資源的自動分配與部署,采用流程化的自動編排方式對任務調度中的試驗資源進行合理分配,提高試驗資源分配的效率和精準度。在試驗資源分配時,優先對自身關聯資源少而又滿足任務所需的試驗資源進行分配,這樣可以盡量保證資源需求特殊的測試任務得到運行。
(3)滿足用戶對任務運行序列的合理化需求。在任務的調度與分配過程中,通過對試驗任務的權重計算,排定各試驗任務的運行優先級,實現了將用戶關注度高和性質重要的試驗任務盡早執行[13]。
內場試驗任務調度的對象主要是試驗中的各類設備、儀表。這些對象主要有以下幾類:
(1)混合網絡。試驗系統的組網核心設備,用于模擬實際的外場試驗環境及其電波傳輸衰減特性。
(2)干擾信號發生器。用于模擬敵方通信設備產生的干擾信號。可實現對通信設備在定頻和調頻狀態下的信號干擾。在定頻狀態下的干擾樣式主要包括寬帶AM、ASK、FSK、BPSK、QPSK、梳狀譜等;跳頻狀態下主要通過對接收到的信號進行頻率快速檢測,從而引導信號源快速產生與接收信號同頻的干擾。
(3)背景信號發生器。用于產生在實際地理環境條件,對短波/超短波通信有潛在威脅的多樣式、大強度、高密度、隨機變化的動態“復雜”電磁環境,該設備生成的背景信號數量、功率、帶寬及調制樣式均可程控可變[14]。
(4)測試終端。用于加載數據或語音業務,通過手持式終端的形態可實現單詞、句子、數據幀等多類業務的加載。
(5)其他設備。包括誤碼儀、功率計、頻譜儀等設備,主要對測試過程中的信號強度、發射功率、接收功率、誤碼率等指標進行測量[15]。
在試驗任務的規劃和執行過程中,設備的利用率和數據處理效率變得越來越重要。針對當前試驗任務調度機制和算法存在的調度任務不區分緊迫度、受控設備忙閑不均等問題,該文采用構建在任務權重模型技術上的一體化調度執行算法(integrated scheduling execution,ISE)來進行試驗任務的綜合調度[16],具體任務框架如圖3所示。

圖3 任務調度框架設計
該框架分為任務調度控制、指令總線、單設備控制和參試設備執行4個階段。其中,任務調度控制負責任務權重的計算和ISE算法的調度執行,由于試驗業務的實時性要求不高,采取時間片為每半小時一次的定期獲取試驗任務的策略,定時讀取系統中的試驗任務,并按序開展調度運行[17]。
在內場試驗過程中,不同試驗任務的方案種類、性質、參與設備和試驗所需時間差異很大,因此需要在任務調度初期首先對試驗任務進行調度優先級的確定和劃分。因此,在充分分析研究任務特征的基礎上,該文設計了任務的權重模型來對試驗任務的緊迫程度進行量化表達。通過數學模型的描述方式對試驗任務進行權重表達和劃分,模型中的三個主體對象分別是試驗方案、試驗設備和試驗人員,其中,試驗方案、設備和人員之間均是一對多的連接關系。在模型中,用Wr表示實體和關系表之間的關系權重,用Wd表示實體和維度之間的關系權重,用We表示實體與實體之間的關系權重[18]。具體如圖4所示。

圖4 任務的權重模型
根據上述任務權重模型,相關試驗任務Wt的權重形式化表示為:
其中,n1為Wr個數,n2為Wd個數,n3為We個數。
其中試驗方案的維度主要包括:方案的類型(單網、多網、網系)、方案級別(國家級、部級、地區級、單位級)、方案性質(獨立方案、延續方案、分支方案)等;試驗設備的維度按照不同數據、控制接口、執行所需時間進行表述;人員的維度按照專業和技術等級進行表述。對于關系權值的設定,初始設定值為1,步進最小單位為0.5,在不同試驗任務場景時對關系權值進行適當的調整,依據任務特征進行賦予權重數值后,需要對試驗任務進行排序,以達到任務序列中依據權重排序的最優值,采用歸并排序算法進行排序,其時間復雜度為Ο(nlog2n)。歸并排序的主要思想是分治法,主要過程是:
(1)將任務隊列中的n個試驗任務分成兩部分。
(2)將步驟1分成的兩部分再分別進行遞歸分解,直到所有部分的任務個數都為1。
(3)按照權重從最底層開始逐步合并兩個排好序的數列。
在任務調度執行階段,先前的系統試驗任務調度采用的是短作業優先或先來先服務等算法;但是對于預計需要時間差異較大的試驗任務來說,這兩種算法都存在調度效率低下、設備空閑率高的問題。在對多種優先級調度算法充分研究的基礎上,該文采用高響應比優先(highest response ratio next,HRRN)算法[19]。該算法的核心思想是綜合考慮每個任務的等待時間長短和估計需要的執行時間長短,確保每個試驗任務都能夠獲得公平的調度與執行。假設試驗任務i的優先級為Pi,到達時間為Oi,開始運行時間為Si,執行結束時間為Ei,則有:
由上式可以看出:Pi一定是大于1的,當排隊等待時間固定時,如任務需要執行的時間越小,執行的優先級別就越高,類似SJF調度算法;當任務所需執行時間固定時,任務排隊等待的時間越長,其被調度的優先級也會增高,類似FCFS算法;在充分考慮任務權重的基礎上使用該算法能夠有效地動態調整試驗任務的優先級,使得整個調度過程更加均衡,達到任務所需執行時間和排序等待時間的兩點平衡。
對于該文研究的內場抗干擾試驗系統,涉及到的主要試驗實體包括試驗任務、試驗方案、試驗設備和時序流程,這些實體特征各異,屬性差別很大。并且隨著試驗需求、規劃和內容編排的頻繁變更,這些實體的屬性也可能需要隨之改變,這就要求試驗中的這些個體數據組織形式必須便于理解、擴展和修改。
XML(extensible markup language)作為一種可擴展標記語言可用于表述事務的相關特征[20]。由于它是一種基于層次化標簽的描述語言,可以以文本形式組織和描述實體關系與屬性。XML中的標記通常成對出現,包括開始標記和結束標記,位于標記之間內容稱為元素。一個元素可包含一個或多個屬性,目前,XML已成為網絡應用程序中定義屬性和特征的事實標準。對試驗任務進行定義的典型設計如下:
其中,MissionName字段表示該試驗任務的名字;MissionPriority表示該試驗任務的優先級,該優先級由任務權重模型進行計算得出;MissionPeopleName字段表示該試驗任務試驗人員;MissionPlan字段表示試驗拓撲和網絡腳本的文件存儲名稱,以相對路徑表示;Missiontype字段表示試驗的具體考核項目;UseDevice字段表示該試驗任務的各類設備情況,包括被試設備(以M標識)、參試設備(以P標識)。如果該試驗任務還需要其他信息,通過定義新的字段,就可在相關位置直接添加標簽[21]。
任務調度模塊的核心就是從多個試驗任務中調度出一個優先級最高的試驗任務進行優先運行,其偽代碼示意如下:
獲取測試任務隊列中的所有測試任務;
setMissionNum 0;#初始化任務總數
while{未遍歷試驗隊列} {
提取一個未判斷的試驗任務;
獲取該試驗任務的屬性和數據;
加載到任務隊列中;
MissionNum++;
}
while{MissionNum>1} {
計算試驗任務的權重優先級;
對所有試驗任務進行排序;
選出優先級最高試驗任務;
if{優先級最高的試驗任務不唯一} {
{
對選出的任務按進入高響應比優先算法進行排序;
調度排序首位的試驗任務;
MissionNum--;
開展試驗任務設備分配和試驗項目加載;
}else
{
調度排序首位的試驗任務;
MissionNum--;
開展試驗任務設備分配和試驗項目加載;
}}
偽代碼說明:試驗任務調度功能的主要目的就是從多個試驗任務中調度出可執行的下一個任務,并為其分配設備和各類資源。調度的目標就是使整個試驗能在最短時間內高效、穩定和準確的執行,其調度策略的核心就是該文所提出的任務權重模型和IES算法。
試驗任務執行過程中的核心是要對管控設備進行指令的序列化發送,主要涉及到的指令有:設備運控指令、參數配置指令、狀態監控指令和結果獲取指令,指令在系統軟件設計和編碼時都以信息幀的形式呈現。信息幀是指由各種信息項按一定的結構方式組合而成的數據結構。各信息項由包含它的信息幀的幀頭內容和它出現在信息幀中的位置共同確定其物理含義,信息項使用指定的數據類型來表達。圖5顯示了一個典型的信息幀結構[22]。

圖5 信息幀結構
信息幀實現了對管控設備指令的可視化設計,標準化的組織形式讓指令的解析和理解更為簡單,內場通信抗干擾試驗系統基于Borland C++開發工具進行編碼實現,對指令幀采用struct數據結構定義如下:
struct TFrame
{
char StartId[4]; ///幀起始標志
int ALength;//幀長度
char SBBM;//設備編碼
char ZGNBM; //幀功能碼
char ZT[800];//幀體
char CheckByte;//檢驗字
};
由于在Socket中的send函數無法直接發送結構體,因此需要在發送端先將結構體序列化為二進制字符串,然后用send發送,在接收端recv字符串后再轉換成原先的結構體。結構體對象在內存中分配的空間都是連續的,所以序列化后的發送和接收過程應不會出現數據錯位的問題。不過為了保證數據的完整性和正確性,在數據幀中均加有校驗字,以確保數據的一致性。具體的發送結構體的代碼為:
TFrame sndFrame;
memcpy( sndFramer.StartId,“frme”, sizeof(“frme”) );
memcpy( sndFramer.SBBM,“0001”, sizeof(“0001”) );
memcpy( sndFramer.ZGNBM,“1000”, sizeof(“1000”) );
.......
send( m_socket, (char *)& sndFramer, sizeof(TFrame), 0 );
在接收方對于定長的結構體可采用定長字符數組的方式接收,處理的核心代碼如下:
char buffer[1024];
TFrame recvFrame;
recv( m_socket, buffer, sizeof(buffer), 0 );
memcpy( & recvFrame, buffer, sizeof(buffer) );
當前,內場通信抗干擾試驗的重要性正在逐漸凸顯,隨著通信網絡的爆炸式增長,ISE算法在大規模組網通信試驗中的效果評估還需要繼續驗證。另外,還應注意到跨網絡、地域、體系的聯合試驗需求日益強烈,分布式試驗的新模式正在逐漸成形,如何在新的試驗場景下高效完成試驗任務還需要加大力氣探索和研究。