运载火箭测发控软件的中间件技术应用

2014-04-29 09:49付霖刘俊阳
网络空间安全 2014年4期
关键词:火箭

付霖 刘俊阳 龙

【 摘 要 】 由于不同型号硬件平台和软件平台的多样性,跨型号大规模融合应用系统通常要求在拥有多种软硬件平台(异构平台)的分布式环境下运行。借助中间件(Middleware)技术改进软件重用形式,提高软件重用程度,以实现支持分布式应用有效开发、部署、运行和管理的目的。本文在对现有火箭测发控系统软件的子系统功能聚类和程序架构分析基础上,开发基于中间件模型的通用火箭测发控系统软件。

【 关键词 】 火箭;测发控软件;中间件技术

1 引言

运载火箭的地面测发控系统软件由多个应用软件组成,如主控软件、虚拟显示软件以及数据处理软件等。它的主要功能是实现流程控制与数据判读自动化,控制后端PLC、地面测试计算机等完成测试发控流程及数据采集和判读,并将测试数据及判读结果送到数据处理计算机进行数据显示,转发总体网、遥测、动力等系统的控制命令与回令。

利用中间件技术主要在两个方面改进现有测发控系统软件的开发模式。

一是实现跨平台代码的移植和框架级的重用。利用处于中间层次的软件屏蔽软硬件平台底层的差异性,利用中间件技术开发的控制器可以实现不同硬件平台不同操作系统之上进程或者线程级别远程对象或过程(过程:不存在操作系统情况下,实现某一功能的代码)的统一管理和调度。

二是异构网络的数据传输。当前运载火箭地面测发控软件的通讯协议众多,有基于以太网、CAN总线、1553B总线、422总线、485总线等,且随着通信技术的发展,型号软件间接口有进一步增加的趋势。当前,测发控软件中地面及弹上软件接口实现方式均采用硬编码,通讯双方协调通讯协议,定义传输的数据格式,形成接口文件作为双方设计的输入文件。在型号研制初样和试样阶段大量的研制资源投入在接口的调试,并且由于接口协议理解不一致易造成进度延期。利用中间件技术对型号中常用的通信协议进行封装可以解决硬编码的效率问题和质量问题。

本文在中间件技术的研究基础上,成功地将其应用于某运载型号测发控软件再工程改造过程中,通过改造原有软件系统,减少了程序模型间的耦合度,提高了软件构件化程度,为大规模信息融合应用系统的开发奠定了基础。

2 测发控软件的中间件模型

软件架构描述的对象是直接构成系统的抽象组件,各个组件之间的连接和组件之间的通讯关系。参考型号归档的任务书、需求以及详细设计等文档,得出软件需实现对象的抽象功能划分,及各个软件运行剖面的信息流流向。

以图1为例,即PLC通信协议解析部分的系统架构恢复流程,其旨在确定MODBUS协议解析部分的结构部件、模块和对象以及他们之间的关联。在实际工作中采用软件聚类(Software Clustering)和程序分片(Program Slicing)的方法,其他功能类的模型抽象过程与之类似。

在将PLC子系统划分为模块的聚类过程中,利用数据流在流经程序模块后其值的改变情况,将类似的模块或者部件归类。具体可划分为ModBus数据容错处理模块、ModBus数据预处理模块、ModBus协议解析模块等。

由于PLC子系统中的ModBus协议解析模块较为重要,将原软件中已聚类出的协议解析模块针对ModBus消息功能码的不同再次进行聚类,拆分出读点组件、写点组件、读寄存器组件、写寄存器组件等。

为了获取到系统的整体视图,需确定组件之间的依赖关系。采用软件分片的方法,以系统的调用图(Call Graph)作为面向过程代码的高层抽象,将程序切割为关注点集中于系统局部的分片,每个分片是功能上或结构上的独立模块,以程序语句层为主,给出变量相关的程序部分,以调用图通过模块和模块之间的调用关系来表达整个系统。

通过对当前火箭测发控软件的文档和程序代码恢复出的软件架构进行归类,将得出的组件按照中间件C/S三层架构模式进行划分。具体将测发控软件的测试流程划分为三层C/S架构,主要由主流程部分、中间件层部分、重用控制器部分三部分。

主流程部分主要实现流程性的功能,响应用户及系统消息完成相应测试任务,为Client。当Client运行到某一流程步,则向Server重用控制器部分提出请求。Server部分的每个控制器对象负责一类设备的全部功能操作,如实现执行与该设备相关的测试步序,显示、存储、判读测试数据,设备切换等功能。

中间件层可以分为两个部分:一部分是网络路由服务,通过该网络路由服务可以组织成复杂的通信网络架构;另一部分是应用服务,应用服务主要实现业务层的相关操作,即相关业务逻辑流程可以在应用层进行组合,完成不同要求的业务流。

主流程处于最顶层,通过响应用户及系统消息完成相应功能。主要功能包括:测试流程的加载与执行,管理测试设备连接,数据接收、显示等。

确定测试流程分为测试类、测试项、测试分组、测试步序四个级别,测试步序为测试流程的基本单元。测试分组由多个测试步序组成,如分组“加电”是测试中可以从测试项目树中勾选的最小单元,在测试出现问题需重新测试时,可根据当前状态跳过某些分组;测试项可以由多个测试分组组成,也可以直接由测试步序组成,包含业务上完整测试项目的全部操作;测试类是对测试项划分,如“总检查”、“分系统测试”等。

优化之后的主流程部分测试流程为程序启动后首先进行初始化操作,顺序进行相应的界面初始化、连接初始化、控制器初始化等。流程框架部分测试流程如图2所示,测试开始时,用户需在测试项目树中选择测试项或分组,程序从本地数据库中获取全部被选测试步序的参数信息,然后按顺序存入执行序列列表,并根据测试步序的类型调用控制器服务器端的函数完成与相关测试设备建立连接并对被测设备进行初始化的工作,其中间件ModBus客户端初始化功能实现如下:

1)调用对象请求代理ORB初始化函数,获取ORBroot引用;endprint

2)调用resolve_Naming函数获取已在服务端运行的命名服务的引用;

3)利用命名服务引用,查找命名服务中的初始化对象指针,实现初始化的远程对象的本地调用。

控制器模块主要实现运载火箭地面测发控系统软件中主控计算机控制的各个设备所需完成的测发控功能。利用系统架构恢复方法恢复出VXI数据采集、PLC通信协议解析、NPORT、三轴转台、速率转台等软件功能模块,将其描述为控制器。

3 中间件层提供的服务

分布计算中间件模块为火箭测发控系统软件的研制提供了一个开发和运行的软件平台。结合型号任务的需要,来满足协议的封装和安全可靠性的要求,提供了底层通信及分布式应用开发的支持服务。

为尽量不改变原有程序架构,软件针对新需求的改造过程,如图3所示,采用代理的各种方式实现。利用编译器编译完成的客户端stub和服务端skeleton,提供客户端和服务器端方法的请求和响应。某远程对象的平台无关代码经过编译器编译为具体平台的客户端stub和服务端的skeleton。客户stub是远程对象的本地替身,接受调用请求,对程序员透明,可以让远程对象若本地对象一样调用。服务方的skeleton主要功能是在服务端定位远程对象之上的方法。在工程开发中采用的VS2010编译器,将客户端的stub和客户端的服务请求流程性代码进行联合编译成客户端的应用。而在服务器端不仅需要skeleton和启动服务使能服务流程性代码,还需要将服务器端的服务实现代码加入,进行联合编译成服务器端应用。通过此种方式开发的客户端和服务器端应用可实现远程对象的本地调用过程。

为实现远程对象本地调用的目的,需要对底层通信进行抽象封装以解决分布式和异构性的问题。利用此服务,型号软件开发人员不需要再采用重复的易出错的socket编程,只需要调用简单易用的软件接口,将源端地址和目的端地址作为参数传递即可实现设备之间的数据传输。

具体工作原理,如图5所示,ModBus控制器的对象引用是分布环境下ModBus控制器对象的抽象,用来唯一标识ModBus控制器对象。对象引用包含定位对象所在机器的信息(IP地址),在该机器上定位对象所在进程信息(端口号),在该进程中定位目标对象的信息(Object Key)。对象引用内部结构对开发人员透明,开发人员拿到一个对象引用后调用ptr_to_object方法,即可实例化出远程对象的本地客户端stub。

本地调用是由编译器透明地将控制流(即调用对象方法的指令)直接翻译为机器代码。远程调用由于需要通过网络,而网络只能传递数据流(即消息),因此,调用过程是一个“控制流→数据流→控制流”的过程。“控制流→数据流”过程,将对象方法调用的指令编码成网络消息并发送出去。“数据流→控制流”,接收网络消息并解码还原成对象方法调用的指令。GIOP(Gerneral Inter-ORB Protocol)对当前运载火箭地面测发控软件的通讯协议进行了封装,定义了对象请求发送和接收的各种消息的格式及其含义。

对象实现是程序设计语言级别的实体,用来为一个或多个远程对象的请求提供实现。存在于服务方进程空间中,客户方发出的对一个Object的远程调用将由对象请求传递到服务进程中。服务方经过对象适配机制,查找维护的“对象ID-对象实现指针”映射关系表,找到对象实现的指针。通过对象实现的指针,利用skeleton找到对象之上的方法。

4 结束语

基于中间件的火箭测发控系统软件再工程技术采用了异构网络分布环境下的软件系统重构技术分析和设计方法。在软件产品化成果重用框架的基础之上进行跨平台层面的再加工,最终实现运载火箭地面测发控系统网络再开发的软件复用。在方便调试的同时,也提高了程序的可靠性。基于中间件的火箭测发控系统软件是软件产品化的进一步延伸,并最大程度上考虑到运载火箭测试工程的特点,运行过程可靠,结果处理正常,为下阶段型号软件研制和维护工作打下了基础。

参考文献

[1] Weiser,M.1984."Program Slicing" IEEE Transaction on Software Engineer 10,4(July):352-357.

[2] Object Management Group, CORBA Component Model Joint Revised Submission, 1999..

[3] 吴泉源.网络计算中间件[J].软件学报,2013年1期.

[4] 王厚军.关于军用测试系统标准化和技术体系问题的研究与探讨[C].2007年国防科技工业试验与测试技术高层论坛,2007:50-57.

[5] 张娟,黄开臣.综合自动测试系统研究[J].测控技术,2011.30(10):30-35.

作者简介:

付霖(1988-),男,山东人,硕士研究生,主要从事分布式计算及软件复用方面研究。

刘俊阳(1970-),男,研究员,主要从事软件设计与测试技术研究。

肖龙(1983-),男,工程师,主要从事支撑环境和软件测试。endprint

猜你喜欢
火箭
茶包“火箭”
纸火箭
太空看火箭等
火箭发射
火箭比赛
穿在身上的火箭工艺
太阳火箭
透视奇妙的火箭
超酷的火箭