第4章:功能安全概念(FSC)——安全概念设计、安全机制分配、安全状态转换、故障容错时间间隔(FTTI)

好,咱们进入第4章。功能安全概念,简称FSC。这玩意儿说白了,就是把你上一章做的HARA分析结果,转化成具体的技术方案。我见过不少团队,HARA做得漂漂亮亮,一到FSC就卡壳,为啥?因为从“分析问题”到“解决问题”,中间差着一层设计思维。

我个人习惯,把FSC看作一张“安全作战地图”。地图上要标清楚三件事:怎么防(安全机制)、怎么撤(安全状态)、撤多快(FTTI)。咱们一个一个拆开讲。

4.1 安全概念设计:从安全目标到技术方案

安全概念设计,核心任务就是为每个安全目标(SG)分配一组安全机制。你想想看,一个安全目标,比如“防止电池过充”,你不能只靠一个保险丝就完事,那太糙了。你得设计一套组合拳。

我举个例子。SG1:防止电池单体过充(ASIL C)。

  • 安全机制1:主控芯片通过电压采样,实时监测单体电压。一旦超过阈值(比如4.25V),立即停止充电。
  • 安全机制2:独立硬件比较器(冗余),直接监测单体电压。一旦超过硬件阈值(比如4.30V),直接切断充电MOS管,不经过主控软件。
  • 安全机制3:看门狗监控主控芯片是否死机。如果死机,强制进入安全状态。

你看,这就是一个典型的多层防护。主控软件是第一道防线,硬件比较器是第二道,看门狗是兜底。我在项目中遇到过,只依赖软件过充保护的方案,结果软件跑飞了,电池直接充到4.5V,幸亏有硬件比较器兜底,不然后果不堪设想。

核心原则:安全机制的设计,要遵循“多样性”和“冗余性”。软件和硬件要互相备份,不同原理的机制要互相补充。别把所有鸡蛋放在一个篮子里。

4.2 安全机制分配:谁来做?怎么做?

安全机制分配,就是把上面设计好的机制,分配到具体的系统元素上。是放在主控芯片里?还是放在独立的ASIC里?还是放在BMS从控板上?

这里有个常见的坑:过度分配。我曾经见过一个方案,为了追求ASIL D,把所有的安全机制都塞进了主控芯片,结果主控芯片的负载率飙到90%,反而增加了软件出错的概率。你想想看,这合理吗?

我建议的分配原则:

  • 独立性原则:安全机制要尽量独立于被监控的对象。比如,监控电压的电路,不能和被监控的电压采样电路共用同一个电源。
  • ASIL分解原则:如果一个安全目标是ASIL D,你可以把它分解成两个ASIL C的机制。比如,一个ASIL D的过充保护,可以分解成“主控软件过充保护(ASIL C)”+“硬件比较器过充保护(ASIL C)”。这样,每个组件的开发难度就降低了。
  • 分区原则:把安全相关的功能和非安全相关的功能,在软件或硬件上进行物理或逻辑隔离。别让一个娱乐系统的bug,把BMS的安全功能给带崩了。
安全机制 分配位置 ASIL等级 说明
主控软件过充保护 主控MCU ASIL C 依赖软件算法和ADC采样
硬件比较器过充保护 独立硬件(ASIC/比较器) ASIL C 不依赖软件,直接硬件动作
看门狗监控 外部看门狗芯片 ASIL B 监控主控MCU是否正常运行
电流传感器故障诊断 主控MCU + 诊断电路 ASIL B 通过自检和交叉校验实现

小技巧:在做分配时,可以画一张“安全机制分配矩阵图”。横轴是安全目标,纵轴是系统元素,交叉点写上分配的机制。这样一目了然,也方便评审。

4.3 安全状态转换:出了事,往哪跑?

安全状态,就是系统在检测到故障后,要进入的一个“安全”的状态。对于BMS来说,常见的安全状态有:

  • 断开高压继电器:这是最常用的。一旦检测到严重故障(比如过充、过温、绝缘故障),立即断开主正、主负继电器,切断高压回路。
  • 降低充放电功率:对于不那么严重的故障(比如单体压差过大、温度偏高),可以降功率运行,同时报警。
  • 维持当前状态:对于某些不影响安全的故障(比如某个温度传感器失效),可以维持当前状态,但需要启用替代方案(比如用其他传感器估算温度)。

安全状态转换,不是简单的“故障→断开继电器”就完事了。你得考虑转换的路径和条件。我举个例子:

  • 故障A(过充):立即进入“断开高压继电器”状态。没有延迟,没有商量。
  • 故障B(单体压差大):先进入“降低充电功率”状态。如果5秒后压差没有恢复,再进入“断开高压继电器”状态。
  • 故障C(温度传感器失效):进入“维持当前状态,启用替代方案”状态。同时报警,提示需要维修。

这里要注意的是,安全状态转换的路径,必须是确定性的。不能出现“可能断开,也可能不断开”这种模糊逻辑。我在项目中就吃过这个亏,当时设计了一个“如果故障A和故障B同时发生,则进入安全状态”,结果测试时发现,故障A和故障B的优先级没定义清楚,导致系统在两种状态之间来回切换,继电器啪啪响,吓死人。

警告:安全状态转换图(State Machine)是FSC的核心交付物之一。一定要画清楚每个状态的进入条件、退出条件、以及状态之间的转换关系。别偷懒,画出来,评审通过后再往下走。

4.4 故障容错时间间隔(FTTI):你还有多少时间?

FTTI,全称Fault Tolerant Time Interval。这个概念,说白了就是:从故障发生,到系统进入安全状态,中间允许的最大时间。

为什么要有FTTI?因为任何安全机制都不是瞬间生效的。检测故障需要时间(比如ADC采样周期、软件滤波时间),执行动作也需要时间(比如继电器断开时间)。FTTI就是给这些动作留出的“时间预算”。

我举个例子。假设一个过充故障,从电压超过阈值开始,到电池发生热失控,可能只有500ms。那么,你的FTTI就必须小于500ms。你分配的时间预算可能是:

  • 故障检测时间:100ms(ADC采样+软件滤波)
  • 故障确认时间:50ms(软件确认,防止误报)
  • 动作执行时间:200ms(继电器断开时间)
  • 总时间:350ms < 500ms ✅

你看,只要总时间小于FTTI,这个方案就是可行的。如果总时间大于FTTI,你就得优化了。比如,换更快的ADC,或者用硬件比较器直接触发,省掉软件滤波的时间。

我记得有一次,一个项目要求FTTI是100ms,但我们的继电器断开时间就要150ms。这怎么办?后来我们想了个办法,在继电器断开之前,先通过主动放电电路把电压降下来,这样即使继电器慢一点,电池也不会过充。嗯,这就是一种“时间补偿”的思路。

关键点:FTTI不是拍脑袋定的。它来源于电池的物理特性(比如热失控时间、过充耐受时间)。你需要和电芯供应商一起,拿到这些数据,才能定出合理的FTTI。别自己瞎猜,会出事的。

好了,第4章的内容就到这里。FSC是功能安全设计的“骨架”,骨架搭好了,后面的详细设计才能有章可循。下一章,咱们聊聊技术安全概念(TSC),看看怎么把FSC的“骨架”填上“血肉”。