简介:一份关于倍福EtherCAT HotConnect设置方法的PDF技术资料,面向工业自动化现场工程师与倍福控制器开发人员,解决设备热插拔或物理线路变动导致EtherCAT网络通讯中断、IO值停止刷新的常见问题。资源为单个PDF文件,压缩包大小119KB,内容精炼,以图文步骤详解配置流程。文档基于CX9010作为EtherCAT主站,配合EK1122网关与两个EK1100从站,分别演示星型与线型拓扑下的故障现象。重点说明了在System Manager中扫描模块、将EK1100加入Hot Connect组、设置双地址访问、验证Free Run模式断开效果等关键操作,并介绍通过WcState参数判断数据报文状态。读者按此操作可快速启用HotConnect,实现设备不停机维护,提升产线灵活性与可靠性。目前已有221人学习下载,适合需要排查倍福EtherCAT网络断线问题的工程技术人员参考。
1. 为什么星型拓扑一断线,整条 EtherCAT 网就瘫了
接手过倍福系统的工程师基本都遇到过这个场景:CX9010 做主站,EK1122 分出两个网口,下面挂两组 EK1100,各自带几个 IO 模块。平时跑得好好的,一旦维护时把其中一组 EK1100 的网线拔了,另一组还在运行的 IO 数值立刻冻住,整条总线跟死了一样。第一次遇到的人多半会怀疑是硬件坏了,换 EK1100、换网线、甚至换 CX9010,问题依旧。这不是硬件故障,而是 EtherCAT 数据帧在逻辑上被断开的从站卡住了,环形链路走不通,后续从站根本拿不到数据。
HotConnect 就是解决这个问题的机制,它把需要频繁插拔维护的从站组单独隔离出来,让主站在该组离线时能自动跳过,从而保证其他从站继续刷新 IO。本文按实际操作顺序展开:先从星型拓扑下 EtherCAT 报文格式和 DC 同步原理讲明白为什么断线会影响整网,再给出 System Manager 里 Add to Hot Connect Groups 的完整配置过程,然后聊 WcState 和 Free Run 验证方法,最后补一些多组 HotConnect、线型拓扑、CX9010 WinCE 环境的坑。适合现场调试工程师和做设备维护的人参考。
2. EtherCAT 帧传递机制与 EK1122 星型拓扑的断线故障模型
2.1 EtherCAT 数据帧在 EK1122 两个网口中的传递路径
EtherCAT 本质上是主站发出的以太网帧依次经过每个从站处理,从站收到帧后在自己的寻址空间内读写数据,然后把帧从 X1 转发到 X2,最终回到主站。每个从站都有两个网口,PHY 层把收到的数据帧做短暂延迟后继续向下游发送,中间只插入一小段处理时间。主站发送的帧格式由 EtherCAT 头、数据报(Datagram)、FCS 校验三部分组成,每个数据报包含一个工作计数器(Working Counter,WcState 相关),从站每完成一次逻辑读或写操作,就会把工作计数器的值加 1。主站通过对比配置时的期望工作计数器和实际收到的值,判断哪些从站的数据没被处理。
EK1122 是一个网口进、两个网口出的星型扩展器,它内部实际是一个两端口交换结构,把收到的帧复制到两个下游端口,再从两个下游端口收回处理后的帧。这个器件在 EtherCAT 从站设备表中被映射为两个逻辑从站,名称上通常显示为 Port A 和 Port B,各自有独立的物理地址和拓扑位置。问题就出在这个复制转发机制上:如果 Port A 下的 EK1100 断开,那么主站发给该分支的数据帧在 EK1122 处仍然会尝试写入该端口的 PHY,但物理上没有应答,帧在 EK1122 内部等待超时,这会导致 Port B 的数据帧处理被阻塞,最终主站认为整条链路异常。
2.2 从站断线为什么会冻住整条总线
从 EtherCAT 状态机的角度看,从站处于 OP 状态时,它的 SM(SyncManager)通道一直在等待主站发送有效的循环数据帧。如果物理链路断了,从站收不到帧,它的 IO 输出会被内部控制逻辑锁存,输入数据也不再更新。但问题在于主站侧:EtherCAT 主站在一个循环周期内只发送一次帧,如果这个帧因为某个分支没有回应而无法完成完整的发送和接收流程,那么该周期的时间就被拉长,甚至触发总线抖动检测,导致整个网络从 OP 掉到 SAFEOP 或 INIT。
对于星型拓扑来说还有一个容易被忽视的细节:EK1122 的下游端口在检测到リンク down 之后,会把该端口的链路状态寄存器标记为断开,但它仍然会在帧中把该分支的从站计数为在线,因为主站下发的是广播帧,不区分实际连接状态。这就造成了主站认为从站还在,但该从站的数据始终没有返回,WcState 值不增加。倍福的解决方案不是在主站侧做超时判断,而是通过 HotConnect 参数告诉主站:这一组从站可以被跳过,不参与整网工作计数器的计算。
2.3 Tool 配置中 HotConnect 的作用范围与适用边界
HotConnect 在 TwinCAT System Manager 中表现为一个组对象,组内的从站被从原来的总线扫描位置移除,放到一个独立的分组中,组属性里有 Previous Port 字段,表示主站到该组从站的相对路径。主站扫描时如果发现该路径上的物理链路中断,会自动跳过这个组,并且在拓扑视图中用红色标记组内从站。这个机制适用于设备现场频繁更换的末端模块,比如机器人工具端 IO 板、夹具上的阀岛、测试台上的可更换治具。
并不是所有从站都适合加入 HotConnect。如果某组从站参与安全联锁逻辑,比如急停回路、光栅信号,加入 HotConnect 后主站会忽略其离线状态,安全隐患极大。另外,如果加了 DC 同步(Distributed Clock)并且该组从站是同步基准源,就不能把它加入 HotConnect,否则其他从站的 Sync0 脉冲会因为缺少参考而从新同步,造成抖动。我一般建议只把纯 IO 模块或非安全数据采集模块放入 HotConnect,并且每次断线重连后检查 WcState 是否恢复。
3. System Manager 中 Hot Connect Groups 配置的具体步骤
3.1 扫描拓扑后正确识别 EK1122 下的分支结构
先把 CX9010 和两个 EK1100 按星型接好,打开 TwinCAT System Manager,选择 CX9010 对应的 PLC 配置,点 I/O 设备,右键 EtherCAT Master 设备选择 Scan Boxes。扫描完成后,设备树中应该能看到 EK1122 下挂两个 EK1100,每个 EK1100 下面有各自的 Term 模块。不同固件版本显示略有差异,EK1122 的 Revision 是 0016,EK1100 的 Revision 是 0017,如果扫描出来的对象和实际物理模块对不上,检查 CX9010 的 WinCE Image 和 TwinCAT 版本,Image HMI220e 对应的系统补丁必须装全。
扫描完成后先把系统切换到 Config Mode,然后手动把每个从站的状态切换到 OP,确认所有 IO 都能正常刷新。此时断掉其中一个 EK1100 的连接,观察另一个 EK1100 的输入变化,确认问题可以稳定复现。接下来右键点击需要加入 HotConnect 的 EK1100 设备,在弹出菜单中选择 Add to Hot Connect Groups。注意这里有个版本差异:TwinCAT 2.11 以下右键菜单直接显示该选项,TwinCAT 2.11 以上可能需要先选中设备再点右键,并且在 I/O 配置的树形视图里展开到设备层级才能看到。
一定不要在多任务模式下操作,先把 CPU 负载降下来。CX9010 的处理器性能有限,系统扫描期间如果后台有 PLC 程序在跑,容易造成配置写入超时。
3.2 Add to Hot Connect Groups 与 2 Address 参数的含义
点击 Add to Hot Connect Groups 之后,会弹出一个对话框,里面显示当前设备所在的位置信息,要求你选择一个地址。这个地址不是 IP 地址,而是 EtherCAT 从站地址空间中的逻辑位置标识。倍福的 HotConnect 支持 2 Address 和 3 Address 两种模式,默认选 2 Address。2 Address 表示主站通过两个地址来定位该组从站:第一个地址是 EK1122 上的物理端口位置,第二个地址是 EK1100 自身的站地址。当主站扫描到 EK1122 的 Port A 没有物理链路时,它知道 A 分支下的所有从站都无法访问,就直接跳过整个分支,不再往下寻找第二级地址。
这里有一个容易踩的坑:如果你选 3 Address,那么主站会尝试从第三个地址维度去定位从站,但 CX9010 自带的 EtherCAT 主站驱动在 WinCE5.0 下对 3 Address 的支持不够完善,容易在循环周期内产生额外的寻址开销。对于只用 EK1122 做星型扩展的场景,2 Address 足够,不要盲目选 3 Address。
选择 2 Address 并点击 OK 以后,观察 System Manager 左侧的树形结构可以发现,该 EK1100 已经从原来的位置被移出,出现在设备列表的最下方,并且用红色线条标记。展开该组对象的属性,可以看到 Previous Port 字段被自动填充为类似 "PortA:1" 的值。这个值的意思是:主站在访问这个组时,需要先经过 EK1122 的 Port A,然后到达站地址为 1 的从站。主站维护一份路径表,当路径表中的端口状态变为断开时,组内所有从站自动变为离线状态,但不影响其他组。
配置完成后重点检查一件事:原来 EK1100 下面挂的 IO 模块是否也一起被移入了 Hot Connect 组。倍福的 HotConnect 是按组管理的,整个 EK1100 带其下游 Term 都会整体移动,不能只把单个 IO 模块加入组。如果扫描后 IO 模块没有跟着移走,说明该 EK1100 的拓扑可能不完整,需要重新扫描。
3.3 配置文件保存与 TwinCAT 2 的激活方式
配置完成后,先把窗口切换到 Free Run 模式,然后激活配置。TwinCAT 2 在 WinCE 下激活需要注意顺序:先保存项目文件到 CX9010 的硬盘,再点 Activate Configuration,最后把系统从 Config Mode 切换到 Run Mode。如果在 Config Mode 下直接激活,CX9010 可能会报错重启。激活完成后,重新回到 I/O 设备视图,确认 Hot Connect 组的红色标记仍然存在,并且组内从站的 Previous Port 属性没有被自动清除。
接下来验证一个关键场景:在 Free Run 模式下断开其中一个 EK1100 的网线,观察 System Manager 的拓扑视图。正常的现象是断开的 EK1100 显示为红色,另一个 EK1100 显示为绿色,并且绿色组的 IO 数值继续刷新。如果你发现绿色组也变为红色,说明 HotConnect 的地址选择不对,或者 EK1122 的固件版本太低。EK1122 的 Revision 0016 已经支持 HotConnect,但如果你的模块是 0015 或更早版本,需要先更新固件。
同时检查一下 CX9010 的 CPU 负载。HotConnect 启用后,主站驱动会定期发送探测帧去检查断开分支的物理链路状态,这会增加一部分负载。如果负载超过 70%,建议把周期时间从 1ms 调到 2ms 或者 4ms。EtherCAT 的刷新周期不是越快越好,对于纯 IO 控制场景,2ms 完全够用。
4. Free Run 与 OP 模式下验证 HotConnect 在线插拔效果
4.1 用 System Manager 的拓扑着色判断插拔状态
配置完成后的第一项验证是看拓扑着色。把系统切到 Free Run 模式,然后用任意一种方式触发一个数字量输出信号(比如在 PLC 程序里加一个定时翻转的变量,或者直接通过 System Manager 里的 Online Write 功能给某个输出模块写入一个值)。等输出模块正常动作后,手动断开一个 EK1100 的 EtherCAT 网线。
观察 System Manager 的拓扑图,会出现三种状态标识:绿色代表该从站处于 OP 状态且数据通信正常,红色代表从站物理链路断开或通信超时,橙色代表初始化中。如果 HotConnect 配置成功,断开的那组 EK1100 显示红色,另一组保持绿色,并且绿色组对应的 IO 输入值持续更新。可以在其中一个输入模块上接一个开关,快速通断几次确认数值跟着变化。这里要特别留意,断开的组显示红色的同时,主站控制器的 System Manager 日志中应该不出现 error 级别的报文,最多只在 Info 级别显示 "HotConnect group offline" 之类的内容。如果出现 error,说明 HotConnect 并没有真正生效,主站仍然在等待这组从站的响应。
此时重新插回网线,正常情况是红色标记消失,该组从站自动回到 OP 状态,IO 值开始刷新,整个过程不需要手动复位。要注意整个过程必须在 Free Run 模式下验证,如果系统处于 Config Mode,配置不生效,断线还是会导致整网通信中断。
4.2 WcState 参数如何判断数据报文处理是否正常
WcState 是验证 EtherCAT 数据帧处理状态的直接指标。在 System Manager 中展开任意一个 EK1100 组下的 IO 模块,双击打开模块的 Online 参数列表,找到 WcState 这个参数。它有两种状态值:0 代表当前帧的处理没有达到期望工作计数器,换句话说就是该从站的数据报没有被正确写入;1 代表工作计数器匹配成功,数据帧被该从站正确处理。
在 HotConnect 验证中的操作方法是:先在两组 EK1100 都正常连接时,分别查看两组内任意一个 IO 模块的 WcState,确认均为 1。然后断开其中一组,观察这组模块的 WcState 是否变为 0,同时检查另一组模块的 WcState 是否保持为 1。如果断开的一组 WcState 变为 0,而另一组仍为 1,说明主站已经正确跳过了离线组,数据帧仍然能完成对其他组的处理。如果断开一组后另一组的 WcState 也变为 0,说明 HotConnect 没有生效,帧没有到达该组。
对于 TwinCAT 2 环境,WcState 的更新延迟约在 100ms 到 200ms 之间,拔线后不要立即看屏幕,等半秒再刷新。CX9010 的 WinCE 界面响应速度本来就偏慢,这一点需要耐心。另外,如果在验证过程中发现两组 WcState 都变为 0,先把所有网线插回,系统恢复到初始状态,然后重新检查一下 HotConnect 组的 Previous Port 属性,最常见的错误是配置时选错了端口,比如把原本在 Port B 下的 EK1100 配置成了通过 Port A 访问,导致主站找不到从站。
4.3 多次插拔测试与系统稳定性观察
验证 HotConnect 不能只做一次插拔,连续做多组测试才能确认配置的稳定性。测试方法如下:在 Free Run 模式下,以 2 到 5 秒的间隔连续插拔 EK1100 的网线十次以上,每次插拔后观察剩余在线组的 IO 刷新和 WcState 状态。重点关注两类异常现象:一是剩余组在拔线瞬间出现 IO 数据冻结但几秒后自动恢复,这种情况说明主站驱动在切换拓扑时出现了抖动,可以试着把周期时间调大一点来缓解;二是插回网线后该组从站无法自动回到 OP 状态,卡在 PREOP 或 SAFEOP,需要手动重新激活,这种情况通常是 EK1100 的固件对 HotConnect 的支持不完全,需要升级。
我实际测过 EK1100-0000-0017 版本在不同固件下的表现,Rev 1017 以后的固件对热插拔的支持明显改善,断线重连后能在两个周期内恢复 OP。如果你的模块固件太老,即使配置正确,也可能出现重连后无法自动恢复的情况。CX9010 上可以通过 PLC 程序读取 EtherCAT 设备信息来确认固件版本,也可以通过 System Manager 的 Online 界面直接查看。总之,固件版本和 HotConnect 的稳定性强相关,这一点在批量部署时需要提前确认好所有 EK1100 的固件一致性。
测试完成后,再把其中一个 EK1100 从原来位置拔掉,插到另一个端口上,也就是改变拓扑位置,重新扫描并配置 HotConnect 组。这样可以验证 Previous Port 路径的更新是否成功,文化点说就是确认主站的路径表刷新没问题。
5. 多组 HotConnect 同时离线时的优先级与重连顺序
5.1 多分支挂载后如何避免 Index 冲突
如果现场不止两组 EK1100,而是通过 EK1122 扩展成四五个星型分支,那么 HotConnect 组就会面临一个优先级问题:主站在一个循环周期内只能有限次尝试重新扫描离线分支,当多个分支同时离线时,主站会按组的创建顺序一个一个探测,而不是同时探测所有离线分支。所以多组 HotConnect 场景下,需要显式控制每组 EK1100 的站地址(Index)不要重复,否则主站可能在探测时访问到错误的物理从站。
在 System Manager 中,每组 EK1100 的 Index 是独立的,右键点击设备属性可以看到。倍福默认自动分配站地址,但如果之前做过多次扫描,有可能出现两个 EK1100 拥有相同站地址的情况。手动修改站地址的方法:右键 EK1100,选择 Properties,切到 EtherCAT 选项卡,找到 Index 字段,改成 1 到 65535 之间的一个唯一值。每组 EK1100 的 Index 都不相同即可。注意,修改站地址后总线扫描的顺序也会跟着变,这个对 HotConnect 没有影响,只要组内地址不冲突就行。
另外还要注意,HotConnect 组内的从站是相对路径访问的,也就是说主站是通过 EK1122 的端口号加组内的 Index 来定位的,而不是整条总线的绝对地址。这样的话,同样一个 Index 值出现在不同的星型端口下是可以的,但为了排查方便,我还是建议全总线保持统一编号。
5.2 线型拓扑下 HotConnect 的 Previous Port 路径特殊性
EtherCAT 的线型拓扑是最常见的连接方式:EK1122 一个网口出来,EK1100 串在一条链上,后面的 EK1100 从前面的 X2 口往下接。这种拓扑下如果其中一台 EK1100 断开,下游所有设备都会失联,HotConnect 的配置逻辑和星型不同的是:它不再只是隔离一个分支,而是要从主站视角指定一条可跳过的子路径。
在线型拓扑下,需要把断线点之后的 EK1100 组加入 HotConnect。比如第一台 EK1100 挂三个 IO 模块,第二台 EK1100 挂四个 IO 模块,如果第二台可能被拔掉,那么把第二台 EK1100 而不是第一台加入 HotConnect。误区在于,有人把第一台也加入 HotConnect,理由是担心第二台拔线时冲击第一台。实际上第一台不会受影响,拔掉第二台时,第一台的 X2 口收不到链路信号,但它自己作为从站仍然可以正常处理主站发来的帧,这是因为 EtherCAT 的帧是逐跳转发的,X2 口没有下游回应,只是少了转发动作,并不会阻塞 X1 的帧接收。
线型拓扑下 Previous Port 的值通常是类似 "PortA:2:1" 这样的格式,表示主站通过 Port A 访问站地址为 2 的从站(即第一台 EK1100),再通过它的 X2 口往下到达站地址为 1 的从站(即第二台 EK1100)。这个路径上的中间从站必须保持在线,否则 HotConnect 组同样无法访问。因此,如果你有一个星型加线型的混合拓扑,把最末端的线型设备加入 HotConnect 时,要确保前端设备永远不掉线。
5.3 热插拔后从站自动恢复 OP 状态的参数条件
HotConnect 组从站断线重连后能否自动恢复到 OP 状态,取决于两个关键参数:一个是组内从站的 Startup 配置里是否有完整的 SM 和 FMMU 映射,另一个是主站的 Restart 策略是否开启。在 TwinCAT 2 中,右键 HotConnect 组,进入属性设置,切换到 Startup 选项卡,确认勾选 "Set all slaves to OP" 之类的选项,这样主站在检测到链路恢复后会主动把该组从站重新发到 OP 状态。
另一个容易被忽视的参数是 EtherCAT Master 设备的 DC 设置。如果开机的 DC 同步在某个从站上启动失败,主站可能会拒绝将该组恢复到 OP。CX9010 这种老设备的 WinCE 系统资源有限,如果 DC 同步的补偿计算跟不上,建议在 HotConnect 组内的从站上关闭 DC 功能,只保留标准同步模式。关闭方法:右键 EK1100,进入 Advanced Settings,找到 DC 选项卡,取消勾选 "Enable DC Synchronization"。注意,关闭 DC 会让该组从站的同步抖动增大,对模拟量采样的应用有一定影响,但对数字量 IO 基本无感。
设置完这些参数后,还需要在 System Manager 的 EtherCAT Master 设备属性里调整一下 "Retry on Link Down" 的选项,默认是关闭的。把它打开,并且把重试次数设置为 3 次。主站在链路恢复后会在接下来的三个周期内尝试重新扫描并激活该组从站,如果超过三次失败则放弃并报错。这个参数直接决定了插回网线后多久能恢复正常刷新,我实测过,在重试次数为 3、周期 2ms 的条件下,恢复时间大约在 10ms 以内。
关于验证,有一个更省事的方法:在 PLC 里写一段程序读取 EtherCAT 设备状态字。每个 EK1100 的输入首字是状态字,最低位为 1 表示从站处于 OP 状态。通过监视这个状态字的上升沿,可以精确记录每次插拔后从站恢复到 OP 的时间差。用这个方法比对不同参数配置下的恢复速度,比肉眼盯着 System Manager 的着色要可靠得多。
最后提醒一个线型拓扑特有的情况:如果断线位置发生在两台 EK1100 之间,而不是在最后一台后面,那么断点下游的所有从站都会进入 HotConnect 离线状态,而断点上游的从站会继续正常通信。这个行为是符合预期的,不要试图通过配置让下游组在断开后继续维持输出,这是物理上不可能的,只有带本地 IO 保持功能的模块才能做到。
本文还有配套的精品资源,点击获取