第2章:危害分析与风险评估(HARA)
各位工程师朋友,咱们今天聊聊HARA。说实话,这是功能安全里最核心、也最容易被轻视的一步。我见过不少项目,前期HARA做得马虎,后期改得想哭。你想想看,连风险都没搞清楚,后面的安全措施怎么定?
2.1 HARA方法论:从场景到等级
HARA的全称是Hazard Analysis and Risk Assessment。说白了,就是回答三个问题:
- 车在什么情况下会出问题?(运行场景)
- 出问题后会怎样?(危害事件)
- 这个危害有多严重?(ASIL等级)
我个人习惯把HARA分成四步走:
- 场景定义 – 搞清楚车辆在什么环境、什么工况下运行
- 危害识别 – 找出系统失效后可能导致的危险
- 风险评估 – 评估S、E、C三个参数
- ASIL定级 – 根据ISO 26262表格确定安全等级
嗯,这里要注意:HARA不是一次性工作。随着项目深入,你会发现有些场景之前没考虑到。我建议至少做两轮迭代。
核心原则:HARA的输出质量,直接决定了整个功能安全开发的成败。别想着走捷径,该花的功夫一分都不能省。
2.2 转向系统运行场景定义
场景定义是HARA的起点。很多新手容易犯一个错误:场景定义得太笼统。比如只说「车辆在高速行驶」,这远远不够。
我个人习惯把场景拆成三个维度:
| 维度 | 具体内容 | 转向系统示例 |
|---|---|---|
| 环境条件 | 天气、光照、路面状况 | 雨天湿滑路面、夜间无照明、冰雪路面 |
| 车辆状态 | 车速、转向角、负载 | 高速120km/h、低速泊车、满载爬坡 |
| 驾驶员行为 | 操作意图、注意力状态 | 紧急避让、正常变道、分心驾驶 |
避坑指南:我曾经在一个项目中,只考虑了干燥路面场景。结果冬季测试时,转向助力在冰雪路面出现异常,差点出事故。从那以后,我要求团队必须覆盖至少5种典型路面条件。
对于转向系统,我建议重点关注以下场景:
- 高速直线行驶 – 转向突然卡死或助力丢失
- 弯道行驶 – 转向过度或不足
- 泊车工况 – 低速大角度转向
- 紧急避让 – 快速转向响应
- 特殊路面 – 冰雪、颠簸、涉水
2.3 危害事件识别
危害事件识别,就是回答「系统失效后,会发生什么危险?」。这里有个关键点:要区分「失效」和「危害」。
举个例子:
- 失效:转向助力电机突然断电
- 危害:驾驶员需要施加更大的力才能转动方向盘,可能导致车辆偏离车道
嗯,这里要注意:同一个失效,在不同场景下可能产生不同的危害事件。比如助力丢失:
- 高速场景 → 车辆偏离车道,碰撞风险
- 低速泊车 → 驾驶员费力,但风险较低
所以,危害事件必须绑定场景。我习惯用「场景 + 失效 + 后果」的格式来描述:
示例:「车辆在高速(120km/h)直线行驶时,转向助力突然丢失,导致驾驶员无法及时修正方向,车辆偏离车道,可能与其他车辆或护栏发生碰撞。」
2.4 严重度(S)、暴露率(E)、可控性(C)评估
这三个参数是ASIL定级的基础。咱们一个一个说。
2.4.1 严重度(Severity, S)
严重度衡量的是「如果危害发生,人员受伤的严重程度」。ISO 26262定义了S0~S3四个等级:
| 等级 | 描述 | 转向系统示例 |
|---|---|---|
| S0 | 无伤害 | 转向轻微抖动,不影响驾驶 |
| S1 | 轻伤(可恢复) | 转向偏重,驾驶员需费力操作 |
| S2 | 重伤(可能危及生命) | 转向突然卡死,导致碰撞 |
| S3 | 致命伤害 | 转向完全失控,高速碰撞 |
我个人经验:转向系统的严重度评估,要特别关注「二次伤害」。比如转向失效导致车辆冲入对向车道,可能引发连环碰撞,这时候S等级就要往上调。
2.4.2 暴露率(Exposure, E)
暴露率衡量的是「驾驶员在多大频率下会处于这个危险场景」。E0~E4五个等级:
| 等级 | 描述 | 转向系统示例 |
|---|---|---|
| E0 | 几乎不可能 | 车辆在赛道上进行极限漂移 |
| E1 | 很少发生(<1%的驾驶时间) | 冰雪路面高速行驶 |
| E2 | 偶尔发生(1%~10%) | 夜间雨天行驶 |
| E3 | 经常发生(10%~50%) | 城市道路正常行驶 |
| E4 | 几乎总是(>50%) | 高速公路直线行驶 |
注意:暴露率评估不能拍脑袋。我建议参考实际路测数据或行业统计数据。比如「高速行驶」这个场景,对于经常跑高速的用户,E等级可能达到E4;但对于只在市区开车的用户,可能只有E2。
2.4.3 可控性(Controllability, C)
可控性衡量的是「驾驶员或其他人员能否避免危害」。C0~C3四个等级:
| 等级 | 描述 | 转向系统示例 |
|---|---|---|
| C0 | 完全可控 | 转向轻微偏重,驾驶员轻松应对 |
| C1 | 简单可控 | 转向助力丢失,但驾驶员能用力控制 |
| C2 | 一般可控 | 转向突然卡死,需要紧急反应 |
| C3 | 难以控制 | 转向完全失控,驾驶员无法干预 |
嗯,这里有个坑:可控性评估不能只看「理论上的可能性」。我记得有个项目,工程师认为「转向卡死后驾驶员可以刹车减速」,所以给了C1。但实际测试发现,在高速上突然卡死,大多数驾驶员的第一反应是猛打方向盘,而不是刹车。所以最后我们改成了C2。
2.5 ASIL等级确定
有了S、E、C三个参数,就可以查ISO 26262的表格来确定ASIL等级了。表格长这样:
| S | E | C1 | C2 | C3 |
|---|---|---|---|---|
| S1 | E1 | QM | QM | QM |
| E2 | QM | QM | A | |
| E3/E4 | A | B | C | |
| S2 | E1 | QM | QM | A |
| E2 | QM | A | B | |
| E3/E4 | A | B | C | |
| S3 | E1 | A | B | C |
| E2 | B | C | D | |
| E3/E4 | C | D | D |
举个例子:
- 场景:高速行驶(E4),转向助力丢失导致偏离车道(S2),驾驶员需要紧急反应(C2)
- 查表:S2 + E4 + C2 → ASIL B
重要提醒:ASIL等级不是越高越好。ASIL D意味着最严格的安全要求,开发成本也最高。合理的做法是:在满足安全目标的前提下,尽量选择较低的ASIL等级。我见过有些团队为了「保险」,把所有危害都定成ASIL D,结果项目预算直接翻倍。
2.6 实战经验总结
最后,分享几个我在项目中踩过的坑:
- 场景遗漏:有一次我们漏掉了「车辆满载+上坡+转向」的场景,结果测试时发现转向助力不足。从那以后,我要求团队必须列出至少20个典型场景。
- S/E/C评估过于乐观:工程师容易低估风险。我建议让不同角色(系统、软件、测试)独立评估,然后取最高值。
- 忽略组合危害:转向失效+制动失效同时发生,虽然概率低,但后果极其严重。对于这种组合危害,建议单独分析。
好了,HARA的内容就讲到这里。记住一句话:HARA做得越细,后面的路越好走。