第4章 危害分析与风险评估(HARA):HARA方法、危害识别、风险评估与ASIL等级确定

好,咱们进入功能安全里最核心的一步——HARA。

说实话,我见过不少项目,前期设计做得挺漂亮,一到HARA就开始糊弄。结果呢?后期改架构改到崩溃。所以这一章,我建议你认真看。

4.1 HARA到底是什么?

HARA,全称是Hazard Analysis and Risk Assessment。翻译过来就是危害分析与风险评估。

它的目标很明确:找出系统所有可能的危害,评估这些危害的风险,然后给每个危害定一个安全等级——也就是ASIL等级。

你想想看,一辆车在路上跑,如果某个功能出故障了,会不会导致人受伤?会伤得多重?发生的概率大不大?这些就是HARA要回答的问题。

核心要点:HARA不是一次性的工作。它贯穿整个开发周期。需求变了、架构改了、甚至法规更新了,你都得回头看看HARA需不需要更新。

4.2 HARA的三大步骤

我个人习惯把HARA拆成三步走:

  1. 危害识别——找出所有可能的危害事件
  2. 风险评估——评估每个危害的严重度、暴露概率和可控性
  3. ASIL等级确定——根据评估结果定级

这三步环环相扣。第一步漏了,后面全白干。

4.3 危害识别——别漏掉任何一个角落

危害识别,说白了就是问自己一个问题:这个功能如果出故障,最坏会怎样?

举个例子。你做一个电动助力转向系统。正常情况,方向盘打左,车轮往左转。但如果控制器坏了,输出一个反向的力矩呢?那就是车辆往右转,但驾驶员在往左打方向。这叫什么?这叫危害事件

我在项目中遇到过一件事。有个同事做电池管理系统,他列了过压、欠压、过温这些危害。我问他:「如果BMS和充电机通信中断了呢?」他愣了一下。你看,这就是典型的遗漏。

我的小技巧:做危害识别时,别只盯着单一故障。组合故障、通信故障、甚至软件跑飞都要考虑进去。我曾经吃过这个亏,后来养成了习惯——每次做完第一版,都拉上系统、硬件、软件的人一起过一遍。

危害识别常用的方法有:

  • 头脑风暴——团队一起想,别一个人闷头干
  • 检查表法——基于以往项目的经验积累
  • FMEA——失效模式与影响分析,这个后面会细讲
  • HAZOP——引导词法,比如「无」、「多」、「少」、「反向」等

4.4 风险评估——三个维度定生死

找到危害事件后,就要评估风险了。ISO 26262用了三个参数:

参数 全称 含义 等级
S Severity 严重度——伤害有多重 S0~S3
E Exposure 暴露概率——这种情况多常见 E0~E4
C Controllability 可控性——驾驶员能控制住吗 C0~C3

嗯,这里要注意。这三个参数不是随便拍脑袋定的。标准里给了详细的判定准则。比如严重度S3,指的是「危及生命的伤害,存活概率低」。你想想看,高速上刹车失灵,那就是S3。

暴露概率E4呢?指的是「每次驾驶都会遇到的情况」。比如在城市道路行驶,几乎每次都会遇到红灯、行人。而E1可能是「一年都遇不到几次」的情况。

可控性C3,指的是「驾驶员几乎无法控制」。比如转向系统突然锁死,你方向盘根本打不动,那就是C3。

避坑指南:我曾经见过有人把E和C搞混。E是「危害场景出现的概率」,C是「驾驶员能不能补救」。这是两码事。举个例子:爆胎。爆胎本身概率不高(E2左右),但一旦发生,普通驾驶员很难控制(C3)。别搞混了。

4.5 ASIL等级确定——一张表搞定

有了S、E、C三个值,就可以查表定ASIL了。标准里给了这么一张表:

S E C1 C2 C3
S1 E1 QM QM QM
E2 QM QM ASIL A
E3 QM ASIL A ASIL B
S2 E1 QM QM ASIL A
E2 QM ASIL A ASIL B
E3 ASIL A ASIL B ASIL C
S3 E1 QM ASIL A ASIL B
E2 ASIL A ASIL B ASIL C
E3 ASIL B ASIL C ASIL D

你看,QM就是质量管理,不需要按功能安全流程开发。ASIL A最低,ASIL D最高。ASIL D的要求最严格,比如刹车系统、转向系统,通常都是ASIL D。

为什么会这样?因为S3+E3+C3的组合,意味着「严重伤害+常见场景+无法控制」,那必须用最严格的开发流程来保证安全。

4.6 一个完整的例子

咱们拿「电动尾门」来练练手。

危害事件:尾门在关闭过程中,如果防夹功能失效,可能会夹到人。

  • S(严重度):夹到手指,可能骨折,但不致命。我一般给S1或S2。这里给S1吧。
  • E(暴露概率):每次停车都可能用到尾门,但夹到人的场景呢?嗯,如果有人在尾门关闭路径上,这个概率不算高。给E2。
  • C(可控性):如果夹到人,旁边的人可以喊停,或者按遥控器停止。驾驶员有一定控制能力。给C2。

查表:S1+E2+C2 = QM。也就是说,这个危害只需要按普通质量管理来做就行,不需要额外的功能安全措施。

但如果你换一个场景:尾门在高速行驶时意外打开?那S可能变成S3,E变成E1,C变成C3。查表就是ASIL B。你看,同一个功能,不同场景,ASIL等级完全不同。

我的经验:做HARA时,场景描述一定要具体。别写「尾门故障」这种笼统的话。要写「车辆以120km/h行驶在高速公路上,尾门锁扣失效导致尾门突然打开」。场景越具体,评估越准确。

4.7 常见误区与避坑

最后,我总结几个我踩过的坑:

  • 别把ASIL定得太高或太低。定高了,开发成本飙升;定低了,安全不达标。我见过有人把所有危害都定成ASIL D,结果项目预算直接翻倍。
  • 别忘了考虑「合理可预见的误用」。比如用户把儿童安全座椅装反了,或者用脚踢尾门。这些不是正常使用,但标准要求你考虑。
  • HARA文档要可追溯。每个危害都要能追溯到对应的安全目标和安全需求。不然审核的时候你会很痛苦。

好了,这一章就到这里。HARA是功能安全的基石,花再多时间都值得。下一章咱们聊聊安全目标的定义和分解,那又是另一门学问了。