4. 危害分析与风险评估(HARA):HAZOP方法、运行场景定义、危害事件识别、严重度(S)、暴露率(E)、可控性(C)评级

好,咱们进入HARA环节。这是功能安全里最核心、也最考验经验的一步。说白了,HARA就是回答三个问题:什么东西会坏?坏了会怎样?我们能不能接受?

我个人习惯把HARA比作「给系统做体检」。你想想看,体检不是光查一个指标,得全面评估。HARA也一样,它要覆盖所有可能的故障场景。我在项目中遇到过不少团队,HARA做得太粗糙,结果后期发现漏了关键危害,那叫一个痛苦。

4.1 HAZOP方法:结构化地找茬

HAZOP,全称是 Hazard and Operability Study。这方法最早是化工行业用的,后来被功能安全领域借用了。它的核心思路是:用引导词 + 参数,系统性地找出偏差

举个例子:

  • 引导词:无、多、少、相反、部分、过早、过晚
  • 参数:电压、电流、温度、压力、速度、扭矩

组合起来就是「无电压」、「多电流」、「相反方向」等等。每个组合都问一句:如果发生这种情况,会怎样?

我的经验:别贪多。一次HAZOP会议控制在2-3小时,聚焦一个子系统。我曾经见过有人想一次把整个系统跑完,结果到后面大家脑子都糊了,漏掉一堆关键偏差。

HAZOP的输出是一张表,通常包含:

引导词 参数 偏差 可能原因 后果 现有防护
制动压力 无制动压力 液压管路破裂 车辆无法制动 制动踏板行程传感器
电机扭矩 电机扭矩过大 电流传感器漂移 车辆非预期加速 扭矩监控模块

4.2 运行场景定义:别在实验室里想当然

危害不是凭空产生的,它一定发生在某个场景里。你想想看,同样是「刹车失灵」,在高速公路上和在地下车库里,后果能一样吗?

所以,定义运行场景是HARA的前置工作。我个人习惯把场景分成三类:

  • 正常运行场景:高速巡航、城市拥堵、倒车入库、红绿灯起步
  • 特殊运行场景:雨雪天气、夜间行驶、山路弯道、施工路段
  • 故障运行场景:传感器失效、通信中断、电源波动、软件跑飞
注意:场景定义要具体。别写「恶劣天气」,要写「暴雨天气,能见度低于50米,路面有积水」。越具体,后面的危害识别越准确。我曾经见过一个项目,场景写得太笼统,结果危害分析时大家争论不休,因为每个人对「恶劣」的理解都不一样。

4.3 危害事件识别:把偏差变成事故

有了HAZOP的偏差,再套上运行场景,就能得到危害事件。危害事件 = 偏差 + 场景 + 后果。

举个例子:

  • 偏差:无制动压力
  • 场景:车辆以120km/h在高速公路上行驶
  • 后果:车辆无法减速,追尾前车,可能导致人员伤亡

这就是一个完整的危害事件。

识别危害事件时,我建议用「如果...那么...」的句式来推演:

  • 如果转向助力突然消失,那么在高速弯道上,驾驶员可能无法控制方向,车辆偏离车道
  • 如果电池热管理系统失效,那么在高温环境下充电,电池可能热失控,引发火灾
关键点:每个危害事件都要有明确的触发条件运行场景可预见的后果。别写模糊的「系统故障」,要写具体的「某传感器输出异常导致某执行器误动作」。

4.4 严重度(S)评级:后果有多严重?

严重度,就是衡量危害事件对人员造成的伤害程度。ISO 26262把S分为四级:

等级 描述 示例
S0 无伤害 轻微不适,无需医疗
S1 轻伤 擦伤、扭伤,可自行处理
S2 重伤 骨折、内出血,需住院治疗
S3 致命伤 死亡、永久性残疾

评级时要注意:看最坏情况,但别太极端。比如刹车失灵,最坏情况当然是车毁人亡,但如果你考虑的场景是「车辆刚起步,速度5km/h」,那S可能只有S1。所以,场景定义直接影响S评级。

我的习惯:先假设没有任何安全机制,看最坏后果。然后再考虑现有防护措施,看是否能降低严重度。这样不容易漏掉高风险项。

4.5 暴露率(E)评级:发生的概率有多大?

暴露率,指的是人员处于危害场景中的频率。注意,不是故障发生的概率,而是场景本身出现的概率。

E也分四级:

等级 描述 示例
E0 几乎不暴露 每年少于1次
E1 很少暴露 每年几次
E2 偶尔暴露 每月几次
E3 频繁暴露 几乎每次驾驶都会遇到

举个例子:

  • 「高速公路上行驶」—— 对经常跑高速的人来说,E3;对只在市区开的人来说,可能E1
  • 「暴雨天行驶」—— 在南方梅雨季节,E2;在干旱地区,可能E0
避坑指南:我曾经见过有人把E和故障率混为一谈。记住,E只关心场景出现的频率,不关心故障本身。故障概率是后面ASIL分解时才考虑的事。

4.6 可控性(C)评级:人能控制住吗?

可控性,就是当危害发生时,驾驶员或其他人员能否通过及时反应来避免伤害

C同样分四级:

等级 描述 示例
C0 完全可控 轻微报警,驾驶员可轻松应对
C1 简单可控 多数驾驶员能在正常反应时间内控制
C2 一般可控 部分驾驶员可能无法控制,但经验丰富的可以
C3 难以控制 即使专业驾驶员也难以避免伤害

评级时,我通常会问自己一个问题:如果是我坐在驾驶座上,突然遇到这个情况,我能反应过来吗?

比如:

  • 「刹车踏板变硬」—— 有经验的驾驶员可能知道用力踩,C1
  • 「方向盘突然锁死」—— 几乎没人能反应过来,C3
  • 「仪表盘报警灯亮起」—— 多数人会减速靠边,C0或C1
核心原则:S、E、C三个维度要独立评估,不要互相影响。比如,不能因为场景暴露率高,就把严重度往高了评。每个维度只看自己的指标。

4.7 综合评级:从S、E、C到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
S2 E1 QM QM ASIL A
S2 E2 QM ASIL A ASIL B
S2 E3 ASIL A ASIL B ASIL C
S3 E1 QM ASIL A ASIL B
S3 E2 ASIL A ASIL B ASIL C
S3 E3 ASIL B ASIL C ASIL D

举个例子:

  • 如果S=3, E=3, C=3 → ASIL D(最高等级)
  • 如果S=1, E=1, C=1 → QM(无需功能安全措施)
我的建议:评级时最好团队一起讨论,别一个人拍脑袋。不同背景的人(系统、硬件、软件、测试)看问题的角度不一样,能帮你发现盲区。我每次做HARA都会拉上至少3个人,花半天时间逐条过。

好了,HARA的核心内容就这些。记住,HARA不是一次性的工作,随着系统设计深入,你可能会发现新的危害,或者原来的评级需要调整。保持迭代,别怕改。