IGH EtherCAT Master 1.6.4 + Ubuntu Wireshark 只抓 EtherCAT
报文配置说明(纯中文)
================================================
一、基础认知(非常重要)
================================================
- EtherCAT 的本质
-
EtherCAT 不是 TCP/IP、不是 UDP
-
EtherCAT 是"裸以太网帧"
-
EtherType 固定为:0x88A4
结论: - 用 IP 过滤一定抓不到 EtherCAT - 必须在二层(以太网层)抓包
================================================ 二、确认 IGH 使用的网卡
================================================
- 查看所有网卡 命令: ip link
常见物理网卡名称: - eth0 - eno1 - enp3s0
不要使用: - lo - docker0 - virbr0 - br-*
- 确认 IGH Master 绑定的网卡 命令: ethercat master
示例输出: Master0 Phase: OP Active: yes Link: UP Device: enp3s0
结论: Wireshark 必须抓 Device 指定的网卡
================================================ 三、Wireshark
抓包权限配置(Ubuntu) ================================================
推荐方式(普通用户抓包):
- 运行: sudo dpkg-reconfigure wireshark-common
选择:Yes
-
把用户加入 wireshark 组: sudo usermod -aG wireshark $USER
-
注销并重新登录
临时方式(不推荐): sudo wireshark
================================================ 四、Wireshark 抓
EtherCAT 的正确配置 ================================================
- 选择接口
- 选择 IGH 使用的物理网卡(如 enp3s0)
- 抓包过滤器(Capture Filter,推荐) 在开始抓包前输入: ether proto
0x88a4
作用: - 只抓 EtherCAT 报文 - 减少无关流量
- 显示过滤器(Display Filter) 抓包后使用: ethercat
或: eth.type == 0x88a4
================================================
五、标准抓包流程(一步不漏)
================================================
-
可选:停止 EtherCAT Master sudo systemctl stop ethercat
-
打开 Wireshark
-
选择正确网卡
-
不设置显示过滤器
-
点击"开始抓包"
-
启动 EtherCAT Master sudo systemctl start ethercat
-
设置显示过滤器: ethercat
应看到: - LRW - LRD - LWR - BRD / BWR - FPRD / FPWR
================================================
六、只看过程数据(PDO)的过滤方法
================================================
-
只看 LRW 周期帧: ethercat.cmd == 0x0C
-
只看某个从站地址(ADP): ethercat.adp == 0x0001
-
只看寄存器/SDO 访问: ethercat.cmd == 0x05 || ethercat.cmd == 0x06
================================================ 七、常见问题与排错表
================================================
问题:完全抓不到包 原因:抓错网卡 解决:使用 ethercat master 确认网卡
问题:只有 ARP / IP 包 原因:过滤条件错误 解决:使用 ether proto 0x88a4
问题:Wireshark 不解析 EtherCAT 原因:Wireshark 版本过低 解决:升级到
2.6 以上
问题:数据解析异常 / malformed 原因:网卡 Offload 解决:关闭 Offload
================================================ 八、强烈建议:关闭网卡
Offload ================================================
命令(示例 enp3s0): sudo ethtool -K enp3s0 rx off tx off tso off gso
off gro off lro off
说明: - 否则 EtherCAT 帧可能被硬件合并 - 会导致解析错误
================================================ 九、tcpdump
快速验证(非常推荐) ================================================
命令: sudo tcpdump -i enp3s0 -e ether proto 0x88a4
如果 tcpdump 能看到 EtherCAT: - 说明 IGH 正常 - Wireshark
问题在权限或过滤
================================================ 文档结束
================================================