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或丢帧,进入抓包分析;若抓包显示报文本身正常但物理层异常,再上示波器。

这个顺序的价值在于:每一步都缩小范围,避免一上来就抓包或上示波器,导致大量无关数据淹没关键线索。

EtherCAT现场排查证据链:六类工具的分工与推进顺序 主站诊断工具 全局状态 / 掉线从站 拓扑扫描 实际连接 / 端口占用 从站LED 本地链路 / 运行状态 寄存器读取 AL状态 / 错误计数 Wireshark抓包 报文时序 / 工作计数器 示波器 差分信号 / 眼图 / 噪声 整网还是单点掉线? 确定故障范围 实际拓扑与设计一致? 排除接线错误 LED指示什么状态? 快速定位故障从站 错误计数是否增长? 区分链路/协议/应用 报文周期是否稳定? 定位间歇性故障 信号质量是否合格? 排除物理层问题 可复现证据记录要素 时间戳与排查人员 主站诊断截图与状态字 拓扑扫描结果与从站顺序 LED状态照片或记录 寄存器地址与读数值 抓包文件与过滤条件 示波器波形与测量参数 故障复现步骤与条件 处理动作与结果验证 记录必须能让他人按同样步骤复现现象

三、关键寄存器的读取与判读

寄存器读取是证据链中最容易被忽视、但信息密度最高的一环。以常见的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计数不再增长 主站诊断+寄存器
记录时务必保留原始文件:抓包保存为.pcapng,示波器保存波形截图或CSV,寄存器读取保留命令行输出。文字描述容易丢失细节,原始数据才是复现的关键。

七、常见误区与纠正

第一个误区是“只抓包不看寄存器”。抓包数据量大,若没有寄存器先缩小范围,很容易在数万帧中迷失。正确做法是先用寄存器定位到具体端口和错误类型,再有针对性地抓包。

第二个误区是“LED正常就认为从站正常”。LED只反映本地基本状态,无法反映CRC错误计数、看门狗超时等累积性问题。LED正常但寄存器计数持续增长的情况并不少见。

第三个误区是“换线后不验证”。更换线缆或连接器后,必须重新读取寄存器计数并观察一段时间,确认计数不再增长,否则可能只是暂时掩盖了问题。

第四个误区是“证据记录只有结论没有过程”。例如只写“3号从站通信故障,已修复”,这种记录无法复现,也无法用于后续同类问题参考。必须记录故障条件、观察到的原始数据和处理动作。

把六类工具按“全局→局部、软件→硬件、静态→动态”的顺序组织起来,每一步都留下可复现的原始证据,才能把EtherCAT故障排查从“经验驱动”变成“证据驱动”。这不仅是解决当前问题的方法,也是团队积累诊断能力的基础。