Modbus TCP¶
Das Modbus-Protokoll (Norm IEC 61158) ist ein Protokoll zum Datenaustausch zwischen einem Modbus Server und einem Modbus Client. Für Modbus TCP is der Port 502 reserviert. Es können dabei folgende Daten gelesen, bzw. geschrieben werden:
Datentyp |
Einheit |
Zugriff |
|---|---|---|
Digitale Ausgänge |
[Bit] |
Lesen & Schreiben |
Digitale Eingänge |
[Bit] |
Lesen |
Analoge Eingänge |
[16Bit] |
Lesen |
Analoge Ein-/Ausgänge |
[16Bit] |
Lesen & Schreiben |
Folgende Modbus-Funktionen sind implementiert:
Nummer |
Name |
Server |
Client |
Beschreibung |
|---|---|---|---|---|
FC1 |
Read Coils |
Ja |
Ja |
mehrere digitale Ausgänge zurück lesen |
FC2 |
Read Discrete Inputs |
Ja |
Ja |
mehrere digitale Eingänge lesen |
FC3 |
Read Holding Register |
Ja |
Ja |
mehrere analoge Ein-/Ausgänge lesen |
FC4 |
Read Input Register |
Ja |
Ja |
mehrere analoge Ein-/Ausgänge lesen |
FC5 |
Write Single Coil |
Ja |
Nein |
einen digitalen Ausgang setzten |
FC6 |
Write Single Register |
Ja |
Nein |
einen analogen Ausgang schreiben |
FC15 |
Write Multiple Coils |
Ja |
Ja |
mehrere digitale Ausgänge setzen |
FC16 |
Write Multiple Registers |
Ja |
Ja |
mehrere analoge Ausgänge schreiben |
FC23 |
Read/Write Multiple Registers |
Nein |
Ja |
mehrere analoge Ausgänge schreiben und gleichzeitig Ein-/Ausgänge lesen |
Modbus TCP Server¶
Im Gefasoft Modbus TCP Server werden Datenblöcke angelegt, die von einem Modbus TCP Client gelesen und beschrieben werden können. Jeder Datenblock muss dabei einen eindeutigen Adressbereich bestehend aus Startadresse und Datenlänge haben. Die Einheit der Startadresse, bzw. der Datenlänge ist dabei abhängig vom Datentyp. Digitale Ein-/Ausgänge werden in [Bit] adressiert und analoge Ein-/Ausgänge in [16Bit] bzw. [WORD]. Die Datenbereiche der digitalen Ein-/Ausgänge und analoge Ein-/Ausgänge dürfen sich nicht überschneiden !
Type: Modbus TCP Server
ID: ID vergeben
Name suffix: Steuerung benennen
Create: Button drücken, um Objekt zu generieren
DisplayName: Steuerung benennen
Ip/Port: Eintragen der IP Adresse und des Port für den Modbus TCP Server Listener.
UnitIdentifier: Der Gefasoft Modbus-Server ignoriert den vom Client empfangenen UnitIdentifier. Da es nur eine Unit gibt, werden alle UnitIdentifier akzeptiert. Der Datenblock wird über die vom Client empfangene Startadresse identifiziert.
+: Hinzufügen von Datenbereichen, die für Kommunikation verwendet werden sollen
DatenBlockID: ID für diesen Datenbereich.
Name: Name des Datenbereichs
Count: Datenanzahl in [Bit] bei digitalen Ein-/Ausgängen, bzw. in [16Bit] bei analogen Ein-/Ausgängen.
EType: Datentyp
Datenblock Typ |
Einheit |
Impementiert |
Client-Zugriff |
|---|---|---|---|
EDigitalInputs |
[Bit] |
Ja |
digital[Bit] & analog[16Bit] Lesen |
EDigitalOutputs |
[Bit] |
Ja |
digital[Bit] & analog[16Bit] Lesen & Schreiben |
EHoldingRegisters |
[16Bit] |
Ja |
digital[Bit] & analog[16Bit] Lesen & Schreiben |
EInputRegisters |
[16Bit] |
Ja |
digital[Bit] & analog[16Bit] Lesen |
EOutputRegisters |
[16Bit] |
Ja |
digital[Bit] & analog[16Bit] Lesen & Schreiben |
EInputRegistersAcyclic |
[16Bit] |
Nein |
keine |
Hinweis
Da beim Viper Modbus TCP Server die Prozessdaten im Arbeitsspeicher gehalten werden, ist ein Zugriff auf alle implementierten Datenblock Typen über analoge [16Bit] und digitale [1Bit] Modbus Funktionen möglich.
StartAddress: Startadresse der Daten in [Bit] bei digitalen Ein-/Ausgängen, bzw. in [16Bit] bei analogen Ein-/Ausgängen.
TwistRegisterBytes: High und Low Byte beim Registerzugriff (bei analogen Ein-/Ausgängen) vertauschen.
Acyclic inputregisters: Beim Gefasoft Modbus-Server sind azyklische Registerzugriffe nicht implementiert. Alle Daten befinden sich im Prozessabbild im Arbeitsspeicher und werden direkt gelesen und beschrieben.
FileName: Pfad auf eine Datei um die Daten des Datenblocks permanent zu sichern. Beim Beenden werden die Daten gesichert und beim Starten wieder gelesen.
Modbus TCP Client¶
Über den Gefasoft TCP Client werden Daten mit einem Modbus TCP Server ausgetauscht.
Type: Modbus TCP Client
ID: ID vergeben
Name suffix: Steuerung benennen
Create: Button drücken, um GInOut Hardware-Objekt anzulegen.
DisplayName: Steuerung benennen
Ip/Port: Eintragen der IP Adresse und des Port des Modbus TCP Servers mit dem sich der Client verbinden soll.
UnitIdentifier: Unit-ID für alle Daten, die vom Server abgefragt werden (Der UnitIdentifier ist Bestandteil des Modbus-Headers).
+: Hinzufügen von Datenbereichen, die für Kommunikation verwendet werden sollen
DatenBlockID: ID für diesen Datenbereich.
Name: Name des Datenbereichs
Count: Datenanzahl in [Bit] bei digitalen Ein-/Ausgängen, bzw. in [16Bit] bei analogen Ein-/Ausgängen.
EType: Datentyp
Typ |
Einheit |
Implementiert |
|---|---|---|
EDigitalInputs |
[Bit] |
Ja |
EDigitalOutputs |
[Bit] |
Ja |
EHoldingRegisters |
[16Bit] |
Ja |
EInputRegisters |
[16Bit] |
Ja |
EOutputRegisters |
[16Bit] |
Ja |
EInputRegistersAcyclic |
[16Bit] |
Ja |
StartAddress: Startadresse der Daten in [Bit] bei digitalen Ein-/Ausgängen, bzw. in [16Bit] bei analogen Ein-/Ausgängen.
TwistRegisterBytes: High und Low Byte beim Registerzugriff (bei analogen Ein-/Ausgängen) vertauschen.
Acyclic inputregisters: Manche analoge Daten befinden sich nicht im Prozessabbild des Modbus Servers. Diese müssen dann über EInputRegistersAcyclic (FC23) ausgelesen werden. Dem Modbus Server wird über die Parameter ‚ReadAcyclStartAddressWrite = Zieladresse für Registernummer‘ und ‚ReadAcyclDataWrite = zu lesende Registernummer‘ mitgeteilt, welche Prozessdaten er dem Client schicken soll.
Hinweis
Für analoge Ausgänge (Register) muss die Datenausrichtung auf zwei Byte gestellt werden, da die Einheit zum Übertragen der Daten im Modbus Protokoll [16Bit] ist !
Durch doppelklicken des Datenknotens (1) wird der Parameterdialog für die Dateneinstellungen geöffnet. Der Parameter alignment (2) muss auf ‚2‘ gestellt werden. Auch im Dateneditor (3) können die Daten dann immer nur 16Bit-weise geschrieben werden.
Hinweis
Bei einigen Modbus TCP Bus Kontrollern ist es nötig den Watchdog auf Serverseite abzuschalten, da ansonsten keine fehlerfreie Kommunikation mit dem GInOut Modbus TCP Client möglich ist.
Watchdog des Bus Controller B&R X20BC0087 deaktivieren
cmd.exe Starten
folgende Befehle eingeben:
telnet 192.168.100.1
fc6 0x1043 0xC0
flash store
quit
Watchdog des Bus Controller Beckhoff BK9100 deaktivieren
Modbus TCP Client im HW-Explorer anlegen (172.16.17.1:502).
Datenblock Holdingregister Adresse 4384 (0x1120) anlegen. Das ist das Register für die Watchdog Zeit [ms].
GInOut-Daten für den Datenblock anlegen und den Wert ‚0‘ in das Register 4384 (0x1120) schreiben.