第4章 功能安全目标定义:安全目标的制定、安全状态定义、容错时间间隔

好,咱们进入第四章。这一章可以说是功能安全设计的「定海神针」。你想想看,如果连安全目标都没定清楚,后面做再多设计都是白搭。我在好几个项目里都见过这种情况——大家埋头做了一堆安全机制,最后评审时才发现,安全目标压根没对准真正的风险。

所以这一章,咱们把三件事彻底聊透:安全目标怎么定、安全状态怎么定义、容错时间间隔怎么算。这三者就像一根绳上的蚂蚱,缺一个都不行。

4.1 安全目标(Safety Goal)的制定

安全目标,说白了就是一句话:系统在发生故障时,不能造成什么危害。它来自HARA(危害分析与风险评估)的输出,是顶层安全需求的源头。

我个人习惯把安全目标写成「系统应避免……」的句式。举个例子,对于光伏逆变器,一个典型的安全目标是:

SG-01:系统应避免直流侧对地短路导致电击危害。

ASIL等级:C
安全状态:断开所有功率开关,并打开直流侧继电器
FTTI:≤ 100ms

你看,一个完整的安全目标必须包含三要素:危害描述、ASIL等级、安全状态。FTTI虽然不直接写在目标里,但它是后续设计的约束条件。

这里有个坑,我曾经踩过——安全目标不能写得太具体。比如「软件应检测过流并关断IGBT」,这就太细了。安全目标是「什么」,不是「怎么做」。正确的写法是「系统应避免过流导致的热失控」。至于怎么检测、怎么关断,那是后面安全需求的事。

我的小技巧:写安全目标时,先问自己三个问题:

  1. 这个故障会导致什么后果?(电击?火灾?设备损坏?)
  2. 后果有多严重?(ASIL A/B/C/D?)
  3. 怎么才算安全了?(安全状态是什么?)

三个问题答完,安全目标基本就成型了。

4.2 安全状态定义

安全状态,就是系统在检测到故障后,要进入的一个「不会造成危害」的状态。它可以是主动的(比如关断输出),也可以是被动的(比如保持当前状态)。

对于逆变器来说,常见的安全状态有几种:

安全状态 描述 适用场景
完全关断 断开所有功率开关,切断能量路径 严重故障(如短路、过温)
降额运行 降低输出功率,维持基本功能 轻度故障(如散热器积灰)
保持状态 维持当前输出,不执行新指令 通信故障(如CAN总线中断)
紧急停机 快速放电,确保残余能量安全 直流侧故障(如绝缘失效)

嗯,这里要注意:安全状态不是越「安全」越好。我记得有个项目,团队把安全状态定义为「立即切断所有输出」,结果电网侧因为突然断电,导致其他设备连锁故障。后来我们改成了「先降额,再逐步关断」,反而更安全。

所以定义安全状态时,要考虑:

  • 对系统的影响:突然关断会不会引发二次危害?
  • 恢复时间:故障消除后,系统能不能快速恢复?
  • 可诊断性:进入安全状态后,能不能明确知道是什么故障?

避坑指南:我曾经在一个储能项目中,把安全状态定义为「断开所有继电器」。结果测试时发现,继电器断开后,直流侧电容还有几百伏电压,放电时间长达5分钟。这期间如果有人误触,后果不堪设想。所以安全状态必须包含「残余能量处理」——要么加放电电阻,要么主动放电。

4.3 容错时间间隔(FTTI)

FTTI,全称Fault Tolerant Time Interval。它指的是:从故障发生,到系统进入安全状态,这段时间不能超过某个值。说白了,就是给系统留的「反应时间」。

FTTI怎么定?它取决于两个因素:

  1. 危害的严重程度:越严重的危害,FTTI越短。
  2. 物理过程的时延:比如热失控需要几秒,电击只需要几毫秒。

我举个例子。对于电击危害,人体对电流的反应时间在几十毫秒级别。所以FTTI通常定在10ms~100ms。而对于过温危害,IGBT的结温上升需要几百毫秒,FTTI可以放宽到500ms~1s

这里有个关键点:FTTI不是单指软件响应时间。它包含:

  • 故障检测时间(传感器采样+诊断算法)
  • 故障确认时间(去抖、冗余校验)
  • 安全动作执行时间(关断指令+硬件响应)

你看,软件只是其中一环。我见过有人把FTTI全压在软件上,结果硬件响应慢了,整体超时。所以设计时一定要把FTTI分解到各个子模块

FTTI分解示例(以过流保护为例):

阶段 时间预算 说明
故障发生 0ms IGBT过流
电流传感器采样 10μs ADC采样周期
软件诊断 50μs 过流阈值判断+去抖
故障确认 100μs 冗余校验(双通道比较)
安全动作 2μs 硬件关断(CPLD直接拉低门极)
总计 162μs 远小于FTTI(假设10ms)

你可能会问:FTTI是不是越短越好?其实不是。FTTI太短,会导致系统频繁误动作——稍微一个噪声就触发安全机制,系统根本没法正常工作。我有个项目,FTTI定在1ms,结果电网谐波一波动就停机,客户差点投诉。后来放宽到10ms,加了个50μs的去抖,问题就解决了。

我的经验:FTTI的设定,要留出20%~30%的余量。比如物理过程要求100ms,你就定80ms。这样即使某个环节慢了,整体还能满足要求。另外,FTTI一定要在安全目标里明确写出来,不然评审时会被挑战。

4.4 三者之间的关系

安全目标、安全状态、FTTI,这三者不是孤立的。它们的关系可以这样理解:

  • 安全目标是「要避免什么」
  • 安全状态是「怎么才算安全」
  • FTTI是「多快必须做到」

举个例子,还是那个直流侧电击危害:

  • 安全目标:避免电击
  • 安全状态:断开直流侧,并放电到安全电压以下
  • FTTI:100ms内完成断开,500ms内完成放电

你看,FTTI还分了两段——断开和放电。这是因为电击风险在断开后已经大幅降低,放电可以稍微慢一点。这种分阶段的安全状态在实际项目中很常见。

最后提醒一句:安全目标、安全状态、FTTI,这三者一旦确定,不要轻易改。我见过一个项目,中期改了安全目标,结果所有安全机制都要重新设计,成本翻倍。所以前期一定要做充分的分析和评审,把这三件事定死。

好,这一章就到这里。下一章咱们聊聊安全需求怎么从安全目标推导出来,以及怎么用形式化方法保证需求的一致性。到时候我会分享一个我踩过的坑——需求写得太模糊,导致测试时根本没法验证。嗯,咱们下章见。