功能安全基础与ASIL分解:ISO 26262 与线控转向的对应关系

各位工程师朋友,咱们今天聊点硬核的。功能安全,说白了就是「万一出了故障,系统还能安全地停下来或者继续工作」。ISO 26262 这个标准,就是给汽车电子系统定的一套安全开发流程。我刚开始接触这个标准时,觉得它又厚又绕,后来做线控转向项目才真正体会到——没有这套东西,你根本不敢把方向盘和车轮之间的机械连接去掉。

ISO 26262 的核心概念

先快速过一下几个关键术语,后面咱们会反复用到:

术语 含义 线控转向中的例子
Hazard(危害) 可能导致人员伤害的潜在事件 转向失控导致车辆偏离车道
Risk(风险) 危害发生的概率 × 严重程度 高速场景下转向失效风险极高
ASIL(汽车安全完整性等级) 从 A 到 D 四个等级,D 最高 线控转向主功能通常要求 ASIL D
Safety Goal(安全目标) 最高层级的安全要求 "避免非预期的转向角度输出"
FSR / TSR 功能安全需求 / 技术安全需求 FSR 分解到硬件和软件的具体需求

这里有个关键点:ASIL 等级不是拍脑袋定的,而是通过三个参数算出来的——严重度(Severity)、暴露概率(Exposure)、可控性(Controllability)。线控转向的转向失控,严重度通常是 S3(危及生命),暴露概率 E4(几乎每次驾驶都会用到),可控性 C3(普通驾驶员很难控制)。三个 C 级一组合,妥妥的 ASIL D。

核心原则:ASIL D 不是要求整个系统都做到「绝对不坏」,而是要求「即使坏了,也要有足够的手段把风险降到可接受水平」。冗余架构就是实现这个目标的主要手段。

线控转向的 ASIL D 安全目标

我参与过的几个线控转向项目,安全目标基本都长这样:

  • SG1:避免非预期的转向角度输出(ASIL D)
  • SG2:避免非预期的转向力矩输出(ASIL D)
  • SG3:在单点故障下,系统能在规定时间内进入安全状态(ASIL D)
  • SG4:避免因通信故障导致转向功能丧失(ASIL D)

你可能会问:为什么全是 ASIL D?能不能降一降?嗯,这里就要引出咱们今天的重头戏——ASIL 分解。

ASIL 分解:把 D 拆成两条路

ASIL 分解是 ISO 26262 给的一条「合法捷径」。说白了,就是把一个高 ASIL 的安全目标,拆到两个或多个相互独立的元素上,每个元素承担一部分。只要这些元素之间满足「独立性」要求,整体就能达到原来的 ASIL 等级。

举个例子:

安全目标 SG1(ASIL D):「避免非预期的转向角度输出」。

我们可以把它分解成两条冗余路径:

  • 路径 A:主控制器 + 主电机 + 主传感器 → 承担 ASIL C
  • 路径 B:冗余控制器 + 冗余电机 + 冗余传感器 → 承担 ASIL C

两条路径各自做到 ASIL C,并且相互独立(没有共因失效),那么整体就能满足 ASIL D 的要求。这就是所谓的 ASIL D = ASIL C(D) + ASIL C(D) 分解方式。

避坑指南:我曾经在一个项目里,两条路径用了同一个供应商的同一款电源芯片。结果 FMEA 分析时发现,电源芯片的某个失效模式会同时干掉两条路径。这就是典型的「共因失效」——独立性没做到位,ASIL 分解无效。后来我们强制要求两条路径的电源、时钟、通信总线全部物理隔离。

ASIL 分解的几种常见模式

ISO 26262 第 9 部分给出了几种分解方式,我整理成了一张表:

原始 ASIL 分解方式 每条路径的 ASIL 典型应用场景
ASIL D D = C(D) + C(D) ASIL C 双控制器冗余(线控转向主/从架构)
ASIL D D = B(D) + B(D) + B(D) ASIL B 三模冗余(TMR)架构
ASIL D D = D + QM(D) ASIL D + QM 主路径 ASIL D,监控路径 QM(不推荐用于转向)
ASIL C C = B(C) + B(C) ASIL B 双传感器冗余

注意看第三行——D + QM 这种分解方式,在转向系统里我基本不用。为什么?因为 QM 路径没有安全要求,万一主路径挂了,QM 路径根本兜不住。你想想看,高速上转向突然失灵,靠一个没有安全等级的备份路径,谁敢信?

线控转向的典型 ASIL 分解架构

下面这张图是我在实际项目中用过的分解架构,你可以把它当作一个参考模板:

线控转向 ASIL D 分解架构 线控转向 ASIL D 分解架构 安全目标:避免非预期转向(ASIL D) ASIL D 分解 路径 A:主控制器 + 主电机 + 主传感器 路径 B:冗余控制器 + 冗余电机 + 冗余传感器 ASIL C(D) ASIL C(D) 独立性要求:无共因失效(电源隔离、时钟隔离、通信隔离) 两条路径之间无单点故障可同时导致功能丧失 整体满足:ASIL D 关键说明: 1. 两条路径的 ASIL 等级可以不同,但必须满足分解公式(如 D = C + C) 2. 独立性需要通过安全分析(DFA、FTA)来证明 3. 分解后的每条路径仍需独立进行功能安全开发

ASIL 分解的实战要点

光有架构图还不够,落地时这几个坑你得注意:

  1. 独立性不是「看起来独立」就行——要过 DFA(依赖失效分析)。我见过一个项目,两条路径的控制器放在同一块 PCB 上,中间只隔了 2mm 的隔离槽。结果振动测试时,隔离槽开裂,两条路径的电源平面短路了。后来我们强制要求物理分离——要么分板,要么分腔。
  2. ASIL 分解要体现在需求里——每条路径的 FSR 和 TSR 都要明确标注分解后的 ASIL 等级。比如路径 A 的某个传感器需求,要写成「ASIL C(D)」,而不是笼统的「ASIL D」。
  3. 软件也要做分解——两条路径的软件不能共用同一个任务调度器或内存管理单元。我习惯的做法是:主路径跑在 RTOS 上,冗余路径跑在裸机或独立的安全 OS 上,两者之间通过硬件看门狗和心跳信号交互。
  4. 别忘了「安全状态」——分解后的每条路径,都要定义自己的安全状态。比如路径 A 失效时,路径 B 要能接管并让车辆进入「跛行回家」模式;如果两条路径都失效,那就得触发「安全停车」——方向盘锁死?不对,是让车辆减速并靠边停稳。

重要警告:ASIL 分解不是「偷懒」的手段。你不能说「反正有两条路径,每条随便做做就行」。恰恰相反——分解后每条路径的独立性验证、故障注入测试、安全确认,工作量一点都不会少。我见过有团队把 ASIL D 分解成两个 ASIL B,结果测试时发现共因失效覆盖率不到 60%,最后不得不返工。记住:分解的是等级,不是责任。

小结一下

功能安全不是纸上谈兵,ASIL 分解也不是数学游戏。它是一套严谨的工程方法,帮我们在成本和安全性之间找到平衡点。对于线控转向这种「命根子」系统,我的建议是:能分解就分解,但分解前先想清楚独立性怎么做。下一节咱们会深入聊冗余路径的具体实现——从传感器到执行器,每一步怎么选型、怎么验证。

嗯,今天就到这儿。你回去可以拿自己项目的安全目标试试,看能不能拆出两条合理的冗余路径。拆完记得做一遍 DFA,别让共因失效坑了你。