4. 看门狗在飞行控制计算机中的部署
飞行控制计算机(FCC)中的看门狗并不是一个孤立的定时器,而是一套与任务调度、CPU负载、线程心跳和飞行阶段深度耦合的监控体系。它的核心目标不是“发现死机”,而是在飞控系统仍处于可控状态时,尽早识别调度失序、算力饱和或关键线程停滞,并在复位前保留足够的故障证据,避免复位本身成为新的风险源。
任务调度监控:从“喂狗”到“调度健康度”
在FCC中,看门狗通常由独立的监控任务或硬件看门狗定时器(WDT)实现。最基础的机制是:监控任务按固定周期检查各关键任务的“调度时间戳”,若某个任务在预期周期内未更新,则判定为调度超时。例如,某飞控任务周期为10 ms,允许抖动为±2 ms,则监控窗口可设为14 ms;若连续3个周期未更新,则触发一级告警。
更有效的做法是将看门狗与调度器结合,监控“任务执行时间”和“任务释放到完成的时间”。假设姿态控制任务周期为5 ms,最坏执行时间为1.8 ms,则其截止时间为5 ms。若某次执行时间超过4 ms,即使未完全超时,也说明CPU负载或中断延迟异常,应记录并降级。这种“软看门狗”比单纯喂狗更能反映系统真实健康度。
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,超时仅记录不触发复位。
心跳实现上,每个线程在完成关键计算后更新一个递增计数器或时间戳。监控任务读取后与上次值比较,若未变化则判定为停滞。为避免“假心跳”,心跳更新点应放在关键计算之后,而不是线程入口。
复位策略:分级复位与故障快照
复位策略必须分级,不能“一超时就复位”。典型策略如下:
- 一级复位:关键线程连续3个周期无心跳,立即触发硬件看门狗复位,复位时间通常小于50 ms;
- 二级复位:CPU负载持续红色超过100 ms,先冻结非关键任务,若200 ms内未恢复则软复位;
- 三级处理:非关键线程超时,仅记录日志并尝试重启该线程,不触发系统复位。
复位前必须保存故障快照,包括:故障类型、发生时刻、任务状态表、CPU负载历史、心跳计数器值、当前飞行阶段。这些数据写入非易失存储器,复位后由健康管理任务读取并上报。若复位后同一故障在短时间内重复出现,应禁止再次自动复位,转入余度切换或安全模式。
飞行阶段约束:不同阶段不同策略
飞行阶段直接决定看门狗的动作边界。地面初始化阶段,系统尚未起飞,允许自动复位并重新初始化;起飞和着陆阶段,飞机处于低高度、低速度,复位可能导致姿态丢失,应优先切换余度计算机,而不是直接复位主计算机;巡航阶段,飞行状态稳定,可允许降级运行并记录故障,待条件允许再复位;机动和进近阶段,飞控算力需求高,应禁止非必要复位,仅对一级关键故障执行复位。
实现上,飞行阶段可由飞行管理计算机通过总线广播,FCC的看门狗监控任务读取当前阶段码,并查表决定复位策略。例如,阶段码0x01表示地面,允许自动复位;0x04表示进近,仅允许余度切换;0x06表示着陆,禁止复位。该表应作为配置数据独立存储,便于不同机型调整。
综上,FCC看门狗部署的关键在于:任务调度监控看“是否按时执行”,CPU负载监测看“是否还有余量”,关键线程心跳看“关键功能是否存活”,复位策略看“怎么复位最安全”,飞行阶段约束看“什么时候允许复位”。五者结合,才能让看门狗从简单的定时器变成飞控系统可信的故障恢复机制。