发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表
打印
[资料干货]

Wireshark对EtherCAT总线抓包解析

[复制链接]
1779|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dffzh|  楼主 | 2025-3-28 09:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dffzh 于 2025-4-2 16:18 编辑

#技术资源# #申请原创#
@21小跑堂


关键词备注:
Wireshark:网络抓包工具
EtherCAT:工业现场总线
从事工业PLC产品开发的人员,包括软件开发和技术支持等都必须掌握使用Wireshark等工具对产品进行网络抓包及解析,本文就带大家熟悉一下如何搭建抓包环境,如何抓取EtherCAT数据包及如何进行包解析。

一、搭建硬件环境
将TwinCAT软件作为主站,并通过RJ45网线连接EC(EtherCAT Coupler)耦合器。
你的电脑可能会有几个网卡,进入控制面板里的网络连接里确认:

TwinCAT中需要将网卡设置成混杂监听模式:
当然你还需要选择一个网卡,根据自身情况选择合适的网卡:
当然,配置完成后,要运行TwinCAT:

二、Wireshark抓包
首先你需要配置网卡信息:
大功告成,然后你就可以开始捕获EtherCAT总线协议的数据包:
另外,你可以通过停止捕获和开始捕获按钮进行操作:

三、EtherCAT数据包分析
我们先来看下EtherCAT总线协议的报文数据帧结构:
以太网帧头:14个byte
(1)     目的地址:第一个从站的MAC(Media Accss Control, 媒体访问控制)地址;
(2)     源地址:主站的MAC地址;

(3)     帧类型:对于EtherCAT,固定为0x88a4;
EtherCAT头:2个byte
(1)     数据长度:所有子报文长度总和,长度为11位,小端模式,所以实际是0x100d,
写成二进制:0001 0000 0000 1101
(2)     类型:1表示与从站通信;
命令:1个byte,表示寻址方式及读写方式
0x08表示使用广播寻址对所有从站写入数据;
其他操作命令可以参考相关文档,这里不详细介绍。

关于EtherCAT寻址方式的解析:
一个EtherCAT数据帧里包含很多个报文,但无论什么样式的报文,其目的只有一个,那就是读写从站寄存器或内存
所以所谓的寻址就是以什么方式访问哪个从站的哪个寄存器或内存。

EtherCAT的寻址方式主要包括4种,如下所示:
索引:1个byte,BWR命令下每发出1条子报文,索引会加1,范围在0x80到0xff;

可以理解为帧编码;
地址区:4个byte,
对于逻辑寻址:地址区就只有一个32位的LogAddr:0x 01010002;
对于其他寻址:地址区拆分成Slave Addr:0x0002和Offset Addr:0x0101;


长度:2个byte,报文数据长度,
0000 0000 0000 0001:
低11位:数据长度;
第2/3/4/5高位:保留位;

最高位0:帧结构里的M,为0表示只有一帧,为1表示还有后续报文;

状态位:中断到来标志,

数据:报文结构,用户定义;
WKC:2个byte,工作计数器,WKC记录子报文被从站操作的次数,主站为每个通信服务子报文设置预期的WKC。发送子报文中的工作计数器初值为0,子报文被从站正确处理后,工作计数器的值将增加一个增量,主站比较返回子报文中的WKC和预期WKC来判断子报文是否被正确处理。WKC由ESC在处理数据帧的同时进行处理,不同的通信服务对WKC的增加方式不同。

下面给大家分析一条广播寻址的广播读(BRD)报文:
其中偏移地址0x0130,通过查阅ESC芯片的数据手册就可以知道,0x130寄存器存放的就是从站的链路层状态(AL Status):
另外,

附件还提供了本人抓取的EtherCAT报文,文件名称为“EtherCAT报文.pcapng”,供大家查看。

593267e5faa9d2773.png (130.99 KB )

593267e5faa9d2773.png

EtherCAT报文.zip

192.01 KB

抓包数据

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 50.00 元 2025-04-11
理由:恭喜通过原创审核!期待您更多的原创作品~~

评论
21小跑堂 2025-4-11 14:40 回复TA
通过Wireshark工具对EtherCAT总线抓包,并对抓包数据进行逐字解析,图文结合,标注得当。 

相关帖子

发新帖 本帖赏金 50.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

129

帖子

3

粉丝