- Jelina-Überblick
- CommBridge
- Datenerfassung
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. Knoten erstellen
Abschnitt betitelt „1. Knoten erstellen“(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.

2. Schema erstellen
Abschnitt betitelt „2. Schema erstellen“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.

3. Ergebnisse anzeigen
Abschnitt betitelt „3. Ergebnisse anzeigen“(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):

4. Daten schreiben
Abschnitt betitelt „4. Daten schreiben“Daten können nur geändert werden, wenn der Datenpunkt den Lese-/Schreibmodus
rwoderwoverwendet 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.

5. Konfigurationsparameter
Abschnitt betitelt „5. Konfigurationsparameter“Verbindungseinstellungen
Abschnitt betitelt „Verbindungseinstellungen“| 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:
- 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.
- 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.
Gruppe hinzufügen
Abschnitt betitelt „Gruppe hinzufügen“| 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.
Daten hinzufügen
Abschnitt betitelt „Daten hinzufügen“| 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.
- Für die Registertypen Discrete und Coils ist der Datentyp standardmäßig boolean.
- 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.
- 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:
- AB: ein Registerwort; höherwertiges vor niederwertigem Wort und innerhalb des Wortes höherwertiges vor niederwertigem Byte (Big Endian).
- BA: ein Registerwort; höherwertiges vor niederwertigem Wort und innerhalb des Wortes niederwertiges vor höherwertigem Byte (Little Endian).
32-Bit-Reihenfolge:
- ABCD: zwei Registerwörter; höherwertiges vor niederwertigem Wort und innerhalb der Wörter höherwertiges vor niederwertigem Byte (Big Endian).
- BADC: zwei Registerwörter; höherwertiges vor niederwertigem Wort und innerhalb der Wörter niederwertiges vor höherwertigem Byte (Big Endian mit Byte-Tausch).
- CDAB: zwei Registerwörter; niederwertiges vor höherwertigem Wort und innerhalb der Wörter höherwertiges vor niederwertigem Byte (Little Endian mit Byte-Tausch).
- DCBA: zwei Registerwörter; niederwertiges vor höherwertigem Wort und innerhalb der Wörter niederwertiges vor höherwertigem Byte (Little Endian).
6. Modbus-Protokollparameter
Abschnitt betitelt „6. Modbus-Protokollparameter“Der Registertyp bestimmt Datentyp, Registeranzahl und Lese-/Schreibmodus.
Registertypen
Abschnitt betitelt „Registertypen“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 |
Datentypen
Abschnitt betitelt „Datentypen“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.
- Ursprünglicher Datentyp: uint16, int16, uint32, int32, float, boolean, combine, string, hex string.
- 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).
- 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) |