俞杭華,劉 磊
(上海微小衛星工程中心,上海 201210)
隨著衛星技術的發展,天基偵察逐步發展成為除地基偵察和空基偵察外的又一個主要偵察方式,并且發揮越來越重要的作用。1991年海灣戰爭期間,美國使用“白云”海洋監視衛星、“大酒瓶”、“漩渦”等通信偵察衛星,截收和竊聽伊拉克軍方的雷達和通信情報,與光學和合成孔徑雷達偵察、及地基和空基偵察手段共同形成對伊方全方位、多層次的偵察網[1]。
天基偵察逐步由單星向多星組網方式發展,以提供更短偵察時間間隔、更長連續偵察弧段、更大偵察范圍的偵察覆蓋性能。在載荷視場一定的條件下,多星星座的偵察覆蓋性能主要受星座構型設計影響,因此,開展不同構型衛星星座的對地覆蓋性能對比分析,是天基偵察系統設計論證的一項重要內容。
衛星仿真工具包(STK)是一款專業衛星分析工具,提供了強大的分析和二維/三維可視化功能,并且提供了二次開發接口,用戶可以采用直接操作STK軟件建模,或者開發用戶程序集成STK分析模塊的方式開展仿真工作。前一種方式適用于仿真對象數目不多、非實時的任務分析,后一種方式是使用STK軟件最有效的方式[2]。文獻[3]使用STK/X插件和Matlab GUI界面開發了電子偵察系統仿真分析軟件,進行了單顆衛星對單點和區域的覆蓋性能分析。文獻[4]利用STK和Matlab進行聯合仿真,實現對衛星軌道和姿態的控制。文獻[5]設計實現了連接STK和高層體系結構HLA運行支撐框架RTI的中間件,將STK集成到統一的作戰仿真環境。
本文針對偵察衛星星座覆蓋性能的仿真分析需求,以VS2010為開發平臺,利用STK的仿真模型和可視化功能開發了仿真分析系統,提供用戶想定場景編輯、仿真結果存儲、覆蓋性能對比和可視化顯示等功能,同時可通過Redis數據庫實現與其它仿真程序的靜態和動態數據交互。
STK軟件支持Windows操作系統,軟件由內核和一系列功能模塊組成,提供仿真模型、可視化、數據庫和軟件接口等4大類功能。仿真模型包括軌道計算、對象相關性分析和設備模型等;可視化功能提供二維、三維動畫顯示;數據庫功能提供了衛星庫、恒星/行星庫、地形和地圖等;軟件接口包括軟件交互接口和軟件編程接口,外部程序可通過軟件交互接口集成可視化功能,調用仿真模型,實現命令和數據的交互。
Redis是一個開源的高性能鍵-值(Key-Value)型數據庫,支持字符串(string)、鏈表(list)、集合(set)和哈希類型(hash)等多種值類型,支持數據的添加和移除、取交集并集等操作,提供多種語言應用程序接口。Redis支持主從同步,采用發布和訂閱機制,從服務器可通過訂閱一個頻道,接收主服務器發布的實時消息,實現數據的動態交互。
仿真系統在Microsoft Visual Studio 2010集成開發環境下,基于.NET Framework4開發。系統結構如圖1所示。

圖1 仿真系統結構
仿真系統以仿真管理控制平臺為中心,提供系統與用戶的交互接口。控制平臺使用STKX插件實現仿真場景二維和三維顯示,通過STK/Connect命令,調用STK軌道計算、對象相關性等仿真模型。控制平臺通過TCP/IP接口與Redis數據庫通信,使用數據讀和寫方法實現靜態數據的讀寫,使用信息發布和訂閱方法實現與外部仿真程序的動態數據交互。控制平臺通過調用.NET封裝的Matlab庫函數,實現仿真結果的可視化顯示。
仿真程序提供獨立仿真和與外部程序協同仿真兩種運行方式。選擇獨立仿真方式時,首先需設置場景參數,包括仿真起止時間、星座衛星數量、星座衛星星歷、目標位置、載荷視場等,可以選擇直接調用數據庫中已存儲的場景參數,也可以新建場景。選擇協同仿真時,程序進入監聽等待狀態,在收到外部程序的啟動仿真指令后,從數據庫讀取外部程序寫入的仿真場景參數,啟動仿真主程序,仿真完成后對外發布完成標志并再次進入監聽狀態。
讀取參數完成后,程序調用STK建立仿真場景,計算數據并存儲到數據庫,通過二維和三維插件顯示建立的仿真場景,并提供用戶控制按鈕,調整動畫顯示方式。用戶可選擇需要輸出的覆蓋性能指標,程序生成并輸出圖表。
仿真系統工作流程圖如圖2所示。

圖2 仿真工作流程

圖3 用戶交互主界面
1.4.1 用戶交互界面
用戶交互界面提供對程序運行狀態、參數設置、結果可視化等方面的配置,基于Windows窗體開發。主界面允許用戶選擇程序的運行方式,包括獨立仿真和協同仿真,獨立仿真狀態下允許用戶打開子界面,選擇已有仿真場景或建立新仿真場景。主界面配置AGI Map Control 9和AGI Globe Control 9插件,顯示建立的仿真場景,并控制其運行。同時,主界面通過ListBox控件顯示運行狀態信息,通過PictureBox控件顯示仿真結果。通過主界面按鈕可生成相應的子界面,提供更詳細的配置參數編輯功能。圖3為主界面。
1.4.2 Redis數據庫讀寫和發布模塊
仿真系統使用Redis數據庫存儲初始參數、中間數據和仿真結果,同時通過數據庫與外部程序進行實時交互。基于ServiceStack庫,設計了Redis管理、Hash和String類型操作和消息發布訂閱等多個類,實現鏈接池管理對象的創建、Hash和String兩種類型數據的讀寫、信息監聽通道訂閱和對外部程序的信息發布。主程序通過調用相關類的方法,在流程各個階段讀寫數據,在協同仿真模式下,通過監聽線程訂閱Start_Flag監聽通道,實時監聽外部程序發布的命令,仿真分析結束后通過發布通道Finish_Flag對外發布完成信息。
1.4.3 STK調用模塊
STK調用模塊封裝了程序對STK的所有調用操作,根據輸入場景參數,建立運行場景,包括衛星、載荷、星座、地面站、通信環境等,完成覆蓋性能分析,回傳仿真結果數據。該模塊基于STK/Connect提供的STK命令編程接口和Connect標準C命令,通過客戶/服務器方式實現對STK的控制。
1.4.4 Matlab調用模塊
仿真結果的可視化通過調用Matlab編譯生成的庫函數實現。在Matlab中編寫并測試數據處理和圖形繪制的m文件,使用deploytool命令生成dll組件。主程序通過MWArray類的MWNumeric-Array和MWCharArray數據類型將C#中的Double、int和string等類型數據映射到Matlab對應的數據類型,引用dll組件,定義類實例,調用數據處理和繪圖函數,繪制圖形并顯示在程序主界面。
采用Redis Desktop Manager工具和Redis客戶端程序對仿真系統進行協同仿真應用測試。通過Redis Desktop Manager在數據庫中寫入仿真場景參數、指定當前仿真場景。使用兩個Redis客戶端,一個在Start_Flag通道循環發送start信息,啟動仿真主程序,一個在Finish_Flag通道接收仿真系統完成仿真任務后發布的finish信息。
圖4和圖5為協同仿真應用測試方案和測試結果。

圖4 協同仿真應用測試方案

圖5 協同仿真應用測試結果-主程序
測試過程設置了12星衛星星座場景,循環發送了4次啟動仿真信息。測試結果表明,仿真系統能夠根據接收到的外部啟動信息,完成仿真分析,輸出仿真結果到數據庫,并對外發布結束信息。
在獨立仿真模式下,新建一個仿真時間為2天的場景,建立了一個軌道高度1000 km、傾角45°、3個軌道面、每個軌道面4顆衛星的Walker星座1,設定載荷為視場角±45°的電子偵察載荷,設定地面點目標(Fac1,30°N/120°E)和地面區域目標(Area1,4個頂點分別是30°N/120°E、30°N/125°E、20°N/120°E、20°N/125°E)。
仿真分析得到星座最大可覆蓋緯度為南北緯55°,2天的仿真時間內共70次重訪間隔,最大間隔277.9 min,最小間隔5.6 min,除5個最大間隔點外,其余間隔均小于25 min。對區域目標共98個可見弧段,最長時間9 min,最短時間0.8 min。圖6為對點目標的重訪周期,圖7為對區域目標的連續覆蓋時間。

圖6 點目標重訪周期

圖7 區域目標連續覆蓋時間
在前述仿真場景基礎上,更改衛星星座構型為4個軌道面、每個軌道面3顆衛星的Walker星座2,運行程序完成仿真計算。
由于軌道傾角和載荷視場角相同,星座1和星座2最大可覆蓋緯度相同。在程序主界面選擇星座對比功能,輸出上述兩個衛星星座對點目標和區域目標覆蓋性能的對比結果如圖8和圖9所示。

圖8 點目標重訪周期對比

圖9 區域目標連續覆蓋時間對比
由圖可知,由于星座2軌道面數量大于星座1 ,對點目標重訪間隔最大192.2 min,小于星座1的最大間隔,但是由于星座2每軌衛星數量小于星座1,星座2重訪間隔的多數集中在30 min左右,而星座1多數間隔在20 min左右。兩個星座對區域目標的覆蓋性能相近,最大連續觀察時間相差1 min。
對地覆蓋性能分析是偵察衛星星座系統設計的一項重要內容。本文基于STK軟件設計開發的仿真分析系統,以簡潔的用戶交互界面,實現了快速、有效的星座覆蓋性能分析功能,可以簡化星座構型論證工作,為星座系統設計提供支撐。通過仿真應用測試,表明該系統可以獨立運行完成單星座的覆蓋性能分析和多星座的性能對比,也可以作為一個模塊與外部仿真系統開展協同仿真。■