3. 故障与失效基础
在安全状态机与故障降级设计中,最先要建立的语言基础,就是分清故障(Fault)、错误(Error)与失效(Failure)。这三个词在日常口语中常被混用,但在可靠性工程与功能安全领域,它们描述的是同一条因果链上的不同阶段:故障是系统内部潜在的异常原因,错误是异常在状态或数据上的具体表现,失效则是系统对外提供的服务不再满足规定要求。理解这条链条,才能准确判断“问题出在哪一层”,并决定降级策略应该在哪里介入。
核心因果链:故障(原因)→ 错误(内部状态异常)→ 失效(对外服务偏离)。一个故障可能长期潜伏而不产生错误;一个错误若被容错机制屏蔽,也可能不升级为失效。安全设计的价值,正是在链条的早期切断传播。
一、三者的定义与边界
故障是系统或部件内部存在的缺陷或异常条件,例如电阻老化、内存位翻转、代码中的边界判断遗漏、传感器标定漂移。故障可以是物理的,也可以是设计或交互层面的。它的关键特征是“可能尚未被观察到”。
错误是故障在系统内部状态、数据或控制流上的体现。例如某个变量被写入了非法值、状态机进入了未定义状态、校验和不再匹配。错误是“已经发生但可能尚未外泄”的异常。
失效是系统在规定的条件下、规定的时间内,无法完成规定的功能,或输出超出允许范围。失效是“外部可感知”的服务偏离,例如刹车指令未响应、通信超时、输出值越界。
三者的关系可以用一句话概括:故障是种子,错误是发芽,失效是破土而出。安全状态机的职责,就是在“发芽”阶段识别错误,并在“破土”之前执行降级。
二、故障分类:从来源到可观测性
为了设计有针对性的降级策略,需要从多个维度对故障分类:
- 按来源:硬件故障(器件损坏、老化、电磁干扰)、软件故障(逻辑缺陷、并发竞争、配置错误)、环境故障(温度、振动、供电波动)、人为故障(误操作、维护遗漏)。
- 按持续时间:永久故障(不可恢复,如断路)、间歇故障(时有时无,如接触不良)、瞬态故障(单次事件,如宇宙射线引起的位翻转)。
- 按可观测性:显性故障(可直接检测,如超压报警)、潜伏故障(无外部症状,如冗余通道中一路已失效但未暴露)。
- 按影响范围:局部故障(单模块)、传播性故障(通过共享资源扩散)、共因故障(同一原因同时影响多个冗余通道)。
设计提示:瞬态故障适合用重试与刷新恢复;间歇故障需要趋势统计与老化预警;潜伏故障必须依靠周期性自检或交叉比对来暴露,否则会在真正需要冗余时才发现“另一路也不可用”。
三、失效模式与影响分析(FMEA)入门
FMEA(Failure Mode and Effects Analysis)是一种自下而上的系统性分析方法:先枚举每个部件或功能可能出现的失效模式,再分析其局部影响、系统影响,并评估严重度、发生度与可检测度,最终确定改进优先级。对于安全状态机,FMEA 的输出直接决定了“哪些失效必须触发降级、降级到哪一级、以及如何验证降级有效”。
一个简化的分析流程如下:
- 确定分析范围与功能边界,画出功能框图。
- 对每个功能或部件列出可能的失效模式。
- 分析每种失效模式的局部影响与最终系统影响。
- 评估严重度 S、发生度 O、可检测度 D,计算风险优先数 RPN = S × O × D。
- 针对高 RPN 项制定检测、容错或降级措施,并重新评估。
下面是一个针对“温度采集通道”的简化 FMEA 片段,展示了从失效模式到降级动作的映射:
| 部件/功能 | 失效模式 | 局部影响 | 系统影响 | S | O | D | RPN | 降级动作 |
|---|---|---|---|---|---|---|---|---|
| 温度传感器 | 输出恒定为 0 | 采集值异常 | 误判低温,可能过加热 | 8 | 3 | 2 | 48 | 切换备用传感器,否则进入安全停机 |
| ADC 采样 | 偶发跳变 | 单点数据毛刺 | 控制抖动 | 5 | 6 | 3 | 90 | 中值滤波 + 连续 N 次确认 |
| 通信总线 | 超时无响应 | 数据缺失 | 状态机无法更新 | 7 | 4 | 2 | 56 | 重试 3 次后降级为本地保守控制 |
| 看门狗 | 未及时喂狗 | 复位 | 短暂失控 | 9 | 2 | 1 | 18 | 复位后进入安全初始状态 |
四、案例:从故障到失效的完整链路
假设某电机控制系统中,一个电流传感器的焊点出现间歇性接触不良。这个故障在初期表现为采样值偶尔跳变,属于错误;如果软件没有滤波和范围校验,错误值会进入控制环路,导致电流环输出异常,最终电机转矩波动超出允许范围,形成失效。若状态机在检测到连续多次采样越界时立即切换到开环保守模式并报警,则错误被拦截,失效未发生。
这个案例说明:故障不可避免,但失效可以通过检测与降级来避免。安全状态机的设计目标不是消灭所有故障,而是在错误阶段建立可观测性与可控性。
常见误区:把“故障”直接等同于“失效”,导致只在最终输出端做保护,而忽略了内部状态的异常积累;或者只关注永久故障,忽视瞬态与间歇故障的统计特征,造成误报或漏报。另一个误区是 FMEA 只做一次就束之高阁,未随设计变更更新,导致降级策略与实际失效模式脱节。
五、复盘:如何把三概念落到状态机设计
在实际工程中,可以按以下清单检查设计是否覆盖了故障—错误—失效链条:
- 是否为每个关键功能识别了至少一种故障来源与失效模式?
- 是否在错误阶段设置了可检测的判据(范围、速率、一致性、超时)?
- 检测到错误后,是否有明确的状态迁移与降级等级?
- 降级后的状态是否仍能保证安全,且可被验证?
- FMEA 中的高 RPN 项是否都有对应的检测或容错措施?
下面的 SVG 图展示了故障、错误、失效三阶段与安全状态机降级介入点的关系:故障在部件内部产生,错误在系统状态中显现,失效在对外服务上暴露;状态机的检测与降级动作应在错误阶段介入,从而阻断向失效的传播。
把这张图记在心里,后续设计安全状态机时就不会只盯着“最终输出对不对”,而会主动追问:故障在哪里?错误如何被检测?降级动作是否在失效之前生效?这三个问题,正是故障与失效基础为整个课程打下的第一块地基。