诊断覆盖率DC:到底在覆盖什么?

各位工程师朋友,咱们今天聊一个核心概念——诊断覆盖率(Diagnostic Coverage,简称DC)。

说实话,我刚入行那会儿,觉得DC就是个百分比数字。90%、99%、99.9%……看着挺唬人。但真正做项目时才发现,这个数字背后藏着不少门道。你算出来的DC,到底能不能代表真实的安全水平?嗯,这就是我们今天要掰扯清楚的事。

一、诊断覆盖率的定义

先给个标准定义:诊断覆盖率DC = 被诊断机制检测到的危险失效数 / 所有可能的危险失效总数

说白了,就是你的安全机制能抓到多少“坏人”。

举个例子:

  • 一个系统有100种可能出问题的方式(危险失效)
  • 你的诊断电路能检测到其中90种
  • 那么DC = 90%

但这里有个坑——不是所有失效都算“危险失效”。安全失效、无影响失效,这些都不计入分母。我在项目中见过有人把安全失效也算进去,结果DC虚高,评审时被专家一顿批。所以,第一步就是分清失效类型。

关键点:DC只针对“危险失效”,别把无关的失效拉进来凑数。

二、如何评估诊断机制的有效性?

评估DC,不是拍脑袋。我习惯用三种方法,咱们一个个说。

方法1:失效模式与影响分析(FMEA)

这是最基础的方法。你把每个元器件的失效模式列出来,然后问自己:
“这个失效,我的诊断电路能检测到吗?”

能,就算检测到;不能,就算漏检。最后统计一下比例。

我个人习惯用表格来管理,比如这样:

元器件 失效模式 危险? 诊断机制 检测到?
电阻R1 开路 电压监测
电容C2 短路
运放U1 输出饱和 看门狗

统计下来,DC = 检测到的危险失效数 / 总危险失效数。

小技巧:做FMEA时,别只盯着单一失效。组合失效也要考虑,虽然概率低,但安全标准里往往要求覆盖。

方法2:故障注入测试

理论分析完了,还得动手验证。故障注入就是故意让系统出问题,看看诊断机制能不能抓到。

我曾经在一个项目中,FMEA算出来DC=99%。结果一故障注入,发现有个失效模式根本检测不到——因为诊断电路和主电路共用了同一个电源,电源一掉,两个一起死。你说尴尬不尴尬?

所以,故障注入是检验DC真实性的试金石

方法3:FMEDA(失效模式、影响与诊断分析)

这是FMEA的升级版。它不光统计数量,还考虑失效率。比如:

  • 失效A:失效率100 FIT,能被检测到
  • 失效B:失效率1 FIT,不能被检测到

按数量算,DC=50%。但按失效率算,DC=100/(100+1)≈99%。哪个更合理?我个人倾向于用失效率加权,因为这才是真实的风险分布。

注意:FMEDA需要准确的失效率数据。别从网上随便扒,要用行业公认的数据源,比如IEC 62380、SN 29500。

三、DC与安全机制的关系

DC不是孤立存在的。它和安全机制是“矛与盾”的关系。

  • 安全机制:你设计的保护措施,比如看门狗、电压监测、CRC校验
  • DC:衡量这些保护措施有多“灵”

你想想看,一个安全机制如果DC很低,那它基本就是个摆设。反过来,DC再高,如果安全机制本身不可靠(比如自己也会失效),那也没用。

所以,评估安全机制时,我通常会问三个问题:

  1. 它能检测到什么?——覆盖哪些失效模式
  2. 它检测不到什么?——剩余风险有多大
  3. 它自己会失效吗?——安全机制的失效率是多少

举个例子,看门狗电路:

  • 能检测到:CPU死机、程序跑飞
  • 检测不到:CPU输出错误但仍在喂狗(这叫“安全失效”中的“危险失效”)
  • 自身失效:看门狗时钟坏了,或者复位电路坏了

你看,一个看似简单的看门狗,背后也有这么多门道。

四、DC的量化与目标值

不同安全等级(ASIL)对DC有明确要求:

ASIL等级 DC目标值 说明
ASIL A ≥ 90% 低要求,单点故障覆盖即可
ASIL B ≥ 90% 与A相同,但潜在故障要求更高
ASIL C ≥ 97% 需要冗余或高覆盖诊断
ASIL D ≥ 99% 几乎全覆盖,通常需要多种机制组合

注意,这只是单点故障的DC。对于潜在故障(Latent Fault),要求更严格。ASIL D要求潜在故障DC ≥ 90%。

我的经验:别卡着目标值设计。比如ASIL B要求90%,你最好做到95%以上。为什么?因为评审时专家会质疑你的假设,一质疑,DC可能就掉到90%以下了。留点余量,心里踏实。

五、DC计算的常见误区

最后,我总结几个我踩过的坑:

  • 误区1:把所有失效都算进去
    只算危险失效,安全失效和无影响失效别算。
  • 误区2:忽略诊断机制自身的失效
    诊断电路也会坏。如果它坏了,DC就是0%。所以,诊断机制本身也需要诊断。
  • 误区3:假设100%检测率
    没有哪种诊断机制能检测所有失效。比如CRC能检测数据错误,但检测不到地址错误。别想当然。
  • 误区4:用数量代替失效率
    前面说了,用失效率加权更合理。数量法只适合初步估算。

我曾经在一个项目中,客户坚持用数量法算DC,结果算出来99.9%。我一故障注入,发现有个高频失效模式没被覆盖。最后重新用FMEDA算,实际DC只有85%。嗯,从那以后,我再也不敢只用数量法了。

六、知识体系图

下面这张图,帮你理清DC的核心逻辑:

诊断覆盖率DC知识体系 诊断覆盖率DC 定义:危险失效检测率 评估方法 与安全机制的关系 FMEA(失效模式分析) 故障注入测试 FMEDA(加权分析) 看门狗、CRC、电压监测... 核心原则 只算危险失效 | 考虑诊断自身失效 | 用失效率加权

这张图把DC的核心逻辑串起来了。从定义出发,到三种评估方法,再到安全机制的关系,最后落到核心原则。你照着这个框架去理解,就不会乱。

七、小结

诊断覆盖率DC,说白了就是回答一个问题:“我的安全机制到底靠不靠谱?”

计算DC时,记住三点:

  1. 只算危险失效
  2. 用失效率加权更准确
  3. 别忘了诊断机制自己也会失效

嗯,今天就聊到这儿。DC这个概念,你越做项目越会发现它的重要性。别嫌烦,每一步都算数。

最后一句:DC不是算出来的,是设计出来的。好的诊断机制,自然有高的DC。别为了凑数字而凑数字,安全不是数字游戏。

专注资料整理