李 磊 王鹏宇
(91550部队 大连 116023)
卫星工具软件(Satellite Tool Kit)是美国AGI公司推出的一款用于航天产业设计和分析的专业卫星分析工具软件,它支持航天任务周期的全过程,包括概念、需求、设计、制造、测试、发射、运行和应用等。STK软件起初多用于卫星轨道分析,最初的应用集中在航天、情报、雷达、电子对抗、飞行器防御等方面。但随着软件的不断升级,其应用也得到了进一步的深入,STK现已逐渐扩展成为分析和执行陆、海、空、天、电(磁)任务的专业仿真平台[1]。STK具有对飞行器系统强大的分析能力和可视化能力,我们可以充分利用它的分析和可视化能力来生成航天器系统全寿命周期的分析与仿真[2]。所有与飞行器及设备物理状态有关的数据、轨道参数、姿态数据都可以用多种形式进行分析显示。
但在使用STK的过程中,经常会遇到与STK进行交互的问题。例如需要对仿真数据进行必要的分析或根据实时数据驱动场景信息等。STK/Connect提供用户在客户服务器环境下与STK连接的功能。使用TCP/IP或COM组件在第三方应用软件与STK之间传输数据(包括实时数据传输),为其他应用程序提供了一个向STK发送消息和接受数据的通讯工具[3]。
本文介绍了利用STK/Connect模块实现VC和STK集成的方法及其在仿真系统中的应用。
STK/Connect连接模块是STK中一个非常重要的功能模块,它为用户与STK之间进行交互提供了基本的保障。它提供了一种使用客户/服务器端方式来连接STK的快捷工作方式[4]。STK/Connect设计用于给第三方的应用程序提供一个向STK引擎发送指令和接收数据的通信路径。STK在接收到第三方应用程序所发出的正确的命令后,经过内部处理,会产生处理报告,或者根据设置输出信息。
STK的connect有两种方式:1)通过TCI/IP接口连接;2)COM组件连接。本文介绍第一种方式。这种方式可实现主控计算机通过TCI/IP接口同STK仿真计算机实现连接,由主控计算机向STK仿真计算机发送STK识别的命令串,驱动STK仿真[5~6]。由外部程序通过 STK/connect模块连接并驱动STK视景仿真的示意图如图1:STK、Connect模块与用户程序之间的接口关系图。
图1 STK、Connect模块与用户程序之间的接口关系图
在外部程序与STK通讯的过程中,Connect随时产生各种相关信息,包括响应外部命令之后的返回数据以及各种诊断信息,它们都以消息的方式发送给用户。在Connect与STK内部,进行这种消息运作主要通过两个函数:AgUtMsg()和AgUtMsgSet-MsgFunc(),使用AgUtMsg()函数传送消息;使用AgUtMsgSetMsgFunc()更改消息处理函数[7]。用户程序可以重载这两个函数,改变参数设置,使得消息处理流程以及处理方式满足用户指定的要求。Connect模块的这种技术大大拓宽了STK消息的传播途径,增强了用户程序利用STK内部信息的灵活性。
Connect模块提供了API AgConnect,它的静态和动态连接库是STK与第三方软件进行通讯的工具,通过它,第三方软件可以向STK发送命令和接收数据。AgConnect封装了底层通讯协议,用户只需要按照Connect命令的要求格式发送命令和接收数据,而不必关心这种通讯是如何实现的。AgConnect由一组函数组成,包括与STK建立连接、发送连接命令、接收数据以及关闭连接等。
Connect模块的流程图如图2所示。
其中各个函数的原型可参考STK的用户手册关于Connect模块的说明。通过Connect模块向STK发送命令的格式为<CommandName><ObjectPath> <ConimandData>]
图2 Connect模块的流程图
例如,下面这条命令就表示使用Connect命令建立新的场景,命名为MissleSim:
New/Scenario MissleSim
下面这两条命令则表示在当前场景新建一个飞行器,命名为Missle,并且为该飞行器加载选定的飞行器模型文件ModelFile。
NEW/*/LLMissile
VO*/Missile/LLMissile ModelFile
STK提供了各种各样的命令,包括从STK接受数据,将外部数据导入到STK中,进行图形显示和数据分析处理等等功能。
仿真模型文件包括三维模型文件、动作节点文件、弹道数据文件、姿态文件等,限于篇幅,各种数据格式见STK手册[8]。本文飞行器三维模型文件为MissileSim.mdl、动作节点文件为MissileSim.mima、飞行器轨迹数据文件为MissileSim.e、姿态数据文件为MissileSim.a。在飞行器飞行场景图中,动态的显示fixed position velocity(位置、速度数据)、Attitude Quaternions(姿态四元素数据)、Euler Angles(欧拉角数据)[9];在飞行轨迹轨迹图中动态的显示飞行器的飞行轨迹;仿真结束后生成LLR仿真图表等。
在飞行器飞行仿真系统中,通过VC和STK的集成在用户界面完成STK/Connect模块的初始化连接、新场景的建立、飞行器模型的选择、外部数据文件的选择,最后由STK产生仿真数据。仿真程序流程如图3所示。
利用VC开发的STK可视化仿真控制台界面如图4所示。
图3 仿真程序流程
图4 仿真系统控制台界面
图5 新建飞行器界面
3.3.1 VC初始化环境配置
利用VC开发STK连接应用程序,需要对提供STK连接支持的头文件和库文件进行配置。其中头文件有3个,均在“STK安装目录ConnectIncludes”文件夹中,文件名分别为AgConneet.h、Ag-ConScndData.h和AgCoUtMsgCommon.h。库文件则分为调试库文件和运行库文件,分别在“STK安装目录ConnectlibDebug”和“STK安装目录ConnectlibRelease”文件夹中,文件名都为“AgConnect1ib”。
在VC中头文件和库文件的配置方法如下:单击Tool/Options命令,打开Option对话框,将STK连接头文件所在的目录加入到VC的“Project Settings”(工程设置)对话框,在“Link”对话框(链接)选项卡中,分别对“Win32 Debus”和“Win32 Release”配置相应的“Object/library modules”(对象/链接模块)。
3.3.2 建立仿真
对VC进行环境配置以后,就可以在程序中启动Connect模块。在启动该模块之前首先要进行初始化工作,若初始化成功,将返回消息AgcNoError。否则返回消息AgCError。初始化工作完成后可以使用函数AgConOpenSTK()打开一个与STK的联接,建立场景、场景所包含的飞行器模型以及飞行器的数据文件。
3.3.3 仿真过程及获取仿真数据
仿真模型建立后,仿真系统就可以控制STK进行飞行器飞行仿真并获取仿真数据用于应用系统的分析、处理[10]。在这一步中将用到一个重要函数AgConProcessSTKCmd()用于发送命令以及接收数据。下面绘出由系统软件控制STK模拟仿真过程、获取仿真数据的方法。
3.3.4 仿真结果分析
VC和STK集成的仿真平台完成后,该仿真平台可以方便的选择、配置仿真模型,能够快速进行飞行器的可视化仿真,在飞行轨迹轨迹图中动态地显示飞行器的飞行轨迹;并且能够快速地获取仿真数据,仿真结束后生成LLR仿真图表等,提高了程序效率。
图6 飞行器3D飞行场景
图7 飞行器2D飞行场景
图8 LLR图表
STK作为优秀的航天分析软件,具有强大的计算能力、逼真的图形显示、可靠的数据报告等性能。为了将其应用到飞行器可视化仿真演示系统中,深入研究了STK/Connect模块,并通过编程实践实现了STK与VC之间的数据传输,同时成功地将STK强大的演示功能运用到飞行器可视化仿真演示系统中并取得了良好的效果。