3. 危害分析与风险评估(HARA)
各位同学,今天我们聊一个核心话题——HARA。说实话,很多刚入行的工程师觉得HARA就是填表格、走流程。但我做了这么多年功能安全,可以负责任地告诉你:HARA是整个安全设计的基石。你想想看,如果连风险都识别错了,后面的安全措施再漂亮也是白搭。
3.1 HARA方法论:从场景到风险
HARA的全称是Hazard Analysis and Risk Assessment。说白了,就是回答三个问题:
- 什么会坏?(危害事件识别)
- 坏到什么程度?(严重度评估)
- 我们该怎么办?(安全目标定义)
我个人习惯把HARA分成四个步骤:
- 场景定义——搞清楚车辆在什么情况下运行
- 危害识别——找出系统故障可能导致的危险
- 风险评定——用ASIL等级量化风险
- 安全目标定义——为每个危害制定安全要求
核心原则:HARA不是一次性的工作。随着系统迭代,场景会变,风险也会变。我见过一个项目,前期HARA做得很好,但后来加了新功能没重新评估,结果...嗯,你们懂的。
3.2 危害事件识别:别漏掉任何一个场景
危害事件识别,说白了就是「找茬」。你得把自动驾驶系统可能遇到的所有场景都过一遍。我建议从三个维度入手:
| 维度 | 典型场景 | 潜在危害 |
|---|---|---|
| 运行场景 | 高速公路、城市道路、停车场 | 感知盲区、目标误检 |
| 环境条件 | 雨天、夜晚、隧道、强光 | 传感器性能下降、算法失效 |
| 系统状态 | 传感器故障、通信延迟、算力不足 | 决策延迟、控制异常 |
我在项目中遇到过最典型的案例:一个客户只考虑了晴天场景,结果量产车在雨天频繁触发紧急制动。为什么?因为雨滴被误识别成了障碍物。你看,这就是场景覆盖不全的代价。
我的小技巧:做危害识别时,拉上系统工程师、软件工程师、测试工程师一起头脑风暴。一个人想不全所有场景,但一群人基本能覆盖90%。
3.3 风险等级评定:ASIL是怎么算出来的?
风险等级评定,核心就是三个参数:
- S(Severity)——严重度:事故会造成多严重的伤害?
- E(Exposure)——暴露率:这个场景出现的频率有多高?
- C(Controllability)——可控性:驾驶员或其他系统能避免事故吗?
ASIL等级 = S × E × C。具体怎么查表?ISO 26262里有个标准矩阵,我直接给你们看:
| S等级 | E等级 | C等级 | ASIL |
|---|---|---|---|
| S3(致命) | E4(极高) | C3(难控制) | ASIL D |
| S2(重伤) | E3(高) | C2(中等) | ASIL B |
| S1(轻伤) | E2(中等) | C1(易控制) | ASIL A |
| S0(无伤害) | E1(极低) | C0(完全可控) | QM |
举个例子:高速公路上的前向碰撞预警功能。如果感知系统漏检了前方静止车辆——
- S:高速追尾大概率致命 → S3
- E:高速场景很常见 → E4
- C:驾驶员反应时间不够 → C3
- 结果:ASIL D
避坑指南:我曾经见过一个团队把E等级定得太低,理由是「我们的车很少跑高速」。但功能安全要求的是「合理可预见的场景」,不是「平均场景」。你想想看,万一用户就喜欢跑高速呢?
3.4 安全目标:把风险变成可执行的要求
做完风险评定,下一步就是定义安全目标。安全目标说白了就是一句话:「系统不能做什么」或者「系统必须做到什么」。
举个例子:
- 危害:感知系统漏检前方静止车辆,导致追尾
- ASIL:D
- 安全目标:「感知系统必须在所有运行场景下,正确检测前方静止车辆,漏检率低于10^-8 per hour」
这里要注意,安全目标要满足三个条件:
- 可验证——能不能通过测试证明它实现了?
- 可量化——有没有具体的数字指标?
- 可追溯——能不能追溯到具体的危害?
我的经验:安全目标写得太模糊是常见问题。比如「系统应可靠工作」——什么叫可靠?每小时失效一次算可靠吗?十年失效一次算可靠吗?一定要量化,量化,再量化。
3.5 实战案例:一个完整的HARA流程
好了,理论讲完了。我们来看一个真实案例。假设我们在做一款自动紧急制动(AEB)系统,感知部分用的是摄像头+毫米波雷达融合。
第一步:场景定义
- 场景1:白天城市道路,前方车辆突然刹车
- 场景2:夜间高速公路,前方有静止障碍物
- 场景3:雨天,行人突然横穿马路
第二步:危害识别
- 危害1:摄像头被雨滴遮挡,漏检行人
- 危害2:雷达多径反射,误检为障碍物导致误制动
- 危害3:融合算法在强光下失效,漏检前方车辆
第三步:风险评定
| 危害 | S | E | C | ASIL |
|---|---|---|---|---|
| 漏检行人(雨天) | S3 | E3 | C3 | ASIL D |
| 误制动(雷达多径) | S2 | E2 | C2 | ASIL B |
| 漏检车辆(强光) | S3 | E2 | C3 | ASIL C |
第四步:安全目标
- 安全目标1(ASIL D):感知系统在雨天场景下,行人检测的漏检率必须低于10^-8 per hour
- 安全目标2(ASIL B):感知系统必须抑制雷达多径反射导致的误检,误报率低于10^-6 per hour
- 安全目标3(ASIL C):感知系统在强光场景下,车辆检测的漏检率必须低于10^-7 per hour
最后说一句:HARA做得好不好,直接决定了后续所有安全工作的质量。我建议每个项目至少做两轮HARA——第一轮在系统设计初期,第二轮在详细设计完成后。你会发现,第二轮总能发现第一轮漏掉的东西。
好了,这一章就到这里。下一章我们聊聊「安全架构设计」,到时候我会分享一些我在实际项目中踩过的坑,保证你们听完能少走弯路。