地面站设备监控软件框架通用性研究
2009-12-12柯玲,徐京,李颖
柯 玲,徐 京,李 颖
(北京卫星信息工程研究所,北京100086)
地面站设备监控软件框架通用性研究
柯 玲,徐 京,李 颖
(北京卫星信息工程研究所,北京100086)
针对目前卫星地面应用系统中设备监控软件可重用性差的缺点,提出一种可扩展的通用设备监控软件框架设计方案.结合模块化和抽象接口设计思想,简化了组件开发,提高了软件的复用性.通过控制反转技术,降低了组件之间的耦合,使框架更加易于扩展,在实际应用中取得了良好的效果.
设备监控;模块化设计;控制反转
随着航天技术的发展,航天应用软件的使用和开发要求不断提高,除了需具备实时性、稳定性和可靠性外,还要求能够灵活地实现产品的升级或更新换代[1].
卫星地面应用系统是航天领域的一个重要组成部分.卫星通信与测控技术的发展,使得卫星地面站数量越来越多,建设周期越来越短,地面站测控设备更新、改造和添加变得更频繁.对于地面站设备监控系统而言,需要灵活、可靠的软件结构,这就要求开发出来的软件应具有较高的复用性和动态扩充性.目前迅速发展的工业组态软件能在自动控制系统监控层一级的软件平台和开发环境,以灵活多样的组态方式而不是编程方式提供简捷的使用方法.但是在航天测控领域,地面站监控设备种类多,并且缺少通用的控制接口和软件模块,该特殊性使得系统无法直接使用日渐成熟的工业控制组态软件.
因此,有必要结合可复用性和模块化软件设计思想,借鉴工业控制自动化系统组态软件开发方法,针对卫星地面应用系统中地面站设备监控的特点,对设备监控软件的通用性进行研究.
1 设备监控软件功能概述
卫星地面应用系统的主要任务是根据卫星观测计划,在卫星测控系统提供测控保障的条件下,对卫星发回的数据进行接收、记录和处理[2].为了准确地接收数据,卫星地面站必须依靠所建立的测控系统对卫星进行遥测、跟踪和通信.设备监控是卫星地面应用系统中一个重要部分,其主要任务是查询站内各个测控设备的运行状态,控制设备工作参数,接收设备响应数据.监控系统软件一般由4层结构组成,即界面表示层、业务逻辑层、数据访问层和设备层,如图1所示.界面表示层负责与用户进行交互,显示业务信息和收集数据,用户通过界面表示层完成测试计划下达和数据查询等功能;业务逻辑层负责处理监控系统的各项业务逻辑;数据访问层与数据库进行连接,根据业务逻辑层发送的请求进行数据操作;设备层位于整个软件结构的最底层,负责从被监控设备单元实时读取数据,并将这些数据分解后提供给数据访问层、业务逻辑层及界面表示层.同时设备层还将来自其他层的控制命令按照事先定义好的协议格式发送给相应的设备单元.
结合卫星地面应用系统中地面站设备监控的特点,本文针对设备层的功能,提出一种可扩展的通用设备监控软件框架设计方案.如图2所示,在地面站监控系统设备层中引入设备监控软件框架,使业务逻辑层或数据访问层不直接控制设备单元,具体业务逻辑和设备单元之间通过通用软件框架进行交互.对设备层功能进行分析可得出设备监控软件框架需要实现以下功能:通过数据模型对设备属性进行描述;维护各个设备通信连接;按照设备协议与设备和其他层进行数据交互.设备监控软件框架应具备通用性,能最大范围的涵盖不同类型设备的属性和操作,并且有良好的可扩展性,以满足设备驱动协议修改和新增监控设备等系统扩展的需求.
图2 监控软件框架的引入
2 设备监控软件框架模块分析
框架是领域内应用系统的部分或整体的可重用设计结构.它将应用系统的控制流进行抽象,使其成为更为通用的功能组件.面向对象的应用框架强调模块的独立性、可用性、灵活性,增强了大型应用软件的可扩充性和代码重用性,大大缩短了开发周期,提高了软件质量[3].因此在设备监控软件框架中引用以下指导思想:
1)面向对象的设计思想.它是一种对现实世界对象客观抽象的方法,能够贴近现实存在;
2)模块化的设计思想.它是一种减少重复劳动的比较理想的方法,可以增加代码的可重用性,并使系统结构和脉络更加清晰;
当前市场营销专业有专任教师18人,生师比约为15。职称构成上,教授0人,副教授仅1人,讲师16人,助教1人;所有教师具有硕士研究生学历,其中2人博士在读,是典型的以教学为中心的队伍结构。
3)统一抽象化的设计思想.它能简化事物和对象的表示方法,增强系统结构和对象的通用性.
根据以上指导思想,按照设备监控软件框架的功能需求,将设备监控软件框架划分为3个基本模块:数据通信模块、设备抽象模型和驱动协议管理模块.这样划分使得模块之间相互独立,框架结构清晰,而对模块分别进行抽象化设计可以提高模块复用性,使得设备监控软件框架具有良好的通用性.
图3 设备监控软件的结构
图3表示设备监控软件框架的模块划分以及模块与设备监控软件其他部分的交互.从图3中可看出,数据通信模块负责监控软件和不同种类物理设备底层的连接,包括串口底层通信的具体实现,网络客户端服务端的连接等;抽象设备模型模块根据协议抽象出通用的设备模型,并定义其具体的静态数据描述;驱动协议管理模块是监控软件的关键部分,负责对所有设备的收发数据操作进行管理,是控制层与现场设备的中间层.该模块一方面根据界面触发的指令按照接口协议的规定向设备发送数据请求命令,另一方面对返回数据进行解包,从中分离出所需要的数据.
驱动协议管理模块和设备抽象模块需要交互才能完成数据收发的功能.驱动协议管理模块通过设备抽象模型中提供的具体设备属性、命令和参数值进行设备命令的收发;设备抽象模型对驱动协议管理模块采集的数据进行分析,并将数据提供给界面和数据库.本文将详细介绍这两个模块.
3 设备抽象模型设计
尽管同一功能类型的设备相关属性、数据格式和控制方式等可能不同,但其工作原理是一致的,因此相同功能的设备控制参数和设备状态参数出入不大,在监控的内容和形式上可以统一起来.所以,可以对设备模型化,抽象出设备的一般属性和方法,建立“一般设备”的概念[4].该抽象模型包括设备描述模型、设备命令模型和命令参数模型等.抽象设备是对物理连接设备的抽象,它应该完整的反映出实际设备的普遍性和特殊性,以及设备与系统之间的关系,它包含以下几个方面:
1)设备的基本信息.它包括设备在系统中的标识号、名称、设备端口号、设备的类型信息、设备的地址信息以及所用的协议标识等.这些信息对一个设备进行了基本概括,是操作人员对设备进行辨识的基本依据;
2)设备的命令信息.它包括设备工作时所用到的所有查询命令和控制命令的标识、命令名称、命令类型等;
如图4所示,根据面向对象的设计思想,建立以下几种对象模型:设备模型、命令模型、参数点模型.这些对象的实例将存储到内存缓冲区,用来实现数据的实时访问,并与框架的其他模块进行交互.
图5表示了各个类型对象的关系.一个设备对象对应若干命令对象,每个命令对象包含若干参数点对象.
图4 设备抽象模型
图5 各抽象模型实例之间的关系
4 驱动协议管理模块设计
设备驱动协议管理模块根据监控设备的协议完成对设备的控制,获取现场的实时数据并上传给界面和数据库.根据分析得出的驱动模型应具备如下需求:
1)对于众多厂家生产的不同通信协议的设备,如果每种设备驱动程序都要从头开发,无疑会带来很大的难度和工作量.因此驱动协议模块不但要实现现有设备的驱动功能,而且要便于在该平台上进行设备驱动程序的扩充.
2)驱动程序中需要设计自己的驱动程序规范,这样能够统一所有要开发的设备协议的格式,规定驱动程序与其他应用程序的数据共享和交换.
4.1 定义通用协议接口
利用面向对象技术中继承和多态的特性,设计驱动基类完成其中通用的功能,预留出协议接口,定义派生类完成特定设备的命令的组织和发送以及数据的接收和分析等.不同的派生类可以有不同的实现方法,但是其基本的架构是相同的,所以开发驱动程序时只需要在派生类中实现各个驱动的编程.
根据多种设备的通信协议分析可得出设备基本的通信方式为:根据触发的指令得到参数数据,按照协议的规定形成完整的数据帧发送给设备;对设备返回数据进行解包,从中分离出所需要的数据.由此可设计一种通用协议接口,如图6所示.
图6 通用协议接口
图5中接口Transaction中的execute()方法定义了设备一次收发数据过程.接口Message定义了写入参数数据流writeTo(DataOutput dout)方法和读出参数数据流readFrom(DataInput din)方法.接口Transport定义了写入完整数据帧writeMessage(Message message)方法和读出完整数据帧readResponse()方法.完整的数据帧内容包括帧头、帧长度、参数数据、校验位及帧尾等部分.
对通用协议接口的分析可以看出,软件将各种设备的通信流程实现为相应的模块,并为模块定义了统一的接口.开发人员针对某个设备只需在预留出的接口函数内实现与具体通信协议相关的方法,而不用改变驱动程序结构.
4.2 使用控制反转实现协议扩展
设备要进行数据通信时,程序中的设备对象必须找到所对应的驱动程序的派生类.对类的创建模式而言,目前用的最多的要算设计模式中的工厂模式.工厂模式能够提供一个工厂方法,负责将有大量共同接口的类实例化.工厂模式原理如图7所示.
图7 工厂模式原理
但是,这种方法并没有完全消除类与类之间的耦合性.因为工厂方法属于软件代码中的一部分,具体的设备对象和驱动派生类的依赖关系定义在该方法中,当子类被修改后,就要不厌其烦的重写该方法,从而给系统的维护和扩展带来巨大的压力.如果能将工厂从调用者中解耦出来,将调用者与被调用者在一个统一的位置进行关联,则可以在较大程度上提高系统的性能.利用控制反转模式能很好地解决这个问题.
控制反转(IoC,inversion of control,)模式又称为依赖注入(dependency injection)模式,是一种框架设计模式,它将“判断依赖关系”的职责移交给容器,而不是由组件本身来判断彼此之间的依赖关系.程序中某个组件(调用组件)依赖于其他组件(被调用组件)时,通常在调用组件的逻辑中并不嵌入实例化其他组件的逻辑,而是以某种方式声明它们对其他组件的依赖关系,同时外部有专门的程序负责对其他组件的定位和实例化操作.这些专门的程序就是IoC容器的一部分[5-6].
在设备监控软件中使用控制反转模式实现协议扩展的方法为:不在程序中定义依赖关系,而是根据配置文件指定的协议类的标识,利用IoC容器创建具体设备对应的协议类的实例,按照接口中定义的方法,实现软件与设备的通信.其原理图如图8所示.
图8 控制反转模式原理
对比工厂方法可以看出,控制反转模式通过配置文件定义好每个具体设备对应的协议类标识,由此将设备和协议的依赖关系转移到程序外部,降低了组件之间的耦合[7].实例化协议类的代码和解析配置文件的代码组成了IoC容器.IoC容器把在工厂方法中不灵活的对象生成代码,改变为配置文件来定义,设备只需要提供相应的符合统一接口要求的协议程序,并在配置文件中定义好设备类名和所对应的协议标识就可以平滑地加入到软件中,这样大大提高了程序的灵活性和可维护性.
在实现方法上,XML提供了一种计算机文档的标准格式,经常作为配置文件使用.利用Java语言中的反射机制,根据给出的类名生成相应的对象,能实现IoC容器的功能.另外,目前具有代表性的轻量级框架Spring本身提供了IoC容器,可根据其定义的规则直接使用.
5 结 论
对于地面站监控系统,监控设备种类多,软件开发中的组件依赖关系复杂。在监控软件开发框架中应用模块化思想,并结合通用接口和控制反转技术,可以方便组件开发,降低组件之间的耦合,使整个框架更加易于扩展、复用,更能适应需求的变化.各个模块采用抽象化的面向对象的设计方法,模块之间交互操作,在一定程度上提高了框架的通用性.目前此通用性设计思想已应用于某卫星地面站设备监控软件的开发中,取得了良好的效果,并为卫星地面应用系统的开发以及构建高效率的航天应用软件系统提供了良好的借鉴作用.
[1] 徐俊颖,许聚常,陈怀义.基于构建技术的卫星地球站站控系统的设计模型[J].计算机工程与科学,2006,28(3):109-110
[2] 王明远,刘长柱.亚洲一流的遥感卫星地面应用系统[J].空间电子技术,2000(2):49
[3] 傅秀涛,顾斌.面向AOCS软件的构件技术研究[J].航天控制,2009,27(1):67-68
[4] 刘青普,王健,赵振杰,等.卫星测控站监控系统软件结构的研究与实现[J].计算机仿真,2006,23(11):79-81
[5] Martin F.Inversion of control containers and the dependency injection pattern[EB/OL].[2004-01-23].http://www.martinfowler.com/articles/injection.htm l
[6] 李明歆,马世龙,许可.面向航天器测试的SOA信息系统研究[J].计算机工程与设计,2007,28(21):5248-5249
[7] 仲红艳.控制反转技术分析[J].计算机技术与发展,2006,16(1):59-61
Universality of Equipment Monitoring Software Framework in a Satellite Earth Station
KE Ling,XU Jing,LIYing
(Beijing Institute of Satellite Information Engineering,Beijing 100086,China)
To solve the problem of low reusability in a satellite ground application system,this paper gives a design scheme extensible universal framework for equipmentmonitoring software.Combining modularized software with abstract modeling technique,the design method has advantages of simply development and higher reusability.A inversion of control technique is used to give the benefit of loose coupling and higher extensibility in application.
monitoring software;modularized design;inversion of control
TP311
A
1674-1579(2009)05-0056-05
2009-05-06
柯 玲(1984—),女,陕西人,硕士研究生,研究方向为遥感信息处理与传输技术(e-mail:kathy0812@163.com).