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 功能安全概念的要素
一个完整的功能安全概念,通常包含以下要素。我习惯用一张图把它们串起来:
这四要素缺一不可。我见过有些团队只定义了检测和响应,却忘了定义安全状态——结果系统检测到故障后,不知道往哪跑,直接死机了。这很要命。
4.4 一个完整的 FSC 示例
咱们拿一个具体的例子来串一遍。假设我们有一个电子驻车制动(EPB)系统,其中一个安全目标是:
ASIL: D
FTTI: 200ms
那么对应的 FSC 可以这样写:
FSC-01:防止 EPB 非预期释放
1. 失效检测机制:
- 冗余开关信号对比(两个独立的释放开关)
- 制动卡钳位置传感器合理性检查
- 系统供电电压监控(低于 9V 时触发)
2. 安全响应措施:
- 当检测到任一失效时,立即锁定制动卡钳
- 禁止任何释放指令的执行
- 通过 CAN 总线发送故障码,点亮仪表警告灯
3. 安全状态:
- 主安全状态:制动卡钳机械锁定,车辆保持静止
- 降级安全状态:若主安全状态不可达,则进入“紧急制动”模式,持续施加最大制动力
4. 故障容错策略:
- 硬件冗余:两路独立的制动驱动通道
- 软件冗余:主核和监控核交叉校验释放指令
- 通信冗余:CAN 和硬线信号双重确认
4.5 FSC 的评审要点
写完 FSC 之后,一定要做评审。我一般会重点检查这几项:
- 完整性: 每个安全目标是否都有对应的 FSC?有没有遗漏的?
- 一致性: FSC 中的安全机制是否与安全目标的 ASIL 等级匹配?
- 可实现性: 定义的安全状态和 FTTI,在当前系统架构下能否实现?
- 独立性: 安全机制之间是否存在共因失效?比如两个冗余传感器用了同一个电源。
嗯,说到独立性,我想起一个案例。有个项目做制动系统的 FSC,用了两路独立的传感器来检测制动踏板位置,看起来冗余做得很好。但后来发现,这两路传感器都通过同一个 SPI 总线读取数据——总线一旦失效,两路数据全丢。这就是典型的共因失效,在 FSC 阶段就要识别出来并规避掉。