第4章 功能安全概念(FSC):安全目标定义、功能安全需求导出、安全机制分配

功能安全概念,简称FSC。说白了,就是回答三个问题:系统要安全到什么程度?怎么实现?出问题了怎么办?

我个人习惯把FSC比作「安全设计的骨架」。没有它,后面的硬件软件设计就是瞎忙活。我见过不少项目,上来就写代码,最后ASIL等级一分解,发现架构全得推倒重来——那叫一个惨。

4.1 安全目标定义——从危害到目标

安全目标(Safety Goal, SG)是FSC的起点。它来自上一章我们做的HARA分析。每个不可接受的风险,都要对应一个安全目标。

举个例子:

  • 危害事件:高速行驶中,仪表盘车速显示卡死,显示120km/h,实际车速已降到60km/h。驾驶员误判,追尾风险。
  • ASIL等级:ASIL C
  • 安全目标:车速显示值必须与真实车速的偏差在±5%以内,否则在100ms内进入降级模式或提示驾驶员。

安全目标三要素:

  1. 功能行为:系统应该做什么/不做什么
  2. 容错时间间隔(FTTI):从故障发生到危害发生的时间窗口
  3. ASIL等级:继承自HARA

嗯,这里要注意:安全目标不是功能需求。它只描述「安全状态」,不描述「怎么实现」。比如「车速显示必须准确」是安全目标,「用两路CAN信号做冗余校验」是实现手段。

4.2 功能安全需求导出——把目标翻译成工程语言

安全目标定好了,接下来要把它拆成功能安全需求(Functional Safety Requirement, FSR)。

我习惯用一张表来做这件事:

安全目标ID 安全目标描述 ASIL FSR ID 功能安全需求 分配模块
SG-01 车速显示偏差≤±5%,否则100ms内降级 C FSR-01.1 车速传感器信号必须双路冗余采集 传感器接口
FSR-01.2 仪表盘MCU每20ms执行一次自检 仪表MCU
FSR-01.3 偏差超限时,100ms内显示「请维修」图标 HMI模块

你看,一个安全目标可以导出多个FSR。每个FSR都要明确:谁来做、做什么、做到什么程度、多长时间内完成。

我的经验:FSR的颗粒度要适中。太粗了,后面设计容易漏细节;太细了,又变成详细设计文档。我一般控制在「一个FSR对应一个可测试的单元」这个粒度。

4.3 安全机制分配——把需求落实到架构

FSR写好了,接下来要分配安全机制。安全机制就是「用来检测、控制、减轻故障的具体手段」。

常见的智能座舱安全机制:

  • 检测机制:CRC校验、心跳监控、看门狗、自检序列
  • 控制机制:降级模式、安全状态切换、输出钳制
  • 减轻机制:冗余通道、故障容错、渐进式降级

分配的时候,我一般遵循这个优先级:

  1. 先硬件后软件:能用硬件看门狗解决的,别用软件定时器
  2. 先检测后控制:先发现故障,再决定怎么处理
  3. 先局部后全局:能在一个模块内处理的,别拉上整个系统

我曾经踩过的坑:在一个项目中,我们把所有安全机制都堆在软件层。结果软件复杂度爆炸,ASIL分解后反而更难满足。后来我学乖了——硬件能分担的,别让软件扛。

4.4 FSC的核心逻辑——一张图说清楚

下面这张图,是我每次做FSC都会贴在白板上的。它把整个流程串起来了:

功能安全概念(FSC)核心流程 功能安全概念(FSC)核心流程 HARA输出 安全目标定义(SG) 功能安全需求导出(FSR) 安全机制分配 技术安全概念(TSC) 关键输出物 • 安全目标列表 • FSR清单 • 安全机制矩阵 • ASIL分解方案 • FTTI分配表 核心原则 1. 每个SG至少一个FSR 2. 每个FSR至少一个机制 3. 机制可组合使用 4. 优先硬件机制 5. 可测试性必须保证

你看,整个流程是单向的,但实际项目中经常要回溯。比如分配安全机制时发现某个FSR写得太理想化,就得回去改FSR。这是正常的,别怕迭代。

4.5 避坑指南——我踩过的三个坑

坑一:安全目标写成了功能需求

我曾经见过一个安全目标:「MCU每10ms读取一次车速传感器」。这其实是FSR,不是SG。SG应该是「车速显示必须准确」。把实现细节写进SG,后面架构一改,SG就得跟着改,麻烦得很。

坑二:FSR遗漏了FTTI

FSR里只写「检测到故障后降级」,没写「多长时间内」。结果测试时发现,从故障发生到降级花了500ms,而FTTI只有200ms。整个安全目标不满足,得重来。所以每个FSR都要带时间约束。

坑三:安全机制分配不考虑独立性

把检测机制和控制机制放在同一个MCU上。结果MCU挂了,两个机制一起失效。这就是典型的「共因失效」。分配机制时,一定要考虑独立性——检测和控制在物理上或逻辑上要分开。

4.6 小结——FSC做得好,后面少烦恼

功能安全概念是整个安全设计的蓝图。我个人觉得,花在FSC上的时间,至少占整个安全设计周期的30%。

你想想看,如果蓝图画错了,后面砌墙、装修、布线全得拆了重来。所以,别急着写代码,先把FSC做扎实。

本章核心交付物清单:

  • 安全目标列表(SG-01 ~ SG-n)
  • 功能安全需求清单(FSR-xx.y)
  • 安全机制分配矩阵(哪个机制对应哪个FSR)
  • ASIL分解方案(如果有)
  • FTTI分配表(每个安全目标的容错时间)