3. 危害分析与风险评估(HARA):从识别到分类的完整实践

各位同学,今天我们进入功能安全概念阶段最核心的一步——HARA。说实话,我见过太多项目在HARA上草草了事,结果到了后期才发现遗漏了关键危害,不得不返工。那种痛苦,经历过的人都懂。

HARA的目的很简单:找出系统所有可能的危害,评估它们的风险,然后确定需要降低到什么程度。但做起来,门道可不少。

3.1 HARA到底在干什么?

我习惯把HARA比作「排雷」。你想想看,一辆车上路,可能遇到各种稀奇古怪的情况——传感器被泥巴糊住、电池在极寒下性能骤降、通信线束被老鼠咬断……这些都可能引发危害。

HARA要做的,就是把这些「雷」一个个找出来,然后判断哪个最危险,需要优先处理。

HARA的核心输出:

  • 危害清单(每个危害都有唯一ID)
  • 每个危害对应的运行场景
  • 危害分类结果(S、E、C等级)
  • ASIL等级(QM / A / B / C / D)
  • 安全目标(每个危害至少对应一个安全目标)

嗯,这里要注意:HARA不是一次性工作。随着系统设计深入,你会发现新的危害,或者原来的评估需要调整。我在一个ADAS项目中就遇到过,最初认为某个危害是ASIL B,后来场景分析做细了,发现实际应该是ASIL D——还好发现得早。

3.2 危害识别:别漏掉任何一个

危害识别是HARA的第一步,也是最容易出纰漏的一步。我个人的习惯是,先做头脑风暴,再用检查表兜底。

危害从哪里来?说白了,就是功能异常。一个功能该做的时候没做,或者不该做的时候做了,或者做得不对——都可能是危害。

功能异常类型 举例(电动助力转向EPS) 潜在危害
功能丧失 转向助力突然消失 驾驶员无法转向
功能误触发 非预期施加转向力矩 车辆偏离车道
功能输出错误 转向角度与实际需求偏差过大 车辆失控
功能时序错误 转向响应延迟超过500ms 避障不及

我曾经在一个线控制动项目中,团队只关注了「制动失效」这个危害,却忽略了「非预期制动」——结果在高速场景下,非预期制动可能比制动失效更危险。所以,正反两面都要想。

我的小技巧: 危害识别时,拉上系统工程师、软件工程师、硬件工程师、甚至测试工程师一起开会。不同视角能帮你发现盲区。我见过最离谱的一次,是生产线的师傅指出一个装配环节可能导致的危害——我们设计团队完全没想到。

3.3 运行场景分析:危害不是孤立的

同一个危害,在不同场景下,风险天差地别。举个例子,「动力电池热失控」——在高速隧道里和在地面停车场,后果能一样吗?

运行场景分析,就是要回答三个问题:

  • 什么时候会发生?(车辆状态、环境条件)
  • 谁会受影响?(驾驶员、乘客、行人、其他车辆)
  • 后果有多严重?(可控性如何?)

我建议用场景矩阵来系统化分析。每个危害至少覆盖3-5个典型场景,包括最坏情况场景。

避坑指南: 我曾经见过一个项目,只分析了「正常驾驶」场景,忽略了「低附着力路面」和「系统降级模式」——结果在冰雪测试中暴露了严重问题。记住:场景覆盖不全,HARA就是白做。

下面这张图展示了HARA中危害识别与场景分析的逻辑关系:

HARA 核心流程:危害识别 → 场景分析 → 危害分类 功能异常 丧失 / 误触发 / 错误 危害事件 车辆偏离 / 失控 / 碰撞 运行场景 高速 / 低速 / 泊车 场景参数(至少覆盖3-5个典型场景) 车辆状态 环境条件 人员状态 最坏情况 危害分类:S(严重度)E(暴露概率)C(可控性) → ASIL 等级(QM / A / B / C / D) 输出:安全目标 + ASIL

3.4 危害分类:S、E、C 三要素

ISO 26262 用三个维度来评估危害的风险等级:

  • S(Severity)严重度:伤害有多重?轻伤?重伤?致命?
  • E(Exposure)暴露概率:这个场景发生的频率高不高?
  • C(Controllability)可控性:驾驶员或其他人员能控制住局面吗?

三个维度组合,查表得到ASIL等级。我刚开始做HARA时,总觉得这个表很死板,后来发现——真正难的不是查表,而是给S、E、C打分。

等级 S(严重度) E(暴露概率) C(可控性)
S0 无伤害 — —
S1 轻伤(可逆) — —
S2 重伤(可能不可逆) — —
S3 致命 — —
E1 — 极低(<1% 驾驶时间) —
E2 — 低(1%~10%) —
E3 — 中(10%~50%) —
E4 — 高(>50%) —
C1 — — 容易控制
C2 — — 一般可控
C3 — — 难以控制

ASIL等级确定规则(简化版):

  • S1 + E1 + C1 → QM(无安全要求)
  • S2 + E2 + C2 → ASIL A
  • S2 + E3 + C2 → ASIL B
  • S3 + E2 + C2 → ASIL C
  • S3 + E3 + C3 → ASIL D(最高等级)

实际查表比这个复杂,但逻辑是一样的:越严重、越常见、越难控制,等级越高。

3.5 实战中的几个坑

做了这么多年HARA,我踩过的坑不少,挑几个典型的说说:

  1. 「S、E、C打分太主观」——同一个危害,不同工程师打分可能差两级。我的建议是:建立团队共识,用历史数据或参考项目做校准。实在拿不准的,往高了打,安全第一。
  2. 「场景分析不够细」——比如只说「高速行驶」,但高速上有没有弯道?路面湿不湿?车流量大不大?这些都会影响E和C的评估。
  3. 「忽略组合危害」——两个危害同时发生怎么办?比如制动失效 + 转向卡死。ISO 26262要求考虑独立失效,但实际中相关失效也要留意。

我曾经踩过的坑: 在一个BMS项目中,我们把「电池过温」的E等级打成了E2(低暴露概率),理由是「正常使用很少过温」。结果忽略了快充场景——用户频繁使用快充,过温概率远高于预期。后来被审核老师指出,改成了E3。所以,场景分析一定要覆盖所有合理可预见的用法,包括滥用。

3.6 从HARA到安全目标

每个危害最终都要转化为安全目标。安全目标就是一句话:「系统要避免XXX危害」,并且带上ASIL等级。

举个例子:

  • 危害:EPS非预期施加转向力矩,导致车辆偏离车道
  • 安全目标:EPS系统应防止非预期的转向力矩输出 [ASIL D]

安全目标要写清楚、可验证。我见过最糟糕的安全目标:「系统要安全」——这等于没写。好的安全目标应该能直接指导后续的功能安全概念设计。

我的习惯: 每个安全目标都加上「可验证」的约束。比如「非预期转向力矩 < 1Nm,响应时间 < 100ms」——这样测试工程师拿到手就知道怎么测。

好了,HARA这部分内容不少,但核心就是三件事:找出危害、分析场景、分类定级。做扎实了,后面的功能安全概念设计才能站得住脚。