空间站数据管理软件设计与实现方法

2022-08-22 13:23:58刘欣朱剑冰郝维宁
航天器工程 2022年4期
关键词:遥测空间站指令

刘欣 朱剑冰 郝维宁

(北京空间飞行器总体设计部,北京 100094)

随着国内外航天技术的不断发展,航天器功能更强大、系统更复杂,出现了很多大规模的航天器,如“国际空间站”、美国毅力号火星探测器,中国天问一号火星探测器、中国空间站等。随之而来的,航天器所运行的软件在其中发挥了越来越重要的作用,软件的规模和复杂性迅速提高。由于复杂软件具有耦合性高、规模大的特点,软件本身的固有可靠性难免会随之降低[1],这与航天任务要求的高可靠性相矛盾。2000年“火星极地着陆器”(MPL)因为软件过早关闭下降引擎,造成着陆器在降落时坠毁[2];2019年12月波音公司载人飞船Starliner在入轨后因软件故障未能按正常飞行程序执行预订的轨道切入机动操作,与“国际空间站”对接任务失败,被迫提前返回[3]。

为满足宇航任务对航天器软件提出的高可靠要求,一方面通过优化软件本身设计实现,包括采用更好的分层结构以减少软件内部的耦合、使用标准的接口协议提高模块的通用性、应用更多的成熟软件构件降低代码的复杂性[4]等;另一方面,结合实际飞行任务和航天器系统级的可靠性设计,软件有效的支撑这些可靠性设计措施得以完整且合理的实现,通过这方面共同的作用以达到整体的最优化。

空间站作为超大型的复杂航天器,由于其系统规模大、信息网络复杂、功能繁多、产品数量多,并且需要长期在轨运行,对软件能力提出了新的挑战。站载数管分系统(On-board Data Handle Subsystem, OBDH)是空间站信息处理和自主健康管理的核心,通过软件实现整站系统级任务处理、信息管理和自主健康管理功能。针对空间站任务的实际需要,数管软件为支持复杂总线网络管理功能和系统级各种在轨运行和安全策略的实现,在软件架构、任务分级调度、总线并行调度等方面开展了大量的研究工作,提出了实现方案。本文介绍了数据管理软件为提升软件自身可靠性以及支撑系统级可靠性的具体设计方法,文中描述的全部研究工作和成果均具备良好的适用性,已经在具体项目中得到实现,且服务于在轨应用。

1 空间站数据管理软件关键特征分析

空间站核心舱是目前国内规模最大的航天器,中国空间站最终将建设180 t级的组合体,其设备数量多、网络节点多、内部数据量大、交互路径复杂。同时,空间站任务对可靠性要求极高,冗余设计多,软件要支持多链路上行控制、以及多链路的下行遥测输出,避免一个或者多个链路故障情况下地面系统失去对空间站的控制和监视能力。数管分系统是空间站整站信息流的枢纽和数据信息交互的核心,数据管理软件任务需求特点如下。

(1)总线网络信息节点多、数据类型多、数据量大,数管软件需支持复杂总线网络管理能力。

以空间站核心舱为例,如图1所示,整舱信息系统分为三层总线架构,实现26条1553B总线管理。数管核心处理单元是数据管理软件运行载体,作为总线网络的主控制器位于第一层,负责整站信息管理;核心处理单元通过一级总线实现对整舱60多个第二层节点设备的数据通信管理,这些节点设备包括了各分系统的控制器;再经由各分系统控制器通过二级总线实现第三层节点设备的数据通信,节点数量超过160个。传输的数据内容涵盖了遥测、注入数据、指令、软件维护数据、轨道数据、定位数据、时间数据、显示报警信息、空空交互数据、停靠飞行器状态数据、关键生理状态信息等,总线传输的总数据量超过4 Mbit/s。空间站1553B总线网络复杂度、终端数量、数据流量都是国内航天器之最。

(2)具有多链路天地通信能力,数管软件需支持多通道、多类型的遥测数据组织下行能力。

为提高系统级的可靠性,天地链路设计实现了多种冗余措施,支持整站各类信息资源的可靠下行。数管软件负责整站全部遥测数据的采集、组织和下行控制,要实现对中继Ka波束、中继窄S波束、中继宽S波束、地基S波束等下行链路实现不同内容、不同速率、不同调度周期的遥测数据组织和下行,同时保证数据内容的正确性、完整性以及良好的同步性,给软件提出了很高的要求。以核心舱为例,各链路遥测信息具体如表1所示。

表1 核心舱遥测下行链路信息

(3)基于空间站15年运行和扩展需求,数管软件需支持易用易维护的飞行程序管理能力。

空间站在轨运行管理由数管分系统按照地面预先注入的指令序列执行,指令序列由若干信息节点构成,信息节点是带有时间标记的指令或指令组,其中指令组本身也是指令序列。空间站在轨运行期间,会预先存储几小时到几天不等的指令序列,该序列会由地面根据飞行轨道信息和未来的工作事件进行迭代更新,数管软件将指令序列中的各条指令和指令组按照指定的时间执行。飞行程序管理功能包括待发指令序列的新增、删除和更新,指令组的新增、删除和修改,指令组和待发指令序列的恢复等,在保证准确、准时的前提下,考虑到在轨15年运营期间操作便利性、扩展性需求,需要提供便利的地面操作接口以及一键式恢复能力。

(4)空间站长期在轨稳定工作,数管软件需支持可扩展的自主健康管理能力。

复杂航天器长期在轨运行,难免会出现故障,一方面要通过提高自身可靠性减少故障的发生,另一方面,当出现故障时要具备快速处置和恢复能力。较早期的航天器,更多是依赖地面系统实现对在轨工作状态的监视,出现故障由地面人员进行识别、决策和处置。这种方式会造成故障处置时间变长,增加了因处置不及时造成难以挽回后果的可能性。对此,数管分系统要支持对典型故障的在轨自动处置能力,通过对各类工作状态的监视,发现故障并识别故障类型,自主进行故障处置。

2 软件架构研究

2.1 基于标准体系的软件分层架构

对于大规模的复杂嵌入式软件,分层设计可减少各层次模块间的依赖性、提高软件复用性,是提高软件质量的有效措施[5]。将软件分层架构的实现思想应用于本软件,整个软件划分为应用层,中间件层和硬件接口层,采用这种分层方式可以降低不同分层间的耦合性,便捷地使用新的实现替换本层中原有的功能,空间站任务工作模式多、模式组合复杂、需求迭代升级多,这种分层设计方式尤为重要,而且分层有利于各层内部模块的复用,可有效提高代码的复用率,提高软件的开发效率和质量[6]。

如图2所示,应用层实现数管软件的功能性任务,包括遥测组织、遥控处理、程控、飞行管理、总线管理等功能,采用优先级调度方式,对不同任务按不同优先级进行处理。中间件层主要为应用层提供算法支持、数据支持、网络支持,主要包括通用算法库、网络协议栈、嵌入式数据库等,其中网络协议栈参照CCSDS标准约定进一步划分为支持层、网络层和子网层[7]。硬件接口层要完成通用设备驱动程序实现和操作系统接口调用等。

图2 数管软件分层架构

2.2 基于进程优先级调度实现高效处理

通过对数管软件的需求分析后可知,除飞行状态管理、时间码输出具有很高的实时性要求外,其他功能的实时性要求相对较低,但对处理器资源占用率高,因此数管软件就需要在保证少量任务的高实时性基础上尽量提高处理器运行效率,减少资源浪费,这也是数管软件要解决的主要问题之一。

根据任务特点,按照事件触发、固定周期触发、空闲循环启动3种方式执行不同任务:将强实时性要求的任务设置为事件触发,例如飞行状态管理任务;对于周期性任务、但实时性要求不高的,设置为周期触发方式执行,例如程控任务等;对于占用处理器机时多、需最大化利用处理器资源的任务则采用空闲循环启动方式执行,例如总线管理任务。软件设计过程中考虑任务重要程度和实时性要求,设置任务的不同优先级,便于任务执行的动态调度。这种设计相对于将全部任务均按照固定节拍运行的设计,对减少处理器机时浪费、提高工作效率优势明显,缺点是时间确定性有所降低[8],是适合于数管软件特点的实现方式。数管软件的任务调度设计如表2所示。

表2 数管软件任务分类

续 表

3 软件关键技术研究

3.1 多总线、多终端的并行高效调度方法

核心舱数管软件需直接实现6条总线通信管理和数据调度;传统的总线控制功能设计,应用层软件直接操作1553B总线芯片,每次总线通信启动后,处理器均需要等待本次总线通信完成才能处理后续任务,这种方式对多总线、多终端、大数据量的总线管理任务,会造成总线通信效率低、处理器机时占用高的问题。

因此,本文基于软件分层架构和优先级设计方法提出了异步分时处理的实现思路。应用层的任务,如遥测任务、遥控任务、程控任务等,负责生成总线通信内容,形成总线消息队列。每一个消息队列对应一个总线管理任务,进而对应一条总线。总线管理任务1启动后,先查询总线消息队列1有没有需要发送的消息块,如有则启动总线1发送,然后开启任务阻塞,将该总线任务阻塞掉,总线1通信由后台依据消息队列执行,不需要软件参与。总线1通信启动后,软件可继续查询总线2是否有需要发送的消息块,重复上述操作,直至6路总线全部轮询完毕。在总线通信过程中,应用层的各任务也在同步产生后续总线消息队列,这样当总线芯片接到返回总线消息块发送完成的状态字后,数管软件就可以启动下一次总线管理任务,查询是否还有消息块需要发送,总线1~6依次执行,重复上述过程。

图3是数管软件应用层的多个任务组织总线消息队列,6个总线任务并行运行的示意图,实现原理基于优先级调度策略,由遥测任务、遥控任务、程控任务产生总线数据,按通信协议生成各类总线消息数据块,并将数据块插入总线消息待发队列中,各总线任务负责从队列中取出对应的消息块,执行总线发送过程。为了最大化利用处理器资源,在启动消息发送,等待消息回执过程中,阻塞本路总线任务,总线任务处于阻塞状态后,应用层的其他任务可以正常运行,且可以执行新的总线消息插块工作,生成新的总线消息待发链表,这样可以让总线消息发送和应用层任务并行开展,减少等待时长,有效提高软件运行效率。

图3 多总线并行调度

3.2 基于订阅发布的遥测数据分发技术

针对第1节描述的7种遥测类型,整站的遥测数据由各总线终端按照空间数据系统咨询委员会(CCSDS)的定义封装为协议数据单元(E-PDU),按照内容以应用过程标识(Application Process ID,APID)区分工程遥测E-PDU和常规遥测E-PDU两类。数管软件通过总线任务获取到全部E-PDU后,保存在本地缓存,形成遥测数据池,软件按照一定的调度策略挑选需要下传的E-PDU进行组织,生成多路复用协议数据单元(M-PDU),进而包装为虚拟信道单元(VCDU),用于下行输出。在软件中采用订阅-发布模型(Subscription Publication Model, Sub-Pub Model)的实现方法用于遥测功能设计,非常适合对象间一对多的关系[9],可支持本软件多类遥测数据下行的实现。

在数据订阅业务中,分别订阅7种遥测类型对应的遥测数据E-PDU,生成对应的下行遥测帧。为保证数据完整性,在总线管理任务更新E-PDU数据池时,禁止订阅业务向数据池获取遥测数据。数据发布业务,将不同类型的遥测数据帧分别按照周期性调度或消息触发式响应的方式输出。遥测数据订阅-发布流程如图4所示。

图4 遥测组织流程

3.3 基于轻量文件系统的飞行程序管理方法

数管分系统负责空间站飞行程序的管理和执行,为实现飞行程序中待发指令序列和指令组的可靠维护,便于地面操作和快速恢复,将飞行程序中管理的指令组和待发指令序列均以文件系统的形式进行管理。软件运行时将其加载到动态链表中执行,指令和指令组都是链表中的节点,通过链表中节点的增、减、变更实现待发指令序列的新增、删除和更新。

使用传统的地面计算机的文件系统对飞行程序进行管理,如JFFS[10]、YAFFS[11]等,数据结构过于复杂,需要大量的处理器计算资源,难免会占用大量内存建立文件系统节点树。但对于数管软件运行的物理平台,其处理器芯片能力受限、内存空间不足,难以支持完整文件系统的在轨实现。

因此,设计实现了轻量化的文件系统,将指令组、待发指令序列的内容独立于软件编译后的可执行代码进行存储,通过首指针和偏移量对指令序列进行查找,由软件代码将其搬移到内存区的独立空间,当地面更新指令组、待发指令序列时,直接对该内存区的链表内容进行增加、删除、修改操作,如需新增新的指令组,只需要在该内存区后面进行增加新的链表即可。在内存分配时,提前预留扩展空间,支持后续待发指令序列节点的增加以及指令组扩充。

3.4 基于PUS应用的自主健康管理方法

基于空间数据系统咨询委员会(CCSDS)定义的遥测数据链路协议、遥控数据链路协议、高级在轨系统、邻近空问链路协议四种标准,欧洲航天局(ESA)对遥控遥测的标准化进行研究,形成了遥测遥控包应用标准(Packet Utilization Standard, PUS),并在包括“火星快车”(Mars Express)在内的多个航天器中得到应用[12]。

PUS定义了16种业务类型,其中的三项业务:在轨监视业务、事件报告业务和操作调度业务,可以很好地完成航天器在轨故障监视和自主处置过程,其中在轨监视业务可以根据遥测参数的门限阈值、期望值、偏差阈值、更新频度等多种规则对遥测参数值进行实时监视,监测到参数超出设定规则后可以通过事件报告业务发出异常报告,并且利用操作调度业务实时触发自主处理指令序列,将在轨异常及时处理。

为保证空间站在轨运行安全,针对在轨重大故障的快速应对需求,数管软件实现了典型故障的自主处置。软件基于PUS协议实现,该功能包括信息监测子模块、知识库管理子模块、异常处置子模块、信息反馈子模块,如图5所示。

图5 自主故障处理模块组成

基于PUS协议实现的这些监视规则、事件报告、操作指令、以及事件与指令关联关系均支持通用化方式的在轨修改,整套机制具有较强的灵活性和通用性,其中知识管理子模块采用已有的软件构件实现,上层应用只需要调用构件函数接口即可。该设计已应用于在轨单母线掉电自主诊断、关键单机运行异常诊断等功能,后续随着空间站长期运行的需求,可以在轨增加新的诊断策略,并实现灵活的配置。不仅局限于此,该设计也可以在各类航天器上进行推广,具有非常好的扩展性。

4 应用与验证情况

空间站数管分系统核心处理单元软件已按照本文研究的实现方法完成了数据管理软件的设计、开发工作,软件运行的硬件平台采用BM3803处理器,运行主频100 MHz,配置1 Mbyte的EEPROM存储器、8 Mbyte SRAM存储器。该软件按照在轨任务的需求,实现了空间站核心舱的总线网络管理、遥测组织下行、飞行程序管理、自主故障管理,并完成了在轨飞行应用。

软件实现的主要指标如表3所示。

表3 核心舱数管软件主要指标

5 结束语

随着空间站核心舱成功在轨飞行,我国将持续建造空间站组合体,并长期在轨运营,用于后续各项空间科学任务的开展,数管软件可持续支持单舱、组合体以及后续扩展舱段的运行需求,软件在实现系统高可靠性的前提下,通过合理的分层结构划分并应用大量通用软件构件,采用可扩展的文件系统和PUS协议支持的业务类型,可方便地实现功能扩充,为未来空间站在轨进一步扩展提供了便利。

猜你喜欢
遥测空间站指令
天壤之别的空间站内行走和太空行走
军事文摘(2024年6期)2024-02-29 10:00:22
听我指令:大催眠术
空间站为什么不会掉下来
首个第三代空间站——“和平号”空间站
军事文摘(2022年18期)2022-10-14 01:34:16
自适应模糊PID控制的遥测方舱温度调节方法
电子制作(2019年11期)2019-07-04 00:34:40
ARINC661显控指令快速验证方法
测控技术(2018年5期)2018-12-09 09:04:26
LED照明产品欧盟ErP指令要求解读
电子测试(2018年18期)2018-11-14 02:30:34
某小型无人机遥测软件设计
电子测试(2018年13期)2018-09-26 03:30:00
浅谈如何提高遥测状态估计合格率
空间站夺宝