3. 安全监控架构设计:监控层级划分、故障响应策略、冗余与降级机制

转向执行器的安全监控,说白了就是一套“看门狗”体系。但这不是简单的看门狗定时器,而是分层、分级、有策略的监控网络。我做了这么多年,见过太多“监控失效”的案例——不是监控点不够,而是层级混乱,故障来了不知道该谁响应。

这一节,我们就把架构拆开来看。

3.1 监控层级划分:从信号到系统

我个人习惯把监控分成三个层级。每个层级关注的对象不同,响应速度也不同。

层级 监控对象 典型周期 响应目标
L1:信号级 传感器原始值、PWM占空比、电流采样 1ms ~ 10ms 检测瞬时异常,触发硬件保护
L2:功能级 位置闭环偏差、扭矩指令一致性 10ms ~ 100ms 判断功能是否偏离预期
L3:系统级 执行器状态机、通信超时、供电完整性 100ms ~ 1s 决策降级或安全关断

你想想看,如果L1没拦住一个电流尖峰,L2就得在闭环里发现位置偏差,L3再决定要不要切到备用模式。层级之间是递进关系,也是冗余关系。

关键原则:L1必须独立于主控软件,最好用硬件比较器或专用监控IC实现。L2和L3可以跑在主控上,但L3的看门狗必须用独立定时器。

我曾经在一个项目中,L1的过流检测用了软件ADC采样,结果CPU跑飞时监控也跟着失效。后来改成硬件比较器直接触发MOSFET关断,再也没出过问题。

3.2 故障响应策略:分级处理,不搞一刀切

不是所有故障都要立刻停车。有些故障可以“忍一忍”,有些必须“立刻断”。我建议把故障分为三类:

  • 可恢复故障(Class A):比如通信偶发丢包、传感器噪声超标。策略:重试+计数,连续N次失败才升级。
  • 需降级故障(Class B):比如一个位置传感器失效,但还有冗余传感器可用。策略:切换到备用传感器,限制执行器输出功率。
  • 致命故障(Class C):比如电机短路、供电过压、看门狗超时。策略:立即切断动力,进入安全关断状态。

我的经验:Class A的计数阈值不要设得太小。我曾经设了3次重试就升级,结果在EMC测试时频繁误触发。后来改成10次,配合50ms的滤波窗口,稳定多了。

响应策略可以用一个简单的状态机来描述:

// 故障响应状态机伪代码
enum FaultState {
  NORMAL,
  DEGRADED,   // 降级运行
  LIMP_HOME,  // 跛行回家
  SAFE_OFF    // 安全关断
};

void FaultManager_Run() {
  switch (currentState) {
    case NORMAL:
      if (detectClassB()) transitionTo(DEGRADED);
      if (detectClassC()) transitionTo(SAFE_OFF);
      break;
    case DEGRADED:
      if (classBRecovered()) transitionTo(NORMAL);
      if (classBpersists()) transitionTo(LIMP_HOME);
      if (detectClassC()) transitionTo(SAFE_OFF);
      break;
    case LIMP_HOME:
      // 限制扭矩50%,提示驾驶员
      if (classBPersistsTooLong()) transitionTo(SAFE_OFF);
      break;
    case SAFE_OFF:
      // 切断动力,等待钥匙电复位
      break;
  }
}

3.3 冗余与降级机制:多一条路,多一分安全

冗余不是简单堆硬件。我见过有人把两个相同的传感器并联,结果共因失效(比如同一个电源轨短路)两个一起挂。真正的冗余要满足:

  • 多样性冗余:比如霍尔传感器+磁阻传感器,原理不同,失效模式不同。
  • 供电隔离:冗余通道的电源、地、通信总线必须独立。
  • 诊断覆盖:冗余通道之间要能互相校验,不能“各跑各的”。

避坑提醒:我曾经遇到一个设计,主传感器和冗余传感器共用同一个5V LDO。LDO短路后两个传感器同时失效,冗余形同虚设。从那以后,我坚持每个传感器配独立的LDO和TVS管。

降级机制要提前定义好“降级阶梯”。以转向执行器为例:

  1. 全功能模式:双传感器、全扭矩输出。
  2. 降级模式1:单传感器+扭矩限制70%。
  3. 降级模式2:开环控制+扭矩限制30%(跛行回家)。
  4. 安全关断:切断电机,机械锁止(如果系统要求)。

每个降级阶梯的切换条件、切换时间、恢复条件都要在软件里写死,不能靠人工判断。

3.4 架构总览:一张图说清楚

下面这张图展示了三层监控、故障响应和冗余降级的整体关系。我习惯用这种图来跟硬件、软件、系统工程师对齐思路。

转向执行器安全监控架构图 转向执行器安全监控架构 L1:信号级监控(1ms~10ms) L2:功能级监控(10ms~100ms) L3:系统级监控(100ms~1s) 电流/电压监控 PWM占空比校验 传感器原始值 位置闭环偏差 扭矩一致性 响应时间监控 状态机校验 通信超时监控 供电完整性 故障分类 降级策略 冗余切换 说明:L1→L2→L3逐级上报,故障响应模块独立于监控层级,冗余切换由L3决策

这张图里,L1、L2、L3是纵向的监控通道,故障分类、降级策略、冗余切换是横向的决策模块。两者交叉,就构成了完整的监控矩阵。

核心要点:监控架构不是堆功能,而是设计“故障发生时,系统知道该做什么”。每一层都要有明确的输入、判断逻辑、输出动作。冗余不是备份,而是“另一条能独立工作的路径”。