跳到主要内容

热插拔

EtherCAT 标准功能

热插拔(Hot Connect)是 EtherCAT 主站的标配功能。SDK 默认启用,无需额外配置。 相关文档:Master 事件 | Slave 事件(其他语言版本请参考 SDK 文档

工作原理

当从站离线时,EtherCAT 帧会跳过该从站位置继续转发,其余从站保持 OP 状态正常通信。离线从站的 PDO 输入数据被清零。expected_wkc 在配置期固定,不会随掉站下调;actual_wkc 如实下降,表示有从站掉了,不是主站故障。PDO 周期继续跑。从站修复后 actual 可能回升。运行中插回不会自动进 OP

行为特性:

  • 离线从站不影响其余从站的 PDO 周期通信
  • 可上报 Offline/Online 事件;不会在运行中插回后自动切到 OP
  • 断电重连、换同型号设备都不会由主站自动拉回 OP
  • 线型拓扑中,中间从站断开会导致其后方从站全部不可达(除非有环形冗余)
  • 耦合器(如 EK1100)断开会导致其分支端口下游从站全部不可达

检测时延(不是自动进 OP)

线缆拔插(地址保留)

从站短暂断开后重连,配置地址仍在 ESC 寄存器中:

耗时量级: 若干 PDO 周期(周期最短 125 µs,不是写死 1 ms);这是检测/事件时延,不是自动进 OP

断电重连(地址丢失)

从站断电后重新上电,ESC 寄存器全部重置,需要完整重配:

耗时量级: 更多 PDO 周期(周期最短 125 µs,不是写死 1 ms);仍不会自动进 OP,需要应用层按状态机处理

事件通知

从站离线和恢复时会触发事件:

// Master 级别
master.Events.SlaveOffline += (slaveIndex) =>
{
Console.WriteLine($"从站 {slaveIndex} 离线");
};

master.Events.SlaveOnline += (slaveIndex) =>
{
Console.WriteLine($"从站 {slaveIndex} 恢复上线");
};

// Slave 级别
slave.Events.Offline += () => { /* 处理离线 */ };
slave.Events.Online += () => { /* 处理恢复 */ };

常见问题

热插拔期间 PDO 通信是否受影响?

常规情况不受影响。PDO 周期频率和抖动保持不变。 极端满负载情况会导致 PDO 周期异常。

运行中插回会自动进 OP 吗?

不会。 主站可报 Offline/Online;应用层要自己处理状态机。不要指望插回去就自动进 OP。

断电重连后从站会自动回 OP 吗?

不会。 不会自动重写 SM/FMMU 并拉回 OP。自定义 SDO 也不会在热插时自动重发;若需要,在 SlaveOnline 里由应用层自己做。