应用插件技术的北斗卫星控制系统模拟器设计

2015-03-10 05:43:17张宇刘忠汉林佳伟刘蕊
航天器工程 2015年6期
关键词:模拟器插件宿主

张宇 刘忠汉 林佳伟 刘蕊

(北京控制工程研究所,北京 100096)



应用插件技术的北斗卫星控制系统模拟器设计

张宇 刘忠汉 林佳伟 刘蕊

(北京控制工程研究所,北京 100096)

针对传统设计方法在可更改性、可扩展性、设计复用性等方面的不足,分析了插件技术的原理和优点,根据卫星控制系统模拟器软件的特点,提出了应用插件技术的设计思路。文章通过采用“宿主程序”+“插件”的软件总体结构,合理划分了宿主程序和插件的功能。为充分发挥插件技术的优势,宿主程序采用微内核方式,负责加载和管理各种功能插件,并通过“监听器”方式为插件之间提供标准的通信服务。同时结合软件功能特点,将插件分为业务插件和辅助插件两类,使得设计更加合理。最后应用插件技术设计了具体的宿主程序接口、插件接口、监听器接口,实现了通用的卫星控制系统模拟器仿真平台,完成了3类、14颗卫星控制系统的模拟仿真,取得了良好效果。

卫星;控制系统;模拟器;插件

1 引言

卫星控制系统模拟器(简称控制系统模拟器),是用作验证卫星姿态轨道控制系统在研制、发射和在轨运行过程中设计和操作程序的正确性,辅助故障分析和处理,对卫星进行仿真的设备。由于硬件仿真成本高且不易修改,故采用软件仿真,其具有稳定性、可重复性、可修改性、低成本、能够实现最坏情况模拟等优点。控制系统模拟器一般采用软件仿真方法实现[1]。

传统的控制系统模拟器软件一般只针对单颗卫星进行模拟,通常采用面向功能的设计方法,此方法建立在数据流的基础上,把控制系统看成是提供给最终用户的功能,强调区分和分解系统功能。在设计控制系统模拟器时,将控制系统分解成敏感器、控制器、执行机构、遥控遥测等功能模块,递归分解得到各下级功能模块,例如敏感器又分为姿态敏感器、角速度敏感器、加速度敏感器等,然后软件编程实现各级功能模块。

我国研制的北斗导航系统包含3个种类、14颗卫星,为满足卫星研制过程仿真验证和地面测控系统的演练要求,需要设计一种卫星控制系统模拟器,既能够兼容三种控制系统,又能够满足多星部署的要求。传统控制系统模拟器设计方法主要存在以下不足,难以满足北斗导航卫星的仿真要求:①由于各模块之间耦合紧密,设计复用困难,难以完成3类控制系统模拟器设计的通用化、标准化设计;②由于结构扩展困难,当需求出现变化时,功能修改和扩展难度大;③由于没有给用户提供二次开发的接口,不利于软件功能的完善和升级。

本文提出一种基于插件技术的控制系统模拟器设计思路,在此基础上完成了北斗导航卫星控制系统模拟器平台的设计。

2 插件技术

插件式开发方法[2]是一种新的软件开发思想。基于插件的软件系统在实质上是应用工程的一种扩展,它使得各种功能采用插件的方式来实现,再借用框架进行标准化部署,实现宿主程序和功能插件之间互相通信,基于插件的框架平台可以将功能插件集成到宿主程序中并高效地运行[3]。

2.1 原理

通常使用插件结构的软件,由一个可执行程序和许多完成子功能的插件组成,主要分为以下3个部分:

(1)宿主程序。一般表现为一个可执行的文件,负责启动整个系统,负责将所需的插件加载到自己的进程地址空间中,是整个系统的核心,宿主程序必须对插件进行管理。

(2)插件。能够动态地插入到系统中,单个插件的功能相对简单,但是多个插件能够使系统功能完善,完成许多复杂的处理。在插件中必须提供给宿主程序调用的接口,当宿主程序需要调用插件的时候能够找到此接口,使得宿主程序能够得到插件的相关信息,以完成与宿主程序的通信与交互。

(3)接口。宿主程序和插件能够互相结合在一起工作,必须有一套互相协作的规则和协议使不同来源的程序互相协调工作,完成这些规则和协议的部分称为插件系统的接口。这是一个逻辑上的接口,由宿主程序和插件各完成一部分,它们共同完成插件的插入、调用、停止,还要完成宿主程序与插件、插件与插件之间的交互。

由于应用程序的功能由外部插件实现,所以软件的功能不再固定不变。通过插入和改变外部插件实现软件功能扩充和改进,能简单方便地做到软件功能的灵活配置[4]。

2.2 优点

插件的本质是在不修改程序主体的情况下对软件功能进行加强,从而实现真正意义上的“即插即用”软件开发[5]。其具有以下优点[6]。

(1)实现真正意义上的软件组件的“即插即用”。

(2)在二进制级上集成软件,减少大量的软件重新编译与发布麻烦。

(3)减少软件各部分之间的耦合。软件中的各个插件相互独立作为单独的功能模块,宿主程序只是一个框架,真正的具体功能通过插件来提供,功能与框架没有直接关联。

(4)隔离了功能的变化。为软件增加新的功能时无须修改现有的代码。例如,在基于插件框架的图片浏览器软件中,增加对新的图片类型的处理功能,只需要增加一个插件就行了,便于团队的合作开发。当插件与主程序的标准接口订好后,新增的功能便可以分派到各个团队开发。

(5)降低整个系统的复杂度。具体的功能细化到插件,整个系统的开发工作量虽然没有减少,但是系统的功能剥离后整个构架更加清晰。

(6)能够很好地实现软件模块的分工开发,能够大量吸取他人的特长。

(7)可较好地实现代码隐藏,保护知识产权。

北斗导航卫星分为3类,共有14颗,后续还有补网星。由于卫星种类多,信息流差异大,要求控制系统模拟器软件具备良好的可扩展性。由于卫星研制周期长,系统不断优化,控制系统模拟器的用户需求势必会跟着变化,其某一功能的更改,不能影响其它功能,则要求软件具有良好的可修改性。由于卫星数量多,测控系统需要部署多个控制系统模拟器,要求其软件接口标准化,具有良好的设计复用性。插件技术的固有优点,恰好可以解决这些问题,给控制系统模拟器研制带来诸多好处:①出现需求变化时,只需要修改相应的插件或增加新的插件,满足新的需求即可,软件比较容易更改和扩展;②抽象出插件与宿主程序之间的标准化的数据接口,可以屏蔽不同平台卫星数据流的差别,进而解决不同平台卫星之间的设计重用问题;③通过公开插件接口,用户可以二次开发出个性化的插件,修改、增加控制系统模拟器的功能;④宿主程序+插件的软件架构,使得宿主程序与插件实现松耦合,可以设计出通用的控制系统模拟器软件平台,易于部署和维护升级。

2.3 插件实现的主要技术

1)基于动态链接库的插件技术

动态链接库(Dynamic Link Library,DLL)是一种应用程序调用的库文件,包括代码和数据。该库文件包含了与调用的进程相互分离的函数[7]。DLL文件可以调用各种资源数据,在使用DLL过程中,系统能够被轻松地划分成多个功能模块,并且可方便地被更新到框架平台中,且对程序的其他部分运行没有明显影响[8]。例如,开发一个员工工资的程序,但是每年的社保政策都有所区别,如果把修改的部分存入到DLL中,每年只需发布新的DLL就能够完成对应用的更新。

2)基于组件对象模型的插件技术

组件对象模型(COM)是微软公司设计的一种标准组件开发技术。在COM标准构架下,可以开发出各种各样功能的组件,然后将它们按照需要组合起来,构成复杂的应用系统。开发COM组件需要复杂的开发工具,并且需要对操作系统注册表进行操作,才能实现软件的发布和部署。

3)基于反射机制的插件技术

在微软公司的.NET平台架构中,采用反射机制,也可以进行插件开发。.NET平台在动态加载对应程序集后,再经过反射机制遍历查询,就可以读取程序集中相关的类型信息,假若框架能够识别对应的类型信息需求,框架就会动态生成插件实例并加载到插件容器中[9]。

这3种不同的插件开发技术都有各自特点。基于组件对象模型的编写技术需要涉及到大量的COM技术及原理,基于反射机制开发插件需要熟悉.NET反射机制以及C#编程语言,且软件部署相对复杂。基于DLL的插件技术,扩展方便、部署简单、运行速度快,且对于控制系统模拟器仿真还有一定的继承性,本文采用此方式实现控制系统模拟器平台的开发。

3 控制系统模拟器设计

3.1 总体设计

根据北斗导航系统的要求,该控制系统模拟器平台需要完成3类、14颗卫星的模拟仿真。首先梳理系统的主要功能,确定控制系统模拟器的基本组成,见图1。然后按照插件技术的设计思路,对功能结构进行抽象和处理,目标是建立一个通用的控制系统模拟器平台,提升软件的可扩展性、设计重用性,支持二次开发。控制系统模拟器平台采用“宿主程序”+“插件”的方式实现,宿主程序是平台的载体,为了达到通用性,采用的是微核机制[10]。插件是各个具体功能的载体。转化处理后的平台结构如图2所示。

1)宿主程序

由微软公司提供的基于MFC的MDI多文档框架具备管理多个文档、多个视图以及界面资源的功能,本文将其作为宿主程序的主体框架。设计为一个Windows可执行程序,负责启动整个系统,负责加载和管理各种功能插件,为各插件提供数据交换接口,实现插件和宿主程序、插件与插件之间的通信,同时提供基本的用户接口、网络接口、数据库等功能。

2)插件

负责实现该平台的各项功能,采用动态运行库DLL的方式实现,每一个插件就是一个DLL程序,实现一项特定的功能。插件遵循统一的加载接口,便于宿主程序进行识别和加载。

根据控制系统模拟器平台的的自身特点,将插件分为业务插件和辅助插件两类。业务插件是指与控制系统模拟器核心业务相关的功能模块,主要包括卫星实例插件、星上控制器插件、敏感器插件、执行机构插件、姿态轨道动力学插件、遥测遥控插件等,这些功能会随卫星类型的不同,发生较大的变化。辅助插件主要指为完成用于接口功能的模块,主要包括参数处理插件、指令及参数设置插件、数据存储管理插件等,这些功能相对稳定、易于实现标准化。将平台的不变部分和变化部分进行区分,可以使得插件的设计更合理、更易于扩展。

图1 卫星控制系统模拟器的基本组成图Fig.1 Function chart of simulator for satellite control system

图2 基于插件技术的控制系统模拟器总体结构图Fig.2 Structural chart of simulator based on plugin

3.2 宿主程序与插件接口设计

插件与宿主程序之间的接口设计是整个控制系统模拟器平台开发过程中最重要的组成部分。控制系统模拟器平台包括2类接口:宿主程序接口和插件接口。宿主程序接口设计的目的是实现插件对宿主程序功能和资源的调用,插件接口设计的目的是实现宿主程序对插件的访问。插件和宿主程序设计都必须严格遵守这两类接口协议,两类接口定义如下:

typedef class HostInterface ∥宿主程序接口,用于插件与宿主程序的通信

{

CWnd pWnd;//宿主程序的窗口句柄

UINTnResourceID: //宿主程序的框架资源ID

}HOST_INTERFACE;

Typedef class PlugInterface //插件接口,用于宿主程序访问插件

{

CString strPlugID; //插件ID号

CString strPlugName;//插件名称

UINT strPlugType;//插件类型

intinit_plugin(HOST_INTERFACE *host); //插件初始化函数

int exit_plugin();//插件结束函数

intprocess_plugin();//插件功能调用

}PLUG_INTERFACE;

插件接口提供了插件的基本信息,包括ID号、名称、类型,同时提供了初始化函数init_plugin()、处理函数process_plugin()、结束函数exit_plugin(),每个插件的具体功能由处理函数实现,增加新的插件实例只要继承此接口即可。

3.3 插件的识别和加载

插件的自动识别和加载是宿主程序的主要功能,插件的目录结构如图3所示,控制系统模拟器平台分两步识别和加载插件:

第一步,宿主程序运行后,在插件目录下遍历所有“子文件夹”。提取所有“子文件夹名”生成“卫星选择”界面,根据用户的选择确定被模拟的卫星名称。

第二步,在卫星名称文件夹下遍历所有DLL文件,确定插件是否满足接口定义要求,如果满足则加载,否则退出,其程序流程见图4。

图3 插件目录结构Fig.3 Plugins directory chart

图4 插件加载流程Fig.4 Program flowchart of loading plugins

3.4 通信接口设计

通信接口要满足平台与插件间的要求,插件与插件间的要求。平台与插件间的通信可以通过定义插件开发接口实现。相比之下,插件与插件间的通信更为普遍,可以通过设计通信监听器来实现。监听器提供全局通信业务,集中处理插件间的各类事件的激发与响应[11],这样可以减少插件与插件之间的耦合程度,其工作机制如图5所示。插件A注册EventX事件,当插件B也对该事件关注时,它需要去实现EventX事件的响应,当事件激发时所有对该事件的消息相应都会执行,实现了插件间通信。

监听器除了需要具备强大的事件监听、数据管理和交换能力外,还应当为插件提供标准化、易使用的API接口,便于各插件使用,监听器API接口函数见表1,控制系统模拟器平台主要通信事件设计见表2。

图5 插件之间的通信机制Fig.5 Data exchange mechanism between two plugins

序号接口方法名称接口功能说明1addListener注册监听器2fireEvent激发事件3removeListener删除监听器

表2 控制系统模拟器主要通信事件列表

4 实例验证

针对北斗导航卫星控制系统的仿真要求,采用基于插件技术的设计思路,建立了通用的卫模仿真平台。完成了3类14颗卫星转移轨道和工作轨道的所有工作模式仿真,主要包括太阳捕获模式、地球捕获模式、远地点变轨模式、位置保持模式、正常运行模式等,各项功能、性能指标满足用户的要求,达到了预期效果。以GEO卫星为例,图6是卫星远地点变轨模式姿态角和角速度的仿真曲线(滚动:绿色,俯仰:红色,偏航:蓝色),图7是卫星在轨飞行的曲线(滚动:红色,俯仰:绿色,偏航:蓝色),由图6可以看出仿真曲线满足X、Y、Z三轴姿态精度0.6°、0.6°、0.9°的要求,且与实际卫星飞行结果一致性好,其它模式的仿真结果同样满足设计指标要求,在此不再一一列举。

用户通过界面选择具体的卫星名称,平台根据选择加载不同的插件组,完成不同卫星的模拟,同时平台通过加载辅助插件组,为用户提供良好的交互界面。软件开发完成后,用户需要另外增加一些卫星故障模式模拟功能,开发者通过增加故障模拟插件、修改动力学插件的方法进行补充,没有影响原有的宿主程序和其它插件,体现了采用插件开发技术的优势。

图6 GEO卫星姿态角和角速度曲线(控制系统模拟器仿真)Fig.6 Attitude angle and angular velocity of GEO satellite (by simulator)

图7 GEO卫星姿态角和角速度曲线(在轨遥测)Fig.7 Attitude angle and angular GEO velocity (TM data)

5 结束语

随着卫星控制系统技术的发展,功能模块越来越多,传统的软件开发模式无法满足控制系统模拟器可修改、可扩展、可二次开发的设计要求,应用插件的开发模式很好地解决了这个问题。在通用控制系统模拟器平台的基础上,用户可以根据任务需求不断完善已有插件或增加新插件,使卫星控制系统模拟器的功能不断强大,以满足不同航天器的使用要求。

References)

[1]吴振宇,熊晓将,宋秋静.基于面向对象的卫星模拟器设计方法[J].飞行器测控学报,2008,27(2):13-16

Wu Zhenyu,Xiong Xiaojiang,Song Qiujing.Object-oriented design of satellite simulators[J].Journal of Spacecraft TT&C Technology,2008,27(2):13-16 (in Chinese)

[2]李俊娥,周洞汝.“平台/插件”软件体系结构风格[J].小型微型计算机系统,2007,28(5):876-881

Li Jun’e,Zhou Dongru.The platform/plug-in software architecture style[J].Journal of Chinese Computer Systems,2007,28(5):876-881 (in Chinese)

[3]杨金翠,袁玉宇.基于构件技术的软件开发模式研究[J].软件工程与标准化,2007(10):33-36

Yan Jincui,Yuan Yuyu.The research of software developing model based on component techniques[J].Software Engineering and Standardization,2007(10):33-36 (in Chinese)

[4]史纪强,何兴曙,万志琼,等.基于插件技术的企业应用集成架构研究[J].计算机与应用化学,2012,29(2):191-194

Shi Jiqiang,He Xingshu,Wan Zhiqiong,et al.Architecture research of enterprise application integration based on plugin[J].Computers and Applied Chemistry,2012,29(2):191-194 (in Chinese)

[5]鲍亮,陈平.基于插件技术的异构数据集成[J].计算机工程,2006,32(20):86-88

Bao Liang,Chen Ping.A plug-in based solution of heterologous data integration[J].Computer Engineering,2006,32(20):86-88 (in Chinese)

[6]张怡.一种基于软总线的插件技术[J].舰船电子工程,2012,32(3):89-91

Zhang Yi.A plug-in technology based on soft bus[J].Ship Electronic Engineering,2012,32(3):89-91 (in Chinese)

[7]严心淳.基于C#2.0调用Delphi7.0编写的动态链接库[J].电脑编程技巧与维护,2012(16):6-7

Yan Xinchun.Based on the C#2.0 call Delphi7.0 prepared DLL[J].Computer Programming Skills & Maintenance,2012(16):6-7 (in Chinese)

[8]宋健.基于插件的土壤侵蚀经验模型系统研究[D].开封:河南大学,2014:10

Song Jian.Based on research of the plug-in in soil erosion empirical model system[D].Kaifeng:Henan University,2014:10 (in Chinese)

[9]金萍.基于IPFIX可扩展流信息生成系统的研究与实现[D].北京:北京邮电大学,2010:31

Jin Ping.Research and implementation of extensible flow information export system based on IPFIX[D].Beijing:Beijing University of Posts and Telecommunications,2010:31 (in Chinese)

[10]Jamshaid G Guenther R,Armin E.SRP—plug-in:a strategic release planning plug-in for visualstudio 2010[C]//Proceedings of International Conference on Software Engineering,2011:36-39

[11]谭相瑞,李海涛,韩颜顺,等.遥感影像解译系统“平台/插件机制”设计与实现[J].遥感信息,2013,28(5):73-76

Tan Xiangrui,Li Haitao,Han Yanshun,et al.Design and implementation of remote sensing image interpretation system using platform/plug-in mechanism[J].Remote Sensing Information,2013,28(5):73-76 (in Chinese)

(编辑:张小琳)

Plugin-based Design on Software Simulator for Beidou Satellite Control System

ZHANG Yu LIU Zhonghan LIN Jiawei LIU Rui

(Beijing Institute of Control Engineering,Beijing 100096,China)

To improve the changeability,scalability and reusability of traditional design method,the principle and merit of plugin technique are analyzed,and a plugin-based design method of software simulator is proposed for satellite control system.By using the software overall design of “host program” + “plugin”,the function of “host program” and “plugin” is properly designed according to the feature of simulator requirement.To make full use of the advantage of plugin technique,a micro kernel structure is designed for the host program whose function is to load and manage the various plugins and provides standard communication service between the plugins using “monitor” mode.To rationalize the design,the plugins are divided into business plugins and auxiliary plugins.The concrete interfaces of the host program,monitor and plugins are designed.The plugin-based simulation platform for general satellites control system is realized,the control system simulation for 14 satellites of three kinds is accomplished,which has achieved obvious benefits.

satellite;control system;simulator;plugin

2015-08-11;

2015-11-20

张宇,男,高级工程师,从事卫星控制系统设计工作。Email:nobody1974@sina.com。

V448

A

10.3969/j.issn.1673-8748.2015.06.005

猜你喜欢
模拟器插件宿主
了不起的安检模拟器
盲盒模拟器
划船模拟器
病原体与自然宿主和人的生态关系
科学(2020年3期)2020-11-26 08:18:22
龟鳖类不可能是新冠病毒的中间宿主
当代水产(2020年3期)2020-06-15 12:03:02
自编插件完善App Inventor与乐高机器人通信
电子制作(2019年22期)2020-01-14 03:16:34
表现为扁平苔藓样的慢性移植物抗宿主病一例
MapWindowGIS插件机制及应用
人乳头瘤病毒感染与宿主免疫机制
基于Revit MEP的插件制作探讨