4. 危害分析与风险评估(HARA):从场景到ASIL的完整链路

好,咱们进入功能安全最核心的一步——HARA。说实话,很多工程师觉得HARA就是填表格、走流程。但我做了这么多年项目,可以负责任地告诉你:HARA的质量,直接决定了整个功能安全开发的成败。你想想看,如果危害没识别全,或者ASIL等级定低了,后面所有的安全机制都是白搭。

4.1 HARA方法论:不是纸上谈兵

HARA的全称是Hazard Analysis and Risk Assessment。说白了,就是回答三个问题:

  • 车会出什么危险?(危害识别)
  • 在什么情况下出危险?(运行场景定义)
  • 危险有多严重?(风险等级评定)

我个人习惯把HARA分成四个步骤,像流水线一样走下来:

  1. 场景定义——搞清楚车在什么环境下跑
  2. 危害识别——找出所有可能的危险事件
  3. 风险评定——评估每个危险的严重度、暴露率、可控性
  4. ASIL确定——根据评定结果定等级

重要提醒:HARA不是一次性的工作。我在项目中遇到过,明明前期做了完整的HARA,结果到了V模型后期,发现新场景没覆盖到。所以,HARA一定要迭代更新。

4.2 运行场景定义:别让场景坑了你

场景定义是HARA的基石。你想想看,同样的功能在不同场景下,风险等级可能天差地别。

举个例子:自动紧急制动(AEB)

  • 在高速公路上,前车急刹——场景A
  • 在城市道路上,行人突然横穿——场景B
  • 在隧道里,光线突然变暗——场景C

这三个场景,暴露率、可控性都不一样。我建议你从这几个维度去定义场景:

维度 典型取值 说明
道路类型 高速、城市、乡村、隧道 不同道路的行驶速度、交通密度不同
天气条件 晴天、雨天、雪天、雾天 影响传感器性能和路面附着力
交通参与者 车辆、行人、自行车、动物 不同参与者的行为模式差异大
车辆状态 直行、转弯、变道、倒车 车辆动力学特性不同

我的经验:场景定义不要贪多。我曾经在一个项目里定义了200多个场景,结果评审时发现很多场景是重复的。后来我学乖了,先定义20-30个典型场景,覆盖90%以上的运行情况,剩下的在迭代中补充。

4.3 危害识别:找到所有"地雷"

危害识别,说白了就是找茬。你要找出所有可能导致人员受伤的危险事件。

我常用的方法是功能失效分析。比如,对于一个自动驾驶的"车道保持"功能,我会问自己:

  • 如果功能失效了会怎样?——车辆偏离车道
  • 如果功能误触发了会怎样?——车辆突然转向
  • 如果功能响应延迟了会怎样?——车辆修正不及时

嗯,这里要注意:危害一定要和场景绑定。你不能只说"车辆偏离车道",你得说"在高速公路上以120km/h行驶时,车辆偏离车道,可能导致与相邻车道车辆碰撞"。

避坑指南:我曾经犯过一个错误——只考虑了功能失效,没考虑功能降级。比如,某个传感器坏了,系统降级到"仅限低速行驶",但驾驶员不知道。这种降级场景下的危害,往往容易被忽略。

4.4 风险等级评定:三个参数定生死

ISO 26262用三个参数来评定风险等级:

  • S(Severity)——严重度:伤害有多重?
  • E(Exposure)——暴露率:这种情况多常见?
  • C(Controllability)——可控性:驾驶员能控制住吗?

每个参数分4个等级:

等级 S(严重度) E(暴露率) C(可控性)
S0 无伤害
S1 轻伤(可恢复)
S2 重伤(可能危及生命)
S3 致命伤
E1 极低(每年几次)
E2 低(每月几次)
E3 中(每周几次)
E4 高(几乎每次驾驶)
C1 容易控制
C2 一般可控
C3 难以控制

举个例子:高速上AEB失效导致追尾

  • S:高速追尾,大概率S3(致命伤)
  • E:高速行驶很常见,E4
  • C:驾驶员反应时间很短,C3

4.5 ASIL等级确定:从A到D的决策

有了S、E、C三个参数,查表就能得到ASIL等级:

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 C ASIL C
S3 E3 ASIL B ASIL C ASIL D
S3 E4 ASIL C ASIL D ASIL D

回到刚才的例子:S3、E4、C3 → ASIL D。嗯,最高等级,意味着你需要最严格的安全措施。

关键点:ASIL D不是终点。我见过很多团队,一看到ASIL D就慌了,觉得成本太高。其实,你可以通过安全机制来降低风险。比如,增加冗余传感器、设计故障降级策略,把ASIL D的需求分解到子系统,变成ASIL B甚至ASIL A的要求。

4.6 实战案例:一个完整的HARA示例

咱们拿自动泊车功能来走一遍流程:

场景定义:

  • 场景1:地下车库,光线暗,车位狭窄
  • 场景2:路边平行停车,后方有来车
  • 场景3:停车场,周围有行人走动

危害识别(以场景1为例):

  • 危害1:泊车过程中,系统误判车位边界,导致车辆刮擦相邻车辆
  • 危害2:泊车过程中,系统未检测到车位内的障碍物(如消防栓),导致碰撞
  • 危害3:泊车过程中,系统突然退出,车辆停在半路,阻碍交通

风险评定(以危害1为例):

  • S:刮擦导致轻微财产损失,人员无伤害 → S0(无伤害)
  • E:地下车库泊车,每周几次 → E3
  • C:驾驶员可以随时接管 → C1

ASIL等级:S0 → QM(质量管理级,不需要功能安全措施)

但如果是危害2(碰撞消防栓导致车辆失控撞到行人):

  • S:行人可能重伤 → S2
  • E:地下车库有行人,常见 → E3
  • C:驾驶员注意力分散,难以控制 → C2
  • ASIL:查表 → ASIL B

我的建议:做HARA时,一定要拉上系统工程师、软件工程师、测试工程师一起评审。一个人闭门造车,很容易漏掉关键场景。我记得有一次,我们团队评审时,测试工程师提了一个"雨天夜间泊车"的场景,结果发现这个场景的暴露率被低估了,ASIL等级从B升到了C。

好了,HARA这部分就讲到这里。下一章咱们聊聊功能安全概念(FSC)——怎么把ASIL等级转化成具体的安全需求。记住一句话:HARA做得好,后面少烦恼