4. 实时软件架构风格与模式
航天器GNC(制导、导航与控制)实时软件同时承受三类约束:毫秒级控制周期的硬实时性、敏感器—估计器—控制器—执行机构之间严格的数据依赖,以及故障模式下必须可预测降级的安全性要求。架构风格与设计模式的选择,本质上是在“可预测性、可演化性、可复用性、可验证性”之间做权衡。本节不逐一罗列定义,而是把五种风格放到GNC的真实数据链与控制流中,分析它们各自适合承担哪一段职责、在什么条件下会失效。
五种风格在GNC数据链上的定位
先建立一条典型的GNC闭环数据链作为参照:惯性测量单元(IMU)以400 Hz输出角速度与比力 → 星敏感器/太阳敏感器以1~10 Hz输出姿态观测 → 导航滤波器(如扩展卡尔曼滤波EKF)融合得到位置、速度、姿态 → 制导律计算期望加速度或姿态指令 → 控制律(如PD+前馈或LQR)生成力矩指令 → 反作用飞轮或推力器执行 → 动力学响应回到IMU。这条链上,不同环节对架构风格的诉求并不相同。
分层架构最适合组织“同一数据链上的不同抽象层级”。典型划分为:硬件抽象层(寄存器、总线驱动、DMA)、设备服务层(IMU/星敏/飞轮设备管理)、领域功能层(导航、制导、控制算法)、任务调度层(周期任务、模式管理)。分层的价值在于依赖单向:上层调用下层接口,下层不感知上层。GNC中一个常见做法是把“控制周期1 ms”与“导航更新10 ms”“模式切换100 ms”放在不同层,用接口隔离时间尺度差异。风险是层数过多会引入调用链延迟,若每层都做数据拷贝,1 ms周期内可能累积数十微秒开销,因此GNC分层通常要求层间传递引用或共享内存句柄,而非值拷贝。
管道过滤器适合“无状态、可组合的信号处理链”。例如IMU原始脉冲 → 标度因数与零偏补偿 → 温度补偿 → 低通滤波 → 坐标变换 → 输出角速度。每个过滤器独立、可单独测试、可替换,天然支持复用与单元验证。但GNC的导航滤波器是有状态的(协方差矩阵、历史观测),控制律也依赖上一周期输出,因此管道过滤器只适合链路前段,不适合直接套在EKF或闭环控制上。若强行把有状态环节做成过滤器,会出现状态归属不清、周期抖动放大。
黑板模式适合“多源异步、机会式推理”的场景。GNC中的典型应用是故障检测与重构(FDR):多个诊断源(残差监测、限幅检测、星敏有效性、陀螺一致性)各自向黑板写入假设与置信度,一个推理控制器在满足条件时触发重构策略。黑板解耦了知识源,新增诊断规则不必改动既有模块。代价是触发时机不确定,难以给出最坏执行时间(WCET)上界,因此黑板通常运行在非关键周期或作为监控层,不直接参与1 ms控制内环。
发布订阅适合“一对多、松耦合的数据分发”。在GNC中,姿态估计结果需要同时被制导、控制、遥测、健康管理订阅;飞轮转速需要被控制与故障诊断订阅。发布订阅把“谁产生数据”与“谁消费数据”解耦,支持动态增删订阅者。但必须明确:松耦合不等于弱实时。若事件总线采用动态内存分配或不确定的订阅者遍历顺序,会破坏可预测性。工程上常用静态订阅表+周期发布,把“发布”绑定到固定任务节拍,从而在保留解耦优点的同时约束时序。
时间触发架构(TTA)适合“安全关键、强确定性”的GNC主控。其核心是全局时间基准与静态调度表:每个任务在预分配的时隙内执行,通信也按时间片进行,任意时刻谁在运行、谁在发送都是离线确定的。对于1 ms控制周期,TTA可以给出可证明的端到端延迟上界,并天然支持冗余同步与故障静默。代价是灵活性低:新增功能需要重新设计调度表并重新验证,不适合需求频繁变化的早期型号。
适用性判断:从“风格能做什么”到“GNC需要什么”
把五种风格放到同一张判断表上,关键不是比较优劣,而是看它们与GNC约束的匹配度。硬实时内环要求可预测的WCET与确定的执行顺序,TTA和分层架构(配合静态优先级调度)最匹配;信号前段要求可测试与可复用,管道过滤器最匹配;多消费者数据分发要求解耦,发布订阅最匹配;故障诊断要求多源推理与可扩展,黑板模式最匹配。反过来,若把黑板模式放进1 ms控制内环,推理触发的不确定性会直接破坏周期;若把管道过滤器套在EKF上,状态管理会变得混乱;若发布订阅使用动态内存,实时性无法保证。
| 架构风格 | GNC典型适用区段 | 关键优势 | 主要风险 |
|---|---|---|---|
| 分层架构 | 硬件抽象→设备服务→导航/制导/控制→调度 | 依赖单向、时间尺度隔离、易分工 | 层间拷贝累积延迟,层数需克制 |
| 管道过滤器 | IMU补偿、滤波、坐标变换等无状态前段 | 可单测、可替换、可复用 | 不适用于有状态EKF与闭环控制 |
| 黑板模式 | FDR监控层、多源诊断与重构决策 | 知识源解耦、易扩展新规则 | 触发不确定,WCET难上界 |
| 发布订阅 | 姿态/转速/健康状态的一对多分发 | 生产者消费者解耦、支持动态订阅 | 动态内存与遍历顺序破坏可预测性 |
| 时间触发架构 | 1 ms控制内环、安全关键主控与通信 | 确定性调度、可证明延迟上界、冗余同步 | 灵活性低,变更需重新验证调度表 |
组合使用:GNC实时软件的典型架构剖面
实际GNC软件很少只用一种风格。一个可参考的组合剖面是:底层用分层架构组织硬件抽象与设备服务;IMU前段用管道过滤器实现补偿与滤波;导航滤波器与制导控制律作为有状态领域组件,运行在TTA静态调度表的固定时隙内;姿态、转速、健康状态通过发布订阅分发给遥测与健康管理;FDR推理放在黑板模式中,运行在100 ms监控周期,不占用1 ms内环时隙。这样,硬实时路径由TTA保证确定性,非关键路径由黑板与发布订阅获得灵活性,信号前段由管道过滤器获得可测试性。
一个可操作的适用性检查清单
在具体型号上选择风格时,可以按以下问题逐项判断,避免凭直觉选型:
- 该环节是否有状态?有状态(EKF、积分器、控制律历史)优先考虑分层内的领域组件或TTA任务,不用管道过滤器。
- 该环节是否在1 ms内环?是则要求WCET可上界、无动态内存、无不确定阻塞,优先TTA或静态优先级调度。
- 该环节是否一对多分发?是则用发布订阅,但订阅表应静态化,发布绑定固定节拍。
- 该环节是否需要多源推理与频繁扩展?是则用黑板,但应放在监控层,并明确其最坏执行时间与触发条件。
- 该环节是否可独立测试与替换?是则用管道过滤器,接口保持无状态、纯函数式。
以某型对地观测卫星的GNC软件为例(示例参数,非实测):控制周期1 ms,导航更新10 ms,FDR监控100 ms。若把FDR推理误放入1 ms任务,单次推理若耗时0.3 ms,则控制周期余量从约0.7 ms降到0.4 ms,且推理触发时刻不确定,会导致控制输出抖动。把FDR移到100 ms监控周期后,1 ms内环的WCET恢复稳定,重构指令通过发布订阅在下一个监控节拍生效,端到端重构延迟约100~200 ms,对姿态安全仍可接受。这个例子说明:风格选择不是审美问题,而是直接决定时序余量与故障响应时间。
综上,五种风格在GNC中并非互斥选项,而是分别对应数据链的不同区段与不同确定性等级。选型的核心依据是:该区段是否在硬实时内环、是否有状态、是否需要多消费者分发、是否需要频繁扩展。把这四个问题回答清楚,风格选择就从一个开放的设计题,变成一个可检查、可验证的工程判断。