4. 看门狗在飞行控制计算机中的部署

飞行控制计算机(FCC)中的看门狗并不是一个孤立的定时器,而是一套与任务调度、CPU负载、线程心跳和飞行阶段深度耦合的监控体系。它的核心目标不是“发现死机”,而是在飞控系统仍处于可控状态时,尽早识别调度失序、算力饱和或关键线程停滞,并在复位前保留足够的故障证据,避免复位本身成为新的风险源。

任务调度监控:从“喂狗”到“调度健康度”

在FCC中,看门狗通常由独立的监控任务或硬件看门狗定时器(WDT)实现。最基础的机制是:监控任务按固定周期检查各关键任务的“调度时间戳”,若某个任务在预期周期内未更新,则判定为调度超时。例如,某飞控任务周期为10 ms,允许抖动为±2 ms,则监控窗口可设为14 ms;若连续3个周期未更新,则触发一级告警。

更有效的做法是将看门狗与调度器结合,监控“任务执行时间”和“任务释放到完成的时间”。假设姿态控制任务周期为5 ms,最坏执行时间为1.8 ms,则其截止时间为5 ms。若某次执行时间超过4 ms,即使未完全超时,也说明CPU负载或中断延迟异常,应记录并降级。这种“软看门狗”比单纯喂狗更能反映系统真实健康度。

示例:某FCC监控任务每20 ms扫描一次任务表,检查各任务的last_tick与当前tick差值。若差值超过阈值,则将该任务标记为“疑似停滞”,并触发对应等级的处理。

CPU负载监测:算力余量与过载预警

CPU负载监测通常通过空闲任务计数器或周期内累计执行时间实现。设一个调度周期为10 ms,空闲任务累计运行时间为2 ms,则CPU负载约为80%。对于飞控计算机,持续高于75%即应预警,高于90%则必须触发降级或复位。负载监测的关键是区分“瞬时峰值”和“持续过载”:瞬时峰值可由中断或突发计算引起,持续过载则意味着任务集已超出处理器能力。

实际部署中,可将负载分为三级:绿色(<60%)、黄色(60%~85%)、红色(>85%)。黄色时降低非关键任务频率,红色时冻结非关键任务并准备复位。负载监测数据应写入非易失存储器,作为复位后故障分析依据。

关键线程心跳:分层心跳与超时判定

关键线程心跳不是所有线程都“喂狗”,而是按关键度分层。以典型FCC为例:

  • 一级关键线程:姿态控制、导航解算、舵机输出,心跳周期5~10 ms,超时阈值2~3个周期;
  • 二级关键线程:余度管理、故障检测、总线通信,心跳周期20~50 ms,超时阈值3~5个周期;
  • 三级线程:日志记录、健康管理,心跳周期100~500 ms,超时仅记录不触发复位。

心跳实现上,每个线程在完成关键计算后更新一个递增计数器或时间戳。监控任务读取后与上次值比较,若未变化则判定为停滞。为避免“假心跳”,心跳更新点应放在关键计算之后,而不是线程入口。

FCC看门狗部署:监控链与飞行阶段约束 飞行阶段 地面初始化 起飞/爬升 巡航 机动/进近 着陆 地面维护 任务调度监控 • 任务周期与截止时间检查 • 执行时间超限检测 • 调度抖动统计 • 连续超时计数 → 告警 CPU负载监测 • 空闲任务计数 / 周期占用率 • 绿/黄/红三级阈值 • 持续过载判定(>3周期) • 非关键任务降频/冻结 关键线程心跳 • 一级:姿态/导航/舵机 5~10ms • 二级:余度/总线 20~50ms • 三级:日志/健康 100~500ms • 心跳更新点位于关键计算后 故障判定与复位策略决策 一级故障:关键线程停滞 → 立即复位 二级故障:负载持续红色 → 降级后复位 三级故障:非关键超时 → 记录并隔离 复位前保存故障快照至NVM 复位执行:硬件WDT / 软复位 / 余度切换 复位后自检 → 恢复关键任务 → 重新同步 飞行阶段约束:地面阶段允许自动复位;起飞/着陆阶段优先余度切换;巡航阶段可降级运行;机动阶段禁止非必要复位

复位策略:分级复位与故障快照

复位策略必须分级,不能“一超时就复位”。典型策略如下:

  • 一级复位:关键线程连续3个周期无心跳,立即触发硬件看门狗复位,复位时间通常小于50 ms;
  • 二级复位:CPU负载持续红色超过100 ms,先冻结非关键任务,若200 ms内未恢复则软复位;
  • 三级处理:非关键线程超时,仅记录日志并尝试重启该线程,不触发系统复位。

复位前必须保存故障快照,包括:故障类型、发生时刻、任务状态表、CPU负载历史、心跳计数器值、当前飞行阶段。这些数据写入非易失存储器,复位后由健康管理任务读取并上报。若复位后同一故障在短时间内重复出现,应禁止再次自动复位,转入余度切换或安全模式。

飞行阶段约束:不同阶段不同策略

飞行阶段直接决定看门狗的动作边界。地面初始化阶段,系统尚未起飞,允许自动复位并重新初始化;起飞和着陆阶段,飞机处于低高度、低速度,复位可能导致姿态丢失,应优先切换余度计算机,而不是直接复位主计算机;巡航阶段,飞行状态稳定,可允许降级运行并记录故障,待条件允许再复位;机动和进近阶段,飞控算力需求高,应禁止非必要复位,仅对一级关键故障执行复位。

实现上,飞行阶段可由飞行管理计算机通过总线广播,FCC的看门狗监控任务读取当前阶段码,并查表决定复位策略。例如,阶段码0x01表示地面,允许自动复位;0x04表示进近,仅允许余度切换;0x06表示着陆,禁止复位。该表应作为配置数据独立存储,便于不同机型调整。

工程建议:看门狗超时阈值应留有20%~30%余量,避免正常调度抖动触发误复位;同时,复位策略表应经过飞行阶段全覆盖测试,确保每个阶段码都有明确动作。

综上,FCC看门狗部署的关键在于:任务调度监控看“是否按时执行”,CPU负载监测看“是否还有余量”,关键线程心跳看“关键功能是否存活”,复位策略看“怎么复位最安全”,飞行阶段约束看“什么时候允许复位”。五者结合,才能让看门狗从简单的定时器变成飞控系统可信的故障恢复机制。