3、设备冗余(Device Redundancy):从站设备冗余方案、双从站热备、主站冗余(Hot Standby)概念

设备冗余,说白了就是给关键节点找个「备胎」。

在工业现场摸爬滚打这么多年,我见过太多因为一个从站掉线导致整条产线停机的惨案。有一次在汽车焊装车间,一个IO模块的电源端子松了,结果整个工位的EtherCAT网络直接瘫痪。从那以后,我对设备冗余的重视程度就上了一个台阶。

3.1 从站设备冗余方案

从站冗余,核心思路是让两个从站设备「看起来像是一个」。EtherCAT协议天生支持这种拓扑,因为它用的是逻辑寻址,不是物理寻址。

具体怎么做?我习惯用两种方式:

  • 双端口从站:一个从站设备有两个EtherCAT端口,分别接到主站。一个端口断了,另一个顶上。这种方案成本低,但设备本身还是单点。
  • 双从站镜像:两个完全独立的从站,配置成相同的PDO映射。主站同时给两个从站发数据,但只取其中一个的反馈。另一个作为热备。

你想想看,如果只是简单的IO模块,双端口方案就够了。但如果是伺服驱动器这种关键设备,我建议上双从站镜像。

关键点:从站冗余的切换时间必须小于EtherCAT的看门狗超时。我一般把看门狗设成10ms,切换时间控制在5ms以内。否则主站会认为设备故障,直接进入安全状态。

3.2 双从站热备

双从站热备,这是我最常用的方案。说白了就是「一主一备,随时切换」。

具体架构是这样的:

  • 主从站:正常工作,处理所有数据
  • 备从站:同步接收数据,但不输出。时刻准备着
  • 心跳检测:主从站之间通过一个独立的GPIO或者EtherCAT的DC同步信号互相监测

我记得在某个半导体项目中,客户要求设备切换时间不能超过一个EtherCAT周期(1ms)。当时我用了DC同步模式,让主备两个从站共享同一个分布式时钟。主站挂了,备站在下一个周期立刻接管输出。实测切换时间只有200微秒。

我的经验:双从站热备的难点不在硬件,在软件。主备切换时,输出状态要保持一致。比如伺服的位置、速度这些连续量,切换时不能有跳变。我一般会在备站里缓存主站最近10个周期的输出值,切换时做平滑过渡。

嗯,这里要注意一个坑:双从站热备不能解决「数据不一致」的问题。如果主站和备站接收到的数据不同步,切换时就会出乱子。所以一定要用EtherCAT的DC同步机制,确保两个从站看到的是同一份数据。

3.3 主站冗余(Hot Standby)

主站冗余,这是整个系统的「最后一道防线」。EtherCAT协议本身没有定义主站冗余,但我们可以用硬件和软件配合实现。

常见的方案有两种:

方案 原理 切换时间 我推荐的应用场景
双网卡主站 一个主站插两块网卡,一块坏了切另一块 < 1ms 对成本敏感的中小型系统
双主站热备 两个独立的主站控制器,通过心跳互检 10-50ms 大型产线、安全关键系统

双网卡方案我用的比较多。说白了就是一块网卡坏了,驱动自动切换到另一块。切换时间极短,从站几乎感觉不到。但问题是,主站控制器本身还是单点。

双主站热备才是真正的冗余。两个主站通过一个独立的通信链路(比如EtherNet/IP或者简单的串口)互相监测。主主站挂了,备主站立刻接管EtherCAT总线。

我曾经踩过的坑:双主站热备最怕「脑裂」。就是两个主站都认为对方挂了,同时接管总线。结果从站收到两个主站的帧,直接乱套。解决方案是加一个「仲裁信号」,比如一个独立的继电器或者看门狗定时器。只有拿到仲裁权的主站才能发帧。

另外,主站冗余还有一个隐藏问题:从站的状态机。EtherCAT从站有Init、Pre-Op、Safe-Op、Op四个状态。主站切换时,从站的状态不能掉。我建议在备主站里预先缓存所有从站的配置信息,切换时直接恢复状态,不需要重新初始化。

说实话,主站冗余的成本不低。两个高性能控制器、冗余网卡、仲裁逻辑,加起来比单主站贵一倍不止。但如果你做的是高铁、核电这种不能停的系统,这笔钱必须花。

最后总结一句:设备冗余不是万能药。它解决的是「单点故障」问题,但解决不了「设计缺陷」和「软件bug」。我见过一个项目,双主站热备做得天衣无缝,结果两个主站跑的是同一份有bug的代码,同时崩溃。嗯,冗余也要冗余得有脑子。