第2章:ASIL等级确定:HARA、ASIL定义与分解冗余
好,咱们直接进入正题。ASIL等级怎么定?这是功能安全里最核心、也最容易扯皮的一步。我见过不少项目,前期HARA做得马虎,后期改得想哭。说白了,ASIL不是拍脑袋拍出来的,它有一套严谨的推导逻辑。
2.1 危害分析与风险评估(HARA)
HARA,全称Hazard Analysis and Risk Assessment。它的目标就一个:找出车辆在运行过程中,系统故障可能导致的危害,然后评估这个危害有多严重。
我个人习惯把HARA分成三步走:
- 场景识别:车辆在什么工况下运行?高速、低速、停车、充电?
- 危害识别:系统如果出故障,会导致什么后果?比如刹车失灵、转向卡死。
- 风险量化:用三个参数来量化风险——严重度(S)、暴露概率(E)、可控性(C)。
核心公式:ASIL等级 = f(S, E, C)
三个参数组合查表,就能得到QM、ASIL A、B、C、D。
我在项目中遇到过一件事:一个团队做HARA时,把“暴露概率”估得太乐观,结果ASIL定低了。后来评审被打回,重新补数据,工期直接拖了两周。嗯,这里要注意——暴露概率不是猜的,得有数据支撑,比如统计车辆每年在那种场景下运行的小时数。
2.2 ASIL等级定义(A/B/C/D)
ASIL四个等级,从A到D,要求逐级递增。D是最严苛的,比如刹车、转向这类安全关键系统。
| 等级 | 严重度(S) | 暴露概率(E) | 可控性(C) | 典型系统举例 |
|---|---|---|---|---|
| QM | S0/S1 | E0/E1 | C0/C1 | 信息娱乐、空调 |
| ASIL A | S1 | E2 | C1 | 尾灯、雨刮 |
| ASIL B | S2 | E3 | C2 | 大灯、车窗防夹 |
| ASIL C | S2 | E4 | C3 | ACC自适应巡航 |
| ASIL D | S3 | E4 | C3 | EPS、制动、安全气囊 |
你想想看,为什么ASIL D要求最高?因为一旦出事,人可能就没了(S3),而且驾驶员几乎没法补救(C3),场景还经常遇到(E4)。三个最坏情况凑一起,必须用最严的开发流程。
我的经验: 别一上来就奔着ASIL D去。D意味着成本翻倍、验证周期拉长。能降到C或B,就尽量降。怎么降?后面讲ASIL分解。
2.3 ASIL分解与冗余设计原则
ASIL分解,说白了就是把一个高等级的安全目标,拆成几个低等级的子需求。比如一个ASIL D的功能,拆成两个ASIL C的子系统,只要它们相互独立,组合起来仍然满足D的要求。
为什么要分解?因为ASIL D的硬件开发成本太高了。你想想看,一个MCU要满足ASIL D,得用锁步核、ECC、BIST……价格翻倍。但如果拆成两个ASIL C的MCU,成本反而可控。
2.3.1 分解规则
ISO 26262-9第5章给出了明确的分解代数:
- ASIL D = ASIL C(D) + ASIL C(D) 或 ASIL B(D) + ASIL B(D) 或 ASIL D(D) + QM(D)
- ASIL C = ASIL B(C) + ASIL B(C) 或 ASIL C(C) + QM(C)
- ASIL B = ASIL A(B) + ASIL A(B) 或 ASIL B(B) + QM(B)
- ASIL A = ASIL A(A) + QM(A)
注意括号里的字母,表示分解前的原始等级。两个子系统必须相互独立,不能有共因失效。
避坑指南: 我曾经见过一个团队,把ASIL D分解成两个ASIL C,但两个子系统共用同一个电源芯片。结果FMEDA一算,共因失效覆盖率不够,分解无效。记住——独立不是嘴上说说,得从硬件、软件、时序、空间上真正隔离开。
2.3.2 冗余设计原则
冗余设计是ASIL分解的物理实现。常见的冗余形式有:
- 硬件冗余:双MCU、双传感器、双执行器。
- 软件冗余:两个不同算法、不同编译器、不同开发团队。
- 信息冗余:CRC、ECC、奇偶校验。
- 时间冗余:多次采样、看门狗、超时检测。
我个人最推崇的是“异构冗余”。什么意思?两个通道用不同的硬件、不同的软件、不同的设计思路。这样即使一个通道有系统性缺陷,另一个通道大概率不会犯同样的错。
举个例子:EPS(电动助力转向)系统,主通道用Infineon TC3xx跑控制算法,监控通道用一颗小FPGA做简单的扭矩校验。两个通道独立开发,独立测试。这样即使主通道软件有bug,监控通道也能在几毫秒内切断助力,进入安全状态。
2.4 知识体系总览
下面这张图,把本章的核心逻辑串起来了。从HARA开始,到ASIL等级确定,再到分解与冗余设计,是一条完整的安全开发链路。
2.5 本章小结
ASIL等级的确定,不是一次性的工作。随着系统设计深入,HARA可能需要迭代更新。我建议你在项目早期就建立HARA基线,然后每个里程碑做一次评审。
至于分解和冗余,记住三个关键词:独立、多样、覆盖。独立保证不互相牵连,多样保证不犯同样的错,覆盖保证所有故障模式都被考虑。
嗯,这一章的内容就到这里。ASIL等级定好了,下一步就是怎么把安全需求落实到软件架构里。那是后面章节的事,咱们到时候细聊。