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 内切换并触发复飞。
六、从用例到闭环:失败也是有效结果
验证流程不是“跑完用例就结束”,而是“跑完用例后,根据判据决定下一步”。如果用例通过,说明当前故障模型下飞控满足设计预期,可以进入更高层次或更严苛参数的注入;如果用例失败,需要区分是飞控设计缺陷、故障模型不合理、还是判据过严。失败用例应记录完整日志、注入参数、观测数据,并反馈到故障模型和判据的修正中。
一个常见的误区是只关注“飞控有没有炸”,而忽略“飞控是否按预期降级”。例如 GPS 丢星后飞控虽然没坠机,但 10 s 后才切换惯性导航,而设计预期是 1 s 内切换,这仍然应判为失败。判据必须严格对齐设计指标,不能因为“结果还能接受”就放宽标准。
总结来说,故障注入方法学的核心是“模型可描述、层次可选择、时机可绑定、用例可执行、判据可量化”。把这五件事做成闭环,飞控的异常场景验证才能从“碰运气”变成“可复现的工程活动”。