3、ASIL分解的数学原理:ASIL分解的代数规则(ASIL x + ASIL y = ASIL z),冗余与独立性的概念

好,我们进入第三讲。这一讲,我打算聊聊ASIL分解背后的数学逻辑。

很多人觉得ASIL分解就是个分配任务的过程,把高等级要求拆给几个低等级模块就行了。其实没那么简单。你想想看,如果随便拆,那安全等级不就成儿戏了吗?

这里头有一套严格的代数规则。说白了,就是 ASIL x + ASIL y = ASIL z 这个公式到底怎么算。

3.1 分解的代数基础:加法不是简单的数字相加

先看一个最基础的例子。

假设一个功能要求ASIL D。我把它分解到两个独立的通道上。通道A承担ASIL C,通道B承担ASIL B。那么,这两个通道合起来,能不能满足ASIL D?

答案是:能。但前提是——这两个通道必须相互独立

这里的加法,不是1+1=2那种加法。它更像是一种“能力组合”。

我习惯用一个表格来理解这个规则:

ASIL x ASIL y ASIL z (结果) 说明
D D D 两个D级冗余,当然还是D
D C D 高等级带低等级,结果仍为D
D B D 常见组合,B级做监控
C C D 两个C级,加起来够D
C B C 注意,这里只能到C
B B B 两个B级,还是B
A A A 两个A级,还是A

看到没?ASIL D 只能由两个不低于 C 的等级组合得到。如果你拿一个ASIL B加一个ASIL A,最多只能得到ASIL B。这就是代数规则。

核心公式:

ASIL D = ASIL C(D) + ASIL B(D) 或 ASIL D(D) + ASIL QM(D)

但绝不能是:ASIL B + ASIL A = ASIL D

3.2 冗余与独立性:数学规则的前提条件

好,规则讲完了。但有个大前提——冗余和独立性

我在项目中遇到过一件事。一个团队把ASIL D功能分解到两个ASIL B的通道上。从代数上看,B+B应该等于D?不对,上面表格里B+B只能等于B。他们搞错了。

更严重的是,他们虽然做了两个通道,但两个通道共用了一个电源芯片。结果电源一失效,两个通道同时挂掉。这叫什么冗余?这叫“假冗余”。

避坑指南:

我曾经见过一个设计,两个通道的软件代码是从同一个模型自动生成的。虽然硬件是独立的,但软件逻辑完全一样。一个bug,两个通道一起出问题。这种分解,在审核时直接被打了回来。

真正的独立性,要求:

  • 硬件独立:不同的电源、时钟、复位、通信路径
  • 软件独立:不同的开发团队、不同的算法实现、不同的编译器
  • 时序独立:不能因为一个通道的延迟影响另一个通道的判断
  • 故障独立:一个通道的故障不能传播到另一个通道

3.3 代数规则的实际应用:一个ASIL D的转向系统

我们拿一个实际场景来说。一个线控转向系统,要求ASIL D。

我建议这样分解:

  1. 主路径:ASIL C,负责正常的转向控制
  2. 监控路径:ASIL B,负责监控主路径的输出是否合理
  3. 安全路径:ASIL D,当主路径和监控路径都失效时,直接接管

你看,这里用了三个通道。但代数上怎么算?

主路径C + 监控路径B = 可以覆盖到D吗?不行,C+B只能到C。所以必须再加一个独立的ASIL D安全路径。

那如果我只用两个通道呢?

  • 方案一:主路径ASIL D + 监控路径ASIL B = 满足D(因为D+B=D)
  • 方案二:主路径ASIL C + 监控路径ASIL C = 满足D(因为C+C=D)

我个人更倾向于方案二。为什么?因为两个C级通道,开发成本比一个D级加一个B级要低。而且两个通道对等,设计上更对称,不容易出现“偏科”的情况。

3.4 分解的数学本质:概率与覆盖率

说到底,ASIL分解的数学本质是什么?

故障概率的乘积

你想想看,一个ASIL D的系统,允许的随机硬件故障概率是10^-8每小时。一个ASIL B的系统,允许的概率是10^-6每小时。

如果你把两个ASIL B的通道做冗余,且完全独立,那么两个通道同时失效的概率就是:

10^-6 × 10^-6 = 10^-12

这远低于10^-8的要求。所以从概率上看,两个B级冗余,确实可以满足D级要求。但为什么表格里B+B只能等于B?

因为实际工程中,你做不到100%的独立性。总有共因失效,比如电磁干扰、温度变化、软件框架的共用。所以标准保守地规定,B+B只能算到B。

我的经验:

在做分解时,不要只盯着代数规则。要问自己一个问题:这两个通道真的独立吗?如果有一个共因能把它们同时干掉,那你的分解就是无效的。

我习惯在架构设计阶段,就画一张“共因失效分析表”,把可能的共因列出来,然后看每个共因会影响哪些通道。如果发现某个共因能同时影响两个通道,那就得重新设计。

3.5 总结一下这一讲的核心

  • ASIL分解的代数规则:ASIL x + ASIL y = ASIL z,但结果不是简单的数字相加,要查表
  • 分解的前提:冗余和独立性,缺一不可
  • 数学本质:故障概率的乘积,但工程上要考虑共因失效
  • 避坑:不要做假冗余,共用电源、共用代码、共用算法都是坑

下一讲,我会聊聊ASIL分解在具体架构中的落地方法。到时候拿一个实际的项目案例,一步步拆解给你看。