运载火箭飞行控制软件的多任务设计方法
2023-07-05许传明安占新王晓玲
许传明,邹 军,安占新,王晓玲
北京航天自动控制研究所,北京 100854
0 引言
目前,新一代运载火箭控制系统架构已经完成了电气设备的数字化升级,箭载计算机的运算处理能力也大幅提高,实现了模拟控制向数字控制的跨越式进步。火箭控制系统形成了“箭载计算机+控制器”的新型分布式三冗余数字控制架构,各电气设备、传感器通过1553B总线、422总线以及485总线等数字总线实现了全数字通信与控制,提升了控制系统的可靠性与健康监测能力[1-4]。箭载计算机作为运载火箭的大脑,运行的飞行控制软件承担了箭地指令通信、弹道参数装订、设备状态监测、飞行过程控制、数据采集处理等功能。该软件经历了由原来相对简单的无操作系统设计到基于嵌入式实时操作系统的设计,通过合理的架构设计、设备接口封装、任务模块划分、调度机制安排、冗余决策设计,可以有效地适应新一代运载火箭数字设备多、信息数据量大、智能故障检测与重构的工程应用需求。
本文依据新一代中型运载火箭控制系统的三冗余电气架构,设计的飞行控制软件包括了底层、中间层和应用层的3层架构:底层采用可编程逻辑器件编程,自主承担一部分接口通信、数据同步交换的功能,减轻应用层的处理压力;中间层采用经过优化设计的嵌入式实时操作系统,承担任务调度、中断管理、I/O管理等核心功能,将面向硬件的访问均按照统一I/O接口进行管理,提高系统的可维护性、安全性[5];应用层通过合理划分飞行控制软件多个任务,设计各任务的调度策略,从而最大化提高CPU利用率,软件中的任务功能相对独立,功能模块满足“高内聚、低耦合”原则,降低软件逻辑功能复杂度,使软件具有较好的可扩展性和移植性。本文提出的多任务设计方法可以对中断事件产生可预期的实时响应,灵活地调度系统资源,实现了运载火箭三冗余CPU多任务运算节拍一致、数据管理高效、运行稳定可靠的目标。
1 飞行控制软件的多任务设计
火箭控制系统电气架构由箭载计算机(简称“箭机”)、时序控制器(多个)、1553B总线、惯性测量组合(简称“惯组”)、速率陀螺、伺服控制器、地面测发控系统等组成。箭载计算机的3个冗余CPU中运行完全相同的飞行控制软件,与上述电气设备通信实现数据采集、指令传输,完成飞行控制的功能。飞行控制软件架构以及功能任务模块与各电气设备连接关系如图1所示。
图1 飞行控制软件系统架构
根据飞行控制软件功能点的内聚程度、工作时段、实时性要求、安全关键等级对功能进行归类,将功能耦合度高、关联密切的功能在同一个任务中实现。应用层完成对中间层硬件支持模块的初始化后,调用中间层的任务管理模块任务创建接口,按照任务优先级由高到低依次创建5个任务,包括精确关机任务、飞行控制任务、数据管理任务、箭地通信任务和流程控制任务,任务情况见表1所示。
表1 飞行控制软件的任务列表
流程控制任务在飞行控制软件入口创建后首先执行,其优先级最低,可被其他高优先级任务抢占,主要完成系统初始化、设备注册、参数装订和发射前自检等流程控制。
精确关机任务在等待获取1ms定时中断释放的信号量时处于挂起状态,获得信号量即满足抢占调度执行条件,用于飞行过程精确制导关机的指令发送。
飞行控制任务在获取其对应的信号量时任务可抢占执行,等待信号量时处于挂起状态。飞行控制任务是火箭飞行的核心关键任务,调用3个功能模块:综合控制模块完成与各电气设备的指令通信、数据采集;制导控制模块完成惯性导航计算、关机计算、导引计算及组合导航修正计算,并发送姿态角偏差、导引信号至姿态控制模块;姿态控制模块完成速率陀螺数据采样、校正网络计算、姿态控制指令计算,并将姿态控制指令发送至综合控制模块。
数据管理任务在飞行控制任务每控制周期驱动释放信号量后调度执行,完成箭上电气设备1553B总线站点遥测数据采集、串口数据转换遥测数据、速率陀螺数据转遥测数据等数据管理功能。数据管理任务作为飞行控制软件与测量遥测系统的数据传递接口,实现对传感器原始数据、时序输出、储箱增压、伺服工况等状态的监测,同时遥测输出飞行控制任务实时计算的箭体姿态、伺服指令、喷管指令、导航参数、惯组冗余信息等关键数据。
箭地通讯任务在箭地通信中断驱动释放信号量后调度执行,等待信号量时处于挂起状态。发射前,运载火箭接收地面测发控系统发送的邮箱指令,执行箭地通讯任务,完成相应的点名自检、开中断、时间同步、数据装订、姿态初始化计算等测试流程。
本文设计的飞行控制软件任务创建及调用关系如图2所示。箭机上电后首先执行操作系统入口调用,完成处理器初始化、操作系统内核初始化,并跳转到飞行控制软件系统入口执行。飞行控制软件系统按照任务优先级由高到低依次完成各任务的创建,以及相应任务信号量的创建。信号量初始值为空,用于任务间同步。在任务中调用信号量申请接口获取各自信号量,由于信号量为空,任务均被挂起,直到中断信号产生,在中断服务程序中调用信号量接口函数释放相应信号量,任务恢复执行;任务在20 ms中断、1 ms中断、箭地通信中断的驱动下,循环执行并根据优先级进行抢占调度;所述飞行控制任务主要调用综合控制模块、制导控制模块和姿态控制模块,由20 ms中断驱动周期执行;数据管理任务由飞行控制任务驱动周期执行;精确关机控制任务由1 ms中断驱动,实现火箭精确入轨关机;箭地通信任务完成接收地面测发控系统测试指令数据、解析及处理,由箭地通信中断驱动,循环执行;流程控制任务完成系统初始化、设备注册、诸元装订和射前自检的流程控制,流程控制任务创建后首先执行。
图2 飞行控制软件的任务功能与调度关系
2 飞行控制任务的三冗余一致性运算设计
飞行控制任务承担火箭飞行过程中的弹道导引计算、姿态稳定以及发动机关机等控制功能,其在箭机三CPU中的一致性运算是火箭三冗余电气设备工作可靠、发挥冗余作用的关键[6-8]。该一致性运算体现为飞行控制运算的数值结果一致和运算节拍一致,即在相同的控制时间点输出可以有效三取二的计算结果。本文为飞行控制任务设计的冗余一致性运算方法如下:
1)三CPU运行的飞行控制任务采用相同中断源调度执行。设计相同的触发脉冲周期信号作为三CPU控制板的外部中断源,中断函数释放飞行控制任务调度执行所需信号量后,任务管理模块根据信号量和优先级调度执行飞行控制任务。
2)三CPU运行的飞行控制任务交互共享采样数据。在箭机的三CPU控制板之间设计内部FIFO交互接口,飞行控制任务调度执行后,先录取本控制周期的输入数据、I/O信号;然后,将录取的数据发送给另两个CPU控制板;最后,读取另两个CPU控制板发送来的数据和信号,三CPU使用交互共享一致的数据源作为运算的输入。
3)设计基于同步陷阱的飞行控制任务指令级同步方法。飞行控制任务在使用FIFO交互采用数据时,写入FIFO数据与读取FIFO数据之间设计同步陷阱环节。三CPU在同步陷阱环节完成三机或者两机的指令级同步。
三个处理器指令级同步过程为:CPU1落入同步陷阱将同步信号发送至CPU2/3,并无限制地等CPU2/3落入同步陷阱的信号,当CPU2落入同步陷阱发送信号后,则CPU1/2在同步陷阱环节完成同步,CPU1/2按照超时时间T等待CPU3落入同步陷阱的同步信号,如果CPU3在超时时间T内落入同步陷阱,则三机同步成功,形成三个单机同步运行的模式;否则已经同步上的CPU1/2在超时T后不再等待CPU3,继续运行程序[9]。图3所示为三机指令级同步示意。
图3 控制任务指令级同步过程
通过上述设计,运行于箭机三CPU的飞行控制任务可以实现控制运算的输入数据一致、运算节拍一致,在一度故障情况下仍可通过三取二冗余运算满足火箭飞行的可靠性。
3 多任务共用临界资源的管理设计
飞行控制软件中各任务使用的资源有重叠部分,本文将多个任务都会使用的设备资源定义为临界资源。临界资源已经被其它任务占用,高优先级任务抢占调度执行后需要使用该临界资源时,只能处于挂起等待状态,直至该临界资源释放后高优先级的任务再运行。1553B总线作为一种命令/响应式分时复用数据总线设备,飞行控制任务需要使用其录取惯组数据作为本控制周期的计算输入,而数据管理任务需要使用其录取箭上各电气设备遥测数据以记录设备工作状态。一个任务占用1553B总线传输数据时,其它任务不能使用该资源而处于等待状态,直至传输完成释放总线[10-11]。本文将1553B总线设备定义为临界资源,在软件中为该临界资源设置使用标志,指示其处于“占用”或“空闲”状态。只有处于空闲状态,才允许任务使用该资源,并将标志更新为“占用”状态。
为保证飞行控制任务不因临界资源被占用而处于挂起状态,可以按触发周期正常调度执行,并且完成三CPU的冗余同步运算,设计1553B总线使用的约束条件如下:
1)飞行控制任务运行结束时,释放数据管理任务的就绪信号量,任务管理模块再调度执行数据管理任务。控制周期中两个任务依次顺序执行,分时使用临界资源。
2)飞行控制任务开始调度执行时,记录系统时间T1;数据管理任务释放总线临界资源时,记录系统时间T2。本控制周期对应的临界资源占用时间段长度为△T=T2-T1。数据管理任务通过合理优化设计,先集中使用1553B总线处理数据,再处理各串口数据,使其占用1553B总线临界资源时间及早释放。设计控制周期内临界资源占用的指标约束:△T≤16ms。保证数据管理任务对临界资源的占用不会影响下一个控制周期飞行控制任务的调度执行。图4为控制周期内临界资源占用时间示意,T1至T2时间段内为临界资源占用时间段。
图4 控制周期内1553B总线临界资源占用时间
4 多任务设计方法的验证
本文提出的多任务设计方法已经在四种构型的新一代中型运载火箭飞行试验中得以应用验证,火箭以较高精度将卫星送入预定轨道。
图5所示为根据飞行遥测数据生成的任务调度关系。在火箭飞行过程中,嵌入式操作系统响应20 ms中断事件实时调度执行高优先级的飞行控制任务,飞行控制任务完成传感器数据采集、制导运算、姿态控制和指令控制输出等功能。数据管理任务在采集推力调节数据时运行时间较长,会不连续地超出20 ms控制周期的情况,但在飞行控制任务就绪时数据管理任务被挂起等待,此时1553B总线临界资源在控制周期内占用时间为15.8 ms,满足临界资源占用的指标约束要求。飞行控制任务完成后,数据管理任务得以继续完成上周期未完成的数据处理工作。相比于不使用操作系统基于无限循环的设计方法需要预留固定20%的安全余量,基于实时操作系统的多任务设计方法显著提高了CPU 的使用效率。
图5 任务抢占调度运行过程
表2所示为模拟飞行状态二级发动机关机时三冗余CPU计算的火箭速度和位置,3个 CPU 计算的导航速度、位置、关机时间数据对比一致,可以验证3个 CPU 在传感器数据录取、数据交互、冗余计算方面表现完全同步,实现了冗余控制机制。
表2 火箭模拟飞行时二级关机的速度和位置
5 结论
根据新一代运载火箭三冗余电气架构特点和飞行控制要求,提出了基于嵌入式实时操作系统的飞行控制软件多任务设计方法。本方法设计的多任务功能划分合理,调度执行策略清晰,提高了CPU使用率,具有良好的移植、裁剪能力,已在四种构型的新一代中型运载火箭飞行试验中成功应用,并且满足火箭数字化控制的可靠性要求。