3. 安全生命周期

好,咱们进入正题。功能安全概念,说白了就是回答一个问题:系统怎么才能不出危险?

我个人习惯把FSC看作一座桥。桥的一头是HARA分析出来的危险事件,另一头是具体的技术方案。而桥本身,就是安全目标、功能安全概念、安全状态这些核心要素。

今天咱们就拆开这座桥,一块砖一块砖地看。

3.1 安全目标(Safety Goal)的定义

安全目标是什么?它是系统最高层级的安全要求。每个危险事件,最终都要对应到一个或多个安全目标上。

我举个例子。你想想看,一辆车的电子助力转向系统,如果突然失去助力,会发生什么?驾驶员需要花更大的力气打方向,在高速上可能就出事了。所以,一个典型的安全目标就是:“转向助力不能意外丧失”。

定义安全目标时,有几个关键要素必须写清楚:

  • 危险事件描述:什么情况下会触发这个危险?
  • 安全状态:系统进入什么状态才算安全?
  • 容错时间间隔(FTTI):从故障发生到系统进入安全状态,最多能等多长时间?
  • ASIL等级:这个安全目标要满足哪个ASIL等级?

安全目标模板示例

SG-01:在车辆行驶过程中,转向助力不得意外丧失,系统应在100ms内检测到故障并进入降级模式,ASIL D。

我在项目中遇到过一种情况:安全目标写得过于笼统。比如“系统要安全”,这等于没写。安全目标必须具体到可验证、可测试的程度。否则到了后期,你根本没法证明它是否满足。

3.2 功能安全概念(FSC)的导出

安全目标定好了,接下来就是怎么实现它。功能安全概念,就是把安全目标分解成具体的功能要求。

我习惯用“分配-分解-细化”三步法来做这件事。

3.2.1 分配

把安全目标分配到系统的各个组成部分。比如转向助力系统,安全目标“转向助力不能意外丧失”可以分配给:

  • 电机控制器:实时监控电机状态
  • 扭矩传感器:提供冗余信号
  • 电源模块:保证供电稳定

3.2.2 分解

有时候一个安全目标太复杂,需要拆成几个子目标。比如:

  • SG-01:转向助力不能意外丧失
  • FSC-01.1:电机控制器应在10ms内检测到电机过流故障
  • FSC-01.2:扭矩传感器应提供两路独立信号,偏差超过5%时触发报警
  • FSC-01.3:电源模块应在20ms内切换到备用电源

3.2.3 细化

这一步最考验经验。你要把功能要求细化到具体的技术措施。比如:

  • 用什么诊断机制?是软件自检还是硬件看门狗?
  • 故障响应时间是多少?
  • 系统进入安全状态后,怎么恢复?

我的经验:FSC导出时,一定要和系统架构师坐在一起过一遍。我曾经吃过亏,自己闷头写了一份FSC,结果架构师说“这个功能在现有架构里根本实现不了”。从那以后,我每次写FSC都会拉上架构师一起评审。

3.3 安全状态与容错时间间隔

这两个概念是FSC的核心,也是很多工程师容易搞混的地方。

3.3.1 安全状态

安全状态,就是系统在检测到故障后,进入的一个不会导致危险的状态。

常见的几种安全状态:

安全状态类型 描述 示例
降级模式 系统以降低性能的方式继续运行 转向助力降低50%,但还能用
安全停机 系统完全停止工作 电机断电,机械锁止
故障静默 系统停止输出,不产生任何影响 传感器输出固定值,不再响应
冗余切换 切换到备用通道继续工作 主控制器故障,切换到从控制器

这里有个坑,我提醒一下:安全状态不是一成不变的。同一个系统,在不同工况下,安全状态可能不同。比如高速行驶时,突然切断转向助力可能更危险,所以降级模式比安全停机更合适。

3.3.2 容错时间间隔(FTTI)

FTTI,全称Fault Tolerant Time Interval。它定义了从故障发生到系统进入安全状态,所允许的最大时间。

这个时间怎么定?我一般从两个角度考虑:

  • 物理极限:比如刹车系统,从踩下刹车到车辆停下,物理上需要多长时间?
  • 人的反应时间:驾驶员发现异常到做出反应,通常需要0.5-1秒。

注意:FTTI不是诊断时间,也不是响应时间。它是从故障发生到系统进入安全状态的总时间。包括:

  1. 故障发生到被检测到的时间(诊断时间)
  2. 诊断结果到触发安全措施的时间(决策时间)
  3. 安全措施执行到系统进入安全状态的时间(执行时间)

这三个时间加起来,必须小于FTTI。

3.4 知识结构图

下面这张图,把FSC的核心逻辑串起来了。你可以把它当作一个检查清单,写FSC时对照着看。

功能安全概念核心逻辑图 功能安全概念(FSC)核心逻辑 HARA分析结果 安全目标(Safety Goal) 最高层级安全要求,ASIL等级 功能安全概念(FSC) 分配 → 分解 → 细化 将安全目标转化为具体功能要求 安全状态 降级/停机/静默/冗余 不同工况不同选择 容错时间间隔 FTTI = 诊断 + 决策 + 执行 必须小于物理极限 故障响应机制 检测 → 确认 → 响应 冗余/降级/停机 FSC必须覆盖所有安全目标,且每个安全目标都要明确安全状态和FTTI

3.5 避坑指南

最后,分享几个我踩过的坑:

  • 安全状态定义不完整:只写了“系统停机”,但没写停机后怎么恢复。结果测试时发现,系统停机后无法重新启动,导致车辆趴窝。
  • FTTI估算过于乐观:我见过有人把FTTI定在50ms,但实际诊断机制需要30ms,决策需要20ms,执行需要30ms,加起来80ms,超了。所以FTTI一定要留余量。
  • 忽略多故障场景:FSC通常只考虑单点故障。但实际系统中,多个故障同时发生的情况并不少见。我建议在FSC中至少考虑两个故障同时发生的场景。

总结一下:

  • 安全目标:最高层级要求,必须具体、可验证
  • 功能安全概念:把安全目标分解到具体功能
  • 安全状态:不同工况不同选择,不是一成不变
  • 容错时间间隔:总时间,不是单步时间,要留余量

嗯,这一块内容就这些。你写FSC的时候,记得把这张图贴在工位上,对照着检查。少踩一个坑,项目就顺利一分。