3. 故障注入方法学与验证流程

故障注入不是“随便改个参数看飞控会不会炸”,而是一套从故障建模到判据闭环的方法学。它的核心目标是:用可控、可复现、可度量的方式,把真实飞行中可能出现的异常“提前搬到试验台上”,观察飞控是否按设计预期做出响应。方法学要回答五个问题:注入什么(故障模型)、在哪里注入(注入层次)、什么时候注入(注入时机)、怎么设计用例(测试用例)、以及如何判定通过或失败(预期结果与判据)。

一、故障模型:把“异常”变成可注入的数学对象

故障模型是对真实故障的抽象描述,它必须同时具备“物理可解释性”和“注入可实现性”。在飞控领域,常用故障模型可分为四类:

  • 传感器故障:偏置(bias)、增益漂移(scale factor)、噪声增大、卡死(stuck)、饱和、间歇性丢帧、数据跳变。例如陀螺仪偏置从 0.01°/s 突变为 0.5°/s,或加速度计输出被钳位在量程上限。
  • 执行机构故障:舵面卡死、舵机速率限制、舵面效率下降、电机推力损失、桨叶部分失效、作动器延迟增大。例如副翼舵机在 2 s 内从正常响应变为固定偏度 5°。
  • 通信与总线故障:CAN 总线丢帧、延迟抖动、校验错误、总线关闭;遥控链路丢包、延迟、信号衰减。
  • 软件与计算故障:任务超时、内存越界、状态机卡滞、滤波器发散、参数被篡改。

每个故障模型至少需要定义五个要素:故障对象、故障类型、故障幅值、起始时刻、持续时间/演化规律。例如“IMU 俯仰角速度偏置 +0.3°/s,从 t=10 s 开始,持续 5 s,线性斜坡注入”。只有把故障写成这样的结构化描述,后续的注入和判据才有依据。

二、注入层次:从信号到物理的连续谱

注入层次决定了故障“从哪一层进入系统”,也决定了测试的真实性与成本。常见层次从低到高为:

  • 信号层:在传感器原始输出或总线数据上叠加偏置、噪声、丢帧。实现简单,适合早期算法验证。
  • 接口层:在 PWM、CAN、串口等接口上篡改报文或时序。更接近真实链路故障。
  • 组件层:替换或旁路某个传感器/执行机构,注入真实硬件故障。例如用可编程电阻模拟温度传感器开路。
  • 物理层:在舵面、电机、桨叶上施加真实故障,如卡死舵机、切断一路电机。真实性最高,成本与风险也最高。

选择层次的原则是:故障模型在哪里最容易被观测和控制,就在哪里注入。早期用信号层快速迭代,后期用组件层/物理层做置信度确认。同一故障模型可以在不同层次重复注入,用于交叉验证。

三、注入时机:与飞行阶段和状态强绑定

同样的故障,在起飞、巡航、返航、着陆阶段注入,后果完全不同。注入时机必须与飞行阶段、飞行状态、控制模式绑定。例如:

  • 起飞爬升阶段注入空速管堵塞,观察飞控是否及时切换备用空速源或降级到姿态模式。
  • 定高巡航阶段注入气压高度计偏置,观察高度保持回路是否发散、是否触发高度异常告警。
  • 返航阶段注入 GPS 丢星,观察是否切换惯性导航、返航路径是否可控。
  • 着陆阶段注入舵面卡死,观察是否触发复飞或紧急迫降逻辑。

时机设计还要考虑“故障前状态”:注入前系统应处于稳定、可观测的基准状态,否则无法区分故障响应与初始扰动。建议在用例中明确记录注入前的关键状态量,如高度、速度、姿态角、控制模式、剩余电量。

四、测试用例设计:从故障模型到可执行脚本

一个完整的测试用例应包含:用例编号、故障模型、注入层次、注入时机、注入参数、初始条件、观测变量、预期结果、通过/失败判据、恢复条件。下面给出一个可直接参考的用例示例(参数为教学示例,非实测数据):

用例编号:FI-IMU-003
故障模型:俯仰角速度偏置 +0.3°/s,线性斜坡,持续 5 s
注入层次:信号层(IMU 原始数据叠加)
注入时机:定高巡航稳定后 10 s
初始条件:高度 100 m,速度 15 m/s,姿态角 ±2°,控制模式 AUTO
观测变量:俯仰角、俯仰角速度、升降舵输出、高度偏差、告警标志
预期结果:飞控在 0.5 s 内检测到角速度异常,1 s 内切换至姿态增稳,
          高度偏差不超过 ±5 m,无失控告警
通过判据:高度偏差 ≤ ±5 m 且未触发失控告警且最终恢复定高
失败判据:高度偏差 > ±5 m 或触发失控告警或 5 s 内未恢复
恢复条件:故障移除后 3 s 内回到定高模式

用例设计的关键是“可观测、可判定、可复现”。观测变量必须能从日志或遥测中直接读取;判据必须是数值化、无歧义的;注入参数必须精确到时刻和幅值,确保不同人员执行结果一致。

五、预期结果定义与通过/失败判据

预期结果不是“飞控应该没事”,而是“飞控应该在多长时间内、做出什么具体动作、把哪些状态量控制在什么范围内”。判据通常分为三层:

  • 安全性判据:不失控、不坠机、不触发灾难性故障。例如姿态角不超过 ±30°,高度损失不超过 20 m。
  • 功能性判据:故障检测、隔离、重构、降级是否按设计执行。例如 1 s 内切换备份传感器,2 s 内进入降级模式。
  • 性能性判据:在故障条件下,控制品质是否仍满足最低要求。例如高度偏差 ≤ ±5 m,航向偏差 ≤ ±10°。

判据必须与故障模型和注入时机一一对应。同一个故障在不同阶段注入,判据可以不同。例如 GPS 丢星在巡航阶段允许 5 s 内切换惯性导航,在着陆阶段则要求 1 s 内切换并触发复飞。

故障注入方法学闭环:从模型到判据 故障模型 传感器偏置/卡死 执行机构卡死/效率下降 总线丢帧/延迟 软件超时/状态卡滞 对象·类型·幅值·时刻·持续 五要素结构化描述 注入层次 信号层(原始数据) 接口层(PWM/CAN) 组件层(硬件旁路) 物理层(真实故障) 注入时机 起飞爬升 定高巡航 返航/盘旋 着陆/复飞 与飞行阶段、控制模式 和故障前状态强绑定 测试用例 用例编号 故障模型+注入参数 初始条件+观测变量 预期结果+判据 恢复条件 可观测·可判定·可复现 通过/失败判据 安全性:不失控/不坠机 功能性:检测/隔离/重构 性能性:偏差/超调/时间 数值化·无歧义·可复现 失败用例反馈修正故障模型与判据,形成迭代闭环

六、从用例到闭环:失败也是有效结果

验证流程不是“跑完用例就结束”,而是“跑完用例后,根据判据决定下一步”。如果用例通过,说明当前故障模型下飞控满足设计预期,可以进入更高层次或更严苛参数的注入;如果用例失败,需要区分是飞控设计缺陷、故障模型不合理、还是判据过严。失败用例应记录完整日志、注入参数、观测数据,并反馈到故障模型和判据的修正中。

一个常见的误区是只关注“飞控有没有炸”,而忽略“飞控是否按预期降级”。例如 GPS 丢星后飞控虽然没坠机,但 10 s 后才切换惯性导航,而设计预期是 1 s 内切换,这仍然应判为失败。判据必须严格对齐设计指标,不能因为“结果还能接受”就放宽标准。

实践建议:在试验台上先完成信号层和接口层的全部用例,确认飞控软件逻辑正确后,再进入组件层和物理层。每次注入前保存基准日志,注入后对比关键状态量的时间序列,重点关注“检测时间、切换时间、最大偏差、恢复时间”四个指标。
注意:物理层注入具有真实风险,必须在安全绳、限高、应急切断等保护措施到位的前提下进行。任何注入参数都不得超出飞行器结构限制和试验台安全边界。

总结来说,故障注入方法学的核心是“模型可描述、层次可选择、时机可绑定、用例可执行、判据可量化”。把这五件事做成闭环,飞控的异常场景验证才能从“碰运气”变成“可复现的工程活动”。