4. HARA实践:严重度(S)评估、暴露率(E)评估、可控性(C)评估、ASIL等级确定
好,咱们进入HARA最核心的实操环节。前面你识别了危害事件,现在要给它“打分”——定出S、E、C三个参数,最后合成ASIL等级。
这一步我见过太多人翻车。有人把S估得过高,导致ASIL等级虚高,成本爆炸;有人把E估得过低,结果安全目标覆盖不足,后期整改欲哭无泪。说白了,HARA不是纯数学题,它需要工程判断力。
核心原则: S、E、C的评估必须基于“车辆在运行场景中的真实状态”,而不是“最坏情况”或“理想情况”。
4.1 严重度(S)评估:看伤害有多重
严重度,就是如果危害事件发生了,对人员造成的伤害程度。ISO 26262分了三个等级:S0、S1、S2、S3。
| 等级 | 描述 | 典型场景 |
|---|---|---|
| S0 | 无伤害 | 轻微刮擦,无人受伤 |
| S1 | 轻伤(可治疗) | 低速追尾,颈部轻微扭伤 |
| S2 | 重伤(需住院) | 中等速度碰撞,骨折 |
| S3 | 致命伤 | 高速碰撞,或涉及弱势道路使用者 |
我个人习惯,评估S时先问三个问题:
- 碰撞速度范围是多少? 城市工况(0-30km/h)和高速工况(80-120km/h)的S完全不同。
- 碰撞对象是谁? 撞墙和撞行人,S差一个等级很正常。
- 有没有二次伤害风险? 比如车辆起火、翻滚、坠崖,这些会直接拉高S。
我的经验: 我在做EPS(电动助力转向)项目时,评估“非预期转向”这个危害。一开始团队给了S3,理由是“高速失控会死人”。但我让他们把场景细化:是城市低速变道?还是高速巡航?最后发现,大部分场景下速度低于60km/h,且驾驶员有足够反应时间,最终定在S2。别一上来就S3,那会让后续设计很难做。
4.2 暴露率(E)评估:看发生的概率
暴露率,指的是“车辆处于可能发生危害的场景中的概率”。注意,不是危害发生的概率,而是场景出现的概率。
| 等级 | 描述 | 典型场景 |
|---|---|---|
| E0 | 几乎不可能 | 车辆在月球上行驶 |
| E1 | 非常低 | 每年几次 |
| E2 | 低 | 每月几次 |
| E3 | 中等 | 每周几次 |
| E4 | 高 | 几乎每次驾驶 |
评估E的时候,我建议你拿真实运营数据说话。比如:
- 这个场景在用户日常驾驶中出现的频率是多少?
- 有没有季节性因素?比如冰雪路面,北方冬天E值就高。
- 有没有地域性差异?欧洲窄路和北美宽路,E值不一样。
避坑指南: 我曾经见过一个团队,把“车辆在高速上以120km/h行驶时制动失效”的E估成E2。但实际统计数据显示,高速行驶占总驾驶时间的30%以上,制动系统失效虽然罕见,但场景暴露率极高。正确的做法是:先评估场景暴露率(高速行驶),再评估故障本身。最终E应该定在E3或E4。
4.3 可控性(C)评估:看驾驶员能不能救回来
可控性,就是当危害事件发生时,驾驶员或相关人员(比如行人、其他车辆)有没有能力避免伤害。
| 等级 | 描述 | 典型场景 |
|---|---|---|
| C0 | 完全可控 | 轻微加速抖动,驾驶员轻松应对 |
| C1 | 简单可控 | 大部分驾驶员能应对,少数需要帮助 |
| C2 | 一般可控 | 经验丰富的驾驶员能应对,新手可能失控 |
| C3 | 难以控制 | 即使专业驾驶员也难以避免伤害 |
评估C时,我通常会做一个小实验:让不同驾驶水平的同事在模拟器上体验这个故障场景。如果80%以上的人能在2秒内做出正确反应,C可以定在C1或C2。如果大部分人需要3秒以上,或者根本不知道怎么做,那就是C3。
关键点: 可控性评估要考虑“人的极限”。比如,突然的转向力矩输入,普通人根本来不及反应,C直接给C3。但如果是缓慢的制动衰退,驾驶员有足够时间感知并采取行动,C可以给C1。
4.4 ASIL等级确定:三合一
有了S、E、C,查表就能得到ASIL等级。ISO 26262给了标准矩阵:
| 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 B |
| S3 | E2 | ASIL B | ASIL B | ASIL C |
| S3 | E3 | ASIL B | ASIL C | ASIL D |
| S3 | E4 | ASIL C | ASIL D | ASIL D |
举个例子:你评估一个“非预期加速”的危害。
- S:城市工况,速度低,可能撞到前车,但致命概率低 → S2
- E:城市驾驶每天都会遇到,暴露率极高 → E4
- C:大部分驾驶员能迅速踩刹车,但新手可能慌乱 → C2
查表:S2+E4+C2 = ASIL C。嗯,这个等级不低,需要做很多安全机制。
我的习惯: 每次查完表,我都会反问自己一句:“这个结果合理吗?”如果感觉ASIL等级和实际风险感知差距很大,我会重新审视S、E、C的评估依据。有时候是场景定义太宽泛,有时候是忽略了某些缓解因素。HARA不是一次性的,它需要迭代。
4.5 HARA评估流程图
下面这张图,是我自己总结的HARA评估流程,帮你把整个逻辑串起来:
4.6 常见错误与避坑
最后,我总结几个HARA实践中的常见错误,你遇到了可以少走弯路:
- 错误一:S、E、C评估相互影响。 比如,你觉得“这个场景暴露率高,所以严重度也应该高”——这是错的。S和E是独立的,不能互相补偿。
- 错误二:忽略场景细化。 同一个危害,在不同场景下S、E、C可能完全不同。比如“制动失效”在高速和低速下,S差两个等级。
- 错误三:过度依赖专家判断。 我见过一个项目,所有评估都是架构师一个人拍脑袋定的。结果审核时被质疑,不得不返工。最好让系统、软件、硬件、测试、安全工程师一起评审。
- 错误四:忘记记录假设。 评估时你肯定做了很多假设,比如“假设驾驶员注意力集中”、“假设天气良好”。这些假设必须记录在HARA报告中,否则后续设计变更时,没人知道当初为什么这么定。
我曾经踩过的坑: 有一次评估“自动紧急制动(AEB)误触发”的危害。团队给了S2、E3、C2,查表得ASIL B。但后来发现,我们忽略了“误触发发生在高速且后方有车”的场景。那个场景下,S可以到S3,C到C3,ASIL直接跳到D。所以,HARA一定要覆盖所有合理的场景组合,别偷懒。
好了,HARA的S、E、C评估和ASIL确定,核心就是这些。记住:评估不是目的,目的是为后续的安全目标定义和功能安全设计提供准确的输入。你评估得越扎实,后面的路就越顺。