2.8 LFM与潜在故障——你的看门狗还活着吗?
下午三点,你的SPFM终于算到了99.2%,刚好跨过ASIL D的门槛。你端起咖啡杯准备庆祝,就在这时候,一个念头像电流一样击中了你:
“等等。那个外部看门狗芯片,它在我的FMEDA表里被标记为什么呢?”
你快速翻到那一行。看门狗芯片的总失效率λ_WDG = 15 FIT。如果它失效了(比如内部振荡器停振),而主MCU恰恰在那段时间运行正常:会发生什么?什么都没发生。 系统照常工作,没有告警,没有异常,一切平静得像深渊。这个失效不会被检测到,因为看门狗本来就是“潜伏的守护者“。它自己不出问题的时候你根本感觉不到它的存在。
然后,一周后的某个下午,主MCU因为电压瞬降导致程序跑飞。它应该被看门狗复位。但看门狗已经死了。两个独立故障:看门狗失效 + MCU跑飞:完美叠加,安全目标瞬时被击穿。
这个看门狗故障,就是潜伏故障(Latent Fault)。你的SPFM完全不会管它。因为SPFM只看“单步致命“的SPF和RF。而潜伏故障是“需要搭档才能致命“的多点故障中的一种。ISO 26262-5:2018为此单独设立了一个度量:LFM(Latent Fault Metric,潜在故障度量)。
你默默把咖啡杯放下,重新打开FMEDA表格。活儿还远远没有干完。
一、潜伏故障:功能安全领域的“无症状携带者“
1.1 精确定义
ISO 26262-5:2018第7.4.3条对潜伏故障(Latent Fault)的分类定义如下:
Latent fault(潜伏故障):一种多点故障,其存在在规定的时间段内既没有被安全机制检测到,也没有被驾驶员感知到。
几个关键词需要拆解:
- “多点故障”(Multiple-Point Fault):它本身单独存在时,不会导致安全目标违背。必须是与其他独立故障组合后才构成威胁。这一属性将它与SPF和RF从定义上区分开。
- “规定的时间段”:多点故障检测间隔(MPFDI, Multiple-Point Fault Detection Interval)。ISO 26262-5要求在设计阶段确定MPFDI,并在LFM计算中体现(Clause 7.4.3.2)。典型的MPFDI是上电自检周期(每次上电)、驾驶循环启动时、或固定时间间隔(如每1小时自检一次)。
- “既没有被安全机制检测到,也没有被驾驶员感知到”:如果安全机制在MPFDI内发现了这个故障,它就变成了“可检测的多点故障“(MPF_D);如果驾驶员自己能发现(比如功能明显异常),它就是“可感知的多点故障“(MPF_P)。只有完全瞒过系统和人的,才叫潜伏故障(MPF_L)。
1.2 潜伏故障的典型场景
你在实际设计中会遇到以下典型的潜伏故障场景:
| 硬件元素 | 潜伏故障模式 | 为什么它“潜伏“ | 需要组合的故障 |
|---|---|---|---|
| 外部看门狗 | 内部振荡器停振 | 主MCU正常运行时根本不需要看门狗“出手“ | 主MCU程序跑飞 |
| 冗余电源监控 | 监控比较器失效 | 主电源正常时,冗余通道不需要“发言“ | 主电源掉电 |
| ECC内存控制器 | 单比特纠错的ECC逻辑故障 | 内存没有bit-flip,ECC逻辑不需要纠错 | 内存发生不可纠正的多比特错误 |
| 安全关断路径MOSFET | 关断路径的驱动晶体管开路 | 正常工况不需要关断,MOSFET不动作 | 出现需要紧急关断的故障 |
| ADC参考电压监控 | 监控比较器阈值漂移 | 参考电压在正常范围内时,监控不会触发 | 参考电压异常漂移,ADC测量失准 |
所有这些场景的共同特征:一个“平时一直在线但从不主动发言“的保护者,自身的失效无人知晓。 这完美对应了医学上的“无症状携带者(Asymptomatic Carrier)“:携带病原体,没有症状,正常生活,却随时可能传染给他人(组合另一个故障)引发重症。
二、LFM公式详解:精确到每一个FIT的潜伏风险
2.1 公式定义
ISO 26262-5:2018 Equation C.8(规范性附录):
$$LFM = 1 - \frac{\sum_{SR,HW}(\lambda_{MPF,L})}{\sum_{SR,HW}(\lambda - \lambda_{SPF} - \lambda_{RF})} = \frac{\sum_{SR,HW}(\lambda_{MPF,DP} + \lambda_S)}{\sum_{SR,HW}(\lambda - \lambda_{SPF} - \lambda_{RF})}$$
这个公式的构造逻辑非常精巧,我们逐项拆解:
分母:Σ_{SR,HW}(λ − λ_SPF − λ_RF)
- 下标 SR,HW 表示只对安全相关硬件元素求和(Safety-Related Hardware)。
- Σ_{SR,HW}(λ − λ_SPF − λ_RF) 等价于 Σ_{SR,HW}(λ_MPF + λ_S)。
- 这是因为对每个安全相关硬件元素,λ = λ_SPF + λ_RF + λ_MPF + λ_S。
- 所以分母恰恰等于 全部多点故障与安全故障的失效率之和。
- 换个角度理解:分母只包含那些“不是单步致命的“故障。SPF和RF已经从分母中排除了,因为LFM不关心它们:SPF和RF由SPFM负责。
- 换个角度理解:分母只包含那些“不是单步致命的“故障。SPF和RF已经从分母中排除了,因为LFM不关心它们:SPF和RF由SPFM负责。
分子中的减数:Σ(λ_MPF,L,即所有潜伏多点故障的失效率之和)
- 这是真正会“潜伏下来等待同伙“的那部分。
- 注意:可检测多点故障(MPF_D)和可感知多点故障(MPF_P)不进入分子,因为它们已经被发现或觉察,不再是“潜伏“的了。
等价公式:Σ(λ_MPF,D + λ_MPF,P + λ_S) / Σ(λ_MPF + λ_S)
- 分子是所有“不会潜伏“的良性成分:被检测到的多点故障、被驾驶员感知的多点故障、以及安全故障。
- 这个视角更直观:在“所有非单点致命故障“中,有多大比例是不可潜伏的?
2.2 LFM与SPFM的对比:为什么LFM的阈值更低?
你可能会困惑:SPFM要求ASIL D达到99%,而LFM对同样的ASIL D只要求90%。差了9个百分点。为什么对“潜伏的看门狗“比对“直接的单点故障“更宽容?
答案有两个层面:
第一,后果不同。 SPF和RF本身就是“一步致命“的:发生即等于安全目标违背,后果是灾难性的。而MPF_L需要“等待另一个独立故障“才能造成违背。这种“条件触发“的性质降低了它在概率论上的瞬时危险性。统计上,两个独立事件的联合概率远低于单个事件。
第二,检测窗口不同。 SPF/RF发生到致灾之间可能只有毫秒级,来不及反应。而MPF_L有机会被MPFDI(多点故障检测间隔)捕捉:比如每次上电自检就能“唤醒“一批潜伏故障。这给了设计师一个额外的“安全网“。
所以LFM的目标阈值比SPFM低一档。这合乎工程直觉。但别掉以轻心:
| ASIL等级 | LFM最低要求 | SPFM最低要求(对比) | 差距 |
|---|---|---|---|
| ASIL B | ≥ 60% | ≥ 90% | 30个百分点 |
| ASIL C | ≥ 80% | ≥ 97% | 17个百分点 |
| ASIL D | ≥ 90% | ≥ 99% | 9个百分点 |
注意一个规律:ASIL等级越高,SPFM-LFM之间的差距越小。ASIL B差30个百分点,到了ASIL D只差9个百分点。这暗示:高ASIL系统中,潜伏故障的威胁被提升到了几乎和单点故障同等的关注程度。 因为系统的复杂度和潜在故障耦合路径随ASIL急剧增长。
三、LFM工作实例:算清楚你的看门狗风险
回到你的转向ECU。FMEDA表格中与安全目标相关的硬件故障分布如下(延续2.7节的例子):
| 故障类型 | 符号 | 数值(FIT) |
|---|---|---|
| 单点故障 | λ_SPF | 2.3 |
| 残余故障 | λ_RF | 1.7 |
| 可检测多点故障 | λ_MPF,D | 18.0 |
| 可感知多点故障 | λ_MPF,P | 2.0 |
| 潜伏多点故障 | λ_MPF,L | 15.0 |
| 安全故障 | λ_S | 61.0 |
| 总失效率 | λ_total | 100.0 |
LFM计算:
第一步:计算分母
分母 = Σ(λ − λ_SPF − λ_RF) = Σ(λ_MPF + λ_S) = 18.0 + 2.0 + 15.0 + 61.0 = 96.0 FIT
第二步:分子中的减数
Σ(λ_MPF,L) = 15.0 FIT(三个看门狗相关硬件元素潜伏故障之和,包括外部看门狗芯片、窗口比较器、复位路径的MOSFET驱动电路)
第三步:代入公式
$$LFM = 1 - \frac{15.0}{96.0} = 1 - 0.15625 = 0.84375 \approx 84.4%$$
84.4%。对照ASIL D要求的≥90%,差了5.6个百分点。LFM未通过。
这意味着你在“非单点致命“的96 FIT失效空间里,有15 FIT的潜伏故障没有被任何手段检测到(包括上电自检、周期性诊断、驾驶员感知)。这15 FIT的潜伏故障就像15个正在睡觉的“内鬼“,随时可能被另一个独立故障激活。
3.1 如何提升LFM:三招对症下药
面对84.4%的LFM,你翻开那15 FIT的潜伏故障明细,开始逐个“清理“:
招数一:增加周期性自检(将MPF_L转化为MPF_D)
你的看门狗芯片现在只是在上电时做一次简单的“踢狗-回读“测试。如果看门狗在上电后运行时失效,它就变成了潜伏。改为**每个驾驶循环(或每1小时)**进行一次完整的看门狗功能自检:故意让看门狗超时,验证它能否正确产生复位。这需要额外的软件逻辑(故障注入触发),但能将看门狗的潜伏故障检测覆盖率从“无检测“提升到“中等覆盖“。
假设看门狗原始λ_MPF,L = 8.0 FIT,增加周期性自检后K_DC,MPF,L提升到90%:
- 剩余潜伏部分 = 8.0 × (1 − 90%) = 0.8 FIT
- 节省 = 8.0 − 0.8 = 7.2 FIT
招数二:增加硬件冗余监控(冗余路径比较)
对于电源监控比较器的潜伏失效,增加第二个独立电压参考源和比较器,并对两个比较器的输出做一致性检查(XOR逻辑)。如果两个电压监控结果不一致,触发告警。这可以将这个元器件的K_DC,MPF,L提升到“高“覆盖(99%),剩余潜伏部分不到0.1 FIT。
招数三:利用驾驶员感知通道(MPF_L转化为MPF_P)
对于某些故障场景,虽然安全机制本身没有捕获,但驾驶员在正常操作中能间接发现异常。例如,转向助力电机的电流传感器如果发生漂移故障但没有触发阈值检测,驾驶员可能在转向手感异常时通过仪表盘告警来间接“感知“。将这类场景合理标记为MPF_P而不是MPF_L,LFM就会上升。
假设你将其中2.5 FIT的潜伏故障重新评估为“可感知“,那么:
新的Σ(λ_MPF,L) = 15.0 − 7.2 − 0.9 − 2.5 = 4.4 FIT
$$LFM_{new} = 1 - \frac{4.4}{96.0} = 1 - 0.0458 = 0.9542 \approx 95.4%$$
95.4%,完全满足ASIL D的≥90%要求。你有充足的裕量通过审核。
四、多点故障检测间隔(MPFDI):LFM的时间维度
LFM的计算有一个隐含的时间假设:MPFDI必须足够短,短到在你认为“可接受“的时间内暴露潜伏故障。 ISO 26262-5:2018 Clause 6.4.8要求在设计阶段定义MPFDI,并在安全案例中说明其合理性。
MPFDI的选择直接影响LFM:不需要改变任何硬件,只需要缩短自检周期,就能提升LFM。但缩短MPFDI也有代价:
- 上电自检时间增加:每次上电都跑一遍完整的自检序列,会延长系统初始化时间;
- 运行中自检对安全功能的干扰:在执行自检期间,安全机制暂时退出。如果把看门狗“假踢“来测试它,那这一刻真正的故障反而不会被响应;
- 软件复杂度增加:自检逻辑本身可能引入新的系统故障。
典型的MPFDI选择策略:
- 低风险系统(ASIL B):每次上电自检 + 每隔几次驾驶循环运行中自检一次,MPFDI可能长达数十小时;
- 中高风险系统(ASIL C/D):每次上电自检 + 每次驾驶循环开始时自检 + 运行中每1-2小时自检,MPFDI通常控制在数小时以内。
五、潜伏故障的诊断覆盖率
类比SPFM中我们讨论过的残余故障诊断覆盖率K_DC,RF,LFM对应的是对潜伏多点故障的诊断覆盖率K_DC,MPF,L:
$$\lambda_{MPF,L} \leq \lambda \times \left(1 - \frac{K_{DC,MPF,L}}{100%}\right)$$
这里的覆盖率等级参照ISO 26262-5 Annex D,同样分为低(60%)、中(90%)、高(99%)三档。但要注意,SPFM和LFM的覆盖率是独立评估的:
一个安全机制可能对残余故障有“高“覆盖率(比如Lockstep CPU核对主MCU的瞬态故障检测达到99%),但对它自己的潜伏故障却只有“低“覆盖率(Lockstep比较器本身的失效在主MCU正常时难以暴露)。这两个K_DC值都必须在FMEDA表格中单独记录。
六、免疫系统映射:潜伏故障是“无症状携带者“
潜伏故障在医学免疫学中的精确对应是无症状携带者(Asymptomatic Carrier)。这个比喻有深刻的对应关系:
| 功能安全概念 | 免疫学对应 | 说明 |
|---|---|---|
| 潜伏故障(MPF_L) | 无症状携带者 | 个体携带病原体但无临床症状,正常社交生活,可传染他人 |
| 安全机制周期性自检 | 定期体检/筛查 | 在无症状阶段发现携带者,实施隔离/治疗 |
| MPFDI(检测间隔) | 体检间隔 | 检测越频繁,携带者被遗漏的时间窗口越短 |
| 可检测多点故障(MPF_D) | 已被筛查发现并隔离的携带者 | 携带者已经从“无症状潜伏“转变为“已被监控“ |
| 可感知多点故障(MPF_P) | 已有轻微症状引起警觉 | 低烧、乏力等非特异性症状促使个体就诊 |
| 组合后导致安全目标违背 | 携带者+免疫受抑者接触 → 重症爆发 | 潜伏结核携带者遇到HIV/AIDS患者 |
| LFM | 人群无症状携带者检出率 | 在全体携带人群中,有多大比例已经被筛查发现 |
| LFM ≥ 90% | 90%的无症状携带者已被建档追踪 | 剩下10%未检出者构成残余社区传播风险 |
这个映射揭示了LFM的深层逻辑:你不可能把所有“潜伏“都检出来(就像公共卫生领域不可能100%筛查无症状携带者),但你必须检出足够多,多到即使最坏情况下残留的潜伏故障与一个独立故障组合触发,其总概率仍低于可接受的风险阈值。
而那个“可接受的风险阈值“的定量度量,就是我们下一节要讨论的PMHF:每小时平均失效概率。
本篇小结
- 潜伏故障(Latent Fault)是多点故障的一种:单独不致命,需与另一个独立故障组合
- LFM = 1 − Σ(λ_MPF,L) / Σ(λ − λ_SPF − λ_RF)
- ASIL B/C/D的LFM目标:≥60% / ≥80% / ≥90%
- 三大提升手段:增加周期性自检、增加硬件冗余监控、善用驾驶员感知
- MPFDI是LFM的时间维度
【下集预告】: SPFM说99%被覆盖了,LFM说95%被检出了,似乎万事大吉。但下一节问一个更根本的问题:所有这些百分比加起来后,你的车每小时发生一次致命失效的概率是多少?ASIL D要求这个数字小于10⁻⁸/h——相当于每11400年出一次错。问题是:你“测“不出这个数字,你只能“算“出来。这一节告诉你算的规则和底气在哪里。