3. 电驱系统概述

好,咱们进入功能安全概念(FSC)开发这个环节。说实话,很多工程师觉得 Hazard Analysis 做完,安全目标一写,后面就是水到渠成的事。其实不然。FSC 才是真正把安全目标「翻译」成工程语言的关键一步。你想想看,安全目标说「电驱不能非预期输出扭矩」,但怎么做到?靠什么机制?多长时间内必须响应?这些才是 FSC 要回答的问题。

我个人习惯把 FSC 开发拆成四个核心模块:安全状态定义、安全机制识别、故障容错时间间隔(FTTI)、安全架构设计原则。咱们一个一个来。

3.1 安全状态定义:出事后,系统该往哪走?

安全状态,说白了就是系统发生故障后,要进入的那个「不会造成危害」的状态。听起来简单,但定义错了,后面全白干。

我在项目中遇到过一件事:某团队把电驱控制器的安全状态直接定义为「下电」。听起来很安全对吧?但实际场景里,高速行驶中突然下电,方向盘助力消失、刹车助力消失,反而更危险。所以安全状态不是越「死」越好,而是要结合车辆动力学来定。

电驱控制器常见安全状态:
安全状态 适用场景 关键要求
主动短路(ASC) 逆变器故障、电机失控 三相短路,产生制动扭矩,防止飞车
关断(Shutdown) 严重过流、过温、通信丢失 切断主继电器,进入安全休眠
降功率运行 轻度故障(如传感器漂移) 限制扭矩输出,维持基本功能
自由旋转(Freewheel) 电机侧故障但逆变器正常 断开电机与逆变器连接,允许空转

这里有个坑:安全状态必须可验证。你不能定义了一个状态,结果发现硬件根本进不去。我曾经见过一个项目,安全状态定义成「进入待机模式」,但待机模式下 MCU 还在跑,看门狗还在喂,结果故障根本没被消除。嗯,后来改成了「硬件强制关断」,直接拉低使能引脚,这才算真正安全。

避坑指南:安全状态定义时,一定要问自己三个问题:
1. 这个状态真的能消除或减轻危害吗?
2. 系统能在规定时间内进入这个状态吗?
3. 进入这个状态后,会不会引入新的危害?

3.2 安全机制识别:用什么手段来保安全?

安全机制就是用来检测故障、防止故障传播、或者让系统进入安全状态的那些「手段」。说白了,就是你的安全「工具箱」。

我习惯把安全机制分成三类:

  • 检测机制:发现故障。比如电压监控、电流传感器自检、通信 CRC 校验。
  • 响应机制:故障发生后采取行动。比如触发 ASC、关断 PWM、置位故障码。
  • 避免机制:防止故障发生。比如冗余设计、降额设计、物理隔离。

举个例子,电驱控制器里最常见的故障——扭矩监控失效。安全目标是「防止非预期扭矩输出」。那安全机制怎么识别?

  1. 检测:两个独立扭矩路径(比如旋变 + 电流估算)互相校验,偏差超过阈值则报错。
  2. 响应:一旦检测到偏差,立即触发主动短路(ASC),同时切断 PWM 输出。
  3. 避免:扭矩路径的软件跑在不同核上,或者用不同算法实现,避免共因失效。
我的经验:安全机制识别阶段,别只盯着「检测」和「响应」。很多团队忽略了「避免」机制,结果故障检测率很高,但故障还是发生了。比如电源管脚间距不够,爬电导致短路,你检测再快也来不及。所以 PCB 布局的物理隔离,也是一种安全机制。

3.3 故障容错时间间隔(FTTI):你有多长时间来反应?

FTTI,全称 Fault Tolerant Time Interval。这个概念很多人理解偏了。它不是「故障发生后还能撑多久」,而是从故障发生到危害发生之间的时间窗口。换句话说,你必须在 FTTI 内完成「检测 → 判断 → 响应 → 进入安全状态」这一整套动作。

电驱控制器的 FTTI 通常很短。为什么?因为电机转速高,扭矩响应快。一个旋变信号丢失,几十毫秒内就可能产生非预期扭矩。

故障场景 典型 FTTI 说明
扭矩监控失效 10-50 ms 取决于车速和电机响应速度
过流故障 < 1 ms 硬件级保护,通常由比较器直接触发
通信丢失(CAN) 100-500 ms 取决于通信周期和超时设定
过温故障 1-10 s 热惯性大,时间相对充裕

这里有个关键点:FTTI 不是由你决定的,而是由危害分析决定的。你算出来 FTTI 是 50 ms,那你的安全机制必须在 50 ms 内完成全部动作。如果硬件响应慢,那就得优化;如果软件调度周期太长,那就得改。

我曾经踩过的坑:一个项目里,我们定义 FTTI 为 100 ms,但实际测试发现,从故障发生到 ASC 触发,用了 120 ms。原因是什么?软件里加了一个 50 ms 的滤波,说是「防误触发」。结果滤波时间 + 响应时间,超了。后来我们把滤波改成硬件级去抖,才把总时间压到 80 ms。所以 FTTI 的预算,一定要把检测、判断、响应、执行每个环节的时间都算清楚。

3.4 安全架构设计原则:怎么搭才靠谱?

安全架构设计,不是拍脑袋想出来的。它有一些基本原则,我总结成四条:

  • 独立性:安全机制不能依赖它要保护的对象。比如扭矩监控不能和扭矩控制共用同一个传感器。
  • 多样性:用不同的方式实现同一个功能,避免共因失效。比如用旋变和霍尔做冗余,而不是两个旋变。
  • 故障传播阻断:一个模块故障,不能把其他模块也拖下水。比如电源隔离、信号隔离。
  • 可诊断性:安全机制本身也要能被诊断。如果看门狗坏了,你得知道它坏了。

下面这张图是我常用的电驱控制器安全架构逻辑,你可以参考一下:

电驱控制器安全架构逻辑图 电驱控制器安全架构逻辑图 主控单元(MCU) 安全监控单元(SBC) 扭矩路径1(旋变) 扭矩路径2(电流估算) 比较与决策(偏差阈值判定) 安全响应(ASC / 关断) 说明:两条独立扭矩路径分别由 MCU 和 SBC 监控,比较结果触发安全响应,满足独立性 + 多样性原则

这个架构的核心逻辑是:两条独立扭矩路径 + 一个独立监控单元。MCU 跑主控制逻辑,SBC(安全基础芯片)做独立监控。两条扭矩路径互相校验,一旦偏差超过阈值,SBC 直接触发硬件级安全响应,不经过 MCU 软件。这样即使 MCU 软件跑飞,安全机制依然有效。

我个人的建议:安全架构设计时,别追求「完美」,追求「可落地」。有些团队一上来就搞三冗余、四冗余,结果成本翻倍、性能下降、调试困难。其实对于 ASIL C/D 级别的电驱控制器,双路径 + 独立监控已经足够。关键是路径之间的独立性要真正做干净,不能共享电源、不能共享时钟、不能共享通信总线。

3.5 小结:FSC 开发的核心要点

好了,这一章的内容差不多就这些。我帮你把核心要点再捋一遍:

  • 安全状态:不是越「死」越好,要结合车辆动力学定义,且必须可验证。
  • 安全机制:检测 + 响应 + 避免,三者缺一不可。别只盯着检测。
  • FTTI:从故障到危害的时间窗口,必须把每个环节的时间预算算清楚。
  • 安全架构:独立性、多样性、故障阻断、可诊断性,四条原则一个都不能少。