用wireshark抓取分析EtherCAT报文
第1章EtherCAT报文结构EtherCAT报文结构及Wireshark对应显示以太网帧头14字节包含目标/源MAC地址帧类型 (EtherType)固定为0x88A4。EtherCAT帧头2字节包含一个11位的“数据长度”字段指示其后所有EtherCAT子报文的总长度。EtherCAT数据报 (Datagram)一个EtherCAT帧可包含多个数据报由帧头指示的总长度决定。Wireshark会将其展开为独立单元包含以下字段命令 (Cmd)1字节定义寻址和读写操作如BRD(广播读)、LRD(逻辑读)、LWR(逻辑写)、ARMW等。索引 (Idx)1字节用于为请求和响应报文配对。地址区 (Address)4字节寻址方式不同其含义也不同设备寻址前16位是从站地址(Adp)后16位是偏移地址(Ado)。逻辑寻址32位全部是主站分配的全局逻辑地址(LogAddr)。长度 (Len)11位表示数据区字节数。数据 (Data)实际数据区长度由Len字段决定。工作计数器 (WKC)2字节EtherCAT调试的核心指示器。主站发送时WKC0每经过一个正确处理该报文的从站WKC就按服务类型增加相应值最终主站通过检查WKC增量是否符合预期来验证通信是否成功。 第2章环境搭建与抓包配置2.1 硬件连接场景一主站PC上直接安装Wireshark可以直接抓取主站网卡发出的流量。场景二主站如专用控制器无法安装Wireshark抓包电脑须并联在总线中可使用工业以太网交换机[15†L7-L8]可能有风险或带镜像端口的专用工具。2.2 软件配置检查协议支持旧版Wireshark可能需要手动启用EtherCAT解析器路径为“分析 (Analyze) → 启用的协议 (Enabled Protocols)”搜索ethercat并确保启用。关闭网卡Offload关键Wireshark默认驱动常无法重组硬件Offload合并的报文导致无法解析。必须在终端执行以下命令关闭sudoethtool-K你的网卡名rx off tx off tso off gso off gro off lro off 第3章Wireshark过滤器核心3.1 捕获过滤器推荐ether proto 0x88a4。推荐仅捕获EtherCAT帧以降低CPU占用并减小文件大小。3.2 显示过滤器显示过滤器功能强大参考下表目标显示过滤器说明显示所有EtherCAT包ethercat最基本的过滤器。过滤周期性过程数据 (PDO)ethercat.cmd 0x0c只显示逻辑读/写命令通常用于周期性数据交换。过滤邮箱数据 (Mailbox)ecat_mailbox过滤包含邮箱协议的报文如CoE,FoE,EoE。过滤CANopen over EtherCAT (CoE)ecat_mailbox.coe专门查看CoE协议用于SDO/PDO配置等。查看DC同步相关报文ethercat.ado 0x0910过滤对DC系统时间寄存器(0x0910)的访问。按从站物理地址过滤ethercat.adp 0x1001查看与设备地址为1001的从站的通信。按从站偏移地址过滤ethercat.ado 0x0130查看对ESC寄存器0x0130AL状态寄存器的访问常用于判断状态机切换。按工作计数器 (WKC) 过滤ethercat.wkc ! 预期值定位WKC异常的报文。例如主站期待值为3却收到1或2可能存在通信问题。按命令索引过滤ethercat.idx 0x01筛选出包含特定索引值的报文用于追踪特定请求的响应。组合过滤ethercat.cmd 0x0c ethercat.adp 0x1001使用与、提示在Wireshark的过滤器输入框中输入ethercat.会自动弹出支持的字段列表。 第4章EtherCAT报文深度解析掌握了过滤器后我们来学习如何解读具体的EtherCAT报文本章节将结合前文知识分析典型的通信过程。4.1 从站初始化状态机切换主站通过向AL控制寄存器0x0120写入特定值来驱动从站状态机。以下过滤器可捕捉这个过程ethercat.ado0x0120例如当从站成功地由PreOP进入SafeOP时WKC应按照协议规范增加。4.2 邮箱通信 (Mailbox)邮箱通信用于非周期性的参数配置如SDO服务。其报文结构为邮箱头 邮箱数据。Wireshark能解析邮箱头并在邮箱数据部分显示更具体的服务数据如下例使用ecat_mailbox.coe过滤器跟踪SDO读请求请求报文Wireshark会显示其为CoE类型并解析出SDO命令、索引、子索引等信息。响应报文从站处理后的响应包含请求的执行状态和读取的数据。工作计数器 (WKC)如果WKC与预期不符说明从站可能未正确响应需检查地址、链路等。4.3 过程数据通信 (PDO)当从站进入OP状态后周期性PDO数据交换开始。其典型特征是包含LRD和LWR命令的报文。可以使用以下过滤器查看ethercat.cmd0x0c通过Wireshark的“统计 (Statistics) → IO图表 (IO Graph)”功能可以直观地观察PDO报文的发送间隔评估主站周期的抖动情况。️ 第5章高级分析与排错5.1 不同寻址方式的报文识别寻址模式命令示例地址区呈现应用场景设备寻址FPRD,FPWRAdp和Ado两个字段访问特定从站的寄存器或SII EEPROM。逻辑寻址LRD,LWR单个LogAddr字段周期性过程数据交换是OP模式下的主流寻址方式。广播寻址BRD,BWRAdp为广播地址向所有从站发送命令如网络扫描。自动增量寻址APRD,APWR地址为连接顺序的位置系统启动时发现和枚举从站。 EtherCAT 32位地址模式速查表寻址模式常用命令码 (Cmd) 示例32位地址结构地址含义与工作原理位置寻址(Position/自增量寻址)APRD, APWR, APRW, ARMW[16位位置 (Position)][16位偏移量 (Offset)]如0xFFF9 0x0123位置 (高16位): 自动递增的从站物理位置地址。主站预设一个负值每经过一个从站硬件自动加1值为0的从站响应。偏移量 (低16位): 从站内部的内存地址或寄存器地址。节点寻址(Node/固定地址寻址)FPRD, FPWR, FPRW, FRMW[16位节点地址 (Node Addr)][16位偏移量 (Offset)]如0x0004 0x0123节点地址 (高16位): 从站预先配置的静态地址主站分配或从EEPROM加载不再变化。偏移量 (低16位): 与位置寻址相同指从站内部地址。广播寻址(Broadcast)BRD, BWR, BRW[16位保留 (Reserved)][16位偏移量 (Offset)]如0x0000 0x0123高16位通常设为0并保留。无论地址值是多少所有从站都接收并处理该报文访问由偏移量指定的同一内部地址。逻辑寻址(Logical)LRD, LWR, LRW[32位逻辑地址 (Logical Address)]如0x1000_0000整个32位作为统一的4GB逻辑地址空间。主站通过配置FMMU现场总线内存管理单元将从站物理内存动态映射到这个逻辑地址上。