IGH 1.6.4 + Ubuntu Wireshark 抓 EtherCAT 报文配置指南
目标:只抓 EtherCAT 报文(EtherType = 0x88A4)
适用环境:Ubuntu + IGH EtherCAT Master 1.6.4
一、核心结论(先看这个)
- Wireshark 抓的是 以太网原始帧
- EtherCAT 的 EtherType 固定为 0x88A4
- 抓包成功的关键:
- 抓 IGH 使用的物理网卡
- IGH 运行时不要独占网卡
- 关闭网卡 Offload
- Wireshark 启用 EtherCAT 协议解析
- 使用 EtherCAT 显示过滤器
二、确认 IGH 使用的网卡
bash
cat /etc/ethercat.conf
示例:
ini
MASTER0_DEVICE="eth0"
DEVICE_MODULES="generic"
记住
eth0,Wireshark 只抓这块网卡
三、停止 IGH(抓包前必须)
如果 IGH 正在运行,会独占网卡,Wireshark 抓不到包。
bash
sudo systemctl stop ethercat
或:
bash
sudo /etc/init.d/ethercat stop
四、关闭网卡 Offload(非常关键)
bash
sudo ethtool -K eth0 gro off gso off tso off lro off
验证:
bash
ethtool -k eth0
五、安装并配置 Wireshark
1. 安装
bash
sudo apt update
sudo apt install wireshark
安装时选择:
Allow non-superusers to capture packets? → Yes
2. 加入 wireshark 用户组
bash
sudo usermod -aG wireshark $USER
注销并重新登录后生效
六、Wireshark 抓包步骤
- 启动 Wireshark:
bash
wireshark &
-
选择网卡:
eth0(或你的实际网卡) -
开始抓包
-
另开终端,启动 IGH:
bash
sudo systemctl start ethercat
七、只显示 EtherCAT 报文(重点)
在 Display Filter 中输入:
text
ether proto 0x88a4
或:
text
ethercat
推荐使用
ethercat(Wireshark 自带解析)
八、确认 EtherCAT 协议解析已启用
路径:
Edit → Preferences → Protocols → EtherCAT
确认:
- ☑ Enable EtherCAT dissection
- ☑ Show Datagrams
- ☑ Decode Mailbox(可选)
九、常用 EtherCAT 专用过滤器
1. 所有 EtherCAT 帧
text
ethercat
2. Mailbox 帧
text
ethercat.mailbox
3. CoE(SDO)
text
ethercat.mailbox.protocol == 0x01
4. FoE(固件升级)
text
ethercat.mailbox.protocol == 0x02
5. 工作计数器异常
text
ethercat.wkc != 0
十、你应该看到的正常结构
text
Ethernet II
└─ EtherType: EtherCAT (0x88A4)
└─ EtherCAT Frame
└─ Datagram (LRD / LWR / LRW)
├─ Address
├─ Length
├─ Working Counter
十一、常见问题排查
抓不到任何包
- IGH 未停止
- 抓错网卡
- 网卡被独占
能抓包但无 EtherCAT 解析
- Offload 未关闭
- Wireshark 版本过低
- 过滤器错误
十二、推荐抓包顺序(标准流程)
bash
sudo systemctl stop ethercat
sudo ethtool -K eth0 gro off gso off tso off lro off
wireshark &
sudo systemctl start ethercat
十三、一句话总结
EtherCAT 抓包 = 正确网卡 + Offload 关闭 + EtherCAT 过滤器