第36卷 Vo1.36 第2期 No.2 计算机工程
Computer Engineering 2010年1月
January 2010
・软件技术与数据库・ 文章编号:1000---3428(2010)02--0056---412 文献标识码{A 中圈分类号l TP39 插件结构软件在卫星地面系统中的应用 周冰 ,李绪志 (1.中国科学院光电研究院,北京100190;2.中国科学院研究生院,北京100190)
摘要:分析不同飞行任务定制软件是我国卫星地面系统研制开发的常用模式。按照该模式开发的软件复用程度低,只能达到代码级的复 用。提出一种卫星地面系统插件结构软件,该软件提高了卫星地面系统研发的效率,可以实现软件的框架级复用,快速整合以适应不同的 任务。 关健词:插件;复用;框架;宿主程序
Application 0f Plug-in Structure Software in Ground System Satelted ̄ystem Or atellite ln
ZHOU Bing .LI Xu.zhi (1.Academy ofOpto—Electronics,ChineseAcademy ofSciences,Beijing 100190; 2.Graduate University ofChineseAcademy ofSciences,Beijing 100190)
[Abstractl This paper analyzes that diferent software in diferent missions is the traditional way in ground system of satellite.The level of software reuse is very low,only level up with code—leve1.A brand new plug—in structure software faced ground system of satellite is provided.This kind of software increases the efficiency of research.It can be reused in framework—level,and fast integrated tO adapt diferent missions. [Key words!plug—in;reuse;framework;host program
卫星地面系统的主要功能是根据飞行任务的总体目标, 编制有效载荷的运控计划,对在轨的有效载荷运行管理,并 对获取的科学数据进行处理。本文拟利用插件结构软件的特 点,设计地面系统的业务软件。 l插件结构软件的特点 插件结构软件的结构特点是以一个宿主程序为核心,把 各个逻辑功能剥离出来,作为插件加载在宿主程序上。这样 设计的软件核心内容是定义好宿主程序和插件之间的标准 接口【”。 采用插件结构设计的软件系统的复用率高并且扩展性非 常好。因为插件结构的软件在宿主程序和插件进行交互的时 候是对标准接I:1进行调用,所以可以通过不断地加入和更新 插件,使软件具备更多的功能。对标准接El进行调用,使得 插件和宿主程序的耦合性非常小。 2遥涓遥控数据处理特点 一般卫星地面系统的处理流程包括上行和下行数据处 理,上行数据处理流程是用户提出应用需求申请,根据轨道 预报的结果将用户的需求制作成任务计划。将任务计划制作 成上行指令,然后将上行指令原码发送并在卫星过测控区时 上行。下行数据处理流程是卫星在过测控区时下行遥测、数 传等数据。 地面的数据接收软件接收下行数据,将遥测数据发送给 遥测数据处理软件进行处理。原始数据经过数据处理后,再 加工成一系列的数据产品服务和数据应用。卫星地面系统处 理流程如图1所示。 业务逻辑处理软件主要包括2个:遥测数据处理和遥控 数据处理。下面以某卫星为例进行介绍。 一56一 H骗H旌H 数据 应用 数据 产品 服务 数据 处理 数据 接收 图1卫星地面系统处理漉程 2.1卫星遥控数据处理特点 卫星遥控数据处理的主要功能有:根据载荷工作计划生 成载荷遥控指令编码处理,对遥控指令编码进行版本维护管 理,遥控指令编码的正确性,指令申请处理,遥控指令原码 反演和遥控指令编码发送功能。 在这些功能中,根据载荷工作计划生成载荷遥控指令编 码针对的控制对象是该卫星上搭载的载荷 J。不同的载荷有 不同的遥控指令,不同的遥控指令又可能带有不同的参数, 并且该卫星有不同于其他卫星的遥控数据编码格式。 2.2卫星遥测数据处理特点 该卫星遥测数据处理的主要功能有如下几点:遥测数据 接收,对遥测数据进行实时处理,数据记录和归档。 遥测数据实时处理功能是将接收到的遥测原始数据根据 卫星的遥测数据编码格式和相应的处理公式处理成具有物理 意义的遥测参数。对该卫星上搭载的每一种载荷都需要有自 己的一套处理方法。例如在CCSDS分包遥测标准数据格式
基金项目:国家自然科学基金资助项目(90718010) 作者筒介:周冰(1983一),男,硕士研究生,主研方向:卫星地面 系统技术;李绪志,研究员、博士生导师 收稿日期:2009—08—30 E-mail:zzzzbbbb1122@163.com 的常规处理流程中,需要经过帧同步、解扰、纠错、信道分 路、载荷分包、源包重构、排序及去重复等处理过程;而对 于磁场探测仪和电场探测仪,除了ULF,完整的频率,纠正 转换流程包括因子 改正、快速傅里叶变换FFT、增益,相位 改正、反傅里叶变换FFT.1等处理过程 j。 2-3卫星遥 遥控数据处理目标 针对该卫星遥测遥控数据处理的特点,在本插件结构软 件原型中,希望设计一种插件结构软件框架,使遥测数据处 理和遥控数据处理可以在这个原型框架之上进行二次开 发 j。具体需要实现的功能如下:(1)合理定义软件宿主程序 和插件之间的接口,方便宿主程序和插件之间的相互调用。 (2)合理定义宿主程序和插件的基类,为以后的二次开发提供 基础。(3)框架具有动态加载和卸载插件的能力。 3插件结构软件的设计 3.1整体设计 插件结构软件的结构是宿主程序一插件。为了达到宿主程 序的通用性,宿主程序做的工作应当是功能模块功能的最小 交集并且应当具有插件注册的功能。所以一般的插件结构软 件采用的是徼核机制 J。即主应用程序的功能只是保障系统 的稳定性,而将各种功能尽量剥离到插件中不放在主应用程 序中。希望使设计的软件同时满足深度复用(针对同一功能、 不同任务之间的复用)和广度复用(针对同一任务、不同功能 之间的复用)的需求。 针对遥控数据处理或遥测数据处理进行设计,需要抽象 出软件在执行不同任务时不变的和变化的部分。把不变的部 分设计成宿主程序,变化的部分设计成插件。在执行任务时, 宿主程序只需要加载相应的插件就可以为本次任务服务。在 针对具体的任务进行软件开发的时候,软件宿主程序的部分 可以只开发一次。在以后的任务中只需要进行业务插件的设 计,发布业务插件,在宿主程序注册即可以运行。这样就可 以使软件满足不同任务之间的深度复用。 分析上行数据编码软件和下行数据处理软件之间相同的 处理细节和不同的业务逻辑,将相同处理细节的部分抽取出 来。把这些相同的处理细节独立设计成为辅助插件,为遥测 遥控这2大业务逻辑服务。将处理遥测遥控逻辑功能的插件 设计成业务插件。在这个通用软件宿主程序之上就有了2种 插件:业务插件和辅助功能。在需要上行数据编码软件或下 行数据处理软件的时候,只需要加载相应的业务插件和辅助 功能插件就能够实现功能上的需求。这样就可以使软件满足 不同业务逻辑之间的广度复用。 在该卫星遥测数据处理和遥控数据处理中的2大核心功 能是编码和处理。这2个软件中都需要的功能是:数据归档, 制作文本文件等。在本原型系统中这些被遥测遥控数据处理 共同需要的功能被设计为辅助插件,抽象出来的插件结构模 型如图2所示。 宿主程序运行时环境 辅助插件2 圈2宿主程序-各种插件基本鳍相 3.2宿主程序设计 3.2.1宿主程序的接口设计 宿主程序接口的设计目的是插件对宿主程序的调用。在 本软件中,宿主程序提供一个统一的用户操作和结果监视界 面。宿主程序的接口设计主要涉及2个方面,关于用户操作 的定义如下: bool SetMainMenu(string MainItem);,,设定主菜单栏 bool SetSubMenu(string MainItem,string SubItem); 设定子菜单栏 关于监视界面的定义如下:
bool SetContentText(string content); ,/将指定内容显示在监视区中 string GetContentText0;//获取监视区中的文字 3.2.2宿主程序基类设计 宿主程序基类实现宿主程序接口,在宿主程序基类需要 实现宿主程序接口中定义的函数,并维护2个插件列表,一 个是业务插件列表,另一个是辅助插件列表。宿主程序基类 需要实现卸载和加载各种插件的功能,让软件具有热插拔的 特性,在更换业务插件时,保留辅助插件。由于各种功能的 实现是在插件中,因此需要对于处于同一插件中的不同功能 路由的功能。宿主程序基类还需要具有的基本功能如下: private bool RegistPlugins0/,注册各种插件 private bool unRegistPlugins() 卸载各种插件 private bool PluginFunctionswitch(object sender,EventArgs e) ,/运行插件菜单项 3.3插件设计 3.3.1插件功能接El设计 因为插件需要跟宿主程序交互,所以在插件中需要维护 的一个成员变量是宿主程序对象。而一种好的实现方式是宿 主程序调用插件功能接I:I,插件调用宿主程序接11。在插件 功能接口中需要一个函数来获取宿主程序对象。插件的接口 设计主要涉及3个方面: (1)关于获取宿主程序对象的定义如下: bool GetPlatform(IPlatform ipf) 注册各种插件 (2)关于设置菜单的定义如下: bool SetPlatformMenuO//设置宿主程序菜单 (3)关于运行插件功能的定义如下: bool PluginsRuntimeSwitch0,/选择插件功能函数来运行 3.3.2插件类型接口设计 在本原型系统中通过设计插件类型接口进行插件的区 分,将插件的功能和插件属性进行解耦。目前这一接口最主 要的功能是在宿主程序加载每一个插件时,区另Ⅱ其是业务插 件还是辅助插件。这个接口的设计主要涉及2个方面: (1)关于设置插件类型的定义如下: bool SetPluginType0 ,,设置插件类型,以区分是业务插件还是辅助插件 (2)关于设置插件基本属性的定义如下: bool GetPluginAttributes() ,,获取插件属性 3_3.3插件基类设计 插件基类实现插件接口,在插件基类中需要实现插件接 口中定义的函数,并且在插件基类中要维护一个非常重要的 成员变量:宿主程序对象。还有就是插件类的业务逻辑的实 现,具体的是遥控数据处理、遥测数据处理,数据归档还是 制作文本文件的区别是由这个类中的业务逻辑函数进行区 别。个体之间的差异主要是通过下面的函数体现出来的: (下转第60页)