Modbus-Ingenieur braucht ein Wunderwerkzeug! RTU / TCP / ASCII-Nachrichten - Generierungsparser, 10 - mal effizienter
Berechnen Sie Modbus-Nachrichten noch manuell? Dieses Tool unterstützt RTU / TCP / ASCII drei Protokolle, generiert automatisch Anforderung / Antwort Nachricht, CRC / LRC-Verifizierung, Nachricht Analyse, Historie mit einem Klick zu erledigen
Vorwort: Modbus Debugging Schmerzen, Ingenieure verstehen
Ich bin seit 20 Jahren in der industriellen Automatisierung tätig und kenne die Schmerzen des Debugging von Modbus zu gut.
Haben Sie diese Situationen auch häufig?
Szenario 1: Manuelle Berechnung der Nachricht, leicht zu Fehlern
Um das Halt-Register zu lesen, von der Station-Adresse 01, Start-Adresse 40001, Anzahl 10
Sie nehmen den Rechner zu berechnen:
- Ausgangsadresse: 01
- Funktionscode: 03
- Startadresse: 00 00 (40001-1=40000=0x9C40, usw., nicht richtig...)
- Anzahl: 00 0A
- CRC-Test:???
Der Kunde rief an und vergaß, wohin er ging.
erneut berechnet, CRC berechnet falsch
erneut berechnet, oder nicht richtig...
Szenario 2: Nachricht empfangen, nicht analysiert
Gerät zurückgegeben:
01 03 14 00 0A 00 0B 00 0C 00 0D 00 0E xx xx
Sie schauen:
- Dies ist die Antwort des Funktionscodes 03
- 14 ist die Anzahl der Bytes (20 Bytes)
- Wie hoch ist der Wert jedes Registers?
- Ist es AB oder BA?
Szenario 3: Drei Vereinbarungen, verwirrt
- RTU mit CRC-Prüfungen
- ASCII mit LRC-Prüfungen
- TCP hat einen MBAP-Header
Eine Eile, die TCP-Nachrichten mit RTU-Methode zu analysieren, kann nicht richtig
Szenario 4: Debugging-Datensatz, nicht gefunden
Gestern optimierte Nachricht, heute nicht gefunden
Fragt Kollegen, Kollegen sagen: "Ich habe auch vergessen"
Neuerzählen, dauert weitere 1 Stunde
Diese Schmerzen, ich weiß es.
Also habe ich das entwickelt.Modbus Message Generator。
entwickelt, der die drei ProtokolleRTU / TCP / ASCIIErstellen Sie automatisch eine Anforderung / Antwort Nachricht.
Keine manuelle Berechnung, keine Formeln, nur wenige Klicks erzeugt.
1. Kernfunktion: Warum sagen Ingenieure alles gut?
1.1 Drei Vereinbarungen abgedeckt
Unterstützt Modbus für drei Übertragungsmodi:
| Protokoll | Verification Method | Frame Format | Anwendbares Szenario |
|---|---|---|---|
| Modbus RTU | CRC16 | Binär | Serielle Kommunikation (RS485 / RS232) |
| Modbus ASCII | LRC | ASCII-Text | Altes Gerät / Modem |
| Modbus TCP | Keine Überprüfung (TCP-Garantie) | MBAP-Header + ADU | Ethernet-Kommunikation |
Ein Werkzeug, um alle Modbus-Debugging - Szenarien zu erledigen.
1.2 Anforderung Befehlsgenerator
Funktionsbeschreibung:
1 Unterstützt 12 Funktionscodes
| Funktionscodes | Name | Verwendung |
|---|---|---|
| 01 | Spule-Zustand auslesen | Ausgang auslesen |
| 02 | Diskreten Eingang auslesen | Lese-Schalter - Eingang |
| 03 | Lese-Halt - Register | Am häufigsten (analogen Ausgang) |
| 04 | Lese-Eingangs - Register | Lese-nur (analogen Eingang) |
| 05 | Schreiben einzelner Spule | Schaltersteuerung |
| 06 | Schreiben einzelner Register | Parameter-Einstellungen |
| 0F | Schreiben mehrerer Spulen | Batch-Schaltersteuerung |
| 10 | Schreiben mehrerer Registers | Batch-Parameter - Einstellungen |
| 17 | Lesen / Schreiben mehrerer Registers | Simultane Lesen / Schreiben |
| 2B | Auslesen der Geräte-Identifikation | Abfrage der Geräteinformationen |
2 Parameterkonfiguration
Funktionscode 03 (Lese-Halt - Register) als Beispiel:
从站地址:01(0-247) 功能码:03 起始地址:0000(十六进制或十进制) 数量:0010(读取 10 个寄存器)
3 Automatische Erzeugung einer Nachricht
Automatische Erzeugung:
RTU-Modus nach Eingabe von Parametern:
01 03 00 00 00 0A C4 0B │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ CRC 低字节 │ │ │ │ │ │ └──── CRC 高字节 │ │ │ │ │ └─────── 数量低字节 │ │ │ │ └────────── 数量高字节 │ │ │ └───────────── 起始地址低字节 │ │ └──────────────── 起始地址高字节 │ └─────────────────── 功能码 └────────────────────── 从站地址
Das ASCII-Modus:
:01030000000AFB │ │ │ │ │ └── LRC 校验(FB) │ └───── 数据部分(ASCII 编码) └────────────────── 起始符(:)
TCP-Modus:
00 01 00 00 00 06 01 03 00 00 00 0A │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ 数量低字节 │ │ │ │ │ │ │ │ │ └─────── 数量高字节 │ │ │ │ │ │ │ │ └────────── 起始地址低字节 │ │ │ │ │ │ │ └───────────── 起始地址高字节 │ │ │ │ │ │ └──────────────── 功能码 │ │ │ │ │ │ └──────────────── 单元标识符(从站地址) │ │ │ │ │ └─────────────────── 长度(后续字节数) │ │ │ │ └────────────────────── 协议标识符(0=Modbus) │ │ │ └───────────────────────── 事务标识符低字节 │ │ └──────────────────────────── 事务标识符高字节 └─────────────────────────────────── MBAP 头(7 字节)
4 Spezielle Funktionscode-Unterstützung
Funktionscode 05 (Einzelspulen schreiben):
- Schalterwahl: Ein / Aus
- Automatische Umwandlung in FF00 / 0000
Funktionscode 0F (Mehrspulen schreiben):
- Anzahl der Spulen Eingabe
- Visualisierung der Spule Auswahl (Punkt-Taste)
- Klicken Sie auf Status umschalten (Grau = OFF, Blau = ON)
- Automatische Berechnung der Anzahl der Bytes
Funktionscode 10 (Schreiben mehrerer Register):
- Registerliste (multiple hinzufügen möglich)
- Einstellungen für jedes Register:
- Adresse (Automatische Berechnung)
- Datentyp (UINT16 / INT16 / UINT32/ INT32/ FLOAT)
- Byte-Sequenz (AB / BA)
- Zahlenwert (Dezimal-Eingang)
- Automatische Umwandlung in Registerwert
1.3 Antwort-Nachrichten - Generator
Funktionsbeschreibung:
1 Analog-Gerät - Antwort
wird verwendet, um die Software (z. B. Konfiguration King, WinCC) oder SPS-Programme zu testen.
2 Unterstützt normale und Ausnahme-Antworten
Normale Antwort (Funktionscode 03):
从站地址:01 功能码:03 字节数:20(10 个寄存器×2) 寄存器值: - Reg 0: 10(0x000A) - Reg 1: 20(0x0014) - Reg 2: 30(0x001E) - ...
3 Datentypenunterstützung
从站地址:01 功能码:83(03+80) 异常码: - 01:非法功能 - 02:非法数据地址 - 03:非法数据值 - 04:从站设备故障 - 05:认可 - 06:从属设备忙
3 Datentypen unterstützt
Unterstützt mehrere Datentypen, automatische Konvertierung:
| Typ | Bytes | Bereich | Bytesfolge |
|---|---|---|---|
| UINT16 | 2 | 0-65535 | Fixed |
| INT16 | 2 | -32768 ~ 32767 | Fixed |
| UINT32 | 4 | 0-4294967295 | AB/BA |
| INT32 | 4 | -2147483648~2147483647 | AB/BA |
| FLOAT | 4 | IEEE 754 Single Precision | AB/BA/CDAB/BADC |
Beispiel:
Eingabe des Dezimalwertes: 25.5 (FLOAT-Typ)
Automatische Konvertierung in Registerwert:
- Reg0: 0x41CC (high 16 Bit)
- Reg1: 0x0000 (low 16 Bit)
1.4 Nachrichtenparser
Funktionsbeschreibung:
1 Nachricht einfügen, automatische Auflösung
Nachricht vom Gerät empfangen, einfügen, automatische Auflösung:
Eingabe (RTU-Modus):
01 03 14 00 0A 00 0B 00 0C 00 0D 00 0E 7A 3B
Automatische Auflösung:
┌─────────────────────────────────────┐ │ 从站地址:01 │ │ 功能码:03(读保持寄存器) │ │ 字节数:20(0x14) │ │ 数据内容: │ │ Reg 0: 0x000A = 10 │ │ Reg 1: 0x000B = 11 │ │ Reg 2: 0x000C = 12 │ │ Reg 3: 0x000D = 13 │ │ Reg 4: 0x000E = 14 │ │ CRC 校验:7A3B ✓(正确) │ └─────────────────────────────────────┘
2 Unterstützt drei Protokolle Auflösung
- RTU: CRC16 - Überprüfung
- ASCII: LRC - Überprüfung
- TCP: MBAP-Header - Auflösung
3 Fehlererkennung
- CRC / LRC-Verifizierung Fehlermeldung
- Anomalie an Nachrichtenlänge Warnung
- Unregelmäßige Funktionscode Warnung
1.5 Verlauf
Funktionsbeschreibung:
1 Automatisches Speichern
Automatisches Speichern jeder erzeugten Nachricht, einschließlich:
- Inhalt der Nachricht
- Erstellungszeit
- Nachrichtentyp (Anforderung / Antwort)
2 Verknüpfung
- Kopieren: Nachricht kopieren mit einem Klick
- WeChat teilen: Senden Sie an Kollegen
- Leeren: Löschen des Verlaufes
3 Klassifizierungsverwaltung
- Anforderung Befehlverlauf
- Antwortnachrichtenverlauf
- separat verwaltet, klar
1.6 Visualisierung der Nachrichtenstruktur
Funktionsbeschreibung:
erzeugte jede Nachricht, die mit der Strukturanalyse geliefert wird:
Beispiel (RTU-Anfrage):
┌─────────────────────────────────────┐ │ 报文结构解析 │ ├─────────────────────────────────────┤ │ 从站地址 (Slave Address): 01 │ │ 功能码 (Function Code): 03 │ │ 起始地址 (Start Address): 0000 │ │ 数量 (Quantity): 000A │ │ CRC 校验 (CRC Check): C40B │ └─────────────────────────────────────┘
Beispiel (TCP-Anfrage):
┌─────────────────────────────────────┐ │ 报文结构解析 │ ├─────────────────────────────────────┤ │ 事务标识符 (Transaction ID): 0001 │ │ 协议标识符 (Protocol ID): 0000 │ │ 长度 (Length): 0006 │ │ 单元标识符 (Unit ID): 01 │ │ 功能码 (Function Code): 03 │ │ 起始地址 (Start Address): 0000 │ │ 数量 (Quantity): 000A │ └─────────────────────────────────────┘
II. Kampffall: echte Anwendungsszenario für Ingenieure
Fall 1: Lesen von Temperatursensordaten
Szenario:
- Gerät: Temperatursender einer Marke
- Kommunikation: RS485 (Modbus-RTU)
- Anforderung: Temperaturwerte für 10 Kanäle ablesen
Herkömmliche Methode:
- Manuelle Überprüfung: Register-Adresse 40001-40010
- Manuelle Berechnung der Nachricht:
- Station-Adresse: 01
- Funktionscode: 03
- Start-Adresse: 40001-1 = 40000 = 0x9C40
- Anzahl: 10 = 0x000a
- CRC-Prüfung: Manuell berechnen oder mit dem Online-Tool
- Senden Sie
- Antwort empfangen, manuell analysieren
Zeit: 15 - 20 Minuten
Nach der Verwendung des Tools:
- Öffnen Sie das Tool, wählen Sie Modbus RTU
- Eingabe von Parametern:
- Adresse von der Station: 01
- Funktionscode: 03
- Startadresse: 9C40
- Anzahl: 10
- Klicken Sie auf "Anforderung erstellen"
- Kopieren Sie die Nachricht, senden Sie
- Empfangen Sie eine Antwort, fügen Sie sie in den Parser ein
- 10 Temperaturwerte werden automatisch analysiert
Zeitverbrauch: 2 - 3 Minuten
Effizienzsteigerung: 6 - 10 - fache
Fall 2: Batch-Einstellung von Frequenzumrichterparametern
Szenario:
- Gerät: Frequenzumrichter einer Marke
- Kommunikation: Modbus RTU
- Anforderung: 20 Parameter
Traditionelle Methode:
- Schreiben eines einzelnen Registers (Funktionscode 06)
- Schreiben 20 Mal, jedes Mal berechnen Nachrichten
- leicht zu Fehlern, Duplikation der Arbeit
Nach der Verwendung des Tools:
- Wählen Sie den Funktionscode 10 (Schreiben mehrere Registers)
- 20 Register hinzufügen:
- Adresse: Automatische Berechnung
- Datentyp: Wählen Sie
- Wert: Eingabe
- Nachricht erzeugen einmal
- Senden, abschließen
Zeitverbrauch: von 1 Stunde → 5 Minuten
Fall 3: Debuggen der Host-Software
Szenario:
- Entwicklungs-Konfigurations - King / WinCC-Projekt
- Erfordert Modbus-Sklaven - Simulation
- Testen von Host-Logik
Verwenden von Werkzeugen:
- Einrichten von Simulationsdaten
- Erstellen von Response-Messages
- mit dem Response-Message - Generator
- Senden an den Host
- Validieren der Programmlogik
Vorteile:
- Keine realen Geräte
- Simulierung verschiedener Anomalien
- Verbesserung der Entwicklungseffizienz
III. Technische Details: Ingenieure interessieren sich
3.1 CRC16 - Verifizierungsalgorithmus
Modbus RTU verwendet CRC16 (Cyclic Redundancy Verification):
// CRC16 计算(低字节在前)
function calcCRC16(bytes) {
let crc = 0xFFFF;
for (let i = 0; i < bytes.length; i++) {
crc ^= bytes[i];
for (let j = 0; j < 8; j++) {
if (crc & 0x0001) {
crc = (crc >> 1) ^ 0xA001;
} else {
crc >>= 1;
}
}
}
return crc; // 低字节在前
}
Beispiel:
报文:01 03 00 00 00 0A CRC:C4 0B(低字节在前) 完整:01 03 00 00 00 0A C4 0B
3.2 LRC-Prüfungsalgorithmus
Modbus-ASCII verwendet LRC (Vertical Redundancy Check):
// LRC 计算
function calcLRC(bytes) {
let sum = 0;
for (let i = 0; i < bytes.length; i++) {
sum += bytes[i];
}
const lrc = ((~sum) + 1) & 0xFF;
return lrc;
}
Beispiel:
报文:01 03 00 00 00 0A LRC:FB 完整::01030000000AFB
3.3 Byte-Sequenz - Problem
Byte-Sequenz für 32 - Bit-Daten (UINT32/INT32/FLOAT):
| Byte-Sequenz | Name | Beispiel (0x12345678) |
|---|---|---|
| AB | Big Endian | 12 34 56 78 |
| BA | Little Endian | 34 12 78 56 |
| CDAB | Mixed | 56 78 12 34 |
| BADC | Mixed | 78 56 34 12 |
Werkzeug Unterstützung für automatische Konvertierung:
- Bytefolge auswählen
- Eingabe des Dezimalwertes
- Automatische Konvertierung in Registerwert
3.4 Modbus TCP MBAP-Header
Modbus TCP-Nachrichtenstruktur:
┌─────────────────────────────────────┐ │ MBAP 头(7 字节) │ ├─────────────────────────────────────┤ │ 事务标识符(2 字节) │ │ 协议标识符(2 字节)=0 │ │ 长度(2 字节) │ │ 单元标识符(1 字节)=从站地址 │ ├─────────────────────────────────────┤ │ PDU(功能码 + 数据) │ └─────────────────────────────────────┘
Beispiel:
00 01 00 00 00 06 01 03 00 00 00 0A │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ 数量低字节 │ │ │ │ │ │ │ │ │ └─────── 数量高字节 │ │ │ │ │ │ │ │ └────────── 起始地址低字节 │ │ │ │ │ │ │ └───────────── 起始地址高字节 │ │ │ │ │ │ └──────────────── 功能码 │ │ │ │ │ │ └──────────────── 单元标识符 │ │ │ │ │ └─────────────────── 长度(6 字节) │ │ │ │ └────────────────────── 协议标识符(0=Modbus) │ │ │ └───────────────────────── 事务标识符低字节 │ │ └──────────────────────────── 事务标识符高字节 └─────────────────────────────────── MBAP 头
IV. Feedback der Benutzer: Was der Ingenieur sagt
Feedback 1: Automatisierungstechniker (5 Jahre Erfahrung)
"Früher habe ich Modbus-Nachrichten manuell berechnet, oft falsch. Jetzt verwenden Sie dieses Werkzeug, generieren Sie mit wenigen Klicks, CRC-Berechnung automatisch, zu bequem! Die Effizienz wird mindestens fünfmal gesteigert. "
Feedback 2: Elektroingenieur (10 Jahre Erfahrung)
"Unterstützt drei Protokolle, ohne dass man das Werkzeug wechseln muss. Besonders TCP-MBAP - Header, die früher immer verwirrt waren, werden jetzt automatisch erzeugt und können nicht falsch sein. "
Feedback 3: PLC-Ingenieur (8 Jahre Erfahrung)
" Antwort Nachrichten Generator ist sehr gut zu bedienen, Simulation von Slave-Geräten, um PLC-Programme zu testen, ohne echte Geräte, die Entwicklungseffizienz zu verbessern viel. "
Feedback 4: Debugger-Ingenieur (3 Jahre Erfahrung)
" Die Historie-Funktion ist sehr praktisch, die Nachricht gestern optimiert, heute direkt kopiert, ohne neu berechnen. " Auch das Teilen von WeChat ist sehr bequem, um Kollegen zusammen zu debuggen. "
V. Schreiben Sie am Ende
Ich habe dieses Werkzeug nicht gemacht, um Ingenieure zu ersetzen.
Sondern um die Befreiung der Menschheit.
So können Ingenieure keine manuellen Nachrichten berechnen, sich komplexe Formeln merken und sich keine Sorgen um CRC-Prüfungen machen.
Ermöglicht es Ihnen, Ihre Zeit für etwas wertvolleres zu verwenden:
- Systemarchitektur
- Steuerungslogikoptimierung
- Problemlösung vor Ort
Das Werkzeug ist kein Feind, sondern ein Helfer.
Ingenieure, die gut mit Werkzeugen arbeiten, werden Ingenieure, die nicht mit Werkzeugen arbeiten, eliminieren.
Ich hoffe, dass dieses Werkzeug mehr Kollegen hilft.
Anhang: Verwendung
Verwendung 1: WeChat-Code - Scanning

Verwendung 2: WeChat-Suche
Suche "Modbus Debugging Assistant"
Über den Autor
20 Jahre Erfahrung in der industriellen Automatisierung, als Ausrüstungshersteller, Integrator, Partei A.
Der Schwerpunkt liegt jetzt auf dem industriellen Internet der Dinge, Edge Computing und intelligenter Steuerung.
Willkommen Austausch:
- 📧 Mailbox:support@modbus.cn
- 💬 MICHAEL: Hinzufügen eines Assistenten
Wenn es nützlich ist, willkommen.+Unterstützen Sie!
Weiterleiten Sie an mehr Elektroingenieure, gemeinsam mit dem Werkzeug, um die Effizienz zu verbessern!
Antwort veröffentlichen