Du kannst Deinen RevPi Compact auch als Modbus-TCP-Master verwenden um Slaves anzuschließen.
Du benötigst dazu:
- RevPi Compact
- Slave
- Passende Ethernet-Kabel und Ethernet-Switch
Voraussetzungen:
- Du hast einen Webbrowser auf Deinem PC installiert (z. B. Google Chrome oder Mozilla Firefox).
- Dein RevPi Compact und Dein PC befinden sich in Deinem Netzwerk.
Los geht’s!
- Verbinde die Slaves über die RJ45-Buchse mit Deinem RevPi Compact.
- Stelle die IP-Adressen der Slaves ein und notiere Dir diese. Hinweise dazu findest Du ggf. in der Bedienungsanleitung des Herstellers.
Der Modbus-TCP-Master kann nur mit genau einem Slave Daten austauschen. Wenn Du mehrere Slaves verwendest, musst du im PiCtory genau so viele Modbus-TCP-Master konfigurieren.
- Öffne Deinen Webbrowser.
- Gib die IP-Adresse Deines RevPi Compacts in die Adresszeile Deines Browsers ein.
Das Anmelde-Fenster öffnet sich.
- Melde Dich mit dem Benutzernamen „admin“ an.
- Gib Dein Passwort ein. Du findest es auf dem Aufkleber an der Seite Deines RevPi Compacts.
- Klicke auf „Login“.
Du siehst jetzt den aktuellen Gerätestatus Deines RevPi Compacts.
- Klicke auf das Register „Services“.
- Klicke auf “Enabled” in der Zeile Enable/Disable Modbus Master.
- Klicke auf den Button “Save All”.
Tipp!: Du kannst die Master-Funktion auch in der Kommandozeile aktivieren. Gib dazu folgendes Kommando ein: „sudo revpi-config enable pimodbus-master”
- Klicke auf das Register “Apps”.
- Klicke auf den Start-Button hinter dem Eintrag “PiCtory”.
PiCtory öffnet sich.
- Öffne im Device Catalog den Ordner “Virtual Devices”.
- Wähle den Modbus-TCP-Master aus.
- Halte die linke Maustaste gedrückt und ziehe den Modbus-TCP-Master auf das graue Feld mit der Überschrift empty rechts neben Deinem RevPi Compact.
Dein Modbus-TCP-Master erscheint jetzt ganz außen auf dem Configuration Board.
- Klicke auf den Modbus-TCP-Master.
- Lege im Bereich „Device Data“ die Grundeinstellungen für Deine Adapter fest. Diese Eingabe ist optional. Wenn Du viele Geräte verwendest und die Daten später in einem anderen Programm weiterverarbeiten möchtest, kann diese Eingabe sehr hilfreich sein.
Wichtig!: Für jeden Slave, den Du verwenden möchtest, brauchst Du einen virtuellen Master.
- Lege im “Value Editor” die Einstellungen für Deine TCP-Verbindung fest. Folgende Werte musst Du angeben, sie sind ganz unten in der Liste:
Parameter | Erklärung |
slave_IP_address | Die IP-Adresse des Modbus-TCP Slaves |
slave_tcp_port | Der TCP-Port des Modbus-TCP Slaves. Der Default-Wert ist nach Modbus Spezifikation “502”. Wenn dein Slave einen anderen Port benutzt, kannst Du diesen Wert hier verändern. |
- Klicke mit der rechten Maustaste auf den Modbus-TCP-Master auf dem Configuration Board.
- Ein Kontextmenü öffnet sich.
- Wähle den Eintrag “Extended Data”.
Eine Eingabemaske öffnet sich.
Du kannst hier die Modbusbefehle einstellen.
Parameter | Erklärung |
Unit ID | Bitte lies in der Bedienungsanleitung Deines Slaves nach, ob Du diese Adresse einstellen musst. Die meisten Slaves ignorieren diese Adresse. In diesem Fall wird empfohlen den Wert 255 (ungültig) einzustellen. |
Function Code | Bei Modbus gibt es Function Codes, die den Zugriff auf Daten in einer bestimmten Weise möglich machen. Wir verwenden folgende Function Codes:
READ_COILS Einzelne Bits lesen READ_DISCRETE_INPUTS Einzelnes Eingangs-Bit lesen READ_HOLDING_REGISTERS Ein ganzes Ein/Ausgangsregister (16 Bit) lesen READ_INPUT_REGISTERS Ein ganzes Eingangsregister (16 Bit) lesen WRITE_SINGLE_COIL Einzelnes Bit schreiben WRITE_SINGLE_REGISTER Ein ganzes Register schreiben WRITE_MULTIPLE_COILS Mehrere aufeinanderfolgende Bits schreiben WRITE_MULTIPLE_REGISTERS Mehrere aufeinanderfolgende Register schreiben |
Register Address | Die Modbus Registeradresse oder Bit-Adresse der Daten, auf die Du zugreifen möchtest. In der Bedienungsanleitung des Slaves findest Du die Information, wie die Register des Slaves belegt sind. Bitte beachte bzgl. der Registeradresse den Hinweis unterhalb dieser Tabelle! |
Quantity of Registers | Anzahl der Register(oder Bits) die gelesen/geschrieben werden |
Action Interval | Der Intervall mit dem der Befehl gesendet wird (in Millisekunden) |
Device Value | Der Variablenname im RevPi Prozessabbild in dem das erste Word oder Bit des Modbusbefehls gelesen bzw. geschrieben wird.
Im Dropdown-Menü werden Dir, je nach gewähltem Function Code die passenden Zieladressen des Prozessabbilds zur Auswahl angeboten. Stelle sicher, dass sich die einzelnen Befehle nicht überschneiden. |
Prüfe wie die Adressierung bei Deinem Slave angegeben ist.
Wenn der Slave, den Du verwenden möchtest, die 0 als erste Registeradresse verwendet, musst Du bei der Konfiguration zum angegebenen Wert eine 1 addieren.
Beispiel: In der Dokumentation zum Slave steht eine Registeradresse 30053. Die Adressen beginnen laut Doku bei 0. Du verwendest für dieses Register also die Adresse 30054 beim Konfigurieren eines Modbusbefehls.
- Klicke auf „File>Save“. Damit speicherst Du Deine Datei.
- Klicke auf „Tools>Reset Driver“. Damit aktivierst Du die Änderungen für den Adapter.
Möchtest Du die Einstellungen in logiCAD3 oder C weiter verwenden?
- Dann klicke auf „File>Export“.
Ein Fenster öffnet sich. Du kannst hier das Format der Datei bestimmen und den Dateinamen angeben.
Du kannst aus 2 Formaten wählen:
Export 01 erzeugt eine Datei, die sich für die Verwendung in logiCAD3 eignet.
Export 02 erzeugt eine Offset Liste, die Du als Basisinformation für ein eigenes C-Programm verwenden kannst.
- Wähle ein Format aus, mit dem Du weiter arbeiten möchtest.
- Gib einen Dateinamen an
- Klicke auf „Ok“.
Hilfe! Fehler!
Der Modbus-Master hat vorgegebene Modbus-Register für Statusmeldungen.
Tritt ein Kommunikationsfehler auf, wird der Fehlercode in das Modbus-Register „Modbus_Master_Status“ geschrieben.
Der Fehler bleibt so lange in diesem Register, bis man manuell in das Modbus-Register „Master_Status_Reset“ den Wert „1“ schreibt.
Fehlercode | Bedeutung |
0x10 | Das konfigurierte Gerät wurde nicht gefunden.
Überprüfe, ob die Verkabelung stimmt. |
0x11 | Das konfigurierte Gerät antwortet nicht oder Du verwendest eine beim Slave nicht zugelassene Registeradresse (siehe Hinweis weiter oben!).
Überprüfe, ob die Konfiguration stimmt. |
Der Modbus-Master kann bis zu 32 Aufgaben übernehmen. Für jede Aufgabe gibt es je ein Register für Status und Status Reset. Tritt ein Fehler in einer Aufgabe auf, wird der Fehlercode in das Modbus-Register „Modbus_Action_Status_[1 … 32]“ geschrieben.
Der Fehler bleibt so lange in diesem Register, bis man manuell in das Modbus-Register „Action_Status_Reset_[1 … 32]“ den Wert „1“ schreibt.
Die Fehlercodes entsprechen den Modbus-Exception-Codes wie sie in der Modbus-Spezifikation angegeben sind.
In der folgenden Tabelle werden die wichtigsten Fehlermeldungen angegeben.
Fehlercode | Name | Bedeutung |
1 | ILLEGAL FUNCTION | Der verwendete Functioncode ist nicht erlaubt. Prüfe, ob Du den richtigen Functioncode verwendest. |
2 | ILLEGAL DATA ADDRESS | Die verwendete Adresse ist nicht gültig. Das Register ist entweder schreibgeschützt oder existiert nicht. Überprüfe die Adresse. |
3 | ILLEGAL DATA VALUE | Mindestens ein Teil der verwendeten Datenwerte ist ungültig. Es wäre z. B. möglich, dass Du eine zu hohe Registeranzahl angegeben hast. Prüfe Deine Werte. |
13 | INVALID DATA | Der Slave hat mir meinen unvollständigen Paket geantwortet. Das kann z.B. auftreten nachdem die Verbindung unterbrochen wurde. Prüfe deine Verkabelung. |
110 | CONNECTION TIMED OUT | Der Slave hat nicht schnell genug oder garnicht geantwortet. Prüfe Deine Konfiguration und Verkabelung. |
Mehr zu diesem Thema findest Du in der Spezifikation von Modbus.