4、安全目标与安全状态:安全目标的定义与推导、安全状态的定义与分类、安全状态转换图、安全目标分解与分配
各位工程师朋友,咱们今天聊聊安全目标和安全状态。这两个概念,说白了就是功能安全的“灵魂”。你想想看,做功能安全到底是为了什么?不就是让系统在出故障时,还能保持一个“安全”的状态吗?那这个“安全”到底长什么样?怎么定义?怎么实现?这就是我们今天要啃的硬骨头。
4.1 安全目标的定义与推导
安全目标,英文叫 Safety Goal,简称 SG。它不是一个技术指标,而是一个顶层的、定性的安全要求。我个人的习惯是,把它理解为“系统绝对不能干的事”。
举个例子,对于一辆车的电子助力转向系统,它的安全目标可能是:“在转向助力失效时,系统必须保证驾驶员仍能通过机械连接控制车辆转向。” 你看,它没有说“扭矩要多大”、“响应要多快”,它只说了“必须能转向”。这就是安全目标的精髓——抓住最核心的安全底线。
安全目标从哪里来? 从危害分析和风险评估(HARA)来。HARA 分析完了,我们会得到一堆危害事件,每个危害事件都对应一个 ASIL 等级。然后,针对每一个危害事件,我们都要制定一个或多个安全目标来防止它发生。
推导过程其实不复杂,我总结了一个三步法:
- 找危害: 从 HARA 中找出所有不可接受的危害事件。
- 定目标: 针对每个危害,用“避免……发生”或“防止……导致……”的句式,写出安全目标。
- 定等级: 安全目标的 ASIL 等级,直接继承自对应危害事件的 ASIL 等级。
重要提醒: 安全目标必须是可验证的。如果一个安全目标你没法通过测试或分析来证明它实现了,那它就是一句空话。我在项目中就见过有人写“系统应足够安全”,这种目标毫无意义。
4.2 安全状态的定义与分类
安全目标定好了,接下来就要问:当系统违反安全目标时,它应该进入一个什么样的状态?这个状态,就是安全状态。
安全状态,是指系统在发生故障后,能够将风险降低到可接受水平的一种系统状态。说白了,就是“保命状态”。
我根据经验,把安全状态分为三类:
| 分类 | 说明 | 典型例子 |
|---|---|---|
| 降级模式 | 系统部分功能受限,但核心安全功能仍可用 | ADAS 系统故障时,限制最高车速为 30km/h |
| 故障容错模式 | 系统通过冗余或备份,继续执行安全功能 | 双通道制动系统,一个通道失效,另一个通道仍能提供 50% 制动力 |
| 安全停机 | 系统完全停止工作,进入一个无危害的状态 | 电池管理系统检测到过温,直接切断主继电器 |
嗯,这里要注意:安全状态不是一成不变的。同一个系统,针对不同的故障,可能进入不同的安全状态。比如,一个电机控制器,如果只是传感器信号丢失,可以进入降级模式;但如果功率管短路了,那就必须立即安全停机。
4.3 安全状态转换图
光说概念太抽象,咱们画个图就清楚了。下面这张图,是我用 SVG 画的一个典型的安全状态转换图,展示了系统从正常工作到进入安全状态,再到恢复的全过程。
这张图里,我特意画了四种状态和它们之间的转换关系。你注意看,从“正常模式”出发,根据故障的严重程度,可以进入“降级模式”、“故障容错模式”或直接“安全停机”。而“降级模式”和“故障容错模式”在故障恢复后,是可以回到“正常模式”的。但“安全停机”是单向的,一旦进入,必须人工干预才能重启。
个人经验: 我在设计一个电池管理系统时,曾经把“安全停机”设计成可自动恢复的。结果有一次,电池只是短暂过温,系统停机后又自动恢复了,但温度传感器其实已经漂移了。后来我改成:所有“安全停机”都必须由人工确认后才能恢复。这个教训让我记住了:安全状态转换图里,一定要明确哪些转换是自动的,哪些是手动的。
4.4 安全目标分解与分配
安全目标定好了,安全状态也画清楚了,接下来就是落地的问题。一个系统级的安全目标,怎么变成具体的设计要求?这就需要分解和分配。
安全目标分解,就是把一个顶层的安全目标,拆解成多个子安全目标。比如,安全目标“防止非预期加速”,可以分解为:
- 子目标1:油门踏板信号必须可靠采集
- 子目标2:电机扭矩指令必须经过合理性校验
- 子目标3:制动信号必须能优先切断扭矩输出
安全目标分配,就是把分解后的子目标,分配给具体的系统元素(硬件、软件、或外部措施)。
分配的时候,我建议遵循一个原则:谁执行,谁负责。也就是说,哪个组件负责实现这个安全机制,就把对应的安全目标分配给它。
举个例子,还是那个“防止非预期加速”的安全目标。它的分配可能是这样的:
| 子安全目标 | ASIL等级 | 分配给 | 实现方式 |
|---|---|---|---|
| 油门踏板信号可靠采集 | ASIL C | 传感器模块(硬件) | 双通道冗余 + 合理性检查 |
| 电机扭矩指令合理性校验 | ASIL C | 电机控制器(软件) | E2E保护 + 监控比较器 |
| 制动信号优先切断扭矩 | ASIL D | 整车控制器(硬件+软件) | 独立硬件路径 + 看门狗 |
避坑指南: 我曾经犯过一个错误,把一个 ASIL D 的安全目标,分配给了两个 ASIL B 的组件,以为“1+1=2”。结果在评审时被专家怼了:ASIL 分解不是简单的加法,它需要满足“充分独立”的条件。两个组件之间如果存在共因失效,那它们的组合仍然达不到 ASIL D 的要求。所以,分配时一定要考虑独立性。
好了,关于安全目标和安全状态,我就讲这么多。总结一下:安全目标是“做什么”,安全状态是“变成什么样”,安全状态转换图是“怎么变”,而分解与分配是“谁来做”。这四个环节环环相扣,缺一不可。你在实际项目中,不妨也按照这个思路来梳理,相信会清晰很多。