一、安全目标:你到底要保护什么?

做功能安全,第一个问题就是:你的系统到底要防什么?

我个人习惯把安全目标比作「保命条款」。它不是功能需求,不是性能指标,而是——当系统出故障时,必须守住的那条底线

举个例子。你设计一个电动助力转向系统。功能需求是「方向盘转多少,车轮转多少」。但安全目标是什么?是「方向盘不能在没有驾驶员指令的情况下,自己突然转向」。你看,这完全是两码事。

1.1 安全目标的定义公式

安全目标通常写成这样:

SG-01:当系统发生 [某类故障] 时,车辆应进入 [安全状态],并在 [FTTI] 内完成,避免 [危害事件]。

说白了,就是三个要素:

  • 故障场景:什么坏了?
  • 安全状态:坏了之后怎么办?
  • 时间约束:多快必须搞定?

避坑指南:我曾经见过一个团队,把安全目标写成「系统应可靠工作」。这等于没写。安全目标必须对应具体的危害事件,比如「非预期加速」「非预期转向」「动力中断」等。

1.2 安全目标的层级

你想想看,一个复杂系统可能有几十个安全目标。它们不是平级的,而是有层级关系:

层级 说明 例子
顶层安全目标 整车级别的危害预防 车辆不能非预期加速
子系统安全目标 分配给具体ECU或组件 电机控制器不能输出超过X Nm的扭矩
要素安全目标 软件或硬件模块的约束 扭矩监控模块必须在10ms内检测到超限

嗯,这里要注意:顶层安全目标通常来自危害分析和风险评估(HARA)。而下面的层级,是你在架构设计时一步步分解出来的。

二、安全状态:出事了怎么办?

安全目标定义了「要防什么」,安全状态定义了「防不住时怎么办」。

我刚开始做功能安全时,总觉得安全状态就是「停机」。后来发现,事情没那么简单。

2.1 常见的安全状态类型

  • 关闭/断电:最直接,但有些系统不能随便关(比如刹车助力)
  • 降级模式:部分功能可用,比如限速30km/h
  • 故障容错模式:用冗余通道接管,比如双ECU切换
  • 维持当前状态:比如转向系统保持最后的角度不动

我的经验:选择安全状态时,一定要问自己一个问题——「这个状态本身会不会引入新的危害?」

举个例子,电池管理系统检测到过温,如果直接切断主继电器,车辆可能突然失去动力,在高速上反而更危险。所以很多时候,安全状态是「限功率运行」,而不是「直接关机」。

2.2 安全状态的设计原则

我个人总结了三条:

  1. 可验证性:安全状态必须能被测试和验证。你不能说「系统进入安全模式」,但没人知道怎么才算进入了。
  2. 可退出性:故障消除后,系统能否恢复正常?有些安全状态是锁死的(需要维修),有些是自动恢复的。
  3. 时间确定性:进入安全状态的时间必须是确定的,不能是「尽快」这种模糊表述。

三、容错时间间隔(FTTI):你还有多少时间?

FTTI 这个概念,说白了就是——从故障发生到危害发生,中间有多长时间窗口

你想想看,一个故障发生了,系统不会立刻爆炸。它有一个演变过程。FTTI 就是你的「黄金救援时间」。

3.1 FTTI 的组成

FTTI 通常由三部分组成:

FTTI = 故障检测时间 + 故障响应时间 + 安全状态进入时间
  • 故障检测时间:从故障发生到被诊断机制发现
  • 故障响应时间:从发现到决策(比如决定降级)
  • 安全状态进入时间:从决策到真正进入安全状态

注意:FTTI 不是你可以随便定的。它来自危害分析。比如刹车系统,FTTI 可能只有几十毫秒。而信息娱乐系统,FTTI 可以是几秒甚至更长。

3.2 实际项目中的 FTTI 分配

我记得在一个线控制动项目中,FTTI 要求是 100ms。我们是这样分配的:

阶段 时间预算 实现方式
故障检测 40ms 硬件看门狗 + 软件自检
故障响应 30ms 中断服务程序直接处理
安全状态进入 30ms 切换到冗余制动回路

你看,每个阶段都要精打细算。我曾经见过一个项目,故障检测用了 80ms,结果留给安全状态进入的时间只剩 20ms,根本来不及。最后只能重新设计检测算法。

四、知识体系总览

下面这张图,是我自己梳理的本章知识结构。你可以把它当作一个「思维导图」来看:

功能安全核心三要素 安全目标 安全状态 容错时间间隔(FTTI) 故障场景定义 危害事件关联 降级/关闭/容错 可验证可退出 检测+响应+进入 时间预算分配 三者关系:安全目标定义「防什么」 安全状态定义「怎么防」,FTTI定义「多快防」

五、避坑指南与实战建议

我个人常用的检查清单

  • 每个安全目标是否都有对应的安全状态?
  • 每个安全状态是否都有明确的进入条件和退出条件?
  • FTTI 是否分解到了每个子模块?
  • 安全状态本身是否经过危害分析?

我曾经踩过的坑:在一个ADAS项目中,我们定义的安全目标是「避免非预期制动」。安全状态是「禁用自动制动功能」。但没考虑到——禁用制动后,系统连人工制动也影响了。结果测试时发现,驾驶员踩刹车没反应。这就是安全状态设计没考虑周全的典型例子。

好了,这一章的内容就到这里。安全目标、安全状态、FTTI,这三个概念是功能安全的基石。你把它搞透了,后面的架构设计、安全机制设计,都会顺很多。


专注资料整理