热插拔
工作原理
当从站离线时,EtherCAT 帧会跳过该从站位置继续转发,其余从站保持 OP 状态正常通信。离线从站的 PDO 输入数据被清零,WKC 相应降低。主站检测到从站恢复后自动重新配置。
行为特性:
- 离线从站不影响其余从站的 PDO 周期通信
- 全自动恢复(SM/FMMU 重配 + 状态恢复至 OP)
- 支持断电重连和同型号设备替换
- 线型拓扑中,中间从站断开会导致其后方从站全部不可达(除非有环形冗余)
- 耦合器(如 EK1100)断开会导致其分支端口下游从站全部不可达
恢复流程
线缆拔插(地址保留)
从站短暂断开后重连,配置地址仍在 ESC 寄存器中:
恢复时间: 约 3-5 个 PDO 周期(3-5ms @ 1kHz)
断电重连(地址丢失)
从站断电后重新上电,ESC 寄存器全部重置,需要完整重配:
恢复时间: 约 15-25 个 PDO 周期(15-25ms @ 1kHz)
GUI 热插拔组管理
GUI 主界面的 热插拔组面板 提供可视化的组定义与状态监控,无需手写代码即可管理整套热插拔策略。
组管理面板
面板列出所有已定义的热插拔组,每行展示组名、模板从站、当前状态和启用开关。常用操作:
| 操作 | 说明 |
|---|---|
| 添加组 | 选中拓扑中的从站后右键 → "加入热插拔组",或在面板工具栏点击"新建组" |
| 删除组 | 选中目标组 → 工具栏"删除",对应从站位恢复为常规配置 |
| 启用 / 禁用 | 行末开关切换。禁用后该位的从站离线不会触发恢复,便于现场临时调整 |
| 编辑 | 双击组行打开属性对话框,可修改别名地址、模板 Vendor / Product Code、备注等 |
组状态实时显示
每个组提供三态可视化指示:
| 状态 | 颜色 | 含义 |
|---|---|---|
| Present | 绿色 | 期望的从站已上线、模板匹配、PDO 通信正常 |
| Absent | 灰色 | 该位置当前没有从站,主站正在等待替换设备接入 |
| Unknown | 黄色 | 检测到从站但身份与模板不匹配(Vendor / Product Code 不同),或处于校验中 |
状态变化会实时反映在面板和拓扑图上,配合右下角的事件浮窗给出即时提示。
别名地址输入
热插拔组使用别名地址(Alias Address) 作为从站身份标识,从而摆脱物理位置依赖。 在组属性对话框中填写 Alias 后,主站会写入从站 EEPROM;之后无论该从站接到拓扑哪一段, 只要别名匹配就归属对应组。
典型用法: 同型号驱动器多台共用一个工位,现场维护时换一台备机即可,不需要重新映射地址。
模板 Vendor / Product Code 输入
模板字段用于约束"哪些从站允许填入这个组":
| 字段 | 说明 |
|---|---|
| Vendor ID | 厂商 ID,从 ESI / 拓扑面板自动带出,也可手填 |
| Product Code | 产品编号,必须与替换设备一致 |
| Revision (可选) | 固件修订号。留空表示忽略修订号差异 |
模板不匹配时组状态会显示为 Unknown,主站不会启动该位置的 OP 切换,从而避免错装设备造成误动作。
热插拔事件日志入口
GUI 工具栏点击 "事件日志" 或使用快捷键打开热插拔事件窗口,按时间倒序展示:
- 从站上线:组名、别名、Vendor / Product Code、上线耗时
- 从站下线:组名、别名、最后一次有效通信时间
- 模板不匹配:实际检测到的 Vendor / Product Code 与期望模板的差异
- 状态重切:进入 / 退出 OP 的关键节点
事件支持按组过滤、按级别(Info / Warn / Error)筛选,可一键导出 CSV 用于交班记录或售后排查。
事件通知
从站离线和恢复时会触发事件:
// 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 周期异常。
支持同时恢复多个从站吗?
支持。多个从站离线时,调度器按轮询顺序逐个恢复。所有从站最终都会被恢复。
别名地址和位置地址有什么区别?
位置地址由从站在拓扑中的物理位置自动分配,更换位置后会变化;别名地址写入从站 EEPROM, 跟随设备本身,不随拓扑位置改变。热插拔组优先使用别名匹配,从而支持"同型号备机即插即用"。
组状态长期停留在 Unknown 怎么办?
打开事件日志查看不匹配详情:
- Vendor / Product Code 不一致 → 设备型号错误或固件版本差异,更换正确型号
- 别名未写入 → 在组属性中重新写入 Alias,或使用 ESI 工具直接烧录 EEPROM
- EEPROM 校验失败 → 设备 EEPROM 损坏,需联系设备厂商
断电重连后从站配置会丢失吗?
不会。恢复 FSM 会自动重新写入 SM 和 FMMU 寄存器,并将从站状态恢复到 OP。对于使用 EEPROM 默认 PDO 映射的从站(绝大多数场景),无需额外操作。
如果从站在初始启动时通过 SDO 进行了自定义配置(如自定义 PDO 映射、驱动参数等),这些配置在断电重连后不会被自动重发。应用层需要在 SlaveOnline 事件回调中自行重新下发 SDO 配置。
如果自动配置已经写入自定义的 Startup 属性则会被自动重发。