APP下载

航天器电推进软件体系结构设计

2023-11-13赵性颂张承昊

空间控制技术与应用 2023年5期
关键词:体系结构子系统组件

赵性颂, 张承昊, 顾 斌

北京控制工程研究所, 北京 100094

0 引 言

软件体系结构是软件系统的一种或多种结构,包括软件组件、组件的外部可视属性以及组件之间的关系[1].软件体系结构在降低软件复杂度和软件重用中十分关键,体系结构既是重用[2]对象,又是重用与决策的基础,好的体系结构能给软件产品质量和研制效率带来实质性的提高.随着航天嵌入式软件任务量以及复杂性增加,软件可复用需求、可复用体系结构等资产的开发十分迫切.

卡内基梅隆大学于1996年提出软件体系结构的多项概念,如软件组件、连接器和体系结构模式[3]等.文献[4-7]研究了常用体系结构设计风格、工程应用以及基于软件体系结构的建模方法.随着技术发展以及新需求的不断提出,面向组件[8]、面向服务[9]和面向数据[10]等一系列体系结构相继提出,基于体系结构框架的代码自动生成技术[11]也得到应用.然而航天器嵌入式软件的体系结构设计及应用缺乏针对性研究.

软件体系结构和需求工程紧密相关,需求工程专注于问题空间,软件体系结构专注于问题的解空间[12].软件体系结构的主要关注点:1)功能需求;2)非功能需求,如ISO/IEC 25010:2011标准中定义的可靠性、安全性、性能效率、兼容性、维护性及移植性等[13];3)需求变更.

针对特定场景,体系结构形成了一些通用化、可复用的技术解决方案,即软件体系结构模式.常用软件体系结构模式包括:分层、管道、微内核、事件驱动、空间驱动和微服务[14].

本文针对航天器嵌入式软件体系结构开展研究,结合软件体系结构的关注点,分析、识别电推进系统的关键特征,基于这些特征设计开发软件体系结构.本文首先分析电推进系统总体需求,然后开展需求分解,提取共性需求和可变性需求,识别软件组件,之后对事件驱动模型进行了适应性改进,用于软件组件集成,最后实现体系结构跨项目应用.

1 电推进领域需求分析

1.1 电推进系统功能及组成

电推进系统的主要用途是为航天器提供轨道转移、位置保持等任务所需的力或力矩,其工作原理是将航天器电能转化为工质(推进剂)的定向喷射的动能,以此获得航天器姿态控制和轨道控制所需的力或力矩.

电推进系统由电推力器(electric thruster)、电源处理单元(power processing unit,PPU)、贮供子系统(xenon feeding subsystem,XFS)、矢量调节机构(thrust pointing assembly mechanism,TPAM)、电推进控制单元(electrical propulsion control unit,EPCU)等模块组成.其中XFS子系统由压力模块、温度模块、流量模块等系统模块组成.EPCU作为中央处理器,是电推进系统的控制核心,电推进系统顶层数据流传递关系如图1所示.

图1 系统顶层数据流图

1.2 总体需求

如图2所示,电推进系统主要有8个工作模式:待机、自主预处理(排气预处理、阴极预处理、放电室预处理、栅极预处理)、自主点火(单发、双发)、安全.待机模式是系统上电后的默认模式,安全模式在系统故障或紧急情况下进入,自主预处理模式主要完成点火前的准备工作,自主点火模式用于实现力和力矩的输出.系统主要功能需求如下:

图2 工作模式及系统结构分解图

1)接收并存储上位机发送的预处理工作参数;

2)调用预处理工作模式,完成在轨自主预处理工作;

3)接收并存储上位机发送的点火参数序列(点火启动时间、点火时长、点火推力器参数、XFS子系统参数和TPAM转动角度);

4)按照点火时间顺序,选取点火参数序列中的一组,调用自主点火工作模式,完成在轨自主点火操作;

5)调用系统FDIR(fault detection, isolation and repair);

6)若点火正常结束,转入待机模式;若点火过程出现异常,转入安全模式.

除上述功能需求外,系统还需要完成异常事件存储、软件在轨维护、重要数据保存与恢复等可靠性安全性相关功能需求.

1.3 需求分解

电推进系统运行过程中,工作在图2的某一工作模式下.每个工作模式按照一定时序和控制逻辑,驱动控制XFS、TPAM和PPU等子系统模块,实现模块间协调工作.不同平台选用的子系统模块类型及配置数量不同,工作模式的具体处理步骤也存在差异.本文选取4个不同平台的典型项目A1、A2、A3和A4作为研究对象,结合领域特征,针对子系统配置与使用、工作模式处理开展需求分析,提取共性及可变性.

(1)子系统配置需求分析

按照结构化的需求分析方法,电推进系统可分解为XFS子系统、TPAM子系统、PPU子系统(含电推力器)、接口子系统.XFS子系统负责供气,TPAM子系统负责调整推力器方向,PPU子系统负责工质的稳定输出,接口子系统主要完成硬件接口芯片应用以及通信功能.4个子系统在EPCU的统一调度下协同工作.

各子系统功能相互独立,每个子系统模块的软件功能可形成一个软件组件.表1所示给出了4个项目的系统配置信息,共识别出系统模块21个(右脚上数字为模块编号).

表1 子系统配置需求分析

(2)工作模式需求分析

按照自顶向下逐步求精[15]的结构化需求分解方法,图2的每个工作模式进一步分解后,其工作流程都由一组系统模块的操作序列组成,只是不同工作模式的操作序列和操作对象不同.A1项目排气预处理模式的操作序列如表2所示.

表2 排气预处理模式流程

本文通过软件产品线技术中的特征识别方法[16]来分析操作序列单元的特征.表2的所有操作序列单元可以抽象为5种共性操作:模式切换、时间规则、系统模块工作状态设置、脉冲/电平指令输出和PPU控制指令输出.这5种共性操作属于电推进共性特征,适用于所有工作模式.根据文献[16]的描述,共性特征包含一个或多个子特征,子特征是共性特征或者变化点特征,变化点特征包含一个或多个子特征,子特征是变化点特征或变体特征.本文针对电推进工作模式进行特征分解,识别共性与可变性,形成了图3的特征树.图中显示,除模式处理(根节点)这一共性特征外,特征树还包括5种共性特征(对应5种共性操作),5种变化点特征,以及多个变体特征.

图3 工作模式特征树

2 体系结构设计

2.1 体系结构总体设计

结合需求分析结果,本文基于事件驱动模型[17]设计工作模式框架.每个系统模块封装成为独立的软件组件,工作模式调度不同的软件组件,驱动系统流程的执行.具体来说,工作模式作为软件主线程,同时也是事件源(event-source),负责监测系统模块工作状态,并通过执行操作序列生产一系列事件(event),控制不同系统模块功能的执行.

根据需求分析结果,电推进系统主要由5种要素组成:中央处理器、工作模式、操作序列、系统模块和外围芯片.根据系统组成要素,本文将电推进软件体系结构划分为应用程序、工作模式框架库、软件组件库、基础公共服务库和芯片外设库.

图4描述了电推进软件体系结构的组成.芯片外设库包括1553B总线、CAN总线等外围芯片的驱动程序.基础公共服务库包括遥测遥控、基础数学库等通用服务接口;软件组件库包括子系统模块对应的软件组件实体,详见2.2节;工作模式框架库包括基于事件驱动模型的8种工作模式设计模板,详见2.3节;应用程序根据需求选择库模块,并按照模式框架模板完成模块组装.

图4 电推进软件体系结构组成

2.2 软件组件设计

软件组件是航天器软件复用技术的核心.软件组件(component)是一个封装好的物理实现单元,是一个可独立编译的程序,可用于程序组装.组件程序实体由接口与实现组成,并满足接口与实现分离.组件仅通过接口实现交互,因此组件具有良好的可替换性、复用性和封装性.软件组件对外提供多个接口,接口类型分为请求接口和服务接口.

航天器电推进软件组件接口除了包含通用接口(请求接口I1、I2,提供接口P1、P2)外,还包含有4种专用接口:遥控(Cmd)、遥测(tele)、参数配置(param)和异常事件(event).4种专用接口描述了航天器电推进软件组件的4种公共服务操作.电推进软件组件组件模型可用图5所示.

图5 电推进软件组件模型

电推进系统共提取软件组件21个(详见表1).下面以压力模块PRS35为例,给出软件组件实例描述.图6是基于UML[18]描述的软件组件图,表3是软件组件接口与功能的描述表.

表3 组件接口与功能描述实例

图6 压力模块PRS35软件组件图

2.3 基于事件驱动的体系结构描述

事件驱动体系结构EDA(event-driven architecture)[19]包含4个基本要素:事件Event、事件源Event-Source、事件分配器Event-Dispatcher和事件监听处理器Event-Listener.观察者模式、发布/订阅模式是事件驱动模型的两种典型应用.

图7描述了基于事件驱动的电推进软件体系结构.针对工作模式操作序列的5项具体操作,图中定义了5种事件:时间规则、PPCU控制指令输出、组件状态设置、脉冲/电平指令输出和模式切换.事件与软件组件绑定,属于软件组件的一部分.5种事件具有独立性,事件的增加、删除和变更属于组件内部行为,不会影响其他组件,组件之间不存在耦合关系.Event与Event-Listener在Event-Dispatcher中注册,统一由Event-Dispatcher管理,Event-Dispatcher还负责通知Event-Listener处理Event.

图7 电推进软件工作模式的体系结构

针对电推进软件的具体应用场景,本文对典型的EDA进行适应性改进.

1)Event-Dispatcher增加了一个Event队列,实现Event的异步调度,队列用于存储执行时间较长的事件,比如脉冲/电平事件.

电推进软件主线程由遥控指令触发.从工作模式初始化中的事件开始,Event-Dispatcher顺序、阻塞式地调度事件,遇到耗时较长的脉冲/电平事件时,主线程不是整个流程都停下来等待其执行,而是触发一个异步操作将脉冲/电平事件加入到任务队列中,然后继续执行新的操作.脉冲/电平事件需要执行多个调度周期,执行完毕后,发送消息通知主线程.

2)除了工作模式外,流量组件、温度组件、PPU组件和TPAM组件运行过程中也会产生事件Event,这些组件也是事件源.这样组件既产生事件,也消费事件,在电推进事件驱动体系结构中担任了双重角色.

3)事件分发并处理后,需要将事件处理结果反馈给Event-Source.本文利用回调函数(Callback)[20]解决这一需求.回调函数由Event-Source定义,执行结束后通知Event-Source可以继续产生新的事件.

相比现有结构化的软件设计,本文所设计的事件驱动体系结构具有以下优点:

1)解除了业务交互和业务功能的耦合.事件驱动体系结构中有生产者和消费者.生产者生成事件,通过事件分发器分发到消费者,消费者消费事件,生产者和消费者异步运行,两者松散耦合或完全解耦.

2)可扩展性强:事件驱动体系结构基于事件构建,只需要修改、增加、删除事件的定义以及注册机制,就能实现需求功能点的变更、增加或者删除.

3)可维护性高:事件驱动体系结构使用回调函数处理业务功能,更容易进行调试和维护.

2.4 其他设计

公共服务以及可靠性安全性设计,如遥测遥控处理[21],软件在轨维护,异常事件记录等功能,均以接口函数的形式封装,供应用程序直接访问.基础数学运算、变量三取二等底层操作,均以库函数形式封装,对外仅提供用户接口.

2.5 应用情况

电推进软件体系结构具有很强的适应性和复用性,软件组件与框架模板可直接选配,需求变更影响域边界清晰.

当工作模式框架中的变化点内容发生变化时,仅需要增加、删除或者修改变体特征,减少了软件需求变更带来的影响,提高了软件质量与生产率.

本文设计的电推进体系结构已应用于4个平台,12项目,可复用代码近1.5万行,可复用代码平均占比约75%(复用代码行/项目总代码行).

3 结 论

本文以最大程度地实现电推进软件设计的复用为目的,开展领域需求分析,提取领域特征,设计软件组件,对事件驱动模型进行了适应性改进,采取基于事件驱动的软件体系结构组装软件组件,在工程应用上取得良好效果.下一步主要工作:一方面丰富组件库,研究事件的多维度需求信息扩展(如增加优先级属性);另一方面进一步提高软件组件封装的抽象程度,实现二进制程序的复用.

猜你喜欢

体系结构子系统组件
不对中转子系统耦合动力学特性研究
无人机智能巡检在光伏电站组件诊断中的应用
GSM-R基站子系统同步方案研究
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
驼峰测长设备在线监测子系统的设计与应用
基于粒计算的武器装备体系结构超网络模型
作战体系结构稳定性突变分析
基于DODAF的装备体系结构设计
基于云计算的航天器控制系统自组织体系结构