4、功能安全概念(FSC):功能安全概念定义、安全状态设计、故障容错时间间隔、安全机制分配
好,我们进入功能安全开发中最核心的一环——功能安全概念,简称FSC。
说实话,很多工程师把FSC当成一个文档任务,觉得就是写写画画。但我告诉你,FSC是整个安全开发的灵魂。你后面所有的技术决策,都从这里来。
4.1 功能安全概念到底在定义什么?
功能安全概念,说白了就是回答三个问题:
- 系统出错了怎么办?
- 怎么让系统进入安全状态?
- 在多长时间内必须完成?
我个人习惯,在拿到Item Definition(项目定义)和HARA(危害分析与风险评估)报告后,先不急着写文档。我会在白板上画一张大图,把所有的安全目标(Safety Goal)列出来,然后一个个往下拆。
举个例子,你有一个安全目标是:“防止车辆非预期加速”。那FSC就要定义:当检测到油门踏板信号异常时,系统应该做什么?是限制扭矩?还是直接切断动力?
核心要点:功能安全概念是安全需求的第一层分解。它把顶层的安全目标,转化为具体的、可执行的系统级安全需求。
4.2 安全状态设计——你得知道“往哪跑”
安全状态,就是系统在发生故障后,要进入的那个“相对安全”的状态。
注意我说的“相对安全”。没有绝对的安全,只有可接受的风险。
我在项目中遇到过这样一个案例:一个线控制动系统,它的安全状态是什么?
- 方案A:完全切断制动助力,让驾驶员用纯机械力踩。
- 方案B:保持当前制动力,不再响应新请求。
- 方案C:以最大制动力紧急制动。
你选哪个?
嗯,这里要注意,安全状态不是拍脑袋定的。它取决于你分析出的危害等级和系统能力。对于制动系统,通常我们会选择“降级模式”——保留部分功能,同时给驾驶员明确的警示。
我的经验:设计安全状态时,一定要考虑“退出条件”。系统进入安全状态后,什么时候能恢复?是上电重启?还是故障消除后自动恢复?这个不定义清楚,测试阶段会非常痛苦。
常见的几种安全状态:
- 关闭/断电:最粗暴的方式,适用于非关键功能。
- 降级模式:保留核心功能,关闭非必要功能。
- 故障容错模式:使用冗余通道继续工作。
- 紧急操作模式:比如自动驾驶系统要求驾驶员立即接管。
4.3 故障容错时间间隔(FTTI)——和时间赛跑
FTTI,全称Fault Tolerant Time Interval。这个概念很多人理解有偏差。
它不是说“系统能撑多久不坏”,而是说“从故障发生到系统进入安全状态,最多能花多长时间”。
为什么会这么重要?
你想想看,一个刹车系统如果检测到故障,但花了3秒钟才进入安全状态,这3秒钟里车可能已经撞上了。所以FTTI必须小于危害发生的时间。
我给大家一个实际项目中的例子:
| 安全目标 | FTTI要求 | 说明 |
|---|---|---|
| 防止非预期加速 | ≤ 100ms | 从检测到故障到限制扭矩 |
| 防止转向失控 | ≤ 200ms | 从检测到故障到切换到冗余通道 |
| 防止电池过充 | ≤ 500ms | 从检测到故障到切断充电回路 |
避坑指南:我曾经在一个项目中,FTTI定义得太宽松,结果系统测试时发现,从故障发生到安全状态执行,实际时间比FTTI还长。后来一查,是软件任务调度优先级设低了。所以FTTI一定要分解到每个子模块,并且留有余量。
FTTI的分解通常包括:
- 故障检测时间(FDT)
- 故障反应时间(FRT)
- 系统执行时间(SET)
这三部分加起来,必须小于FTTI。
4.4 安全机制分配——把任务分下去
安全机制,就是用来检测故障、防止违反安全目标的具体手段。
分配安全机制,说白了就是回答:“谁来干活?”
常见的分配方式:
- 硬件安全机制:比如看门狗、电压监控、冗余传感器。
- 软件安全机制:比如数据校验、程序流监控、自检程序。
- 系统级安全机制:比如故障诊断、降级策略、故障存储。
我个人习惯,在分配安全机制时,会画一个矩阵表:
| 安全目标 | 故障类型 | 安全机制 | 分配对象 | ASIL等级 |
|---|---|---|---|---|
| SG-01: 防止非预期加速 | 油门踏板信号卡滞 | 信号合理性检查 + 冗余传感器对比 | 软件模块A + 硬件模块B | ASIL D |
| SG-02: 防止转向失控 | 电机驱动失效 | 电流监控 + 冗余驱动通道 | 硬件模块C | ASIL C |
| SG-03: 防止电池过充 | 电压采样偏差 | 周期性自检 + 交叉校验 | 软件模块D | ASIL B |
一个小技巧:分配安全机制时,尽量让同一个安全机制覆盖多个故障。比如一个看门狗,既能检测程序跑飞,也能检测任务超时。这样能减少冗余,降低成本。
最后,我想强调一点:FSC不是写完了就完事的。它需要和系统架构设计、硬件设计、软件设计反复迭代。我见过太多项目,FSC写得漂漂亮亮,结果到了实现阶段发现根本做不了。为什么?因为没考虑硬件资源限制,没考虑软件实时性。
所以,做FSC的时候,多和硬件工程师、软件工程师聊一聊。听听他们的反馈,调整你的分配方案。这才是真正的“从零搭建”。
好,这一节就到这里。下一节我们讲技术安全概念(TSC),看看怎么把FSC里的需求,进一步细化到具体的技术实现上。