1总体设计
综合基带设备软件由服务管理模块、协议转换模块和前端模块组成,如图1所示。基于设备可扩展性、可维护性的需求,结合综合基带设备高度集成化的特点,采用SOA(Service-Ori-entedArchitecture)架构,将每一个硬件业务功能以服务的形式进行封装,每一个服务组件即为一个设备驱动软件实体,所有服务组件由服务管理模块统一管理,并向上提供给应用层。上一层的协议转换模块作为服务的消费者,完成服务协议至面向连接的传输控制协议TCP(Transmis-sionControlProtocol)之间的转换。协议转换模块制定了涵盖所有业务的TCP通信协议,可与基于此协议开发的前端软件以TCP通信进行交互。所有业务功能的请求与实现都将由前端模块根据相应协议、以TCP请求包的形式发送至协议转换模块,经协议转换模块解析后调用相关的服务接口,并将调用结果以TCP数据返回。前端模块提供友好的人机交互界面,为使用者进行遥控、遥测、测距等业务内容操作提供良好的操作界面与观察窗口。当获得使用者操作或数据时,前端模块通过TCP协议与协议转换模块交互完成所有的业务操作及报告显示。
2面向服务的体系结构
面向服务的体系结构(SOA)模型是一种分布式的软件组织模型,在该模型中整个系统被设计和实现为一组相互交互的服务,任何业务功能都作为一项提供的服务。应用程序的不同服务通过在服务之间定义良好的接口联系起来,构建在系统中的服务以统一、通用的方法进行调用。图2所示的SOA基本体系结构说明了SOA模型中的不同角色及其工作流程[1,2]。综合基带设备需要支持扩频、USB和数传一体化三种工作模式,并且复用相同的硬件资源,但是同一时间只能工作在其中一种模式下,不同模式下硬件资源将具有不同的工作参数。因此,采用SOA架构将增强系统的灵活性,同时方便系统扩展。在实现中,将服务管理模块视为服务器,服务的消费者视为客户端。服务器端由一个服务软件和通过配置文件加载的远程服务对象库组成。服务管理模块针对设备的三种工作模式分别创建不同的服务器,拥有不同的服务对象库,并保证同一时间只有一个服务器处于运行状态。服务软件作为一个通用的服务对象“容器”,在启动时,根据配置文件决定要加载的服务对象,负责这些服务对象的实例创建和关闭,每一个服务对象均是综合基带设备中一项业务功能的封装,包括中频调制、中频接收、基带处理、遥控、遥测、测距等。同时服务软件通过统一的接口与服务对象通信,并负责完成与客户端的所有远程通信,服务对象只需要关注所要实现的业务。服务器集成示意图如图3所示。服务对象是服务管理模块中实现服务功能的基本单位。服务管理模块为服务对象定义了通用的行为或接口方式,并提供对象描述文件,对该服务对象所实现的通用行为进行描述。在运行时,服务软件根据配置文件决定要创建哪些类型的服务对象,并搜索服务对象库和对象描述文件。通过解析对象描述文件自动为服务对象创建相应的接口内容。以USB模式为例,服务软件启动时,将根据配置文件创建并加载所提供服务的实例,包括中频调制服务、中频解调服务、遥测服务、遥控服务、遥测模拟源与测距服务等,同时将服务列表提供给上层协议转换模块,协议转换模块通过获得远程服务对象在本地的代理来进行服务的注册,注册后协议转换模块即会得到所注册服务的所有接口,并通过这些接口完成各项业务功能。例如在测距服务中,服务对象提供了参数设置和数据报告两种接口,协议转换模块即可通过参数设置接口对硬件模块的工作参数进行设置,同时由数据报告接口获得测距的测量值。
3观察者模式
综合基带设备拥有数百个工作参数,设备功能模块之间具有较高的耦合度。基于设备自身的特点,综合基带设备集成了基带模块和中频模块,兼具遥控和遥测的功能,提供上行和下行链路,且设备本身便可完成回环测试。因此,各个模块之间的工作状态紧密相连,某个模块参数的改变将会影响其他模块的工作状态,这就要求在实现中当某一设备参数的状态发生变化时,其他相关参数须做出相应的改变。为了使系统能够易于复用,须选择低耦合度的设计方案,并且这些低耦合度的对象之间要能够维持行动的协调一致,保证高度的协作。经过仔细研究,本文选用软件设计模式中的观察者模式。观察者模式,又称作发布/订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,使多个观察者对象同时监听某一个主题对象。当该主题对象在状态上发生变化时,会通过调用各观察者所提供的方法来主动通知所有观察者对象,使它们能够自动更新自己[3]。本文在设计中使用了发布服务器、订阅服务器和事件三个组件。在软件中,发布服务器即是发布数据的一端,订阅服务器订阅相应的数据并进行处理,发布服务器发布的数据流被相应的订阅者接收并处理称为事件。在实现中,发布服务器作为发布者(publisher),发布包含特定主题(topic)的数据,订阅服务器作为订阅者(listener),依据订阅的主题获得自己所需要的数据。同时,发布者和订阅者都可以拥有多个主题,对于发布者而言,他并不关心发布的数据有没有订阅者订阅,而只是负责进行数据的发布;同理,尽管订阅者订阅了某个主题的数据,但并不一定会有发布者发布该主题的数据[4]。观察者模式的实现如图4所示。订阅者1仅订阅主题为A的数据,当发布者1发布数据时,订阅者1可以接收并响应,但对于发布者2和发布者3发布的数据,由于订阅者1并未订阅,因此不会响应。此外,发布者可以发布多个主题,而订阅者也可以订阅多个主题,只要订阅者订阅的主题有发布,就会进行接收与响应,如图4中的订阅者2和订阅者3。
4网络通信的实现
在系统实现中,系统与前端模块的通信是通过TCP协议实现的。综合基带设备中具有多种数据流,并支持多客户端连接,其中不同业务拥有独立的通信链路,主要包括监视链路、控制链路、遥控链路、遥测链路和测距链路,不同链路占用不同端口。图5为系统监视链路的软件实现流程图。同时,综合基带设备作为重要的卫星测控设备,对于通信的准确性和数据速率有着较高的要求。例如在数传一体化模式下,要求遥测模块在码速率高达1Mb/s的情况下不出现数据丢帧,这就需要设计健壮的网络通信模块。根据综合基带设备的协议,设备发送的数据是一个个独立的数据包。在高数据速率和网络条件恶劣等环境因素下,接收端接收到的数据可能并不是一个完整的数据包,如以下几种情况:①先后接到完整的数据包1、数据包2;②先接到数据包1的部分数据,然后接到数据包1剩余部分和数据包2的部分数据,最后接到数据包2的剩余部分;③先接到数据包1和数据包2的部分数据,然后接到数据包2的剩余部分。对于情况①,可以直接进行数据包的解析。但是多数情况下,情况②、③会经常发生,这就需要在接收端进行数据包的组包与拆包。数据解析软件流程图如图6所示。
5结束语
本文提出一种综合基带设备软件实现方案,基于SOA架构的设计使得硬件配置与扩展更加灵活,观察者模式的引入使得各模块耦合性大大降低,多连接、多数据流的TCP协议保障了通信的可靠稳定。目前该软件已完成开发工作,且运行良好。
作者:孙桦 马超 单位:北京航空航天大学