Zum Hauptinhalt springen

Modbus TCP

Modbus ist das älteste und am weitesten verbreitete industrielle Kommunikationsprotokoll. Nahezu alle Messgeräte, Frequenzumrichter und allgemeinen Industriegeräte unterstützen Modbus.

Dieses Gateway unterstützt Modbus TCP (Ethernet) und Modbus UDP. Geräte mit reiner Serienschnittstelle (RS-485) müssen über ein Modbus-Gateway (RS-485 → Ethernet) angebunden werden.


Eingabefelder des Registrierungsformulars

EingabefeldWas wird eingetragenBeispiel
IP-AdresseIP des Modbus-Slaves192.168.0.50
PortModbus-Port502 (Standard)
Antwort-Timeout (request-timeout)Maximale Wartezeit auf die Slave-Antwort (ms)5000 (5 Sekunden)

Modbus kennt kein Benutzer-/Passwortkonzept. Wer die IP erreicht, kann Werte lesen.


PLC-Adressnotation der Tags

Modbus unterscheidet die folgenden 4 Speicherbereiche.

BereichNotationsbeginnBedeutung
Holding Registerholding-register:N16 Bit, Lesen/Schreiben — am häufigsten
Input Registerinput-register:N16 Bit, nur Lesen
Coilcoil:N1 Bit, Lesen/Schreiben
Discrete Inputdiscrete-input:N1 Bit, nur Lesen

N ist die im Slave-Handbuch angegebene Adressnummer (beginnt meist bei 1).

Notation mit Angabe des Datentyps

Auch innerhalb desselben Speicherbereichs kann die Interpretation als 16 Bit / 32 Bit / Gleitkommazahl / Zeichenkette usw. unterschiedlich sein, daher lässt sich der Datentyp mit angeben.

NotationBedeutung
holding-register:1einfache 16-Bit-Ganzzahl (signed)
holding-register:1:UINT16-Bit-Ganzzahl ohne Vorzeichen
holding-register:1:DINT32-Bit-Ganzzahl (belegt zwei Speicherstellen)
holding-register:1:REAL32-Bit-Gleitkommazahl (belegt zwei Speicherstellen)
holding-register:1:LREAL64-Bit-Gleitkommazahl (belegt vier Speicherstellen)
holding-register:100:STRING[10]ASCII-Zeichenkette aus 100–109
coil:1Coil Nr. 1 (1 Bit)

Ohne Angabe des Datentyps wird der Wert als 16-Bit-Ganzzahl interpretiert. Bei Werten ab 32 Bit ist die Angabe zwingend erforderlich.


Datenformat / Formatzusatz

Die Felder [Datenformat] und [Formatzusatz] unter Tag-Registrierung ordnen Sie am besten wie folgt zu.

Wert im PLCDatenformatFormatzusatzBeispiel PLC-Adresse
Coil / Bit-EingangBoolean(leer)coil:1 oder discrete-input:1
16-Bit-GanzzahlInteger(leer)holding-register:1
16-Bit-Ganzzahl ohne VorzeichenIntegerUIholding-register:1:UINT
32-Bit-GanzzahlIntegerDWholding-register:1:DINT
32-Bit-Gleitkommazahl (am häufigsten)FloatREALholding-register:1:REAL
64-Bit-GleitkommazahlDoubleLREALholding-register:1:LREAL
Zeichenkette mit N ZeichenStringSTR[N]holding-register:10:STRING[N]

Häufige Probleme und Lösungen

Symptom / MeldungMögliche UrsacheLösung
„Read timeout" / verzögerte AntwortVerzögerte Slave-Antwort, Kabel / Firewall / Port (502) blockiertErreichbarkeit mit ping, telnet <ip> 502 prüfen. Antwort-Timeout erhöhen und erneut versuchen
Falsche Adressnotation (Invalid address)Tippfehler im FormatDoppelpunkt exakt setzen, z. B. holding-register:1
Es erscheint immer nur 0Falscher Bereichstyp (z. B. Holding-Register wird als Input gelesen)Im Slave-Handbuch prüfen, ob „FC 03 / 04 / 01 / 02" zutrifft
32-Bit-Gleitkommazahl wird verfälscht dargestelltAbweichende Byte-/Word-Reihenfolge des SlavesIst der Slave Little-Endian, den Datentyp auf :UDINT_LSWORD_FIRST o. Ä. ändern

Probleme mit der Byte-Reihenfolge sind herstellerabhängig; am schnellsten kommen Sie über das Handbuch oder einen Vergleich mit einem anderen Werkzeug (z. B. Modbus Poll) weiter.


Test mit dem Simulator

Auch ohne PLC lässt sich die Funktion mit einem Modbus-Simulator überprüfen.

  • Wählen Sie bei [Verbindung hinzufügen] in der Kartenliste Simulator → Modbus-Simulator, startet das Gateway den Simulatorprozess automatisch und stellt die Verbindung her.
  • Ohne externes Zusatzwerkzeug erscheinen sofort Testwerte in den Holding-Registern.

Ausführlichere Beispiele / automatisierte Registrierung

Siehe die Modbus-Beispiele unter Erweitert — REST API.