3. 硬件冗余设计:双机热备、三模冗余、冷备与温备

硬件冗余,说白了就是「多准备几份硬件,防止单点故障」。
我做了这么多年路径规划系统,见过太多因为硬件失效导致整个项目崩盘的案例。
嗯,今天咱们就把双机热备、三模冗余、冷备和温备这几个方案聊透。

3.1 双机热备(Active/Standby)

这是最常用的方案。一台主设备干活,一台备用设备待命。
主设备一旦挂了,备用设备立刻顶上。

工作模式:

  • Active(主): 实时处理路径规划任务,输出控制指令
  • Standby(备): 同步接收传感器数据,但不输出控制指令
  • 切换时间: 毫秒级到秒级,取决于心跳检测频率

核心要点: 主备之间必须保持状态同步。否则切换时会出现路径跳变,机器人可能直接撞墙。

我在项目中遇到过一个问题:主备之间通过以太网同步状态,结果网络抖动导致备机误判主机挂了,频繁切换。
后来我加了个「三次心跳丢失才切换」的机制,才稳定下来。

3.2 三模冗余(TMR)

三模冗余,就是三套硬件同时运行,通过「投票」决定最终输出。
说白了,三个大脑一起算,少数服从多数。

典型架构:

传感器数据 → 路径规划模块A → 输出A
传感器数据 → 路径规划模块B → 输出B
传感器数据 → 路径规划模块C → 输出C
                ↓
          投票器(Voter)
                ↓
          最终控制指令

为什么用三套而不是两套?
两套系统如果结果不一致,你没法判断谁对谁错。
三套系统,至少能保证两个一致,投票结果可信。

我的经验: TMR 适合对安全性要求极高的场景,比如自动驾驶、航天器导航。
但代价也很明显:成本翻三倍,功耗翻三倍,体积翻三倍。

我曾经在一个无人矿卡项目里用过 TMR。三套工控机同时跑路径规划,投票器用 FPGA 实现。
结果发现一个问题:三套硬件虽然型号相同,但晶振频率有微小差异,导致输出时序不一致。
后来我加了「时间戳对齐」机制,才解决了投票冲突。

3.3 冷备与温备

这两个概念经常被混淆。我简单说清楚:

特性 冷备 温备 热备
电源状态 断电 通电但不工作 通电且工作
数据同步 定期同步 实时同步
切换时间 分钟级 秒级 毫秒级
适用场景 非关键任务 中等关键任务 高关键任务

冷备: 备用设备放在仓库里,主设备坏了才拿出来用。
你想想看,这种方案成本最低,但切换时间最长。
我见过一个仓库 AGV 项目用冷备,结果主控制器烧了,等备机从仓库调过来、安装调试,整整花了 4 个小时。

温备: 备用设备通电待命,但不参与实际计算。
它会定期从主设备同步关键数据,比如地图、路径缓存。
切换时只需要加载最新状态,比冷备快得多。

注意: 温备的「定期同步」间隔很关键。
同步太频繁,占用主设备资源;同步太少,切换时数据丢失严重。
我个人习惯设置 1-5 秒同步一次,具体看业务容忍度。

3.4 如何选择?

我总结了一个简单的选择逻辑:

  1. 预算充足 + 安全要求极高 → TMR
    比如自动驾驶、医疗机器人、航天器
  2. 预算中等 + 需要快速切换 → 双机热备
    比如工业 AGV、仓储机器人
  3. 预算有限 + 允许短暂停机 → 温备
    比如巡检机器人、服务机器人
  4. 预算极低 + 非关键任务 → 冷备
    比如教育机器人、简单搬运

避坑指南: 我曾经在一个项目里选了双机热备,但忽略了「切换时路径连续性」的问题。
主设备挂了,备机接管后重新规划路径,导致机器人原地打转。
后来我加了「路径状态缓存」机制,备机接管后直接沿用最后一条有效路径,才解决问题。

嗯,硬件冗余设计就聊到这里。
记住一句话:冗余不是万能的,但没有冗余是万万不能的。
下一章咱们聊聊软件层面的冗余设计,比如看门狗、心跳检测、超时重试这些。