2. 功能安全标准体系

HARA,全称 Hazard Analysis and Risk Assessment。说白了,它就是功能安全开发的“第一道安检门”。

我经常跟团队里的年轻人讲:没有HARA,后面的所有安全活动都是盲人摸象。你连车跑多快、撞多狠、人伤多重都没搞清楚,怎么定安全目标?怎么设计安全机制?

2.1 HARA的目的与流程

HARA的核心目的就三个:

  • 找出危害——系统在什么情况下会出危险?
  • 评估风险——这个危险到底有多严重?发生的概率有多大?
  • 定出等级——给每个危害分配一个ASIL等级,作为后续设计的“硬指标”。

整个流程我习惯分成五步走:

  1. 功能定义:搞清楚系统到底要干什么。比如“电子助力转向系统”的功能就是“根据方向盘转角输出助力扭矩”。
  2. 危害识别:功能失效了会怎样?比如“助力扭矩突然丢失”或“输出反向助力”。
  3. 场景分析:这个失效在什么场景下最危险?高速变道?还是低速泊车?
  4. 三要素评级:对每个危害场景,分别评出严重度(S)、暴露率(E)、可控性(C)。
  5. ASIL等级确定:查表,S、E、C三个值一组合,ASIL等级就出来了。

关键提醒:HARA不是一次性工作。系统设计变了、使用场景变了、法规更新了,HARA都要跟着迭代。我见过不少项目,HARA做完就扔一边,结果后期测试发现安全目标根本覆盖不住新场景——那叫一个惨。

下面这张图是我自己总结的HARA核心流程,你一看就明白:

HARA 核心流程 ① 功能定义 ② 危害识别 ③ 场景分析 ④ 严重度(S) / 暴露率(E) / 可控性(C) ⑤ ASIL等级确定 💡 核心产出 安全目标 (Safety Goal) ASIL 等级 (A/B/C/D/QM) 安全状态 (Safe State) ⚠️ 常见误区 只分析正常驾驶场景 忽略维修/充电/OTA场景 S/E/C 评级凭感觉不凭数据

2.2 危害识别

危害识别,就是回答一个问题:“这个功能如果失效了,最坏能坏到什么程度?”

举个例子。你做一个“自动紧急制动(AEB)”系统。正常功能是检测到障碍物后自动刹车。那失效模式有哪些?

  • 误触发:没障碍物时突然急刹——后车追尾风险。
  • 不触发:有障碍物时没反应——直接撞上去。
  • 部分失效:刹车力度不够——减速不足,还是撞。

我的经验:做危害识别时,别只盯着“完全失效”。部分失效、间歇性失效、多故障叠加往往才是真正的杀手。我曾经在一个线控制动项目中,发现“单轮制动压力异常”这个危害被团队忽略了——结果在冰雪路面上,单轮抱死比四轮全失更危险。

2.3 场景分析

同一个失效,在不同场景下风险天差地别。你想想看:

  • “转向助力丢失”在高速公路上以120km/h过弯——严重度极高。
  • “转向助力丢失”在停车场以5km/h挪车——基本没风险。

所以,场景分析要覆盖:

  • 驾驶场景:高速、城市、乡村、停车场、隧道、桥梁……
  • 环境条件:白天/黑夜、晴天/雨雪/大雾、干燥/湿滑路面。
  • 车辆状态:直行、转弯、变道、加速、减速、静止。
  • 人员状态:驾驶员是否疲劳?是否分心?是否有经验?

注意:场景分析不是越多越好。每个场景都要有工程合理性。我曾经见过有人把“车辆在火星表面行驶”写进场景——这就不太合适了。场景要基于实际使用条件和合理可预见的误使用。

2.4 严重度(S)、暴露率(E)、可控性(C)评级

这是HARA最核心、也最容易出争议的部分。ISO 26262给出了明确的等级定义,但实际落地时,每个公司都有自己的“内部标尺”。

严重度(S)——伤有多重?

等级 描述 典型场景
S0 无伤害 轻微刮擦,无人受伤
S1 轻伤(可治疗) 低速追尾,颈部轻微扭伤
S2 重伤(需住院) 50km/h碰撞,骨折
S3 致命伤 高速正面碰撞,死亡

暴露率(E)——发生的频率有多高?

等级 描述 典型场景
E0 几乎不暴露 车辆在火星表面行驶
E1 非常低(<1% 驾驶时间) 车辆在结冰路面上行驶
E2 低(1%~10% 驾驶时间) 车辆在夜间行驶
E3 中等(10%~50% 驾驶时间) 车辆在城市道路行驶
E4 高(>50% 驾驶时间) 车辆在干燥路面上行驶

可控性(C)——人能控制住吗?

等级 描述 典型场景
C0 完全可控 空调失效,驾驶员无感
C1 简单可控 转向助力轻微波动,驾驶员可补偿
C2 一般可控 制动助力部分失效,驾驶员需用力踩
C3 难以控制 高速爆胎,驾驶员很难稳住方向

避坑指南:我曾经在一个项目中,团队把“可控性”评得太乐观。比如“制动完全失效”场景,有人觉得“驾驶员可以拉手刹啊,C1吧”。但实际测试发现,在高速上制动完全失效,驾驶员从惊慌到反应再到正确操作,平均需要3-5秒——这期间车已经冲出几百米了。最后我们改成了C3。记住:可控性不是“理论上能不能”,而是“普通人能不能”。

2.5 ASIL等级确定

有了S、E、C三个值,查ISO 26262-3:2018 Table B.1,就能得到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

举个例子:

  • 场景:车辆在高速公路上以120km/h行驶(E3),突然转向助力完全丢失(S3,因为可能失控撞车),普通驾驶员很难控制(C3)。查表:S3+E3+C3 = ASIL D。
  • 场景:车辆在停车场以5km/h挪车(E2),转向助力丢失(S1,因为速度低,最多刮擦),驾驶员很容易控制(C1)。查表:S1+E2+C1 = QM(仅需质量管理,无需功能安全措施)。

我的习惯:每次定完ASIL等级,我都会问自己一个问题:“如果这个危害真的发生了,我敢不敢让我的家人坐在那辆车上?”如果答案是“不敢”,那这个等级可能评低了。安全不是算出来的,是设计出来的。