3. 概念阶段:HARA、安全目标与功能安全概念

概念阶段,说白了就是回答三个问题:系统会不会出事?出了事有多严重?我们怎么防止它出事?

我个人习惯把这一阶段叫做「打地基」。地基没打好,后面所有工作都是空中楼阁。我见过太多项目,HARA 做得马马虎虎,结果到了后期才发现安全目标定得太宽泛,功能安全概念根本落不了地。嗯,那时候再回头改,成本可就大了去了。

3.1 危害分析与风险评估(HARA)

HARA 是整个功能安全流程的起点。它的目标很明确:找出系统所有可能的危害,并评估每个危害的风险等级。

你想想看,一辆车在路上跑,可能出什么故障?转向失灵、刹车失效、加速不受控……这些都属于危害。但危害本身不等于风险。风险 = 危害的严重度 × 发生概率 × 可控性。

ISO 26262 把这三个维度量化成了三个参数:

参数 全称 等级范围 含义
S Severity(严重度) S0 ~ S3 对人员伤害的严重程度
E Exposure(暴露概率) E0 ~ E4 危害场景发生的频率
C Controllability(可控性) C0 ~ C3 驾驶员或其他人员避免伤害的能力

这三个参数组合起来,就得到了 ASIL(汽车安全完整性等级)。ASIL 分为 A、B、C、D 四个等级,D 是最严格的。如果三个参数都是最低,那就是 QM(质量管理级),不需要按功能安全流程开发。

ASIL 等级判定表(简化版)

ASIL = f(S, E, C)。举个例子:

  • S3 + E4 + C3 → ASIL D(最严格)
  • S2 + E3 + C2 → ASIL B
  • S1 + E2 + C1 → ASIL A
  • S0 或 E0 或 C0 → QM

我在项目中遇到过一件事:一个转向系统的 HARA,团队把某个场景的 E 值定成了 E3,结果评审时发现实际使用中那个场景几乎不会发生。最后改成了 E2,ASIL 从 D 降到了 C,省了不少开发成本。所以 HARA 不是走过场,每个参数都要有数据支撑。

3.2 安全目标定义

HARA 做完之后,每个危害都会对应一个或多个 安全目标(Safety Goal)。安全目标是一句顶层的安全要求,它描述的是「系统不能做什么」或者「系统必须做什么」。

举个例子:

  • 危害:车辆在高速行驶时突然非预期加速。
  • 安全目标:车辆应防止非预期的加速,ASIL D。

安全目标有几个关键属性:

  • 每个安全目标必须有一个唯一的 ID,方便追溯。
  • 必须指定 ASIL 等级,这个等级决定了后续开发流程的严格程度。
  • 必须定义安全状态,也就是系统在检测到故障后应该进入什么状态。
  • 必须定义容错时间间隔(FTTI),从故障发生到系统进入安全状态的最大允许时间。

我的经验:安全目标不要写得太具体,也不要太抽象。太具体会限制设计自由度,太抽象又没法验证。我一般会遵循「一句话原则」——安全目标用一句话能说清楚,那就是好的。

3.3 功能安全概念

安全目标定义好了,接下来就是 功能安全概念(Functional Safety Concept, FSC)。FSC 是把安全目标分解成具体的功能安全要求,分配给系统的各个组成部分。

说白了,安全目标是「做什么」,功能安全概念是「怎么做」。

FSC 包含以下几个核心要素:

  • 故障检测机制:怎么发现故障?比如传感器自检、信号合理性检查。
  • 故障响应机制:发现故障后怎么办?比如降级模式、紧急停车。
  • 安全机制分配:这些机制由哪个硬件或软件模块实现?
  • 安全状态定义:系统进入什么状态才算安全?
  • 冗余与容错策略:是否需要双通道?是否需要投票机制?

我曾经在一个项目中,安全目标是「防止非预期加速」,ASIL D。我们设计的 FSC 是这样的:

  • 主控制器和监控控制器双通道设计,两个通道互相校验。
  • 如果两个通道的扭矩指令偏差超过阈值,系统立即进入安全状态——切断动力输出。
  • 安全状态定义为「零扭矩输出」,FTTI 为 100ms。

这个方案听起来简单,但落地时遇到了不少坑。比如两个通道的时钟不同步,导致偏差阈值经常误触发。后来我们加了同步机制,才把问题解决。

避坑指南:我曾经见过一个团队,FSC 写得天花乱坠,但到了系统设计阶段发现根本实现不了。为什么?因为他们没有考虑硬件资源的限制。比如要求 10ms 内完成故障检测,但选用的 MCU 根本跑不了那么快。所以 FSC 一定要和系统架构师、硬件工程师一起评审,确保可落地。

3.4 概念阶段的知识体系

下面这张图是我自己整理的,把概念阶段的核心逻辑串起来了。你一看就明白:

概念阶段知识体系 概念阶段核心流程 系统定义 HARA 危害分析 安全目标定义 功能安全概念 安全要求规范 关键输出 • 功能清单 • 边界条件 • ASIL 等级 • 安全目标 ID • FTTI • 安全状态 • 故障检测机制 • 故障响应机制 • 冗余策略 • 分配矩阵 • 验证标准

这张图从左到右看,就是概念阶段的完整流程。每一步的输出都是下一步的输入,环环相扣。我建议你在实际项目中,也画一张类似的图,贴在团队的白板上,大家每天看一眼,思路就清晰了。

3.5 概念阶段的常见误区

做了这么多年功能安全,我总结了几条概念阶段的常见坑:

  1. HARA 做得太粗:只分析了正常驾驶场景,忽略了维修、充电、拖车等非正常场景。
  2. 安全目标写成了功能要求:比如「系统应能在 100ms 内切断动力」,这是功能要求,不是安全目标。安全目标应该是「防止非预期加速」。
  3. FSC 不考虑系统边界:只写了系统内部怎么做,没考虑和外部系统(比如 CAN 总线、其他 ECU)的交互。
  4. ASIL 等级随意定:没有数据支撑,全靠拍脑袋。结果要么过度设计浪费成本,要么设计不足留下隐患。

我的建议:概念阶段一定要做评审。HARA 评审、安全目标评审、FSC 评审,一个都不能少。评审时拉上系统工程师、硬件工程师、软件工程师、测试工程师,甚至项目经理。不同视角能发现很多你一个人看不到的问题。

嗯,概念阶段的内容就这些。记住一句话:概念阶段花的时间越多,后面阶段踩的坑越少。 我见过太多项目,概念阶段赶进度,结果到了系统集成阶段才发现安全目标有漏洞,那时候改起来,成本至少是概念阶段的 10 倍。