Das „Schweizerische Messer" im Modbus-Debugger
Im tä gli chen De bu gging von Mod bus - Ger ä ten muss man nicht jedes Mal ein Wir es har k - G rab pak et ö ff nen oder Python - S kri pte schre iben . Manch mal müssen Sie nur eine Funk tion schnell überprü fen - Dec odi eren Sie eine Reihe von He x ade zim al - N ach richten , durch su chen Sie den Register bereich eines un bek annten Ger ä ts oder testen Sie eine L ese - und Sch reib an forder ung in der Be feh ls ze ile . Dieser Text ist zus amm enge fasst .modbus.orgDie leicht esten und prakt isch sten Mod bus - W id gets sind emp f oh len .
Modbus RTU / TCP-Nachrichten Online-Parser
Wenn Sie eine Reihe von Modbus-Nachrichten vom Serien-Assistenten erhalten oder ein Modbus-Binärdaten ausdrucken, während Sie in Ihrem Code debuggen, müssen Sie schnell wissen, was diese Daten bedeuten. Der Online-Modbus - Nachrichtenparser ist die schnellste Lösung - keine Software ist erforderlich, und der Browser ist verfügbar, wenn man ihn öffnet.
Modbus RTU Parser
Empfohlene WerkzeugeCAS Modbus RTU Parser (mit Chipkin Automation Systems)
Besuch:store.chipkin.com/products/tools#modbus-rtu-parser
Es ist ein reines Web-Tool. Sie müssen einfach eine Reihe von hexadezialen Modbus RTU-Nachrichten einfügen:
01 03 00 00 00 0A C5 CDNach dem Klicken auf die Analyse wird das Tool automatisch angezeigt:
- Slave-ID = 1
- Funktionscode = 03 (Read Holding Registers)
- Startadresse = 0
- Anzahl der Anfragen = 10 Registers
- CRC-Prüfung = 0xCDC5 (und überprüfen Sie, ob es richtig ist ✓)
Modbus TCP Parser
Besuch:store.chipkin.com/products/tools#modbus-tcp-parser
Ähnlich wie die RTU-Version, aber die Auflösung von MBAP-Headern: Transaktions-ID, Protokoll-ID, Länge und Unit-ID. Folgende TCP-Nachrichten können Sie einfügen:
00 01 00 00 00 06 01 03 00 00 00 0AAnalyseergebnis: Transaktions-ID = 1, Protokoll = Modbus, Slave = 1, Funktionscode = 03, Start-Adresse = 0, Anzahl = 10.
Modbus Gerät Adressraum-Scan - Tool
CAS Modbus Scanner
Adresse herunterladen:store.chipkin.com/products/tools/cas-modbus-scanner
Wenn Sie ein Modbus-Gerät ohne ein vollständiges Register-Zuordnung - Handbuch erhalten, ist der einfachste Weg, das Gerät zu scannen - indem Sie den Adressraum des Geräts mit dem Modbus Scanner durchqueren und aufzeichnen, welche Adressen gültige Daten zurückgeben.
Methode der Verwendung:
- TCP-Eingabe IP: Port, RTU-Anschluss auswählen)
- Wählen Sie den Adressbereich zu scannen (empfohlen, kleiner Bereich 0 - 100 Proben)
- Wählen Sie den Datentyp zu scannen: Spule, diskreter Eingang, Halten-Register, Eingang-Register
- Klicken Sie auf Start Scan, Beobachtungen
- Aufzeichnen Sie die Adresse, die gültige Daten zurückgibt
- Validieren Sie in Verbindung mit dem physikalischen Gerät (Ändern Sie die physikalische Menge, beobachten Sie die entsprechende Registeränderung)
Scan-Techniken:
- Scannen Sie zuerst das Hold-Register (4xxxx), da die meisten Konfigurations - und Messdaten für das Gerät hier sind
- Wenn eine Adresse den Ausnahmecode 02 (illegale Datenadresse) zurückgibt, ist die Adresse ungültig
- Wenn eine 0 zurückgibt, aber keine Ausnahme, Es muss entschieden werden, ob der Wert = 0 wahr ist oder ob das Gerät die Adresse nicht implementiert hat.(nur durch Scan nicht unterscheidbar)
- Ändern der physischen Anreiz Nach dem Aufwärmen, Drehen des Encoders, überprüfen Sie, welche Adresswerte sich ändern
Befehlszeilenprotokoll-Test: modbus-cli - Technik
Neben speziellen Tools können viele allgemeine Befehlszeilen-Tools auch für Modbus-Tests verwendet werden:
TCP-Konnektivität mit Netcat testen
# 测试 Modbus TCP 设备是否在线
nc -zv 192.168.1.100 502
# 如果输出 "Connection to 192.168.1.100 502 port [tcp/*] succeeded!" 说明在线Tests mit Python-Befehlen
# 安装 pymodbus 后,一行测试读取保持寄存器
python3 -c "
from pymodbus.client import ModbusTcpClient
c = ModbusTcpClient('192.168.1.100')
c.connect()
rr = c.read_holding_registers(0, 5, slave=1)
print('Values:', rr.registers if not rr.isError() else rr)
c.close()
"Analysieren von binären Modbus-Daten mit xxd
# 如果你有一段 Modbus 二进制数据文件,可以用 xxd 查看
xxd modbus_dump.bin
# 或者用 hexdump 格式化显示
hexdump -C modbus_dump.bin | head -20Modbus-Protokoll - Funktionen Schnellverweis
Debugging muss häufig Funktionscode-Korrespondenz - Tabelle überprüfen, die folgenden häufig verwendeten Funktionscode-Schnellverweis:
| Funktionscode | Name | Datentyp | Operation |
|---|---|---|---|
| 01 (0x01) | Read Coils | Spule (0xxxx) | Lesen 1 - Bit |
| 02 (0x02) | Read Discrete Inputs | Diskreten Eingang (1xxxx) | Lesen 1 - Bit |
| 03 (0x03) | Read Holding Registers | Haltungsregister (4xxxx) | Lesen Sie 16 - Bit |
| 04 (0x04) | Read Input Registers | Eingangsregister (3xxxx) | 16 - Bit-Lesen |
| 05 (0x05) | Write Single Coil | Spule | Schreiben 1 - Bit |
| 06 (0x06) | Write Single Register | Aufbewahrungsregister | 16 - Bit-Schreiben |
| 15 (0x0F) | Write Multiple Coils | Spulen | Mehr 1 - Bit-Schreiben |
| 16 (0x10) | Write Multiple Registers | Aufbewahrungsregister | Mehr 16 - Bit-Schreiben |
| 23 (0x17) | Read/Write Multiple Registers | Aufbewahrungsregister | Lese - und Schreibkombinationen |
Modbus-Ausnahmecode - Schnellsuche
| Ausnahmecode | Bedeutung | Häufige Ursachen |
|---|---|---|
| 01 | Illegale Funktionscode | Das Gerät unterstützt diesen Funktionscode nicht |
| 02 | Ungültige Datenadresse | Der angeforderte Adressbereich übersteigt den verfügbaren Bereich des Geräts |
| 03 | Ungültige Datenwerte | Der geschriebene Wert übersteigt den zulässigen Bereich |
| 04 | Ausfall von Station-Geräten | Interner Fehler im Gerät, die Anforderung kann nicht verarbeitet werden |
| 05 | Bestätigung (ACK) | Anforderung akzeptiert, aber die Verarbeitung dauert länger |
| 06 | Slave-Station - Gerät beschäftigt | Gerät beschäftigt, später erneut versuchen |
Zusammenfassung
Modbus-Debugging erfordert nicht jedes Mal ein schweres Tool. Der Online-Parser ist für die schnelle Decodierung von Nachrichten geeignet, der Scanner für die umgekehrte Registermapping von unbekannten Geräten und die Befehlszeilen-Tools für automatisierte Tests. Die Beherrschung dieser „Gadgets" verdoppelt die Effizienz Ihres Modbus-Debugging - mit dem leichtesten Werkzeug, wenn Sie Probleme finden, und verwenden Sie schwere Werkzeuge wie Wireshark nur, wenn Sie eine tiefe Analyse benötigen.
Antwort veröffentlichen