基于模型化配置的星务自主控制软件设计与应用*
2020-07-22宫江雷韩笑冬张金辉杨凯飞
宫江雷,韩笑冬,张金辉,邓 兵,杨凯飞,李 翔
0 引 言
卫星互联网是卫星通信与互联网技术发展到一定程度的产物,也是信息网络从平面化到立体化的转变.以“一网”和“星链”等为代表的星座互联网快速发展掀起了新一代太空热潮,规模越来越大、应用越来越广,随之而来的是对于星座卫星的自主运行管理功能提出了很高的要求.我国国家互联网系统也在设计和验证过程中,随着在轨卫星数量越来越多,地面运控管理的压力随之增大,依赖地面遥控处理的方式难以满足以卫星为“基建”的发展战略需求.同时信息科技的发展必将实现航天的产业化运行,卫星的研制将呈现出:短周期、快响应以及灵活可扩展等特点.因此从卫星高可靠长期自主运行管理的角度,需要卫星系统具备模块化和通用化的设计思路,并且在轨可方便扩展.
郝佳宁等[1]主要针对可复用软件技术研究,提出了星载软件架构的静态结构、动态结构以及可复用构件的运行模式,BOCCHINO 等[2]提出了一种开源架构的小卫星软件系统.王君等[3]提出基于SOIS的星载平台软件架构设计探索,主要基于CCSDS航天器在轨接口业务建议书中的信息处理流程,结合有线、无线以及总线在软件外部接口应用的选择,为软件底层架构设计提供了一种解决方案.另外,NASA AMES航天中心提出了SMART(The Small Multi-Purpose Advanced Reconfigurable Technology)架构[4-5],进行低成本可重构卫星的设计以及开发,ESA提出了基于时空划分的模块化综合电子软件架构SAVOIR[6-7],主要关注通用软件执行平台规格和常规应用规格,同时提出层次化和模块化的标准,通过基于软总线架构的体系进行模块的选用和拼接,该架构主要特点是为了满足不同软件功能的增加和复用[8-9].本文主要针对星载计算机软件中的星务自主控制功能业务,对各种业务控制逻辑提出3种通用的控制模型,通过对遥测参数和遥控指令的逻辑组合配置实现业务功能,满足不同功能的星务管理软件设计和开发需求,同时可实现卫星自主管理APP的快速开发和代码生成,同时便于开展在轨维护工作,扩展软件各项功能和性能.
1 卫星星务自主控制
卫星自主生存是指利用自动化、计算机、智能信息处理及现代控制理论等方法,依托智能星载信息系统在卫星上建立独立的智能控制体,精确感知自身运行状态和外部空间环境,自主维持卫星正常工作状态[8].而卫星的星务自主控制主要是区别于卫星载荷管理而言,完成维持卫星能源、温度、姿态、轨道、数据、健康状态监测控制等[9].通过星务自主管理功能的实施,卫星能够在轨道姿态保持稳定的基础上保障平台稳定运行,载荷能够正常工作,是卫星实现自主生存的重要保证.
在星座卫星的管理中,星务管理除常规的自主控制功能之外,还需要具备星间天线捕跟、载荷自主开关机、整星加热器功率调节等功能,从整个星座优化角度提出了多项星务自主控制功能.
卫星星务自主控制功能依托于星载计算机完成相关功能任务,当前面向多任务运行的计算环境,采用开放式架构的综合电子系统架构,以LVDS总线、CAN总线、485总线以及RS422总线为信息采集和发送的通道,完成各项功能管控.
图1 卫星星务自主管理组成示意图Fig.1 Schematic diagram of satellite house-keeping management
2 星务自主控制模型设计
星务自主控制主要以数据管理为主,其核心关键在于对卫星内部数据信息的处理,当前卫星星载计算处理主要以嵌入式计算机为主,计算机主频一般在100 MHz左右,数据处理能力非常有限,星上算法相对简单[10],因此对于星务自主管理模型的提取主要分为遥控主动控制模型、遥测主动控制模型以及数据融合交互控制模型.
2.1 遥控主动控制模型
遥控主动控制模型主要包括按照时间基准发送指令或更改相关状态设置,以指令驱动为主,在规定的时刻完成规定的任务.例如在起飞后30 S内数据采集仪关机、在规定时刻GNSS开机、在某段时间内载荷产品开机等等.其核心逻辑模型如表1所示.
表1 遥控主动控制模型Tab.1 Model of remote command active control
2.2 遥测主动控制模型
遥测主动控制模型主要是监控参数的值是否与预置的数值相等或满足预置参数范围,当参数满足条件时,发送指令或更改状态设置,例如基于热敏电阻采集的温度参数与软件装订的上下限阈值进行比较,当采集温度高于上限阈值,则发送断开指令,当采集温度低于下限阈值,则发送接通指令.其核心逻辑模型如表2所示.
表2 遥测主动控制模型Tab.2 Model of telemetry active control
2.3 数据融合交互控制模型
数据融合交互控制模型主要是针对参数满足条件后,进行事件处理,处理过程中又需要进行参数多次判别和指令处理,在其中形成循环,对于相对复杂的管理任务,需要指令和参数之间交互频繁,即判断参数满足条件后,进行处理流程,处理过程中需要继续判断参数,再进行处理.其中核心逻辑模型如表3所示.
表3 数据融合交互控制模型Tab.3 Model of data fusion interactive control
3 自主控制软件系统设计
基于上述3种模型,通过建立自主软件通用化架构实现自主管理软件的快速开发和组装测试.自主控制软件系统框架主要包括3部分:数据装订子模块、数据交互子模块以及逻辑执行组合子模块.其中逻辑执行组合子模块是核心功能,基于3种模型实现自主控制.
图2 主控制软件系统设计Fig.2 Design of autonomous control software system
逻辑执行组合子模块是自主软件系统的核心,其主要是通过加载逻辑装订参数后,确定当前软件运行的主要流程,根据装订的具体的操作采取对应的动作步骤.数据装订子模块主要为模型配置装订参数,将参数进行存储.数据交互模块主要处理对内和对外所有的数据交互任务,该模块操作数据的格式主要基于CCSDS标准的遥测包结构和数据指令格式进行读写,并基于总线协议获取总线数据.可兼容CAN、RS485总线、RS422总线、1553B总线、CSB总线等多种格式协议.
3.1 逻辑执行组合子模块
逻辑执行组合子模块主要包括逻辑序列、逻辑动作、逻辑执行子操作三层逻辑模型,其中逻辑序列由多个逻辑动作组成,逻辑动作由多个逻辑执行子操作组成.本文自主管理系统可通过前述三种模型的组合,完成星务自主控制管理逻辑序列抽象化.每个逻辑序列对应一个业务功能.逻辑序列由一系列操作步骤组成,每个步骤即逻辑动作.逻辑动作具有不同的模型,逻辑序列按顺序执行内部基于不同模板的逻辑动作,各个模型主要依据具体软件实现逻辑来实现.当前应用较多的是模型三“事件触发判断-指令动作-事件触发判断”.以该模型为例,“事件触发判断-指令动作-事件触发判断”中每个逻辑动作都包含事件前判断、前判断次数、前判断失败动作、执行动作、动作重试次数、后判断、后判断次数、后判断延时(周期)、后判断失败动作等子操作.
为了表达复杂逻辑,逻辑动作具有嵌套结构,每个逻辑动作可以包含子动作.子动作也是一个逻辑动作.在执行序列时,逻辑动作执行的顺序遵循“成功则继续执行子动作,失败则跳至下一个逻辑动作”的原则.如图3所示,一个逻辑序列只包括逻辑动作1,逻辑动作1包括逻辑动作1.1和逻辑动作1.2,两个逻辑动作之间是并列关系,默认无相应关联关系.逻辑动作1.1包括逻辑动作1.1.1.当执行逻辑动作1.1成功时,继续执行逻辑动作1.1.1,但是如果逻辑动作1.1执行失败则继续执行逻辑动作1.2.
图3 逻辑执行层示意Fig.3 Schematic diagram of logic execution layer
其伪代码实现如下:
1FUNExec_Judge∥逻辑执行判断
2UINT8condition_Array[NUM_MAX]
3UINT8log_Rel_Array[NUM_MAX];
4BOOLis_Conditon_Meet_Array[NUM_MAX];
5reset_Array_UINT(uint8_Addr_Ptr, 0,NUM_OF_FAULTS_IN_CLASS_ONE_MAX- 1,
6uint8_Value_Ptr,ELEMENT_UINT8);∥执行前判断
7if(FALSE==Is_Class_Fault_Id(class_ID,fault_ID))
8 {res=RET_PCS_RECOV_NO_OP;
9returnres; }/** 2.根据阶段完成相应操作*/
10cnt_Upper_limit=fault_Class_Seq[class_ID].fault_List_Ptr[fault_ID].fault_Cnt_Upper_Limit;
11recov_Procedure_Param.cur_Recov_Finish_Flag=CUR_RECOV_FINISH_NO; ∥**<完成标志置位*/
12res=RET_PCS_RECOV_FIRST;
13recov_Procedure_Param.rema_Judge_Cycle=delay_Cycle;
14recov_Procedure_Param.rema_Judge_Num=judge_Num;/* 第一次发送指令的操作*/
15if(TRUE==is_Exec_Cmd) {
16Exec_Recov_Cmd_Seq_Fault(class_ID,fault_ID,
17fault_Class_Seq[class_ID].fault_List_Ptr[fault_ID].recov_Class_Flag);}
18returnres;}
19if(TRUE==is_Confirm_Fault) {/** 判据成立,即事件仍然存在*/
20 ++recov_Procedure_Param.recov_Fail_Con_Primary;
21if
22 (recov_Procedure_Param.recov_Fail_Con_Primary>=cnt_Upper_limit) {/** 事件仍存在且超过失败次数的处理*/
23res=RET_PCS_RECOV_FAIL;/** 标志清零*/
24else{/** 事件仍存在但未超过失败次数处理*/if(TRUE==is_Exec_Cmd) {
25Exec_Recov_Cmd_Seq_Fault(class_ID,fault_ID
26fault_Class_Seq[class_ID].fault_List_Ptr[fault_ID].recov_Class_Flag); ∥**<重发执行相关操作*/}
27res=RET_PCS_RECOV_PROCESS;}}
28elseres=RET_PCS_RECOV_SUCC;}
29returnres;}
在逻辑动作中包括较多判断和操作的步骤,本文称作逻辑子操作.逻辑子操作主要分为两类操作,第一类为判断操作,第二类为执行操作.判断操作主要是条件判断,例如,“事件触发判断-指令动作-事件触发判断”模型中的前判断、后判断都是判断操作.执行操作主要指具体的软件动作,例如,“事件触发判断-指令动作-事件触发判断”模型中的执行动作、前判断失败动作、后判断失败动作等.
3.2 数据交互子模块
数据交互子模块是连接逻辑执行模块和驱动软件 的内部通信模块,该模块主要包括遥测包缓存区、遥测组帧子模块、指令分发子模块.当前卫星内部通过总线结构进行连接,各个单机的主要信息存储在遥测包当中,星载计算机通过总线收集位于各终端的遥测包信息来掌握整星的平台与载荷的运行情况.自主管理软件的遥测包缓存区存储所有卫星单机的遥测包信息,逻辑执行模块执行主要算法时,需要获取下位机数据和更新软件数据时,都通过统一的接口更改遥测包缓存区中的数据.遥测组帧任务主要功能为获取遥测包缓存区数据,并依据CCSDS格式组合成为遥测帧,传输给驱动软件, 之后,通过遥测单机把遥测信息传输至地面.指令分发任务主要是通过对指令内容的解析,对指令发送进行路由.同时,其还具备指令验证比对功能.
3.3 参数装订子模块
参数装订子模块负责软件初始化装订参数的管理.装订参数主要包括遥测参数的位置、发送指令的码字、软件运行所需要的初始参数和软件逻辑装订.对每一种装订参数都有特殊的需求文件格式、软件存储方式、软件访问及修改方式.参数装订主要以数组的方式存储.
4 基于模型化配置的星载FDIR应用验证
卫星自主健康管理技术是指在无地面干预的情况下,卫星根据历史状态、传感器信息和环境等因素,智能评估卫星自身健康状态、适时准确地诊断故障信息并定位原因、部位、类型、程度以及发展趋势,并进行自主决策,采取相应措施对故障进行隔离、补偿、重构与恢复,以降低系统故障风险、保证卫星在轨后长期自主生存,延长卫星的寿命,提高其可靠性.
一般来讲,卫星具备120多种故障需要处理,如果针对每个故障独立进行开发处理,则需要的代码规模和开发时间较长.本文针对某卫星星务FDIR软件(自主故障检测、隔离与恢复),采用基于模型化配置的方法进行软件研制,采用装订数据子层、逻辑执行组合子模块以及数据交互模块联合工作,完成了122种故障的处理.
4.1 FDIR模型建立
模型1:加热器自主关机操作
针对某新型材料,在相应加热器接通后计时5min,需要发送加热器断开指令.
表4 加热器自主关机操作模型Tab.4 Operation model of heater automatic shutdown
模型2:S3R模块保护复位实时监控
S3R模块供电隔离二极管发生短路失效时,内部保护电路会关断对地分流MOS管,强制其向母线供电,避免造成母线短路.为防止由于空间单粒子等原因造成保护误动作,可以通过保护复位指令解除该保护状态.
表5 S3R模块保护复位监控操作模型Tab.5 S3R module protection reset monitoring operation model
模型3:蓄电池组充电电流正确性判断及异常处理
蓄电池组充电电流异常判据成立,则发送异常蓄电池组的恒流充电电流设置指令和恒压充电电压设置指令异常处理,指令发送后,对异常蓄电池组充电电流是否正常进行判断:是,则不再进行恒流充电电流设置指令和恒压充电电压设置指令的发送;否,则再次发送充电电流设置指令和充电电压设置指令,并对异常蓄电池组充电电流是否正常继续判断;如指令发送后,指令执行判读仍不正确,则转入电源控制器的主备切换,则生成报警标志遥测.
表6 蓄电池组充电电流异常操作模型Tab.6 Abnormal operation model of batterycharging current
4.2 自主软件架构应用
基于以上3种模型,可从参数装订子模块、逻辑执行组合子模块和数据交互子模块进行分离与结合,完成自主软件架构设计.其中数据装订子模块包括时间、开关指令、状态保护以及加电遥测等,逻辑执行子层通过遥控主动控制、遥测主动控制以及数据融合交互控制模型组合完成各项控制逻辑,从底层硬件和采集设备完成实时数据的获取和指令终端控制.
其中数据装订模块针对FDIR自主控制所需要的指令和遥测参数进行装订,在逻辑子层中选择对应的模型进行勾选,数据交互模块可获取相关的模拟量及总线遥测参数,最终完成软件的配套和开发.
图4 面向FDIR设计的软件架构应用Fig.4 Application of software architecture for FDIR design
4.3 效果比较
针对两个型号5类共122种故障在FDIR自主控制研制模式的不同,从研制效率、代码行数、机时占用、可扩展性、等方面进行比较如表7所示.
表7 针对传统研制模式的效果比较Tab.7 Effect comparison of traditional development mode
基于模型化配置的软件自主管理系统能够适应于快速自主管理系统开发,经过验证,对于健康参数自主下传、能源充放电管理、卫星温度控制等功能均可采用上述模型进行统一管理生成,提高开发效率,降低问题发生概率,最终建立通用化的软件自主系统框架,通过自动化的软件参数装订和自适应的数据交互机制,提升软件系统的标准化和灵活性.
5 结 论
星务自主控制软件是卫星自主生存工作的重要支撑,使卫星或者星座能够长期不依赖于地面管理控制实现自主运行,特别针对测控可见弧段有限带来的管理问题,也解决巨型星座的长期管理问题.
本文通过自主控制框架建立,通过装订参数、逻辑子层以及数据交互模块的架构体系,实现了自主控制软件系统可配置,为软件系统开放应用提供便利,同时提高了卫星星座系统的可扩展性.