第3章 危害分析与风险评估(HARA):HARA方法、危害识别、风险评估与ASIL等级确定

好,咱们进入功能安全最核心的一步——HARA。

说实话,我见过不少项目,前期设计做得漂漂亮亮,一到HARA就开始糊弄。结果呢?后期测试发现一堆漏洞,ASIL等级定得不对,整个安全生命周期都得返工。所以这一章,咱们得把HARA的每个环节掰开揉碎了讲清楚。

3.1 HARA到底是什么?

HARA,全称Hazard Analysis and Risk Assessment。说白了,就是回答三个问题:

  • 我的系统会不会出危险?(危害识别)
  • 出了危险有多严重?(风险评估)
  • 需要多严格的安全措施?(ASIL定级)

我个人习惯把HARA比作「体检」。你想想看,一个人没症状不代表没病。系统也一样,功能正常不代表没有潜在风险。HARA就是给系统做一次全面体检,把那些隐藏的「病灶」找出来。

核心原则:HARA必须在系统定义完成之后、详细设计开始之前进行。我见过有人把HARA拖到设计快完成了才做,结果发现某个危害需要ASIL D等级,但架构根本不支持——那叫一个惨。

3.2 危害识别——第一步,也是最容易漏的一步

危害识别,就是找出「什么情况下系统会出问题」。

这里有个常见的误区:很多人只关注「功能失效」,比如刹车失灵、转向卡死。但实际项目中,危害的来源远不止这些。

我给大家列一个我常用的检查清单:

  • 功能失效:该动的时候不动,不该动的时候乱动
  • 性能降级:响应变慢、精度下降(比如ACC跟车距离突然变大)
  • 时序问题:信号延迟、数据不同步(我在一个项目中遇到过,摄像头和雷达的时间戳差了200ms,导致融合结果完全错误)
  • 通信故障:丢包、错包、总线负载过高
  • 环境干扰:电磁干扰、温度漂移、振动

我的一个小技巧:做危害识别时,别只盯着「正常工况」。多想想「边界情况」——比如电池快没电了、传感器被泥巴糊住了、GPS信号丢失了。这些场景往往才是真正的杀手。

3.3 风险评估——三个维度,一个都不能少

危害识别完了,接下来要评估每个危害的风险等级。ISO 26262给出了三个评估维度:

维度 全称 含义 等级范围
S Severity 伤害的严重程度 S0~S3
E Exposure 暴露于危险场景的概率 E0~E4
C Controllability 驾驶员或其他人控制风险的能力 C0~C3

嗯,这里要注意:这三个维度不是独立评估的。它们组合起来,才能确定最终的ASIL等级。

举个例子吧。我参与过一个电动助力转向项目,其中一个危害是「高速行驶时转向助力突然消失」。

  • S(严重度):高速失控可能导致严重伤亡,S3
  • E(暴露率):高速行驶是常见工况,E3
  • C(可控性):突然失去助力,大多数驾驶员很难控制,C2

查表得到:S3+E3+C2 = ASIL C。嗯,这个等级意味着需要相当严格的安全措施。

避坑指南:我曾经在一个项目中,团队把C等级定得太乐观了。他们觉得「驾驶员总能反应过来」,结果评估出来全是ASIL A或B。后来我让他们做了个实车测试——让普通驾驶员在高速上突然失去转向助力,看看多少人能安全靠边停车。结果呢?超过一半的人直接冲出了车道。从那以后,我们对C等级的评估就谨慎多了。

3.4 ASIL等级确定——从A到D,要求天差地别

ASIL等级分为四个:A、B、C、D。D是最严格的,A是最宽松的。还有一个QM(Quality Management),表示不需要功能安全措施,普通质量管理即可。

ASIL等级决定了什么?说白了,决定了你的安全措施要做到什么程度:

  • ASIL A:基本的安全机制,比如故障检测、报警
  • ASIL B:需要一定的冗余和诊断覆盖
  • ASIL C:需要较高的诊断覆盖率和硬件冗余
  • ASIL D:几乎要「双倍冗余+全面诊断」,成本极高

我给大家一个直观的感受:ASIL D的硬件开发成本,大概是ASIL B的3~5倍。所以,千万别盲目定高等级。能定ASIL B的,就别硬上ASIL D。

一个实用的建议:在HARA阶段,我建议把每个危害的S、E、C评估结果都记录下来,包括评估依据。为什么?因为后期审核时,审核员一定会问:「你这个S3是怎么来的?有没有数据支撑?」如果你拿不出依据,整个HARA都可能被推翻。

3.5 一个完整的HARA示例

咱们拿一个自适应巡航系统(ACC)来练练手。

系统定义:ACC系统,能在30~150km/h范围内自动调节车速,保持与前车的安全距离。

危害1:ACC在高速行驶时,突然误识别前方有障碍物,导致急刹车。

  • S:高速急刹车可能导致追尾,严重度S2
  • E:高速行驶是常见场景,暴露率E3
  • C:驾驶员可以踩油门或接管,可控性C1
  • 结果:S2+E3+C1 = ASIL B

危害2:ACC在跟车时,突然失去前车距离信息,导致加速追尾。

  • S:追尾可能导致伤亡,严重度S3
  • E:跟车场景很常见,暴露率E4
  • C:驾驶员反应时间有限,可控性C2
  • 结果:S3+E4+C2 = ASIL C

你看,同一个ACC系统,不同的危害场景,ASIL等级完全不同。这就是为什么HARA必须一个一个危害去分析,不能笼统地说「这个系统是ASIL C」。

我的经验:做HARA时,最好拉上系统工程师、软件工程师、硬件工程师一起讨论。一个人闭门造车,很容易漏掉关键场景。我记得有一次,硬件工程师提醒我:「这个传感器在低温下会降级。」我们一分析,发现这个降级场景的暴露率比常温场景高得多——因为车在冬天启动时,传感器还没预热。这个场景如果不加进去,HARA就是不完整的。

3.6 本章小结

HARA不是一次性的工作。随着设计的深入,你可能会发现新的危害,或者原来的评估需要调整。所以,我建议把HARA当作一个「活文档」,持续更新。

最后送大家一句话:HARA做得越细,后面的设计越顺。别怕花时间,这个时间省不得。

下一章,咱们聊聊安全目标——HARA的输出,也是安全设计的起点。