Ziel: ein RevPi Basismodul als Modbus RTU Server verwenden, damit ein Modbus RTU Client Daten des RevPi lesen oder schreiben kann. Die Konfiguration erfolgt in der RevPi Applikation PiCtory.

Die Verwendung des RevPi als Modbus RTU Server eignet sich für Szenarien, in denen ein übergeordneter Modbus RTU Client Prozessdaten über eine serielle RS485-Verbindung mit dem RevPi austauschen soll.

Dieses Tutorial ist anwendbar mit RevPi Basismodulen, die entweder eine integrierte RS485-Schnittstelle besitzen oder über einen USB-RS485-Adapter angebunden werden.

Voraussetzungen #

Geräte

✓ Modbus RTU Client, z. B. QModMaster auf einem Windows-PC

✓ Optional: USB-RS485-Adapter am Windows-PC, wenn QModMaster verwendet wird.

✓ Optional: USB-RS485-Adapter am RevPi, wenn keine RS485-Schnittstelle vorhanden ist.

USB-RS485-Adapter

Hardware-Installation

✓ RevPi Basismodul ist mit dem Netzwerk verbunden.

✓ RevPi Basismodul ist an die Spannungsversorgung angeschlossen.

✓ Modbus RTU Client ist über die RS485-Schnittstelle oder einen USB-RS485-Adapter mit dem RevPi verbunden.

Signal Pin

RS485-

D+

RS485+

D-

Siehe auch:

Software-Installation

✓ Webbrowser (z. B. Chrome, Firefox oder Edge)

QModMaster von SourceForge ist auf deinem Windows-PC installiert.

✓ RevPi und Modbus RTU Client befinden sich im selben Netzwerk.

✓ Adresse, Baudrate, Parität, Datenbits und Stoppbits des Modbus RTU Servers sind festgelegt.

1. Modbus RTU Server in PiCtory konfigurieren #

▷ Starte PiCtory.

▷ Ziehe das RevPi Basismodul aus dem Gerätekatalog auf den leeren Slot im Konfigurationsbereich mit der Positionsnummer 0.

▷ Ziehe einen Modbus RTU Server aus den Virtual Modbus Devices im Gerätekatalog auf das Basismodul im Konfigurationsbereich.

❯ Der Modbus RTU Server wird nun im Konfigurationsbereich angezeigt.

pictory config

▷ Wähle den Modbus RTU Server im Konfigurationsbereich aus.

▷ Konfiguriere im Werte Editor ganz unten in der Liste die folgenden Parameter:

Parameter Beschreibung

Input_

Bis zu 32 Eingabewerte, jeweils 16 Bit breit. Werte werden vom Modbus RTU Client geschrieben und können im Prozessabbild gelesen werden.

Output_

Bis zu 32 Ausgabewerte, jeweils 16 Bit breit. Werte können vom Modbus RTU Client gelesen werden.

device_path

Pfad zur Linux-Gerätedatei. Standardmäßig wird /dev/ttyRS485 verwendet. Bei USB-RS485-Adaptern kann der Pfad abweichen.

baud_rate

Geschwindigkeit der seriellen Verbindung. Standardmäßig wird 19200 verwendet.

parity

Paritätsbit-Konfiguration: Keine, Gerade oder Ungerade. Standardmäßig wird Gerade verwendet.

data_bits

Anzahl der Datenbits. Standardmäßig wird 8 verwendet.

stop_bits

Anzahl der Stoppbits. Standardmäßig wird 1 verwendet.

modbus_address

Adresse des Modbus RTU Servers am RS485-Bus. Standardmäßig wird 1 verwendet.

Note

Konfiguriere udev-Regeln für konsistente Gerätedateipfade bei der Verwendung mehrerer USB-RS485-Adapter des gleichen Typs.

▷ Im Werte Editor kannst du außerdem optional passende I/O-Namen für eine einfachere Referenz zuweisen, z. B. Modbus_Input_1.

Siehe auch Werte konfigurieren.

▷ Wähle Datei  Speichern als Start-Konfig., um die Konfiguration zu speichern.

▷ Wähle Extras  Treiber zurücksetzen, um die Konfiguration anzuwenden.

2. Modbus RTU Client einrichten #

QModMaster konfigurieren

▷ Öffne QModMaster.

▷ Setze im Hauptfenster die folgenden Parameter:

  • Modbus Mode: RTU

  • Slave Addr: Wert aus modbus_address

  • Scan Rate (ms): 1000

  • Function Code: Write Multiple Registers (0x10)

  • Start Address: 0

  • Number of Registers: 3

  • Data Format: Dec

▷ Trage Werte in die Modbus-Register ein, z. B. 1, 2 und 3.

qmodmaster config

▷ Wähle Options  Modbus RTU…​.

▷ Setze die seriellen Parameter so, dass sie mit der Konfiguration des Modbus RTU Servers in PiCtory übereinstimmen:

  • Serial port: COM-Port des USB-RS485-Adapters

  • Baud: Wert aus baud_rate

  • Data Bits: Wert aus data_bits

  • Stop Bits: Wert aus stop_bits

  • Parity: Wert aus parity

qmodmaster config

Serielle Kommunikation starten

▷ Wähle Commands  Connect, um die Kommunikation mit dem Modbus RTU Server zu starten.

▷ Wähle Commands  Read / Write, um die Werte in die Modbus-Register zu schreiben.

3. Daten im Prozessabbild prüfen #

▷ Öffne ein Terminal.

▷ Frage die geschriebenen Werte mit piTest ab:

piTest -1 -r Input_1
piTest -1 -r Input_2
piTest -1 -r Input_3

❯ Ausgabe:

2 Byte-Wert von Input_1: 1 dez (=0001 hex)
2 Byte-Wert von Input_2: 2 dez (=0002 hex)
2 Byte-Wert von Input_3: 3 dez (=0003 hex)

Werte, die ein Modbus RTU Client in die Register ab Adresse 0 schreibt, werden im Prozessabbild des RevPi unter Input_* abgelegt.

Modbus-Funktionen #

Das Modbus-Server-Modul unterstützt die folgenden Modbus-Funktionen:

  • Read Holding Registers (0x03)

  • Read Input Registers (0x04)

  • Write Single Register (0x06)

  • Write Multiple Registers (0x10)

Weitere Ressourcen #