3. 危害分析与风险评估(HARA):从场景到ASIL的实战路径
HARA,全称 Hazard Analysis and Risk Assessment。说白了,就是回答三个问题:车在什么情况下会出危险?这个危险有多严重?我们得花多大力气去防?
我刚入行那会儿,觉得HARA就是填表格。后来在某个量产项目里,因为场景定义漏了一个“夜间逆光”工况,导致摄像头识别率在实车测试时直接崩了。嗯,从那以后,我再也不敢小看HARA了。
3.1 HARA方法论:ISO 26262的“风险三要素”
ISO 26262第三部分明确要求:所有功能安全相关项,必须先做HARA。它的核心逻辑是——
风险 = 危害严重性(Severity) × 暴露概率(Exposure) × 可控性(Controllability)
这三个维度,最终拼出一个ASIL等级(A、B、C、D)。D最高,A最低,QM表示“质量管理即可”。
核心公式(非数学,是逻辑):
ASIL = f(S, E, C) —— 查表得出,不是算出来的。
我个人习惯把HARA分成四步走:
- 定义运行场景 —— 车在哪儿开?什么环境?什么工况?
- 识别危害事件 —— 系统失效后,会导致什么危险?
- 评定S、E、C参数 —— 每个危害事件打分。
- 确定ASIL等级 —— 查ISO 26262-3:2018 Table 1。
你想想看,这四步里最容易出问题的,其实是第一步。场景定义不全,后面全是白搭。
3.2 运行场景定义:别让“漏场景”成为你的噩梦
运行场景,就是你的AI座舱在什么情况下会“干活”。ISO 26262里叫“Operating Situation”。
我建议从三个维度去切:
| 维度 | 典型场景举例 | 常见遗漏点 |
|---|---|---|
| 环境 | 白天/夜晚、晴天/雨/雪/雾、隧道/地库 | 逆光、低照度、雨滴遮挡 |
| 道路 | 高速/城市/乡村、直道/弯道/坡道 | 施工路段、无车道线道路 |
| 车辆状态 | 静止/低速/巡航、变道/转弯/倒车 | 系统启动瞬间、OTA升级中 |
举个例子。AI座舱里的“疲劳监测”功能,如果只定义了“驾驶员正常驾驶”场景,那万一驾驶员戴着墨镜、或者侧脸跟后排说话呢?这些场景漏了,ASIL等级再高也白搭。
我的经验: 场景定义阶段,拉上系统工程师、测试工程师、甚至产品经理一起脑暴。一个人想不全的。
3.3 危害事件识别:从“功能失效”到“人身伤害”
危害事件,不是“系统坏了”,而是“系统坏了之后,人受伤了”。
比如:
- 功能失效: 驾驶员监控摄像头死机。
- 危害事件: 驾驶员疲劳未被检测,车辆未报警,导致追尾。
这里有个关键点:危害事件必须包含“场景”和“后果”。ISO 26262里叫“Hazardous Event”。
我一般用“If…Then…”句式来写:
If [功能失效] occurs in [运行场景],
Then [危害后果] may happen, leading to [伤害类型].
举个例子:
If 语音唤醒功能误触发 in 高速巡航场景,
Then 驾驶员注意力被分散, 导致车辆偏离车道, 引发碰撞.
我曾经在一个项目里,发现团队把“误触发”和“不响应”写成了同一个危害事件。这是不对的。误触发和不响应,场景不同,后果不同,ASIL等级也可能不同。
避坑指南: 一个功能失效,可能对应多个危害事件。别合并,别偷懒。每个危害事件单独评ASIL。
3.4 ASIL等级评定实例:手把手带你走一遍
好,理论说完了。咱们来走一个真实案例。
案例:AI座舱手势控制功能
功能描述:驾驶员通过手势(比如挥手)控制音量、接听电话等。
我们挑一个危害事件来评:
危害事件: 手势误识别(把“接听电话”识别成“挂断电话”)发生在高速驾驶场景,导致驾驶员情绪波动,分心操作,引发碰撞。
现在开始打分:
Step 1: 评定严重性(S)
看后果:碰撞可能导致重伤甚至死亡。查ISO 26262标准:
- S0: 无伤害
- S1: 轻伤(99%存活)
- S2: 重伤(90%存活)
- S3: 致命(10%存活)
这个案例里,高速碰撞后果严重,我评 S2。
Step 2: 评定暴露概率(E)
看场景:高速驾驶场景,平均每天可能遇到1-2次。查标准:
- E1: 极低(一年几次)
- E2: 低(一个月几次)
- E3: 中(一周几次)
- E4: 高(几乎每次驾驶)
高速场景不算特别频繁,但也不算罕见。我评 E3。
Step 3: 评定可控性(C)
看驾驶员能否避免事故:误识别后,驾驶员有1-2秒反应时间。老司机可能能稳住,新手可能慌。查标准:
- C1: 可控(>99%驾驶员能避免)
- C2: 一般可控(90%-99%能避免)
- C3: 难控(<90%能避免)
我个人觉得,这个场景下,大部分驾驶员能反应过来,但有一定风险。评 C2。
Step 4: 查表得ASIL
ISO 26262-3:2018 Table 1:
| S | E | C1 | C2 | C3 |
|---|---|---|---|---|
| S2 | E3 | ASIL A | ASIL B | ASIL C |
查表结果:S2 + E3 + C2 = ASIL B。
结论: 这个手势误识别危害事件,需要按ASIL B等级开发。意味着你要做相应的安全机制,比如双重确认、防抖、或者限制在非驾驶场景下使用。
你想想看,如果当初场景定义漏了“高速”这个场景,你可能只评了个ASIL A,那安全机制就不够,实车测试时可能就出事了。
3.5 HARA核心流程总览
下面这张图,是我自己总结的HARA全流程。每次做新项目,我都会贴一张在工位上。
这张图我建议你保存下来。每次做HARA,按这个流程走一遍,基本不会漏。
3.6 避坑总结:HARA常见的三个坑
最后,分享三个我踩过的坑:
- 坑一:场景定义太理想化。 我曾经只定义了“标准驾驶场景”,结果实车测试时,在隧道里信号丢失,系统直接崩了。隧道场景,你考虑了吗?
- 坑二:S/E/C打分凭感觉。 同一个危害事件,不同工程师打分可能差两级。我建议团队先对齐标准,最好有历史项目数据做参考。
- 坑三:危害事件写得太笼统。 比如“系统失效导致事故”,这种描述没法评ASIL。一定要写清楚:什么失效 + 什么场景 + 什么后果。
我的习惯: 每个危害事件写完后,问自己一句:“这个场景,我能在实车上复现吗?” 如果不能,说明场景定义不够具体。