3. HARA分析实战:以LKA为例进行危害分析与风险评估

好,咱们进入正题。HARA,全称是 Hazard Analysis and Risk Assessment,中文叫危害分析与风险评估。说白了,就是回答三个问题:

  • 这功能出问题了,会出什么事?
  • 这事儿有多严重?
  • 我们得做到多安全才能接受?

我个人习惯,做HARA之前,先别急着翻标准。先拿张白纸,把LKA的功能场景画出来。你想想看,LKA在高速上跑,在市区里跑,在弯道上跑,场景不一样,危害也不一样。

3.1 第一步:定义功能与场景

我们先明确LKA的核心功能:

功能描述: 当车辆无意识偏离车道时,系统通过主动转向干预,将车辆引导回车道中心。

嗯,这里要注意,是“无意识偏离”。如果驾驶员打了转向灯,那系统就不该干预。这个边界条件,在HARA里要写清楚。

我建议把场景分成三类:

  • 高速场景: 车速 > 80 km/h,车道线清晰,交通流稳定
  • 城市场景: 车速 30-60 km/h,车道线可能模糊,有行人、非机动车
  • 弯道场景: 曲率半径 < 250m,视野受限

为什么要分场景?因为同一个故障,在不同场景下,后果天差地别。我在项目中遇到过,一个LKA的扭矩输出故障,在高速上差点让车撞上护栏,但在市区低速时,驾驶员一把就能拉回来。

3.2 第二步:识别危害事件

接下来,我们要找出“什么情况下LKA会变成杀手”。

常见的危害事件包括:

  • 误激活: 驾驶员没想变道,LKA突然打方向
  • 失效: 该转向时不转向,车辆偏离车道
  • 过度干预: 转向力矩过大,驾驶员无法修正
  • 错误方向: 本该向左转,结果向右转了

我举个例子。有一次,我们测试车在高速上,LKA突然把方向盘往右打了一下。驾驶员吓了一跳,赶紧抢方向盘。后来查出来,是摄像头把路面的阴影误识别成了车道线。这就是典型的“误激活”。

⚠️ 避坑指南: 我曾经在HARA里漏掉了“错误方向”这个危害。结果在实车测试时,系统在弯道里反向打方向,差点酿成事故。从那以后,我每次做HARA都会专门列一个“方向错误”的检查项。

3.3 第三步:评估风险等级(ASIL等级)

ISO 26262 给了我们三个维度来评估风险:

参数 含义 等级
S (Severity) 危害的严重程度 S0, S1, S2, S3
E (Exposure) 场景发生的概率 E0, E1, E2, E3, E4
C (Controllability) 驾驶员能否控制 C0, C1, C2, C3

然后根据这三个参数,查表得到ASIL等级:

S E C ASIL
S2 E3 C2 ASIL B
S3 E3 C2 ASIL C
S3 E4 C3 ASIL D

我个人的经验是,S(严重度) 是最容易扯皮的。你觉得撞护栏是S2还是S3?我的建议是,拿实际的事故数据说话。比如,高速上偏离车道导致的对撞事故,死亡率很高,那S3没跑。

3.4 第四步:LKA的HARA实例

好,我们拿一个具体的场景来走一遍流程。

场景: 高速公路上,车速120 km/h,车道线清晰,驾驶员双手轻扶方向盘。

危害事件: LKA因软件故障,在直道上突然施加50Nm的转向力矩,导致车辆突然向右变道。

评估过程:

  • S(严重度): 突然变道可能导致与相邻车道车辆碰撞,高速碰撞死亡率高 → S3
  • E(暴露率): 高速场景很常见,几乎每次开车都会遇到 → E4
  • C(可控性): 驾驶员在120km/h下,突然被抢方向盘,反应时间很短。大部分驾驶员无法在1秒内稳定控制车辆 → C3

查表:S3 + E4 + C3 = ASIL D

🎯 结论: 这个危害事件的ASIL等级是D级。意味着我们需要最高等级的功能安全开发流程,包括硬件冗余、软件多样性设计、全面的测试覆盖。

你可能会问,是不是所有LKA的故障都是ASIL D?不是的。比如,在市区低速场景下,同样的故障,S可能降到S2,C可能降到C2,最终可能是ASIL B。所以,场景很重要

3.5 第五步:定义安全目标

有了ASIL等级,我们就要定义安全目标了。安全目标说白了就是:“系统不能做什么”

以刚才的ASIL D危害为例,安全目标可以写成:

SG-01: LKA系统在未检测到驾驶员意图时,不得施加超过10Nm的转向力矩。
  - ASIL: D
  - 验证方法: 故障注入测试 + 软件静态分析
  - 接受准则: 在1000次随机故障注入中,无一次超过阈值

嗯,这里要注意,安全目标要写得可验证。你不能写“系统要安全”,那是废话。要写“力矩不超过10Nm”、“响应时间小于100ms”这种能测的东西。

我在项目中见过最坑的安全目标,写的是“系统应避免危险”。你告诉我,这怎么测?没法测。所以,安全目标一定要量化

3.6 第六步:从安全目标到功能安全需求

安全目标是顶层的,接下来要分解成功能安全需求。比如:

  • FSR-01: 转向扭矩监控模块必须独立于主控制模块运行(ASIL D)
  • FSR-02: 当检测到扭矩超过阈值时,系统必须在50ms内进入安全状态(ASIL D)
  • FSR-03: 安全状态为:切断转向助力,并发出声音报警(ASIL D)

这些需求,最终会落到软件架构、硬件架构、甚至系统架构上。比如FSR-01,你可能需要两个不同的MCU来跑监控和主控,或者用锁步核来实现。

💡 小技巧: 做HARA的时候,我建议拉上系统工程师、软件工程师、硬件工程师一起开会。一个人闭门造车,很容易漏掉关键场景。我记得有一次,硬件工程师提醒我,电源纹波可能导致传感器误报,这个场景我之前完全没考虑到。

3.7 总结与常见误区

好,我们快速总结一下HARA的要点:

  1. 场景要全: 高速、低速、弯道、直道、白天、黑夜、雨雪,一个都不能少
  2. 危害要具体: 别写“系统故障”,要写“误激活导致车辆突然变道”
  3. 等级要客观: 别为了省事故意降低ASIL等级,最后吃亏的是自己
  4. 安全目标要可测: 写清楚阈值、时间、条件

最后,说一个我踩过的坑。有一次,我们做LKA的HARA,把“驾驶员始终手握方向盘”作为默认假设。结果呢?实际用户就是会放手。后来出了事故,追责的时候,这个假设被质疑了。从那以后,我所有的HARA都假设驾驶员可能在任何时候分心

嗯,HARA这东西,说白了就是“把最坏的情况想清楚”。你越想得周全,后面开发就越顺利。否则,等到测试阶段才发现问题,改起来成本就高了。

下一章,我们会讲怎么把这些安全目标落地到系统架构里。到时候见。