4. 功能安全概念(FSC)开发:从安全目标到落地

好,咱们进入第四章节。前面我们花了三章把安全目标(Safety Goal, SG)给敲定了,那是顶层要求。现在的问题是:怎么把这些“要安全”的顶层目标,翻译成系统具体该怎么做?

这就是功能安全概念(Functional Safety Concept, FSC)要干的事。说白了,FSC 就是一座桥——桥的一端是安全目标,另一端是具体的技术方案。我个人习惯把 FSC 叫做“系统的安全行为说明书”。

核心观点: 安全目标定义“什么不能发生”,功能安全概念定义“系统如何防止它发生”。

4.1 功能安全概念到底是个啥?

根据 ISO 26262 的定义,功能安全概念是在系统层面,为每个安全目标分配功能性的安全要求。它要回答三个问题:

  • 检测: 系统怎么知道危险事件正在发生或即将发生?
  • 响应: 检测到之后,系统该执行什么动作来避免或减轻危害?
  • 降级: 如果系统无法完全恢复正常,它应该进入什么安全状态?

我在做 EPS(电动助力转向)项目时,有个安全目标是“转向扭矩不能非预期输出”。那 FSC 就要定义:当控制器检测到扭矩传感器信号异常时,系统必须在 100ms 内切断助力电机供电,并点亮仪表盘上的转向故障灯。你看,这就是从目标到概念的映射。

4.2 从安全目标到功能安全概念的映射

这一步是 FSC 开发的核心。它不是简单的“翻译”,而是一个系统性的分配过程。我通常把它拆成三步走:

4.2.1 第一步:识别相关项的内部功能

你得先搞清楚,为了实现这个安全目标,系统里有哪些功能在参与。比如对于“防止非预期加速”这个安全目标,相关功能包括:

  • 加速踏板位置采集
  • 目标扭矩计算
  • 电机扭矩控制
  • 制动信号交互

4.2.2 第二步:分配安全机制

每个功能都可能失效,你得给它们配上“保镖”。这些保镖就是安全机制。举个例子:

安全目标 相关功能 潜在失效 安全机制(FSC要素)
防止非预期加速 踏板信号采集 信号卡滞在高位 信号合理性检查 + 冗余传感器对比
防止非预期加速 扭矩计算 软件跑飞导致错误扭矩 程序流监控(WDT) + 端到端保护
防止非预期加速 电机控制 功率管短路 电机电流监控 + 主动短路保护
我的经验: 分配安全机制时,别想着一个机制包打天下。我曾经在一个项目中只用了“看门狗”来监控所有软件失效,结果在某个特定工况下,看门狗没来得及触发,系统就出事了。后来我学乖了——分层防御才是正道。

4.2.3 第三步:定义安全状态与容错时间

每个安全机制都要明确:

  • 安全状态: 系统进入什么模式?比如“降级到跛行回家模式”或“完全关闭输出”。
  • 容错时间间隔(FTTI): 从失效发生到系统进入安全状态,最多能容忍多久?

嗯,这里要注意:FTTI 不是随便拍脑袋定的。它取决于危害的严重程度和暴露概率。比如对于制动系统,FTTI 可能只有几十毫秒;而对于信息娱乐系统,几秒钟可能都行。

4.3 功能安全概念的要素

一个完整的功能安全概念,通常包含以下要素。我习惯用一张图把它们串起来:

功能安全概念(FSC)要素结构 安全目标 (SG) 功能安全概念 (FSC) ① 失效检测机制 (诊断覆盖率) ② 安全响应措施 (降级/关断/替代) ③ 安全状态定义 (FTTI / 容错时间) ④ 故障容错策略 (冗余/隔离/降级) 关键说明 • 每个安全目标至少对应一个 FSC,但一个 FSC 可以覆盖多个安全目标 • 四个要素必须完整定义,缺一不可 • FSC 是系统架构设计的输入,也是后续硬件/软件安全需求的源头 • 每个要素都要分配 ASIL 等级,且不能低于其对应的安全目标

这四要素缺一不可。我见过有些团队只定义了检测和响应,却忘了定义安全状态——结果系统检测到故障后,不知道往哪跑,直接死机了。这很要命。

4.4 一个完整的 FSC 示例

咱们拿一个具体的例子来串一遍。假设我们有一个电子驻车制动(EPB)系统,其中一个安全目标是:

SG-01: 车辆静止时,EPB 不能非预期释放,防止车辆溜坡。
ASIL: D
FTTI: 200ms

那么对应的 FSC 可以这样写:

FSC-01:防止 EPB 非预期释放

1. 失效检测机制:
   - 冗余开关信号对比(两个独立的释放开关)
   - 制动卡钳位置传感器合理性检查
   - 系统供电电压监控(低于 9V 时触发)

2. 安全响应措施:
   - 当检测到任一失效时,立即锁定制动卡钳
   - 禁止任何释放指令的执行
   - 通过 CAN 总线发送故障码,点亮仪表警告灯

3. 安全状态:
   - 主安全状态:制动卡钳机械锁定,车辆保持静止
   - 降级安全状态:若主安全状态不可达,则进入“紧急制动”模式,持续施加最大制动力

4. 故障容错策略:
   - 硬件冗余:两路独立的制动驱动通道
   - 软件冗余:主核和监控核交叉校验释放指令
   - 通信冗余:CAN 和硬线信号双重确认
避坑指南: 我曾经在一个项目中,FSC 写得非常完美,但到了系统集成测试时才发现——安全状态定义得太理想化了。比如“锁定制动卡钳”这个动作,在低温环境下需要 500ms 才能完成,但我们的 FTTI 只给了 200ms。结果就是:检测到故障了,响应也执行了,但还没锁住,车已经溜了。所以,FSC 里的每个时间参数,都必须有物理实现依据,不能光靠理论推导。

4.5 FSC 的评审要点

写完 FSC 之后,一定要做评审。我一般会重点检查这几项:

  1. 完整性: 每个安全目标是否都有对应的 FSC?有没有遗漏的?
  2. 一致性: FSC 中的安全机制是否与安全目标的 ASIL 等级匹配?
  3. 可实现性: 定义的安全状态和 FTTI,在当前系统架构下能否实现?
  4. 独立性: 安全机制之间是否存在共因失效?比如两个冗余传感器用了同一个电源。

嗯,说到独立性,我想起一个案例。有个项目做制动系统的 FSC,用了两路独立的传感器来检测制动踏板位置,看起来冗余做得很好。但后来发现,这两路传感器都通过同一个 SPI 总线读取数据——总线一旦失效,两路数据全丢。这就是典型的共因失效,在 FSC 阶段就要识别出来并规避掉。