APP下载

空间站大规模复杂控制软件基于数据池的软件框架设计

2024-03-07尚葳蕤党纪红张锦江张丹瑶李经松

载人航天 2024年1期
关键词:数据项舱段复杂度

尚葳蕤, 党纪红, 张锦江, 张丹瑶, 李经松

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

1 引言

随着空间站等复杂航天任务的实施,软件作为航天重大工程系统的关键组成部分发挥着越来越重要的作用,同时随着航天器越来越智能化和自主化,其软件规模和复杂度持续增长。 为满足空间站这类载人复杂航天器长期在轨高可靠稳定运行的要求,软件在缓解复杂性、提高可靠性、具有可扩展能力[1]等方面面临挑战。 栾恩杰[2]在针对航天器软件复杂度的问题中指出,在不可能取消其本质复杂性的条件下,将面临如何应对软件复杂性带来的问题、风险、防护等方面的挑战。

NASA 建立了一套科学、规范、有效的软件工程和质量保证标准体系[3⁃4],并对飞行软件的规模和复杂度进行了深入研究,于2009 年发布了《NASA 飞行软件复杂度研究报告》[5],提出了降低和管理复杂度的建议,探索和验证了设计模式和架构设计对于缓解复杂度的关键意义。 核心飞行软件系统(core Flight software System,cFS)[6⁃7]是由NASA 戈达德空间飞行中心(Goddard Space Flight Center,GSFC)推出的一套飞行软件通用框架,它是一个与硬件平台、操作系统和特定型号项目无关的可重用软件,其设计优点中的分层架构、基于组件的设计、动态运行、运行时命令/表参数机制等对于降低复杂度有重要意义。 目前cFS 已经推广到NASA 的各个航天中心和研究机构以及日本、韩国等,得到了广泛的应用。

欧空局也非常重视软件框架设计,很早就发布了关于AOCS(Attitude and Orbit Control Sys⁃tem)软件框架设计的研究报告[8],描述了相关设计思路和最佳实践。 报告中专门提到了数据池的应用,指出在共享数据设计模式中应用数据池能够最大程度地实现数据产生者与数据消费者之间的解耦,并描述了基于数据池的数据交换模型的实践实例。 此外,还提出了航天航空开放接口架构(Space Avionics Open Interface aRchitecture,SAVOIR)[9],通过使用和航天器接口服务(Space⁃craft Onboard Interface Service,SOIS)定义的一系列服务以及自定义服务,构成了一个通用软件执行平台来支持上层应用,形成了可配置、可即插即用、基础夯实、向上开放并可不断扩展的体系架构。

现代航空飞行器系统也已将开放式系统架构思想引入机载软件开发中,如分布式综合模块化航空电子系统(Distributed Integrated Modular Avi⁃onics, DIMA)[10]和未来机载能力环境(Future Airborne Capability Environment,FACE)标准[11],旨在航电系统中通过定义软件标准接口、建立标准组件来满足不同系统间软件复用的要求。FACE 标准包含5 个组件段,通过功能分段、封装隔离的方式实现了软硬件之间的解耦。 其中,平台特定服务、传输服务和IO 服务组件段都是为解决系统间的数据传输业务设计的,提供了标准化数据接口,实现数据的获取和传递,同时还实现了多信息源数据融合、资源共享以及多操作面的功能分配,进行实时动态的数据分发,为可移植单元间的数据交互提供了一种互操作方法。

制导、导航与控制(Guidance, Navigation and Control, GNC)系统作为空间站任务的核心分系统,完成空间站多舱段的姿态与轨道控制任务,其控制软件规模大、功能复杂。 按照GJB8000-2013《军用软件研制能力等级要求》[12]的规定,超过十万行的嵌入式软件属于巨型规模,空间站GNC 系统控制软件已步入巨型规模的范畴。

在调研国外航天航空机构在大规模复杂软件框架设计和可扩展性标准化数据设计思路和经验的基础上,本文针对空间站GNC 系统控制软件复杂度高、可靠性和可扩展性要求高等特点对软件框架设计开展研究,提出基于数据池的软件框架设计方法,并给出应用效果。

2 大规模复杂控制软件设计需求分析

空间站由多个航天器在轨组装建造而成,是具有长寿命、高可靠、可维修等特点的载人航天器。 其中,GNC 系统作为航天器的关键分系统,能够完成空间站整个飞行和组装建造阶段的姿态轨道控制任务。 天和、问天、梦天各舱段各自具有完整的GNC 系统,分别作为目标器以及追踪器完成在轨交会对接等组装建造,并在形成组合体之后完成不同构型的姿态轨道控制任务。 实现GNC 系统任务的控制软件具有如下需求特点:

1)穿舱总线信息架构复杂,多舱资源融合使用、冗余备份,IO 数据管理复杂。 为实现空间站各舱控制系统资源的融合使用,多舱GNC 系统设计了4 条超200 m 的1553 总线,交叉联通了各舱的200 余台套设备,构建了基于1553B 总线的GNC 多舱段信息架构,实现了整站各舱所有控制系统资源的完全融合使用、冗余备份和动态重构,是目前国内在轨应用的总线长度最长、设备数据最多、规模最为庞大的1553B 信息架构,需要软件具有多舱段多总线资源管理的能力。 同时由于总线挂接部件多,如果采用传统控制软件针对每个部件定制式的IO 处理方式,软件将非常复杂,要缓解复杂度需要软件针对IO 处理进行通用化设计。

2)控制器采用拜占庭四机容错结构[13],四机软件数据无容差同步运行。 空间站四机容错系统中每个单机控制不同的总线完成不同的IO 工作,四机需要协同完成分布式数据采集和控制量输出,而控制算法计算和控制输出决策需要四机热备份系统以无容差方式完全一致运行,因此需要软件实现四机之间IO 数据的实时交互和数据无容差同步运行的需求。

3)空间站对扩展能力的要求,需要在设计阶段考虑可扩展性。 空间站早期构想阶段就提出了扩展需求,指出空间站建造完成后,应具备良好的舱段扩展、能源扩展和应用支持扩展能力[1],需要软件能够适应后续更多扩展舱段的资源管理。因此软件需要在架构设计时考虑可扩展需求,以软件定义标准化数据接口、建立标准组件等思路开展软件框架设计。

基于上述需求特点和设计难点,空间站控制软件需要在多舱软件统一框架设计和数据设计上寻求突破,使得软件框架具备多舱段多机多总线的资源管理能力、可靠高效的数据管理能力和可移植和可扩展能力。

3 基于数据池的软件框架设计

3.1 IO 数据池设计

参考FACE 标准IO 服务段和传输服务段关于交互数据标准化接口的设计思路,针对空间站多舱多机多总线信息融合和冗余管理的特点,本文引入数据池的思想进行IO 数据的获取和传递,并将所有交互数据进行抽象,设计统一的格式开辟数据池。 如图1 所示,在原始通信和数据处理之间增加设计了2 个数据池,分别存放输入交换比对数据和输出交换比对数据。 同时该方法不局限于1553 总线体系,也适用于CAN 总线、串口、SPW 总线等各种类型的接口。

图1 IO 数据池的开辟Fig.1 Development of IO data pool

每个数据池的数据项按照不同的部件分别存放,数据池中每个数据项有唯一标识,需明确数据的标识符、属性以及数据内容等信息。 通过数据标识与其实际部件和设备来源进行挂接,并根据系统实际需求来分配数据项的大小。 数据池的格式示例见图2,数据池中数据项格式示例见表1。

表1 IO 数据池数据项格式定义Table 1 Definition of data item format in IO data pool

图2 IO 数据池格式Fig.2 Format of IO data pool

3.2 四机分布式多总线IO 数据同步设计

基于空间站GNC 系统多舱段多机多总线容错系统的信息融合及冗余管理架构,需要将四机分布式获取的数据进行交互、融合和同步。 针对该问题软件提出了拜占庭四机容错结构的实时无容差同步运行技术方案,设计了四机数据交换比对同步方法,通过对数据池中的数据进行多轮交换实现了多机信息共享,设计了多策略综合选举算法,实现了多机数据的实时融合对齐,实现了四机之间单源数据、多源同步数据、多源异步数据等不同类型且大数据量交互IO 数据的无容差精确同步。 IO 数据同步设计方法示意图如图3 所示。

图3 IO 数据同步设计Fig.3 IO data synchronous design

3.3 数据池中数据项的快速访问机制设计

由于空间站数据池中数据项非常多,且每个控制周期的采集、处理和输出等多个环节需要多次访问,如果采用遍历查询,将严重影响实时控制软件的性能。 软件设计了如图4 所示的快速访问机制,通过对多舱、多机、多总线和数据之间的关系进行建模,建立了数据标识、数据属性和数据内容之间复杂的分层关联关系和相互映射的多层缓冲机制。 同时为确保数据访问性能最坏情况可确定,建立了2 级静态索引表访问和动态查询关系表相结合的方法,实现了在数据采集、输入交换比对、控制算法计算、输出交换比对、控制输出等数据实时处理全过程的高效、可靠访问管理。

图4 数据项快速访问机制设计Fig.4 Design of fast access mechanism for data items

3.4 基于数据池的软件框架设计

进行基于数据池的空间站多舱软件统一框架整体设计,主要原则包括:

1)分层设计。 将功能分为接口层、通用服务层和应用层,层间通过通用接口访问,实现通用功能和可变功能分离;同时解除顶层应用算法与IO数据耦合,解除IO 数据与硬件、协议的耦合;

2)功能模块化。 将每层划分为多个功能单元,针对功能单元通过代码模板明确接口形式,确保功能单元之间仅有较少的、清晰且稳定的接口;

3)数据接口标准化。 通过提供IO 数据获取、传递、融合、同步和管理的标准化数据接口和组件,缓解软件复杂度,提高可移植性和扩展性。

空间站大规模复杂控制软件基于数据池的软件框架设计如图5 所示。

图5 基于数据池的软件框架设计Fig.5 Design of software framework based on data pool

4 应用

空间站3 个舱的GNC 系统控制软件使用上述基于数据池的软件框架设计方法进行了分层、功能模块化和数据接口标准化的统一设计,使得多舱软件的底层接口层和通用服务层框架代码完全一致。 同时设计了多个包含总线配置、单机设备配置、通信状态设置等众多信息的配置参数表来区分数据池数据的属性,实现了约300 个输入数据项、200 个输出数据项,共超过32 KBytes 采集数据和8 KBytes 输出数据的高效存储、访问和同步,以输入交换比对数据池为例,相关设计及应用结果如表2 所示。

表2 输入交换比对数据池设计结果Table 2 Design results of input exchange comparison data pool

该框架解决了空间站大规模复杂控制软件多舱段多机多总线资源管理和具备可扩展性的难题,实现了软件复杂的底层通信与上层应用处理之间的数据隔离和解耦,使得多舱软件复用率达到70%,并具备后续可扩展能力。 相比国外先进航天航空机构的成熟软件架构,本文设计方法重点在嵌入式软件框架的数据标准化设计方面取得了研究成果,还未能形成如cFS、FACE 等的行业软件标准架构。 后续可以进一步抽象提炼航天器软件的基本系统组织,包含构件、构件之间、构件与环境之间的关系,建立开放、动态和可扩展的构件运行环境,通过文档化和模型化不断提高构件接口成熟等级,形成模型化的软件复用能力。

5 结论

空间站GNC 系统控制软件在研制过程中应用了本文提出的基于数据池的软件框架设计方法,形成了层次化、模块化和数据标准化的统一框架,有效解决了软件复杂性问题,提高了软件复用率和可扩展能力。

为了有效保证空间站GNC 系统控制软件这类大规模复杂软件的质量和研制进度需求,还应形成以软件架构为核心的软件开发过程,即以软件架构描述为系统蓝图,以共性点、差异点和关注点等特征模型为设计起点,基于中间件技术通过组装、部署和维护的方式进行开发。

后续将进一步贯彻“硬件标准通用,软件定义系统”的系统设计理念,在建立航天器软件行业通用架构模型,形成跨组织的软件复用标准和资产方面继续开展研究。

猜你喜欢

数据项舱段复杂度
空间站舱段运输专列
一种多功能抽签选择器软件系统设计与实现
非完整数据库Skyline-join查询*
基于Python的Asterix Cat 021数据格式解析分析与实现
基于TwinCAT的舱段数字化柔性自动对接平台控制系统设计
一种低复杂度的惯性/GNSS矢量深组合方法
求图上广探树的时间复杂度
某雷达导51 头中心控制软件圈复杂度分析与改进
水下航行器电池舱段温度场数值模拟
出口技术复杂度研究回顾与评述