4. 危害分析与风险评估(HARA):HARA方法论、运行场景定义、危害事件识别、ASIL等级确定

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

说实话,我见过不少项目,前期架构设计得漂漂亮亮,一到HARA就开始糊弄。结果呢?后期ASIL等级定错了,安全机制要么过度设计浪费成本,要么不足导致项目返工。所以这一章,咱们得把HARA的每个环节掰开揉碎了讲清楚。

4.1 HARA到底是什么?

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

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

我个人习惯把HARA比作「排雷」。你想想看,域控制器就像一辆车的「大脑」,它要是出了错,后果可能是灾难性的。HARA就是提前把这些「雷」找出来,然后决定怎么处理。

核心原则:HARA不是一次性的工作。随着项目推进,架构变了、功能变了,HARA也要跟着更新。我见过最惨的项目,HARA做完就锁进柜子里,最后审核时被开了十几个不符合项。

HARA核心流程 1. 功能定义 明确系统功能边界 2. 运行场景定义 车辆状态+环境+人员 3. 危害事件识别 功能失效→危害 4. ASIL等级确定 S×E×C → ASIL 5. 安全目标定义 ASIL等级→安全要求 6. 安全机制分配 技术措施落地 迭代优化(架构变更时重新评估)

4.2 运行场景定义——别小看这一步

很多人觉得运行场景就是「车在跑」。错了。场景定义得越细,后面的分析越准。

我一般把场景拆成三个维度:

  • 车辆状态:车速、转向角、制动状态、挡位
  • 环境条件:白天/黑夜、雨/雪/雾、道路类型(高速/城市/乡村)
  • 人员因素:驾驶员注意力、是否疲劳、是否分心

我的经验:有一次做ACC(自适应巡航)的HARA,我们只考虑了「高速跟车」场景。结果审核时被问到:「如果前车突然变道,你的系统怎么反应?」我们当场愣住了。从那以后,我要求团队必须列出至少20个典型场景。

举个例子,对于「自动紧急制动(AEB)」功能,运行场景至少包括:

场景编号 车辆状态 环境条件 人员因素
S-01 车速60km/h,直行 白天,干燥路面 驾驶员注意力集中
S-02 车速80km/h,弯道 夜间,湿滑路面 驾驶员分心(看手机)
S-03 车速30km/h,拥堵 雨天,能见度低 驾驶员疲劳
S-04 车速0km/h,等红灯 白天,交叉路口 驾驶员正常

4.3 危害事件识别——从功能失效到人身伤害

这一步的核心逻辑是:功能失效 → 车辆行为异常 → 危害事件 → 人身伤害

举个例子,对于「电子助力转向(EPS)」功能:

  • 功能失效:转向助力突然消失
  • 车辆行为:方向盘变得很重,驾驶员无法及时转向
  • 危害事件:车辆偏离车道,与相邻车道车辆碰撞
  • 人身伤害:乘员受伤,甚至死亡

注意:危害事件必须描述「谁受伤了?怎么受伤的?」。不能说「车辆失控」,要说「车辆偏离车道后与对向车辆发生正面碰撞,导致乘员重伤」。

我习惯用「危害事件表」来记录:

ID 功能 失效模式 危害事件 潜在后果
H-01 AEB 未触发制动 车辆未减速,追尾前车 乘员颈部受伤
H-02 AEB 误触发制动 高速急刹,后车追尾 乘员挥鞭伤
H-03 EPS 转向卡滞 无法避让障碍物 碰撞导致骨折

4.4 ASIL等级确定——S×E×C的魔法

ASIL等级由三个参数决定:

  • S(Severity):伤害严重度。S0(无伤害)→ S1(轻伤)→ S2(重伤)→ S3(致命)
  • E(Exposure):暴露概率。E0(几乎不)→ E1(低)→ E2(中)→ E3(高)→ E4(极高)
  • C(Controllability):可控性。C0(完全可控)→ C1(简单可控)→ C2(一般可控)→ C3(难以控制)

ASIL等级 = f(S, E, C)。具体查表:

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

避坑指南:我曾经在一个项目中,把AEB的S定成了S3(致命),E定成了E2(中等暴露),C定成了C2(一般可控)。结果查表是ASIL C。但后来发现,这个场景只在「高速+前车静止」时才成立。实际上,前车静止的概率很低,E应该降到E1。最终ASIL等级从C降到了B。你想想看,这省了多少开发成本!

4.5 实战中的常见误区

做了这么多年HARA,我总结出几个最容易踩的坑:

  1. 场景定义太粗:只写「车辆行驶中」,不写车速、路况、环境。结果ASIL等级要么过高要么过低。
  2. 忽略组合失效:只考虑单一失效,不考虑多个失效同时发生。比如「制动失效+转向卡滞」同时发生怎么办?
  3. 可控性评估太乐观:总觉得「驾驶员能反应过来」。实际上,在高速上突然失去转向助力,99%的驾驶员都控制不住。
  4. HARA做完不更新:项目中期架构改了,HARA还是老版本。审核时直接被判不合格。

我的建议:每次架构评审后,花半天时间过一遍HARA。哪怕只改了一个传感器,也要重新评估相关危害事件的ASIL等级。别嫌麻烦,这比后期改安全机制省事多了。

好了,HARA的核心内容就这些。记住一句话:HARA做得好,安全开发就成功了一半。下一节咱们聊聊怎么把HARA的结果转化成具体的安全需求。

专注资料整理