Zum Inhalt springen
JelinaJelina DocumentationTechnische Dokumentation
Zur Website

Modbus-TCP-Erfassung

Beschreibung: Modbus kann über serielle Schnittstellen oder Netzwerkschnittstellen einschließlich Glasfaser übertragen werden. RTU verwendet die serielle Kommunikation, TCP die Ethernet-Kommunikation. Das Modbus-Protokoll folgt einem Ablauf zwischen Master und Slave. Der Modbus-Treiber im Edge-Gateway arbeitet als Master-Client und fragt aktiv Daten ab: Er sendet eine Anfrage an das Modbus-Slave-Gerät, das anhand der Anfrage eine Antwort erstellt und an das Gateway zurücksendet.

(1) Öffnen Sie auf der CommBridge-Seite den Bereich „Digitaler Zwilling“ und wechseln Sie links zu „Gerätevernetzung“.

(2) Ziehen Sie nacheinander die Plugins Modbus-Client (Master), Datenverarbeitung und MQTT-Upload in den Plugin-Arbeitsbereich, um drei Knoten zu erstellen.

(3) Verbinden Sie die drei Knoten in dieser Reihenfolge: Modbus-Client (Master) → Datenverarbeitung → MQTT-Upload.

Wählen Sie das Protokoll Modbus-TCP.

(1) Doppelklicken Sie auf Modbus-Client (Master) und klicken Sie auf „Schema hinzufügen“.

(2) Geben Sie die Verbindungseinstellungen ein und klicken Sie auf „Weiter“.

(3) Klicken Sie auf Gruppe hinzufügen, geben Sie die Gruppeninformationen ein und klicken Sie auf Bestätigen.

(4) Klicken Sie auf Daten hinzufügen, geben Sie die Datenpunktinformationen ein und klicken Sie auf Bestätigen.

(5) Klicken Sie auf Fertigstellen, um das Erfassungsschema anzulegen.

(6) Aktivieren Sie das Schema über den Schalter und klicken Sie auf Speichern.

(1) Klicken Sie im Bereich „Gerätevernetzung“ auf „Bereitstellen“, um die Bereitstellung abzuschließen.

(2) Wechseln Sie zu Digitaler Zwilling und bewegen Sie den Mauszeiger auf den Knoten Modbus-Client (Master). Die Knoteninformationen werden eingeblendet.

(3) Klicken Sie auf das Schema, um Echtzeit- und historische Daten der Datenpunkte seiner Gruppen anzuzeigen.

Erfassung (vor der Verarbeitung):

Nach der Verarbeitung (Schema im Plugin Datenverarbeitung anzeigen):

Daten können nur geändert werden, wenn der Datenpunkt den Lese-/Schreibmodus rw oder wo verwendet und die Datenerfassung ordnungsgemäß läuft.

(1) Klicken Sie beim einzelnen Datenpunkt auf Schreiben, geben Sie den Wert ein und klicken Sie auf OK.

(2) Zeigen Sie die Verlaufsdaten an.

Parameter Beschreibung Format Beispiel
Schemaname Benutzerdefinierter Name des Schemas Darf nicht leer sein Slave-Erfassung
Protokoll Modbus-Protokoll Modbus TCP, Modbus RTU Modbus TCP
Synchrone Erfassung Legt fest, ob synchron erfasst wird: Yes oder No Yes, No YES
Erfassungsintervall Abfrageintervall für das Lesen der Register jeder Gruppe innerhalb des gesamten Schemas Zahl, Bereich: (100,2147483647] 2000
Erfassungsfrist Alle Datenpunkte einer Gruppe müssen innerhalb dieser Zeit erfasst werden, andernfalls werden die Gruppendaten verworfen. Die Zeit umfasst die Telegrammverzögerung. Zahl, Bereich: (0, Erfassungsintervall] 1000
Zeitüberschreitung Maximale Dauer jeder Datenerfassung einer Gruppe innerhalb des Schemas; bei Überschreitung werden die gelesenen Daten verworfen Zahl, Bereich: (0, Erfassungsintervall] 1000
Maximale Registerzahl pro Block Maximale Anzahl von Registern bei der blockweisen Erfassung aufeinanderfolgender Datenpunkte Natürliche Zahl, Bereich: [1,120] 120
Telegrammverzögerung Mindestabstand zwischen zwei Erfassungen; Standardwert 0. Bei häufigen Zeitüberschreitungen erhöhen, andernfalls unverändert lassen. Millisekunden; Zahl, Bereich: [0, 2147483647] 0
Schreibtelegrammverzögerung Zusätzliche Wartezeit beim Schreiben; für Geräte mit langsamen Schreiboperationen erforderlich. 0 bedeutet keine zusätzliche Verzögerung. Millisekunden; Zahl, Bereich: [0, 2147483647] 0
Funktionscode zum Registerschreiben Funktionscode zum Schreiben von Halteregistern. Auto, 06, 10; siehe Erläuterung unten Auto
Änderungsbasierte Erfassung Art der Datenerfassung: No deaktiviert die änderungsbasierte Erfassung; SingleData überträgt nur geänderte Datenpunkte; WholeGroup überträgt die gesamte Gruppe, sobald sich ein Wert darin ändert. No, SingleData, WholeGroup SingleData
Rücksetzzeit der änderungsbasierten Erfassung Erzwingt eine Datenübermittlung, wenn die Daten länger als diese Zeit unverändert bleiben. 0 deaktiviert diese Auslösung. Sekunden; Zahl, Bereich: (0, 2147483647] 0
Backoff bei Fehlern Nach einer fehlgeschlagenen Erfassung wird die Wartezeit gemäß Backoff-Faktor angepasst; maximal Erfassungsintervall × maximaler Backoff-Faktor Yes, No; siehe Erläuterung unten Yes
Backoff-Faktor Faktor zur Änderung der Wartezeit bei Fehlern; muss größer als 0 und ungleich 1 sein Zahl 2
Maximaler Backoff-Faktor Grenzwert des Backoff-Faktors; nach Erreichen bleibt dieser unverändert Zahl 16

Synchrone Erfassung:

  1. Yes: Erfassungsintervall, Zeitüberschreitung und Erfassungsfrist werden für alle Gruppen des Schemas gemeinsam konfiguriert. Die Einstellung gilt für sämtliche Datenpunkte des Schemas.
  2. No: Jede Gruppe erhält eigene Einstellungen für Erfassungsintervall, Zeitüberschreitung und Erfassungsfrist.

Funktionscode zum Registerschreiben: Auto verwendet 06 für ein einzelnes Register und 10 für mehrere Register; 06 verwendet immer Funktionscode 06; 10 verwendet immer Funktionscode 10.

Backoff bei Fehlern: Bei einem Erfassungsintervall von 1 Sekunde, Backoff-Faktor 2 und maximalem Backoff-Faktor 16 ergeben sich bei wiederholten Fehlern Wartezeiten von 1 s, 2 s, 4 s, 8 s und 16 s. Bei einem Intervall von 10 Sekunden, Faktor 0.5 und Grenzfaktor 0.1 ergeben sich entsprechend 10 s, 5 s, 2.5 s und 1.25 s. Sobald die Erfassung erfolgreich ist, wird das ursprüngliche Erfassungsintervall wiederhergestellt.

Ist der Backoff-Faktor größer als 1, muss der maximale Backoff-Faktor größer als dieser sein. Ist der Backoff-Faktor kleiner als 1, muss der maximale Backoff-Faktor kleiner sein.

Parameter Beschreibung Format Beispiel
Gruppenname Benutzerdefinierter Name der Gruppe Darf nicht leer sein Gruppe eins
Slave ID Modbus-Geräteadresse, also Slave-Adresse des abgefragten Geräts Zahl, Bereich: (0,255] 1
IP IP-Adresse des Modbus-Geräts Adresse in punktierter Dezimalschreibweise 172.21.78.157
Port Portnummer des Modbus-Geräts, standardmäßig 502 Zahl, Bereich: (0,65535] 502
Erfassungsintervall Abfrageintervall für das Lesen der Register einer einzelnen Gruppe Zahl, Bereich: (100,2147483647] 2000
Erfassungsfrist Gültigkeitszeit für die Erfassung aller Datenpunkte einer Gruppe. Werden innerhalb dieser Zeit nicht alle Datenpunkte gelesen, werden sämtliche Daten der Gruppe verworfen. Zahl, Bereich: (0, Erfassungsintervall] 1000
Zeitüberschreitung Maximale Dauer jeder Datenerfassung einer einzelnen Gruppe; bei Überschreitung werden die gelesenen Daten verworfen Zahl, Bereich: (0, Erfassungsintervall] 1000

Hinweise: Ist die synchrone Erfassung in der Verbindungskonfiguration auf No gesetzt, gelten die Einstellungen für alle Datenpunkte der jeweiligen Gruppe. Die Anzahl gleichzeitig gelesener Modbus-Register ist begrenzt. Für Holding Register und Input Register können höchstens 120 aufeinanderfolgende Register pro Gruppe gelesen werden; für Discrete und Coils beträgt die Grenze 2000 aufeinanderfolgende Datenpunkte.

Parameter Voraussetzung Beschreibung Format Beispiel
Datenalias Name des Datenpunkts, innerhalb der Gruppe eindeutig Darf nicht leer sein, nicht mit einer Ziffer oder einem Unterstrich beginnen und keine Leerzeichen enthalten M
Adresse Registeradresse; innerhalb einer Gruppe eindeutig Registeradresse; innerhalb einer Gruppe dürfen keine Adressen doppelt vorkommen Zahl, Bereich: (0,2147483647) 0
Registertyp Bestimmt den Modbus-Operationscode Holding Register, Input Register, Discrete, Coils; siehe Erläuterung unten Holding Register
Datentyp Abhängig vom Registertyp Ursprünglicher Datentyp der Registerdaten uint16, int16, uint32, int32, float, boolean, combine, string, hex string; siehe Erläuterung unten uint16
Byte-Reihenfolge Abhängig von Register- und Datentyp Speicherreihenfolge für Datentypen mit mehr als einem Byte AB, BA, ABCD, CDAB, BADC, DCBA; siehe Erläuterung unten AB
Registeranzahl Abhängig von Register- und Datentyp Anzahl der Register für den Datentyp Siehe Erläuterung unten 1
Lese-/Schreibmodus Abhängig vom Registertyp Unterstützt ro (nur lesen), rw (lesen und schreiben) und wo (nur schreiben) ro, rw, wo ro
Berechnung Benutzerdefinierte Formel auf Grundlage der Datenaliase {M}/10
Offset Datentyp bit Bitoffset vom höchstwertigen zum niederwertigsten Bit nach Anpassung der Byte-Reihenfolge Zahl, Bereich: [0,15]

Beispiel: Wenn Sie die Temperatureigenschaft prüfen möchten und deren Adresse im Gerät 1 ist, setzen Sie die Registeradresse auf 1.

  1. Für die Registertypen Discrete und Coils ist der Datentyp standardmäßig boolean.
  2. Bei uint16, int16 und combine können AB oder BA gewählt werden; bei uint32, int32 und float ABCD, CDAB, BADC oder DCBA. Für andere Datentypen gibt es keine Einstellung der Byte-Reihenfolge.
  3. Bei Discrete und Coils beträgt die Registeranzahl standardmäßig 1. Für uint16, int16 und boolean ist sie standardmäßig 1, für uint32, int32 und float 2. Bei combine kann 1 oder 2 ausgewählt werden. Bei string und hex string lässt sich die Registeranzahl manuell eingeben.

16-Bit-Reihenfolge:

  1. AB: ein Registerwort; höherwertiges vor niederwertigem Wort und innerhalb des Wortes höherwertiges vor niederwertigem Byte (Big Endian).
  2. BA: ein Registerwort; höherwertiges vor niederwertigem Wort und innerhalb des Wortes niederwertiges vor höherwertigem Byte (Little Endian).

32-Bit-Reihenfolge:

  1. ABCD: zwei Registerwörter; höherwertiges vor niederwertigem Wort und innerhalb der Wörter höherwertiges vor niederwertigem Byte (Big Endian).
  2. BADC: zwei Registerwörter; höherwertiges vor niederwertigem Wort und innerhalb der Wörter niederwertiges vor höherwertigem Byte (Big Endian mit Byte-Tausch).
  3. CDAB: zwei Registerwörter; niederwertiges vor höherwertigem Wort und innerhalb der Wörter höherwertiges vor niederwertigem Byte (Little Endian mit Byte-Tausch).
  4. DCBA: zwei Registerwörter; niederwertiges vor höherwertigem Wort und innerhalb der Wörter niederwertiges vor höherwertigem Byte (Little Endian).

Der Registertyp bestimmt Datentyp, Registeranzahl und Lese-/Schreibmodus.

0x, 1x, 3x und 4x bezeichnen die im Modbus-Protokoll festgelegten Adressbereiche.

Registertyp Bezeichnung SPS-Registeradresse Protokolladresse Lese-/Schreibzugriff Beschreibung
Holding Register Halteregister (4x) 40001-49999 0000H-FFFFH Lesen und Schreiben; Lesen: 0x03, Schreiben: 0x06 Ausgangs- oder gespeicherte Parameter, die während des Steuerungsbetriebs gesetzt werden
Input Register Eingangsregister (3x) 30001-39999 0000H-FFFFH Nur lesen, 0x04 Eingangsparameter, die die Steuerung während des Betriebs von externen Geräten erhält
Discrete Diskrete Eingänge (1x) 10001-19999 0000H-FFFFH Nur lesen, 0x02 Eingänge, deren Zustand durch externe Signale verändert wird
Coils Spulenstatus (0x) 00001-09999 0000H-FFFFH Lesen und Schreiben; Lesen: 0x01, einzelne Spule schreiben: 0x05, mehrere Spulen schreiben: 0x0F Ausgänge; der Ausgangszustand eines Bits kann gesetzt und gelesen werden

Die Dateninterpretation ergibt sich aus dem ursprünglichen Datentyp, der Byte-Reihenfolge innerhalb der Register und der Reihenfolge der Register. Jeder Buchstabe steht für ein Byte.

  1. Ursprünglicher Datentyp: uint16, int16, uint32, int32, float, boolean, combine, string, hex string.
  2. Byte-Tausch innerhalb eines Registers: Die beiden 8-Bit-Hälften eines 16-Bit-Registers werden vertauscht. Bei 16 Bit gibt es nur AB (höherwertiges Byte zuerst) und BA (niederwertiges Byte zuerst).
  3. Registertausch: Die beiden 16-Bit-Wörter eines 32-Bit-Werts werden vertauscht, beispielsweise ABCD und CDAB.

Ursprüngliche Datentypen:

Name Beschreibung Registeranzahl
uint16 Vorzeichenlose 16-Bit-Ganzzahl 1
int16 Vorzeichenbehaftete 16-Bit-Ganzzahl 1
uint32 Vorzeichenlose 32-Bit-Ganzzahl 2
int32 Vorzeichenbehaftete 32-Bit-Ganzzahl 2
float 32-Bit-Gleitkommazahl 2
combine 1、2
boolean Boolescher Wert 1
string ASCII-Zeichenfolge Konfigurierbar
hex string Hexadezimale Zeichenfolge Konfigurierbar

Reihenfolge höher- und niederwertiger Bytes bzw. Wörter:

Attributwert Beschreibung
AB Register aus 2 Bytes: höherwertiges vor niederwertigem Byte (normale Reihenfolge)
BA Register aus 2 Bytes: niederwertiges vor höherwertigem Byte (umgekehrte Reihenfolge)
ABCD 2 Wörter: höherwertiges vor niederwertigem Wort; innerhalb der Wörter höherwertiges vor niederwertigem Byte (Big Endian)
BADC 2 Wörter: höherwertiges vor niederwertigem Wort; innerhalb der Wörter niederwertiges vor höherwertigem Byte (Big Endian mit Byte-Tausch)
CDAB 2 Wörter: niederwertiges vor höherwertigem Wort; innerhalb der Wörter höherwertiges vor niederwertigem Byte (Little Endian mit Byte-Tausch)
DCBA 2 Wörter: niederwertiges vor höherwertigem Wort; innerhalb der Wörter niederwertiges vor höherwertigem Byte (Little Endian)