2. 功能安全基础
各位好,欢迎来到第二章。这一章我们要聊的,是功能安全里最基础、也最绕不开的两个概念——安全生命周期和ASIL等级。
说实话,我刚入行那会儿,觉得这些东西太理论了。什么V模型、什么ASIL分解,听着就像PPT上的漂亮话。直到我第一次参与一个实际项目,在安全评审会上被专家问住,才意识到这些概念不是纸上谈兵,而是实打实的工程准则。
好,我们直接进入正题。
2.1 安全生命周期V模型
安全生命周期,说白了就是一套流程。它告诉你:从项目启动到产品退役,每一步该做什么、该产出什么。
ISO 26262推荐的是V模型。为什么是V?你想想看,左边是设计阶段,右边是验证阶段,中间是集成和测试。左边做什么,右边就验证什么,一一对应。
核心思想:每个设计活动都有对应的验证活动。没有验证的设计,等于没做。
我画了一张V模型的示意图,你看一眼就明白了。
这个模型有几个关键点,我挑重要的说。
2.1.1 左侧:从概念到实现
左侧是从上往下走。先做危害分析,定义安全目标,然后逐步细化到功能安全概念、技术安全概念,最后落到系统、软件、硬件的具体设计。
每一步都在问一个问题:这个层级上,安全需求是什么?
2.1.2 右侧:从实现到确认
右侧是从下往上走。先做单元测试,然后集成测试,再验证安全概念,最后做安全确认。
每一步也在问一个问题:这个层级上,安全需求被满足了吗?
我的经验:很多团队只重视左侧的设计,忽略了右侧的验证。结果就是设计文档写得漂亮,但实际代码跑起来全是问题。我个人习惯是,在设计阶段就规划好验证方案,两边一起推进。
2.2 ASIL等级:A、B、C、D
ASIL,全称是Automotive Safety Integrity Level,汽车安全完整性等级。它定义了系统需要达到的安全严格程度。
ASIL有四个等级:A、B、C、D。D是最严格的,A是最宽松的。还有一个QM(Quality Management),意思是只做质量管理就行,不需要额外安全措施。
| ASIL等级 | 严格程度 | 典型应用场景 | 所需安全措施 |
|---|---|---|---|
| QM | 无安全要求 | 信息娱乐系统 | 标准质量管理 |
| ASIL A | 低 | 尾灯控制 | 少量安全机制 |
| ASIL B | 中 | 雨刮控制、车窗升降 | 中等安全机制 |
| ASIL C | 高 | 自适应巡航(部分功能) | 较强安全机制 |
| ASIL D | 最高 | 制动系统、转向系统 | 最严格安全机制 |
ASIL等级是怎么确定的?ISO 26262给出了三个参数:
- 严重度(Severity, S):如果发生危害,对人员伤害有多严重?S0到S3。
- 暴露概率(Exposure, E):这种危害场景出现的频率有多高?E0到E4。
- 可控性(Controllability, C):驾驶员或其他人员能在多大程度上控制住危害?C0到C3。
三个参数组合,查表就能得到ASIL等级。
举个例子:制动系统失效。严重度S3(可能致命),暴露概率E4(每次开车都可能用到制动),可控性C3(很难控制)。查表结果:ASIL D。
2.3 ASIL等级分解
这里有个很实用的技巧——ASIL分解。什么意思呢?
假设一个功能要求ASIL D。直接实现ASIL D,成本高、难度大。但如果你把这个功能分解成两个独立的部分,每个部分承担一部分安全责任,那么每个部分的ASIL等级就可以降低。
比如:ASIL D可以分解为ASIL C(D) + ASIL A(D)。注意括号里的D表示原始等级,前面的C和A是分解后的等级。
分解规则是这样的:
| 原始ASIL | 分解方案1 | 分解方案2 | 分解方案3 |
|---|---|---|---|
| ASIL D | ASIL C(D) + ASIL A(D) | ASIL B(D) + ASIL B(D) | ASIL D(D) + QM(D) |
| ASIL C | ASIL B(C) + ASIL A(C) | ASIL C(C) + QM(C) | — |
| ASIL B | ASIL A(B) + ASIL A(B) | ASIL B(B) + QM(B) | — |
| ASIL A | ASIL A(A) + QM(A) | — | — |
注意:分解后的两个部分必须相互独立。如果它们共享同一个故障模式,那分解就无效了。我曾经见过一个项目,把ASIL D分解成两个ASIL B,结果两个部分用了同一个电源芯片。电源一坏,两个都完蛋。这种分解就是自欺欺人。
2.4 安全目标与安全状态定义
安全目标,是安全生命周期中最顶层的安全需求。它回答一个问题:系统要避免什么?
比如:
- 安全目标1:制动系统在单点故障下,仍能提供至少50%的制动力。
- 安全目标2:转向系统在失效时,不能产生非预期的转向力矩。
每个安全目标都要分配一个ASIL等级。这个等级就是前面通过危害分析确定的。
安全状态,是系统在检测到故障后,要进入的状态。说白了就是:出问题了怎么办?
常见的安全状态有:
- 安全关闭:系统完全关闭,比如切断电机电源。
- 降级运行:系统以降低性能的方式继续运行,比如限速30km/h。
- 故障容错:系统继续运行,但使用冗余通道。
- 紧急操作:系统执行预设的安全动作,比如自动刹车。
我的建议:定义安全状态时,一定要考虑系统的实际物理行为。比如电动助力转向,安全关闭意味着方向盘突然变重,驾驶员能不能接受?降级运行到多少速度才安全?这些都要和系统工程师、整车工程师一起讨论。我见过一个项目,安全状态定义成“切断电源”,结果在高速上切断电源导致方向盘锁死,反而更危险。
安全目标和安全状态的关系,可以用一个简单的表格来梳理:
| 安全目标 | ASIL | 触发条件 | 安全状态 | 退出条件 |
|---|---|---|---|---|
| 避免非预期加速 | D | 油门踏板传感器故障 | 限制扭矩输出 | 故障消除或车辆重启 |
| 避免制动失效 | D | 主制动回路压力丢失 | 切换到冗余制动回路 | 维修后复位 |
| 避免转向锁死 | D | 电机过流故障 | 降低助力至50% | 故障消除或车辆重启 |
嗯,这一章的内容就到这里。安全生命周期是骨架,ASIL等级是标尺,安全目标是方向,安全状态是底线。把这几个概念理清楚,后面的章节就好办了。