Modbus Master

<< Click to Display Table of Contents >>

Navigation:  Komponenten > Treiber >

Modbus Master

Der Modbus-Treiber ist eine unsichtbare Server-Komponente mit der Möglichkeit Modbus Gateways anzubinden.

 

Spezifikation Modbus

Das Modbus-Protokoll wurde ursprünglich von der Firma Modicon (heute Schneider Electric) für den Datenverkehr mit ihren Controllern entwickelt. Daten wurden in Form von 16-Bit-Registern (Integer-Format) oder als Status-Informationen in Form von Datenbytes übertragen. Im Laufe der Zeit wurde das Protokoll kontinuierlich erweitert. Modbus TCP/UDP ist eine weitere Kommunikationsart.

Das Modbus-Protokoll ist ein Single-Master Protokoll. Dieser Master steuert die gesamte Übertragung und überwacht eventuell auftretende Timeouts (keine Antwort vom adressierten Gerät). Die angeschlossenen Geräte dürfen nur nach Anforderung durch den Master Telegramme versenden.

Modbus TCP/UDP ist Teil der Norm IEC 61158. Eine Spezifikation findet sich unter: http://www.modbus.org.

 

Unterstützt werden:

Modbus RTU (Serial), ASCII (Serial),

TCP, RTU over TCP, ASCII over TCP und UDP-IP (auch Secure).

 

Hinweis: Beim Auslesen mehrerer Geräte kommt es zu einer 100ms Zeitverzögerung zwischen 2er Geräten.

 

Datenpunkte der Komponente

Name

Typ

Funktion

Abfrage zyklisch - Autostart

Bidirektional

Hier wird ausgeben ob die zyklische Abfrage aktiv ist. Über ein Aus-Signal wird die zyklische Abfrage deaktiviert. Mit einem Ein-Signal aktiviert.

Abfrage zyklisch - Pause [s]

Bidirektional

Hier wird die eingestellte Pausenzeit zwischen 2 Abfragen ausgegeben. Wird ein ganzzahliger Wert auf den Datenpunkt gesendet ändert sich die Pausenzeit entsprechend. Dies ist z.B. mit einer Touch-Werteingabe möglich.

Abfrage einmalig

Eingang

Über ein Ein-Signal an diesem Eingang wird eine einmalige Abfrage der Werte ausgelöst. Jedes weiteres Ein-Signal löst eine weitere Abfrage aus.

Aktualisierung wird durchgeführt

Ausgang

Für die Dauer der Aktualisierung wird an diesem Ausgang ein An-Signal ausgegeben.

Diagnose [Daten]

Ausgang

Ausgabe der Rohdaten für jedes ausgelesene Register.

Diagnose [Text]

Ausgang

Hier werden Fehlertexte ausgegeben. Diese können z.B. mit der Komponente "Protokollfenster" angezeigt werden. Verbunden mit dem Eingang [Signal] des Protokollfensters werden dort die Diagnoseinformationen angezeigt. Sind mehrere Treiber vorhanden, können die Anzeigen über den Debugger umgeschaltet werden.

Dynamisch

Ordner

Im Ordner Dynamisch werden die Unterordner für Einheit, Gerätestatus, Wert und Wert (Faktor) angelegt.

Einheit: Text aus dem Kanaleditor "Einheit"

Gerätestatus: Je Geräte-ID gibt es 3 Datenpunkte. Gerät aktiv für das (de)aktivieren der Geräteabfrage, Gerätestatus für die Ausgabe, ob das Gerät auslesbar ist (true) und Geräte Warnung, welches true ausgibt, wenn die Abfrage misslungen ist.

Wert: Datenpunkt für den angelegten Kanal ohne Verrechnung mit dem Faktor

Wert (Faktor): Datenpunkt für den angelegten Kanal mit Verrechnung des Faktors

Erweiterte Diagnose

Eingang

Über ein An-Signal an diesem Eingang wird die Diagnoseausgabe erweitert. Verbunden mit dem Eingang [Signal] des Protokollfensters werden dort die Diagnoseinformationen angezeigt.

Fehlerhafte Geräte

Ausgang

Ausgabe der Geräte-ID als Text, die nicht ausgelesen werden können.

Mindestens ein Wert außerhalb des Bereiches

Ausgang

Wurden im Kanaleditor Grenzen für einen Wert eingetragen und ist dieser unter-/überschritten, wird an diesem Datenpunkt ein AN-Signal ausgegeben. Eine entsprechende Information wird auch am Diagnose Ausgang ausgegeben.

Ping Status

Ausgang

Bei einer IP-Verbindung kann die Verbindung des Gerätes über einen Ping Check zusätzlich geprüft werden. Ein Ein-Signal zeigt, ob eine Verbindung besteht.

Schreibzyklus wird durchgeführt

Ausgang

Während dem Schreibzyklus wird ein An-Signal ausgegeben.

Schreibzykluszeit [ms]

Ausgang

Ausgabe der Zeit in Millisekunden, wie lange das Schreiben gedauert hat.

Senden einmalig

Eingang

Über ein Ein-Signal an diesem Eingang wird ein einmaliges Senden der Werte ausgelöst. Jedes weiteres Ein-Signal löst ein weiteres Senden aus.

Senden zyklisch - Autostart

Bidirektional

Hier wird ausgeben ob das zyklische Senden aktiv ist. Über ein Aus-Signal wird das zyklische Senden deaktiviert. Mit einem Ein-Signal aktiviert.

Senden zyklisch - Pause [s]

Bidirektional

Hier wird die eingestellte Pausenzeit zwischen 2 Sendetelegrammen ausgegeben. Wird ein ganzzahliger Wert auf den Datenpunkt gesendet ändert sich die Pausenzeit entsprechend. Dies ist z.B. mit einer Touch-Werteingabe möglich.

Treiber An/Aus

Bidirektional

Über ein Ein-Signal wird der Treiber aktiviert. Der voreingestellte Zustand der Treibers aus den Eigenschaften wird beim Start der Simulation bzw. des Servers ausgegeben.

Treiber Gateway - BACnet Server

Bidirektional

Bidirektionale Kommunikationsschnittstelle zwischen Modbus Master und BACnet Server. Siehe Treiber Gateway.

Treiber Gateway - Dateilogger

Ausgang

Dieser Datenpunkt kann mit dem Dateilogger verbunden werden. Dadurch werden alle Daten aus dem Modbus direkt an Dateilogger übertragen.

Treiber Gateway - MQTT Client

Bidirektional

Bidirektionale Kommunikationsschnittstelle zwischen Modbus Master und MQTT Client oder MQTT Broker. Siehe Treiber Gateway. Für mehrere Modbus-Master Anbindungen, wird empfohlen einen eigenen MQTT-Client zu verwenden.

Update-Zeit [ms]

Ausgang

Gibt die Zeit für einen Geräteupdate in Millisekunden aus.

Verbindung - COM Port

Bidirektional

Hier kann zur Laufzeit der COM-Port des Treibers geändert werden.

Verbindung - IP Adresse

Bidirektional

Hier kann zur Laufzeit die IP-Adresse des Treibers geändert werden.

Verbindungsstatus

Ausgang

Bei erfolgreicher Verbindung zum Modbus-Gateway wird ein Ein-Signal ausgegeben, Aus bei Fehler, Undefiniert wenn der Treiber ausgeschaltet ist.

 

 

Eigenschaften der Komponente

Name

Standard

Funktion

Kanäle

 

Hier werden die importierten bzw. manuell angelegten Kanäle aufgelistet. Diese erscheinen dann als Unterordner im Datenpunkt-Ordner Dynamisch. Die  Beschreibung des Modbus Kanaleditors ist im Unterkapitel.

Modbus-Verbindung

Serial ...

Hier wird die Verbindungsart zum Modbus Gerät eingestellt (Com-Port oder IP-Adresse)

Modbus Optionen

...

Hier werden die Modbus Verbindungsoptionen eingestellt

Treiber An/Aus

 

Definiert, ob der Treiber bei Projektstart automatisch aktiviert wird.

 

 

Beispiele

- LAN zu RS485 Gateway

- ModBus TCP M-Bus Anbindung

- ModBus TCP Wago 750 Anbindung

 

 

 

Grundsätzlich ist es möglich, Daten aus einem Modbus Master, an einen Modbus-Slave weiter zu geben.
Hierbei ist es wichtig, dass die beiden Modbus-Linien sauber getrennt werden.

Hier ein Schema, welches das verdeutlichen soll:

ModbusMasterSlave

 

Wird im EisBaer ein Modbus-Master verwendet, sind die Einstellungen und Register der Anleitung aus dem Modbus Slave zu übernehmen.

Wird im EisBaer ein Modbus Slave verwendet, muss geprüft werden, was der externe Modbus Master kann und welche weiteren Slave Geräte auf der Modbus-Linie vorhanden sind.

Es empfiehlt sich, dass die Geräte ID und auch die Registeradressen im EisBaer-Slave eindeutig eingestellt werden.

Damit ist sichergestellt, dass keine 2 Master auf einen Slave zugreifen können. Außerdem hilft es, die Slave Komponenten besser zu unterscheiden.

In der oben dargestellten Grafik entspricht der schwarze Balken der Trennung der beiden Systeme. Die Datenpunkte der Treiber-Komponenten werden 1:1 verknüpft.

Hinweis noch zur TCP-Verbindung: in manchen Fällen wird der Modbus Port 502 durch die Firewall geblockt.

 

 

Modbus in Kürze

 

Ein einfaches Master/Slave-Protokoll (heute auch Client/Server): der Master fragt aktiv ab, der Slave — das Feldgerät — antwortet.

 

Transport & Adressierung

 

- RTU und ASCII laufen über serielle Leitung (RS-485, selten RS-232), TCP und UDP über Ethernet/IP (Port 502) — der Inhalt ist identisch, nur der Transport unterscheidet sich.

- Modbus/TCP Security: TCP-Verbindungen lassen sich optional TLS-verschlüsselt aufbauen.

- Unit-ID: bei RTU die eindeutige Geräteadresse 1–247, bei TCP oft 1 oder 255.

- Register = 16 Bit (ein „Word"). Größere Werte über mehrere Register: 32-Bit (Int32/Float32) = 2, 64-Bit = 4 Register.

- Byte-/Word-Order: ABCD ist Modbus-Standard (Big-Endian); CDAB (Word-Swap) ist bei vielen SPS für Floats üblich. Falsche Reihenfolge → unsinnige Werte. Der Decoder hilft, die richtige zu finden.

 

Die vier Datenbereiche

 

- Coils (FC01): einzelne, schreibbare Bits — z. B. Relais.

- Discrete Inputs (FC02): einzelne, nur lesbare Bits — z. B. Schalterzustände.

- Holding Register (FC03): 16-Bit-Register, lesen & schreiben — Sollwerte, Parameter.

- Input Register (FC04): 16-Bit-Register, nur lesen — Messwerte.

 

 

Funktionscodes

Funktionscode

Bezeichnung

Typ

Beschreibung

FC01

Read Coils

Lesen

Mehrere Coils (schreibbare Bits) lesen.

FC02

Read Discrete Inputs

Lesen

Mehrere Eingangs-Bits lesen (nur lesbar).

FC03

Read Holding Registers

Lesen

Holding-Register lesen — der häufigste Lesecode.

FC04

Read Input Registers

Lesen

Input-Register lesen (Messwerte).

FC05

Write Single Coil

Schreiben

Ein einzelnes Bit setzen oder löschen.

FC06

Write Single Register

Schreiben

Ein einzelnes 16-Bit-Register schreiben.

FC15

Write Multiple Coils

Schreiben

Mehrere Coils in einem Telegramm schreiben.

FC16

Write Multiple Registers

Schreiben

Mehrere Register in einem Telegramm — z. B. ein 32-Bit-Wert über 2 Register.

FC23

Read/Write Multiple

Beides

Lesen und Schreiben in einem Telegramm (spart einen Umlauf).

FC43

Read Device Identification

Lesen

Hersteller, Produktname und Version als Klartext auslesen.