3. 现场排查工具链与证据链
EtherCAT故障排查最忌讳“凭感觉换件”。现场真正有效的做法,是把六类工具组织成一条从宏观到微观、从软件到硬件的证据链:主站诊断工具给出全局状态,拓扑扫描确认物理连接关系,从站LED提供最直接的本地指示,寄存器读取暴露协议层计数与状态字,Wireshark抓包还原报文级时序,示波器则验证物理层信号质量。每一层证据都要能回答一个具体问题,并且能够被记录、复现和交叉验证。
一、六类工具各自回答什么问题
主站诊断工具(如TwinCAT的EtherCAT Diagnostics、SOEM的slaveinfo、Acontis的EC-Master诊断接口)负责回答“网络整体是否进入OP状态、哪个从站最先掉出、工作计数器是否持续增长”。它给出的是全局视图,适合作为排查起点。
拓扑扫描回答“实际连接的从站顺序、端口占用、分支结构是否与设计一致”。EtherCAT支持线形、环形和分支拓扑,现场经常出现“设计是线形、实际接成环形”或“某个从站被旁路”的情况,拓扑扫描能直接暴露这类问题。
从站LED回答“这个从站自己认为链路、通信、应用是否正常”。不同厂商的LED定义略有差异,但通常包含RUN、ERR、LINK/ACT等指示,是判断单点故障最快的现场手段。
寄存器读取回答“协议层到底发生了什么”。通过读取从站的AL Status、AL Control、DL Status、各端口错误计数、CRC错误计数、看门狗计数等寄存器,可以把“通信异常”细化为具体错误类型。
Wireshark抓包回答“报文在时间轴上的真实行为”。配合EtherCAT解析插件,可以看到过程数据帧的周期、工作计数器变化、邮箱通信、状态机切换请求与响应,是定位间歇性故障的关键。
示波器回答“物理层信号是否合格”。测量差分信号幅值、上升沿、眼图、共模噪声、终端匹配情况,用于排除线缆、连接器、接地和电磁干扰问题。
二、证据链的组织顺序
推荐按“先全局、后局部,先软件、后硬件,先静态、后动态”的顺序推进。先用主站诊断工具确认故障范围:是整网掉线、单个从站掉线,还是周期性抖动。再用拓扑扫描核对实际连接。接着观察故障从站及其相邻从站的LED。然后读取关键寄存器,把故障归类到链路层、协议层还是应用层。若寄存器显示CRC或丢帧,进入抓包分析;若抓包显示报文本身正常但物理层异常,再上示波器。
这个顺序的价值在于:每一步都缩小范围,避免一上来就抓包或上示波器,导致大量无关数据淹没关键线索。
三、关键寄存器的读取与判读
寄存器读取是证据链中最容易被忽视、但信息密度最高的一环。以常见的ET1100/ET1200从站控制器为例,几个关键寄存器值得优先读取:
- 0x0130 AL Status:当前状态机状态(INIT/PREOP/SAFEOP/OP)及错误标志位。若Error Ind位为1,说明从站主动报错。
- 0x0134 AL Status Code:具体错误码,例如0x0011表示无效邮箱配置,0x001E表示无效同步管理器配置,0x0024表示无有效过程数据。
- 0x0110 DL Status:链路状态与端口状态,可判断哪个端口未连接或通信中断。
- 0x0300~0x030F 端口错误计数:各端口的CRC错误、丢帧、无效帧计数。若某端口计数持续增长,问题通常在该端口对应的线缆或连接器。
- 0x0920~0x0927 看门狗计数:过程数据看门狗超时次数,反映主站与从站之间的周期通信是否稳定。
读取方式可以通过主站工具直接查看,也可以用命令行工具。例如使用SOEM的slaveinfo或ethercat命令行工具:
ethercat -m eth0 slaves
ethercat -m eth0 reg_read 0x0130 2
ethercat -m eth0 reg_read 0x0134 2
ethercat -m eth0 reg_read 0x0300 16
判读时要注意:单个计数不为零不一定代表故障,关键是看计数是否在短时间内持续增长。建议在故障复现前后各读一次,对比差值。例如端口0的CRC错误在30秒内从0增长到1200,说明该端口链路质量严重恶化。
四、Wireshark抓包的关键过滤与观察点
EtherCAT抓包需要选择正确的网卡,并安装EtherCAT解析插件。抓包时建议使用镜像端口或TAP,避免影响正常通信。关键过滤条件包括:
ecat:过滤所有EtherCAT报文。ecat.cmd == 0x0c:过滤LRW(逻辑读写)过程数据帧。ecat.cmd == 0x00:过滤NOP空帧,用于观察周期稳定性。ecat.ado:过滤邮箱通信中的ADS/CoE服务。
观察重点有三个:一是过程数据帧的周期是否稳定,若出现明显抖动或丢帧,说明主站调度或网络负载有问题;二是工作计数器(WKC)是否与预期一致,WKC偏低说明某个从站未正确响应;三是状态机切换请求与响应是否成对出现,若只有请求没有响应,说明目标从站未处理或链路中断。
五、示波器测量的物理层判据
当寄存器显示CRC错误、抓包显示报文异常但协议层无法解释时,需要用示波器检查物理层。EtherCAT使用100BASE-TX,差分信号幅值典型为±1V,上升沿应在数纳秒量级。测量时建议使用差分探头,在从站端口处测量。
关键判据包括:差分幅值是否在0.8V~1.2V范围内;上升/下降沿是否过缓或过冲;眼图张开度是否足够;共模噪声是否超过允许范围。若幅值偏低,检查线缆长度、连接器接触和终端匹配;若噪声明显,检查屏蔽接地和变频器等干扰源。
六、证据记录模板
为了让排查过程可复现,建议每次故障都按统一格式记录。以下是一个可直接使用的记录表示例:
| 记录项 | 内容示例 | 来源工具 |
|---|---|---|
| 故障现象 | 3号从站周期性掉出OP,约每2分钟一次 | 主站诊断 |
| 拓扑确认 | 实际为线形,共12个从站,3号位于第3位 | 拓扑扫描 |
| LED状态 | 3号从站ERR灯红闪,LINK灯正常 | 现场观察 |
| AL Status | 0x0130 = 0x0012(SAFEOP+Error) | 寄存器读取 |
| AL Status Code | 0x0134 = 0x0024(无有效过程数据) | 寄存器读取 |
| 端口错误计数 | 端口0 CRC错误30秒内+1200 | 寄存器读取 |
| 抓包观察 | LRW帧WKC从12降为11,周期抖动±80μs | Wireshark |
| 示波器 | 差分幅值0.65V,上升沿过缓 | 示波器 |
| 处理动作 | 更换3号从站上游网线,重新压接屏蔽层 | — |
| 结果验证 | 连续运行2小时无掉线,CRC计数不再增长 | 主站诊断+寄存器 |
七、常见误区与纠正
第一个误区是“只抓包不看寄存器”。抓包数据量大,若没有寄存器先缩小范围,很容易在数万帧中迷失。正确做法是先用寄存器定位到具体端口和错误类型,再有针对性地抓包。
第二个误区是“LED正常就认为从站正常”。LED只反映本地基本状态,无法反映CRC错误计数、看门狗超时等累积性问题。LED正常但寄存器计数持续增长的情况并不少见。
第三个误区是“换线后不验证”。更换线缆或连接器后,必须重新读取寄存器计数并观察一段时间,确认计数不再增长,否则可能只是暂时掩盖了问题。
第四个误区是“证据记录只有结论没有过程”。例如只写“3号从站通信故障,已修复”,这种记录无法复现,也无法用于后续同类问题参考。必须记录故障条件、观察到的原始数据和处理动作。
把六类工具按“全局→局部、软件→硬件、静态→动态”的顺序组织起来,每一步都留下可复现的原始证据,才能把EtherCAT故障排查从“经验驱动”变成“证据驱动”。这不仅是解决当前问题的方法,也是团队积累诊断能力的基础。