Modbus-Ingenieur braucht ein Wunderwerkzeug! RTU / TCP / ASCII-Nachrichten - Generierungsparser, 10 - mal effizienter

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

Modbus-Ingenieur braucht ein Wunderwerkzeug! RTU / TCP / ASCII-Nachrichten - Generierungsparser, 10 - mal effizienter

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:

ProtokollVerification MethodFrame FormatAnwendbares Szenario
Modbus RTUCRC16BinärSerielle Kommunikation (RS485 / RS232)
Modbus ASCIILRCASCII-TextAltes Gerät / Modem
Modbus TCPKeine Überprüfung (TCP-Garantie)MBAP-Header + ADUEthernet-Kommunikation

Ein Werkzeug, um alle Modbus-Debugging - Szenarien zu erledigen.


1.2 Anforderung Befehlsgenerator

Funktionsbeschreibung

1 Unterstützt 12 Funktionscodes

FunktionscodesNameVerwendung
01Spule-Zustand auslesenAusgang auslesen
02Diskreten Eingang auslesenLese-Schalter - Eingang
03Lese-Halt - RegisterAm häufigsten (analogen Ausgang)
04Lese-Eingangs - RegisterLese-nur (analogen Eingang)
05Schreiben einzelner SpuleSchaltersteuerung
06Schreiben einzelner RegisterParameter-Einstellungen
0FSchreiben mehrerer SpulenBatch-Schaltersteuerung
10Schreiben mehrerer RegistersBatch-Parameter - Einstellungen
17Lesen / Schreiben mehrerer RegistersSimultane Lesen / Schreiben
2BAuslesen der Geräte-IdentifikationAbfrage 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:

TypBytesBereichBytesfolge
UINT1620-65535Fixed
INT162-32768 ~ 32767Fixed
UINT3240-4294967295AB/BA
INT324-2147483648~2147483647AB/BA
FLOAT4IEEE 754 Single PrecisionAB/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

  1. Manuelle Überprüfung: Register-Adresse 40001-40010
  2. 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
  3. Senden Sie
  4. Antwort empfangen, manuell analysieren

Zeit: 15 - 20 Minuten

Nach der Verwendung des Tools

  1. Öffnen Sie das Tool, wählen Sie Modbus RTU
  2. Eingabe von Parametern:
    • Adresse von der Station: 01
    • Funktionscode: 03
    • Startadresse: 9C40
    • Anzahl: 10
  3. Klicken Sie auf "Anforderung erstellen"
  4. Kopieren Sie die Nachricht, senden Sie
  5. Empfangen Sie eine Antwort, fügen Sie sie in den Parser ein
  6. 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

  1. Schreiben eines einzelnen Registers (Funktionscode 06)
  2. Schreiben 20 Mal, jedes Mal berechnen Nachrichten
  3. leicht zu Fehlern, Duplikation der Arbeit

Nach der Verwendung des Tools

  1. Wählen Sie den Funktionscode 10 (Schreiben mehrere Registers)
  2. 20 Register hinzufügen:
    • Adresse: Automatische Berechnung
    • Datentyp: Wählen Sie
    • Wert: Eingabe
  3. Nachricht erzeugen einmal
  4. 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

  1. Einrichten von Simulationsdaten
  2. Erstellen von Response-Messages
  3. mit dem Response-Message - Generator
  4. Senden an den Host
  5. 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-SequenzNameBeispiel (0x12345678)
ABBig Endian12 34 56 78
BALittle Endian34 12 78 56
CDABMixed56 78 12 34
BADCMixed78 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

 

Modbus-Ingenieur braucht ein Wunderwerkzeug! RTU / TCP / ASCII-Nachrichten - Generierungsparser, 10 - mal effizienterAbbildung

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:


Wenn es nützlich ist, willkommen.+Unterstützen Sie!

Weiterleiten Sie an mehr Elektroingenieure, gemeinsam mit dem Werkzeug, um die Effizienz zu verbessern!

Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.