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:单传感器+扭矩限制70%。
- 降级模式2:开环控制+扭矩限制30%(跛行回家)。
- 安全关断:切断电机,机械锁止(如果系统要求)。
每个降级阶梯的切换条件、切换时间、恢复条件都要在软件里写死,不能靠人工判断。
3.4 架构总览:一张图说清楚
下面这张图展示了三层监控、故障响应和冗余降级的整体关系。我习惯用这种图来跟硬件、软件、系统工程师对齐思路。
这张图里,L1、L2、L3是纵向的监控通道,故障分类、降级策略、冗余切换是横向的决策模块。两者交叉,就构成了完整的监控矩阵。
核心要点:监控架构不是堆功能,而是设计“故障发生时,系统知道该做什么”。每一层都要有明确的输入、判断逻辑、输出动作。冗余不是备份,而是“另一条能独立工作的路径”。