Modbus ist ein Anwendungsprotokoll für viele industrielle Geräte. Ein Client sendet eine Anfrage; ein Server antwortet entsprechend dem Funktionscode. Das Protokoll definiert Nachrichten und Datenbereiche, aber nicht, an welcher Registeradresse ein bestimmter Hersteller die Temperatur ablegt. Für echte Geräte benötigen Sie deshalb immer deren Registertabelle.Funktionscodes und Telegrammbytes sind hier hexadezimal angegeben: 0F entspricht dezimal 15 und 10 dezimal 16.

1. Vier Datenbereiche

  • Coils: einzelne les- und schreibbare Bits; häufige Codes sind 01, 05 und 0F.
  • Discrete Inputs: nur lesbare Bits; Code 02.
  • Input Registers: nur lesbare 16-Bit-Wörter; Code 04.
  • Holding Registers: im Protokollmodell les- und schreibbare 16-Bit-Wörter; lesen mit 03, einzelnes Register schreiben mit 06, mehrere mit 10. Ein Gerät kann Schreibzugriffe trotzdem beschränken.

03 und 04 lesen beide 16-Bit-Wörter, aber aus unterschiedlichen Bereichen. Prüfen Sie im Gerätehandbuch Funktionscode, Registernummer, Datentyp, Skalierung und Berechtigung.

2. Modbus RTU und Modbus TCP

RTU läuft oft über eine serielle Verbindung wie RS-485. Ein Rahmen besteht aus Stationsadresse, Funktionscode und Daten sowie CRC16. Geräte auf demselben Bus benötigen unterschiedliche Adressen. Baudrate, Datenbits, Parität und Stoppbits müssen auf beiden Seiten übereinstimmen. Das niederwertige CRC-Byte wird zuerst übertragen.

Modbus TCP nutzt TCP/IP, üblicherweise Port 502. Der sieben Byte lange MBAP-Header enthält Transaktionskennung, Protokollkennung, Länge und Unit Identifier. Am Ende eines TCP-Rahmens steht keine Modbus-RTU-CRC. Hinter einem TCP/Seriell-Gateway wählt der Unit Identifier häufig das nachgeschaltete Gerät aus.

3. Warum 40001 der Adresse 0 entsprechen kann

Die Bezeichnung 40001 steht üblicherweise für das erste Holding Register. Die führende 4 bezeichnet den Bereich; in der Anfrage steht ein bei null beginnender Offset. Nach dieser Konvention entspricht 40001 dem Code 03 und der Startadresse 0000, 40002 der Adresse 0001. Handbücher und Programme können stattdessen einbasierte Nummern oder nullbasierte Offsets anzeigen. Klären Sie das, bevor Sie benachbarte Register beschreiben.

Ein Register umfasst 16 Bit. Ein 32-Bit-Wert benötigt in der Regel zwei Register, deren Wortreihenfolge gerätespezifisch ist. Eine Skalierung wie Temperatur geteilt durch zehn ist ebenfalls eine Vorgabe des Geräts und keine allgemeine Modbus-Regel.

4. Zwei Holding Register lesen

Angenommen, ein Gerät ordnet Temperatur und Feuchte den Registern 40001 und 40002 zu. Die Rohwerte betragen 250 und 400, der dokumentierte Faktor jeweils 0,1. Wir lesen mit Code 03 zwei Register ab Offset null. Werte und Einheiten sind nur ein Beispiel.

PDU request:  03 00 00 00 02
PDU response: 03 04 00 FA 01 90

TCP request:  00 01 00 00 00 06 01 03 00 00 00 02
TCP response: 00 01 00 00 00 07 01 03 04 00 FA 01 90

Im Anfrage-PDU bezeichnet 03 den Code, 00 00 den Startoffset und 00 02 die Anzahl. Im Antwort-PDU steht 04 für vier folgende Datenbytes; 00 FA ist 250 und 01 90 ist 400. Mit dem angenommenen Faktor ergeben sich 25,0 °C und 40,0 %. Die TCP-Transaktionskennung lautet 0001, die Protokollkennung 0000 und der Unit Identifier 01; die MBAP-Längen lauten 0006 und 0007. Für RTU braucht dasselbe PDU zusätzlich eine Stationsadresse und eine korrekt berechnete CRC16.

5. Erste Verbindung prüfen

  • Beginnen Sie mit einem dokumentierten, lesbaren Wert und vermeiden Sie Schreibbefehle. Prüfen Sie Schnittstelle, Stationsadresse oder IP, Port und serielle Parameter.
  • Wählen Sie Bereich und Funktionscode. Klären Sie, ob Ihr Werkzeug „40001“ oder „Offset 0“ erwartet.
  • Lesen Sie wenige Register, prüfen Sie Funktionscode und Bytezahl und interpretieren Sie erst dann den Rohwert nach Handbuch.
  • Bei Zeitüberschreitung prüfen Sie Kabel, Netzwerk und Adresse. 83 02 bedeutet, dass Funktionscode 03 die Ausnahme 02 (ungültige Datenadresse) zurückgegeben hat; prüfen Sie Startoffset und Anzahl. Dies ist kein Messwert.

Sicherheit und Quellen

Lese- und insbesondere Schreibzugriffe können echte Anlagen beeinflussen. Begrenzen Sie den Zugang im Produktionsnetz und stellen Sie herkömmliches Modbus TCP nicht direkt ins öffentliche Internet. Prüfen Sie bei Bedarf Modbus Security oder eine geeignete Netztrennung.

Leave a Reply

Your email address will not be published. Required fields are marked *

laitecn@gmail.com

QQ
微信
Whatapp