侦察卫星星座覆盖性能仿真分析软件设计
2019-06-17俞杭华
俞杭华,刘 磊
(上海微小卫星工程中心,上海 201210)
0 引言
随着卫星技术的发展,天基侦察逐步发展成为除地基侦察和空基侦察外的又一个主要侦察方式,并且发挥越来越重要的作用。1991年海湾战争期间,美国使用“白云”海洋监视卫星、“大酒瓶”、“漩涡”等通信侦察卫星,截收和窃听伊拉克军方的雷达和通信情报,与光学和合成孔径雷达侦察、及地基和空基侦察手段共同形成对伊方全方位、多层次的侦察网[1]。
天基侦察逐步由单星向多星组网方式发展,以提供更短侦察时间间隔、更长连续侦察弧段、更大侦察范围的侦察覆盖性能。在载荷视场一定的条件下,多星星座的侦察覆盖性能主要受星座构型设计影响,因此,开展不同构型卫星星座的对地覆盖性能对比分析,是天基侦察系统设计论证的一项重要内容。
卫星仿真工具包(STK)是一款专业卫星分析工具,提供了强大的分析和二维/三维可视化功能,并且提供了二次开发接口,用户可以采用直接操作STK软件建模,或者开发用户程序集成STK分析模块的方式开展仿真工作。前一种方式适用于仿真对象数目不多、非实时的任务分析,后一种方式是使用STK软件最有效的方式[2]。文献[3]使用STK/X插件和Matlab GUI界面开发了电子侦察系统仿真分析软件,进行了单颗卫星对单点和区域的覆盖性能分析。文献[4]利用STK和Matlab进行联合仿真,实现对卫星轨道和姿态的控制。文献[5]设计实现了连接STK和高层体系结构HLA运行支撑框架RTI的中间件,将STK集成到统一的作战仿真环境。
本文针对侦察卫星星座覆盖性能的仿真分析需求,以VS2010为开发平台,利用STK的仿真模型和可视化功能开发了仿真分析系统,提供用户想定场景编辑、仿真结果存储、覆盖性能对比和可视化显示等功能,同时可通过Redis数据库实现与其它仿真程序的静态和动态数据交互。
1 仿真系统构建
1.1 STK和Redis特性分析
STK软件支持Windows操作系统,软件由内核和一系列功能模块组成,提供仿真模型、可视化、数据库和软件接口等4大类功能。仿真模型包括轨道计算、对象相关性分析和设备模型等;可视化功能提供二维、三维动画显示;数据库功能提供了卫星库、恒星/行星库、地形和地图等;软件接口包括软件交互接口和软件编程接口,外部程序可通过软件交互接口集成可视化功能,调用仿真模型,实现命令和数据的交互。
Redis是一个开源的高性能键-值(Key-Value)型数据库,支持字符串(string)、链表(list)、集合(set)和哈希类型(hash)等多种值类型,支持数据的添加和移除、取交集并集等操作,提供多种语言应用程序接口。Redis支持主从同步,采用发布和订阅机制,从服务器可通过订阅一个频道,接收主服务器发布的实时消息,实现数据的动态交互。
1.2 仿真系统结构
仿真系统在Microsoft Visual Studio 2010集成开发环境下,基于.NET Framework4开发。系统结构如图1所示。
图1 仿真系统结构
仿真系统以仿真管理控制平台为中心,提供系统与用户的交互接口。控制平台使用STKX插件实现仿真场景二维和三维显示,通过STK/Connect命令,调用STK轨道计算、对象相关性等仿真模型。控制平台通过TCP/IP接口与Redis数据库通信,使用数据读和写方法实现静态数据的读写,使用信息发布和订阅方法实现与外部仿真程序的动态数据交互。控制平台通过调用.NET封装的Matlab库函数,实现仿真结果的可视化显示。
1.3 仿真工作流程
仿真程序提供独立仿真和与外部程序协同仿真两种运行方式。选择独立仿真方式时,首先需设置场景参数,包括仿真起止时间、星座卫星数量、星座卫星星历、目标位置、载荷视场等,可以选择直接调用数据库中已存储的场景参数,也可以新建场景。选择协同仿真时,程序进入监听等待状态,在收到外部程序的启动仿真指令后,从数据库读取外部程序写入的仿真场景参数,启动仿真主程序,仿真完成后对外发布完成标志并再次进入监听状态。
读取参数完成后,程序调用STK建立仿真场景,计算数据并存储到数据库,通过二维和三维插件显示建立的仿真场景,并提供用户控制按钮,调整动画显示方式。用户可选择需要输出的覆盖性能指标,程序生成并输出图表。
仿真系统工作流程图如图2所示。
图2 仿真工作流程
图3 用户交互主界面
1.4 仿真功能模块设计实现
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组件,定义类实例,调用数据处理和绘图函数,绘制图形并显示在程序主界面。
2 仿真系统应用测试
2.1 协同仿真测试
采用Redis Desktop Manager工具和Redis客户端程序对仿真系统进行协同仿真应用测试。通过Redis Desktop Manager在数据库中写入仿真场景参数、指定当前仿真场景。使用两个Redis客户端,一个在Start_Flag通道循环发送start信息,启动仿真主程序,一个在Finish_Flag通道接收仿真系统完成仿真任务后发布的finish信息。
图4和图5为协同仿真应用测试方案和测试结果。
图4 协同仿真应用测试方案
图5 协同仿真应用测试结果-主程序
测试过程设置了12星卫星星座场景,循环发送了4次启动仿真信息。测试结果表明,仿真系统能够根据接收到的外部启动信息,完成仿真分析,输出仿真结果到数据库,并对外发布结束信息。
2.2 单星座覆盖性能分析
在独立仿真模式下,新建一个仿真时间为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 区域目标连续覆盖时间
2.3 多星座覆盖性能对比
在前述仿真场景基础上,更改卫星星座构型为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。
3 结束语
对地覆盖性能分析是侦察卫星星座系统设计的一项重要内容。本文基于STK软件设计开发的仿真分析系统,以简洁的用户交互界面,实现了快速、有效的星座覆盖性能分析功能,可以简化星座构型论证工作,为星座系统设计提供支撑。通过仿真应用测试,表明该系统可以独立运行完成单星座的覆盖性能分析和多星座的性能对比,也可以作为一个模块与外部仿真系统开展协同仿真。■