4、控制电路冗余方案:主控芯片(DSP/FPGA)的双机热备、看门狗与心跳检测、控制权切换逻辑
各位同行,今天我们来聊聊控制电路冗余。这部分我花了不少时间琢磨,因为主控芯片一旦出问题,整个PCS就瘫痪了。说白了,这就是给系统装个「备胎」,但关键是怎么让备胎无缝顶上。
4.1 双机热备:两个大脑,一个在岗
双机热备,顾名思义就是两套主控芯片同时工作。一套是主控制器,另一套是备用控制器。两套都上电,都跑程序,但只有主控制器在发号施令。
我个人习惯用DSP+FPGA的组合来做双机热备。DSP负责算法运算,FPGA负责逻辑和接口。两套之间通过高速串行总线(比如LVDS)实时同步状态。
关键点:两套系统必须保持状态一致。不是简单的「你干活我看着」,而是「你干活我也在干活,只是我不输出」。这样切换时才能无缝衔接。
我在项目中遇到过一个问题:两套系统的时钟不同步,导致PWM波形错位。后来加了时钟同步电路,用同一个晶振源,才解决。
4.2 看门狗与心跳检测:谁在盯着谁?
看门狗是硬件层面的保护。主控芯片必须定期「喂狗」,否则看门狗会触发复位。但光有看门狗不够,还得有心跳检测。
心跳检测是软件层面的。主控制器每隔一段时间发一个「我还活着」的信号给备用控制器。备用控制器如果连续几次没收到心跳,就认为主控制器挂了。
| 检测方式 | 实现原理 | 响应时间 | 我踩过的坑 |
|---|---|---|---|
| 硬件看门狗 | 独立定时器,超时复位 | 毫秒级 | 喂狗周期太短,误触发 |
| 软件心跳 | 通信报文,状态同步 | 微秒级 | 通信干扰导致误判 |
| 混合检测 | 两者结合,互为备份 | 自适应 | 逻辑冲突,优先级没理清 |
嗯,这里要注意:看门狗和心跳检测不能互相替代。看门狗防的是芯片死机,心跳检测防的是程序跑飞但芯片没死。两者结合才靠谱。
4.3 控制权切换逻辑:谁说了算?
切换逻辑是双机热备的核心。不能随便切,也不能切不动。我一般用「三判据」来决定是否切换:
- 心跳丢失:连续3次没收到心跳
- 输出异常:主控制器输出信号超出正常范围
- 看门狗复位:主控制器被硬件复位
三个判据中任意一个满足,就触发切换。但切换不是瞬间完成的,需要有个过渡过程。
我的经验:切换时先让备用控制器预充电,把输出缓冲器里的数据清空,再接管控制权。否则切换瞬间会有电压尖峰,可能烧坏IGBT。
我曾经遇到过切换时PWM波形出现毛刺,导致电机抖动。后来加了「软切换」逻辑:先让备用控制器输出与主控制器同步,再逐步接管,毛刺就消失了。
4.4 实战中的避坑指南
做双机热备,有几个坑我踩过,分享给大家:
- 别用同一个电源:两套系统必须独立供电,否则一个电源挂了,两个都完蛋
- 通信要隔离:心跳信号用光耦隔离,防止共模干扰
- 切换要快:从检测到故障到切换完成,最好在1ms以内
- 别忘记录日志:每次切换都要记录原因和时间,方便事后分析
警告:双机热备不是万能的。如果两套系统同时受到干扰(比如雷击),可能一起挂掉。所以还得配合其他冗余方案,比如电源冗余、通信冗余。
4.5 知识体系图
下面这张图是我自己画的,把双机热备的核心逻辑串起来了。你想想看,从检测到切换,每一步都不能出错。
这张图里,主控制器和备用控制器通过状态同步保持数据一致。心跳检测、看门狗、输出异常检测三个判据同时监控主控制器状态。一旦触发切换逻辑,备用控制器立即接管PWM输出。
总结一下:双机热备不是简单的「一主一备」,而是「一主一备,随时待命」。看门狗保底,心跳检测预警,切换逻辑决策。三者缺一不可。
好了,这一章就到这里。下一章我们聊聊通信冗余方案,那个坑更多,到时候再细说。