2. ASIL等级确定:危害分析与风险评估(HARA)
好,咱们进入正题。ASIL等级怎么定?说白了,就靠一套叫HARA的方法论。HARA全称是Hazard Analysis and Risk Assessment,危害分析与风险评估。这是ISO 26262里最核心的起点,没有之一。
我见过不少团队,上来就拍脑袋说“这个功能得ASIL D”。为什么?因为觉得安全嘛,越高越好。但实际上一刀切ASIL D,成本翻倍、开发周期拉长,最后还不一定过得了评审。HARA就是用来解决这个问题的——用数据说话,而不是凭感觉。
2.1 HARA的核心三要素:S、E、C
ASIL等级由三个参数决定:
- S(Severity):严重度。危害发生时,对人员造成的伤害程度。
- E(Exposure):暴露概率。车辆在危险场景下运行的频率。
- C(Controllability):可控性。驾驶员或其他人员能否避免伤害。
这三个参数组合起来,查表就能得到ASIL等级。我习惯把S、E、C称为“安全三剑客”,缺一不可。
核心公式:ASIL等级 = f(S, E, C)
每个参数分4级(QM、A、B、C、D),但QM不算ASIL,属于质量管理范畴。
2.2 严重度(S)分级
严重度看的是伤害程度。ISO 26262分了4档:
| 等级 | 描述 | 典型场景 |
|---|---|---|
| S0 | 无伤害 | 轻微功能降级,不影响安全 |
| S1 | 轻伤 | 碰撞后轻微擦伤、扭伤 |
| S2 | 重伤 | 骨折、内出血,但可存活 |
| S3 | 致命伤 | 死亡或不可逆重伤 |
这里有个坑。我遇到过团队把“车辆失控”直接定为S3,但仔细分析后发现,失控场景下如果车速很低(比如停车场),实际伤害可能只是S1。所以一定要结合具体场景,不能只看功能本身。
我的习惯:做S评级时,先问三个问题——
- 伤害对象是谁?(驾驶员?乘客?行人?)
- 伤害程度有多重?(可逆?不可逆?)
- 有没有防护措施?(安全带?气囊?)
2.3 暴露概率(E)分级
暴露概率看的是“危险场景出现的频率”。不是功能失效的概率,而是车辆处于危险场景中的概率。
| 等级 | 描述 | 典型场景 |
|---|---|---|
| E0 | 几乎不暴露 | 车辆在封闭赛道测试 |
| E1 | 低暴露 | 每年几次,比如雪地驾驶 |
| E2 | 中暴露 | 每月几次,比如高速公路行驶 |
| E3 | 高暴露 | 每次驾驶都可能遇到,比如城市拥堵 |
| E4 | 极高暴露 | 几乎每次驾驶都遇到,比如倒车 |
举个例子。自适应巡航(ACC)在高速上失效,E等级可能是E3或E4。但如果是自动泊车功能,只在停车时使用,E等级可能只有E2。你想想看,同一个功能,不同场景下E值完全不同。
注意:E等级不是拍脑袋定的。我建议用实际路测数据或行业统计数据来支撑。比如某车型年行驶里程、某场景出现频率等。没有数据支撑的E值,评审时会被挑战得很惨。
2.4 可控性(C)分级
可控性看的是“驾驶员能不能避免伤害”。这是最容易被低估的参数。
| 等级 | 描述 | 典型场景 |
|---|---|---|
| C0 | 完全可控 | 功能失效后,驾驶员有足够时间反应 |
| C1 | 简单可控 | 大多数驾驶员能应对,比如仪表灯熄灭 |
| C2 | 一般可控 | 部分驾驶员可能无法应对,比如转向助力突然消失 |
| C3 | 难以控制 | 大多数驾驶员无法避免伤害,比如刹车完全失效 |
我曾经做过一个线控转向的项目。失效后方向盘还能转,但反馈力消失。我们一开始定C2,后来做用户测试发现,有30%的驾驶员在高速上会过度修正导致失控。最后改成了C3。所以C值一定要有实验数据支撑,不能光靠理论分析。
2.5 ASIL等级计算
有了S、E、C,查表就能得到ASIL等级。ISO 26262 Part 3给出了标准矩阵:
| S | E | C1 | C2 | C3 |
|---|---|---|---|---|
| S1 | E1 | QM | QM | QM |
| S1 | E2 | QM | QM | ASIL A |
| S1 | E3 | QM | ASIL A | ASIL B |
| S1 | E4 | ASIL A | ASIL B | ASIL B |
| S2 | E1 | QM | QM | ASIL A |
| S2 | E2 | QM | ASIL A | ASIL B |
| S2 | E3 | ASIL A | ASIL B | ASIL C |
| S2 | E4 | ASIL B | ASIL C | ASIL C |
| S3 | E1 | ASIL A | ASIL B | ASIL C |
| S3 | E2 | ASIL B | ASIL C | ASIL D |
| S3 | E3 | ASIL B | ASIL C | ASIL D |
| S3 | E4 | ASIL C | ASIL D | ASIL D |
举个例子。刹车失效:S3(致命伤)、E4(每次驾驶都用到)、C3(难以控制),查表得到ASIL D。而车内氛围灯失效:S0(无伤害),直接QM,不需要任何ASIL措施。
关键点:ASIL D是最严格的等级,要求最高的安全措施。QM则不需要额外安全机制,按正常质量流程走就行。
2.6 ASIL等级分解
一个功能可能涉及多个组件。比如电子助力转向(EPS)系统,包含传感器、控制器、电机、机械结构。如果整个系统要求ASIL D,每个组件都要做到ASIL D吗?不一定。
ASIL分解允许你把高等级需求分配到多个独立组件上。比如:
- 传感器:ASIL B
- 控制器:ASIL B
- 电机:ASIL B
- 机械结构:QM
只要这些组件相互独立,且满足“ASIL B + ASIL B = ASIL D”的分解规则。但注意,分解必须满足两个条件:
- 独立性:一个组件失效不影响另一个。
- 覆盖性:所有失效模式都被覆盖。
我见过一个项目,把ASIL D分解成ASIL B + ASIL B,但两个组件共用同一个电源。结果评审时被指出“共因失效”问题,最后不得不重新设计。所以分解不是简单的数学加法,一定要考虑物理独立性。
2.7 HARA流程总结
做HARA的步骤,我一般按这个流程走:
- 功能定义:明确分析对象的功能和边界。
- 场景识别:列出所有可能的运行场景。
- 危害识别:分析功能失效导致的危害。
- S、E、C评级:对每个危害进行评级。
- ASIL等级确定:查表得到ASIL等级。
- 安全目标定义:为每个危害定义安全目标。
- ASIL分解(可选):将高等级需求分配到组件。
下面这张图展示了HARA的核心流程:
避坑指南:我曾经在HARA评审时被问到一个问题——“你这个危害场景的E值为什么是E3而不是E2?”当时我拿不出数据,只能现场估算,结果被要求重新分析。从那以后,我每个E值都附上数据来源或计算依据。记住,HARA不是写作文,是写证据。
2.8 实战案例:自适应巡航(ACC)的HARA
拿ACC举个例子。假设ACC在高速上突然失效,导致车辆无法自动减速:
- 危害:追尾前车
- S:S2(重伤,高速追尾可能导致骨折)
- E:E3(高速场景,每月使用多次)
- C:C2(驾驶员可以刹车,但反应时间有限)
查表:S2 + E3 + C2 = ASIL B。所以ACC的失效处理需要满足ASIL B要求。
但如果ACC在市区拥堵路况下失效:
- S:S1(低速追尾,轻伤)
- E:E4(每天使用)
- C:C1(驾驶员容易应对)
查表:S1 + E4 + C1 = ASIL A。同一个功能,不同场景下ASIL等级不同。所以HARA一定要覆盖所有典型场景。
注意:HARA不是一次性工作。功能变更、场景新增、法规更新,都需要重新做HARA。我见过一个项目,功能改了三版,HARA还是第一版的结果,最后被审核员开了严重不符合项。
好了,ASIL等级确定的核心内容就这些。记住,HARA是安全开发的基石,花时间把这一步做扎实,后面会省很多麻烦。