- 1. 为什么用 Wireshark Unterteilung析 Modbus?
- 2. Wireshark 对 Das Modbus-Protokoll的支持
- 3. 安装 Wireshark
- 4. Linux(Ubuntu/Debian)
- 5. Windows
- 6. macOS
- 7. 抓取 Modbus TCP Meldung
- 8. Linux Der Server端抓包
- 9. Windows 端直接抓包
- 10. Modbus TCP Meldung详解
- 11. Wireshark 显示过滤器技巧
- 12. 实战案例:用 Wireshark 排查 Modbus Kommunikation故障
- 13. 案例1:读不zuDaten——Von der Station无Antwort
- 14. 案例2:返回Ungewöhnlicher Code 02(Illegale Datenadressen)
- 15. 案例3:Daten值异常——Befehlseite问题
- 16. 抓取 Modbus RTU(Die Serie)Meldung
- 17. 方案1:USB 转Die Serie + USBPcap
- 18. 方案2:Die Serie监控软件
- 19. 方案3:在 RTU 转 TCP 网关上抓包
- 20. Wireshark Modbus Unterteilung析进阶技巧
- 21. 统计Unterteilung析:I/O 图表
- 22. Überprüfenvollständig的 TCP 流
- 23. Exportieren Modbus Daten
- 24. 总结
为什么用 Wireshark Unterteilung析 Modbus?
Wireshark 是全球最流行的开源网络VereinbarungUnterteilung析器,由 Gerald Combs 于 1998 Jahr创建,现由 Wireshark 基金会维护。官网 www.wireshark.org。它内置了vollständig的 Modbus TCP VereinbarungAnalyse器(dissector),可以自动识别和Analyse Modbus TCP Meldung中的 MBAP 头、Funktionscode、Datenzone和Ungewöhnlicher Code。对于 Modbus RTU Meldung,Wireshark 也可以通过 USB 转Die Serie适配器或Fern entfernt抓包的方式进行Unterteilung析。
在Industrielle Automatisierung的Tests现场,最Häufig的痛点就是”Kommunikation不通但不知道为什么”。Wireshark 能让你看zu总线上的每一帧Daten——Bitte发了什么、Antwort回了什么、超时发生在哪个环节、Ungewöhnlicher CodeWas ist das?——把看不见的Kommunikation过程变成可追踪的证据链。
Wireshark 对 Das Modbus-Protokoll的支持
Wireshark 的 Das Modbus-ProtokollAnalyse器位于 epan/dissectors/packet-modbus.c,能够自动识别以下内容:
- Modbus/TCP:默认端口 502,自动识别 MBAP 头(Transaction ID、Protocol ID、Length、Unit ID)和各Funktionscode的 PDU
- FunktionscodeAnalyse:FC01-FC06、FC15-FC16、FC23 等常用Funktionscode的Bitte和AntwortDas Format
- Ungewöhnlicher Code:自动标注Ungewöhnliche Reaktion,并显示Ungewöhnlicher Code含义(01=Illegale Funktionen、02=Illegale Datenadressen、03=Illegale Datenwerte、04=Ausfall aus der Station等)
- Modbus RTU over TCP:部Unterteilung网关将 RTU 帧封装在 TCP 中传输,Wireshark 也能Analyse
安装 Wireshark
Linux(Ubuntu/Debian)
sudo apt-get update
sudo apt-get install wireshark
# 允许非 root 用户抓包
sudo usermod -a -G wireshark $USER
# 注销后重新Registrierung生效
Windows
从 官网Download页面 Download Windows 安装包。安装时需勾选 Npcap(Windows 抓包驱动)和 USBPcap(如需抓 USB 转Seriöse Daten)。
macOS
brew install --cask wireshark
抓取 Modbus TCP Meldung
Linux Der Server端抓包
如果 Modbus TCP Kommunikation发生在 Linux Der Server或网关上,直接用 tcpdump 抓包效率最高:
# 抓取所有目标端口为 502 的 TCP Meldung(Modbus TCP 默认端口)
sudo tcpdump -i eth0 -w modbus_capture.pcap 'tcp port 502'
# 只抓指定 IP Ausrüstung的Kommunikation
sudo tcpdump -i eth0 -w modbus_capture.pcap 'host 192.168.1.100 and tcp port 502'
# 按 Ctrl+C Stopp!抓包
# 将 .pcap 文件传输zu有 Wireshark 的电脑上Unterteilung析
Windows 端直接抓包
Öffnen. Wireshark,Auswahl与目标AusrüstungKommunikation的网卡(如Ethernet卡或 Wi-Fi),在 Capture Filter 中输入 tcp port 502,Klick auf开始抓包。此时Betrieb你的 Modbus Hauptstation程序(如 Modbus Poll),即可捕获zuvollständig的 Modbus TCP Kommunikation过程。
Modbus TCP Meldung详解
在 Wireshark 中选中一条 Modbus TCP Meldung,展开 “Modbus/TCP” 层。一个典型的Lesen Sie das RegisterBitteMeldung结构如下:
| Feld | Anzahl der Bytes | Beispiel值 | 说明 |
|---|---|---|---|
| Transaction ID | 2 | 0x0001 | Transaktionsidentifikator,客户端自增,服务端原样返回 |
| Protocol ID | 2 | 0x0000 | Vereinbarung标识,Modbus 固定为 0 |
| Length | 2 | 0x0006 | 后续Anzahl der Bytes(Unit ID + PDU) |
| Unit ID | 1 | 0x01 | von der Station Adresse(Slave ID) |
| Function Code | 1 | 0x03 | Funktionscode(03=Lesen Sie das Register) |
| Starting Address | 2 | 0x0000 | Start-Register - Adresse |
| Quantity | 2 | 0x000A | Lesen der Menge(10个) |
对应的AntwortMeldung包含同样的 MBAP 头 + Funktionscode 0x03 + Bytes计数 0x14(20Bytes=10ein Register.)+ Datenzone。
Wireshark 显示过滤器技巧
显示过滤器(Display Filter)用于在已抓取的Meldung中快速筛选目标Daten。以下是常用的 Modbus Related过滤器:
# 筛选所有 Das Modbus-ProtokollMeldung
modbus
# 筛选指定Funktionscode(如 03 Lesen Sie das Register)
modbus.func_code == 3
# 筛选Ungewöhnliche Reaktion
modbus.exception_code
# 筛选指定von der Station Adresse
modbus.unit_id == 1
# 筛选包含异常的Meldung
modbus.exception_code != 0
# 组合过滤:Von der Station 1 的Funktionscode 16(写多Register.)
modbus.unit_id == 1 and modbus.func_code == 16
# 按 IP Adresse和 Modbus Funktionscode过滤
ip.addr == 192.168.1.100 and modbus.func_code == 3
# 只看 MBAP 头 Transaction ID 为 5 的Bitte-Antwort对
modbus.trans_id == 5
实战案例:用 Wireshark 排查 Modbus Kommunikation故障
案例1:读不zuDaten——Von der Station无Antwort
抓包后发现只有Bitte帧没有Antwort帧(或出现 TCP RST/重传),说明Von der StationAusrüstung没有Richtig.Antwort。检查方法:
- Bestätigen Der TCP-Port(默认 502)在Von der StationAusrüstung上已开放
- 检查von der Station Adresse(Unit ID)是否与Bitte中的一致
- Überprüfen是否有 TCP 层异常(重传、RST),如有则说明网络层有问题
案例2:返回Ungewöhnlicher Code 02(Illegale Datenadressen)
Wireshark 可以看zuStartadresse in der Anfrage + Anzahl超出了Von der Station的Register.范围。在 Wireshark 中右键点BitteMeldung → “Follow → TCP Stream”,可以看zuvollständig的Bitte和Ungewöhnliche Reaktion对话。
案例3:Daten值异常——Befehlseite问题
Lesenzu的 32 位浮点数在 Wireshark 中显示正常,但在Hauptstation程序中显示为 NaN 或极大值。这说明Kommunikation层没问题,是Hauptstation程序的BefehlseiteAnalyse有误。可以在 Wireshark 中手动Berechnung验证:右键Registerdaten → “Copy → Value” 获取16. System原始值,用 IEEE 754 Rechner在线验证。
抓取 Modbus RTU(Die Serie)Meldung
Modbus RTU 通过 RS-232 或 RS-485 物理层传输,不能直接用 Wireshark 抓取。Häufig方案:
方案1:USB 转Die Serie + USBPcap
在 Windows 上安装 USBPcap(Wireshark 安装时可选组件),可以抓取 USB 转Serielle Ausrüstung上的Originaldaten。但需要自行Analyse RTU 帧(Adresse + Funktionscode + Daten + CRC)。
方案2:Die Serie监控软件
Empfohlene Anwendung专门的Die Serie监控Werkzeuge:
- Serial Port Monitor(Windows 商业软件):可直接监控和Analyse Modbus RTU 帧
- CAS Modbus RTU Parser:kostenlosOnline-Tools,粘贴16. SystemBytes自动Analyse
- PortMon(Windows kostenlos):微软出品的底层Die Serie监控Werkzeuge
方案3:在 RTU 转 TCP 网关上抓包
如果现场使用了Seriöser Server(如 MOXA NPort),可以在 TCP 侧用 Wireshark 抓包,Meldung内容即为 RTU 帧。
Wireshark Modbus Unterteilung析进阶技巧
统计Unterteilung析:I/O 图表
菜单 → Statistics → I/O Graph,设置过滤器为 modbus,可以观察zu Modbus Kommunikation的频率和ZeitUnterteilung布。如果发现周期性尖峰或间隙,可能是轮询Parameter配置不当。
Überprüfenvollständig的 TCP 流
右键任意 Modbus TCP Meldung → Follow → TCP Stream,可以Überprüfen一次vollständig TCP Verbindung中所有 Modbus Bitte和Antwort的Originaldaten。这是排查”Daten lesen错位”问题的利器。
Exportieren Modbus Daten
File → Export Packet Dissections → As CSV,可以将所有解码后的 Modbus MeldungExportieren为 CSV Das Format,方便用 Excel 或 Python 进行批QuantitätUnterteilung析。
总结
Wireshark 是 Das Modbus-ProtokollTests中不可替代的Werkzeuge。它能够将”看不见”的Kommunikation过程可视化,帮助工程师精准定位问题发生在Vereinbarung栈的哪一层——是 TCP-Verbindung hergestellt失败、MBAP 头FeldFehler.、Funktionscode不匹配、Register-Adresse越界还是DatenBefehlseiteAnalyseFehler.。对于任何从事 Modbus Kommunikation开发和Tests的工程师,掌握 Wireshark 抓包Unterteilung析是必备技能。
Antwort veröffentlichen