RFID-Signale lesen mit RevPi Connect als Modbus-RTU-Master

Im folgenden Beispiel verwenden unseren RevPi Connect als Modbus-RTU-Master und schließen daran einen RFID-Kartenleser an.

Du benötigst dazu:

  • RevPi Connect
  • Slave
  • Passende Kabel  mit D-Sub 9-Steckern
  • Adapter (z. B. Shopartikel 200018 oder 200019)
  • Internetverbindung

Voraussetzungen:

  • Du hast einen Webbrowser auf Deinem PC installiert (z. B. Google Chrome oder Mozilla Firefox).
  • RevPi Connect befindet sich in Deinem Netzwerk.

Slave an das RevPi Connect anschließen

  • Verbinde die eine USB-Buchse mit dem Adapter.
  • Verbinde den Adapter über die D-Sub-9-Buchse mit dem Slave.
  • Schließe Dein RevPi Connect an die Spannungsversorgung an.

ModbusRTU-Netzwerk-Daten ermitteln

Um den Slave zu konfigurieren, benötigen wir vorab einige Daten, damit wir den Slave über unseren RevPi Connect ansprechen können. Diese Daten finden wir im Handbuch unseres Slaves.
In diesem Beispiel verwenden wir den RFID-Kartenleser “Iveno RFID MODBUS Reader RFID-MB-10” als Slave.

  • Notiere Dir folgende Daten aus dem Handbuch Deines Slaves:
Was         Wert (Beispieldaten für den RFID Kartenleser)
Schnittstelle /dev/ttyUSB0
Baudrate 9600
Datenbits 8
Stoppbits 1
Parität Keine
Slave Adresse 1
Modbus Funktion Read Holding Registers
Modbus Register Transponder code [0] 1000
Modbus Register Transponder code [1] 1001
Modbus Register Transponder code [2] 1002
Modbus Register Transponder code [3] 1003
Modbus Register Transponder code [4] 1004

Modbus-RTU-Master-Funktion aktivieren

  • Starte RevPi Status.
  • Klicke auf das Register SERVICES.
  • Aktiviere Modbus Master.
  • Klicke Button Save All.

Du kannst die Master-Funktion auch in der Kommandozeile aktivieren. Gib dazu folgendes Kommando ein: sudo revpi-config enable pimodbus-master.

Modbus-RTU-Master konfigurieren

  • Starte PiCtory.
  • Öffne im Device Catalog den Ordner Virtual Devices.
  • Wähle den Modbus RTU-Master aus.
  • Halte die link Maustaste gedrückt und ziehe den Modbus RTU-Master auf Dein RevPi Connect.

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.

Lege im “Value Editor” die Einstellungen für die serielle Verbindung fest.  Die Werte für unseren Slave haben wir bereits aus der Bedienungsanleitung des Sensors ermittelt:

  • device_path: USB Gerätepfad (siehe lsusb –v und ls /dev/ttyU*)
  • baud_rate: 9600
  • parity: None
  • data_bits: 8
  • stop_bits: 1
  • Klicke mit der rechten Maustaste auf den Modbus-RTU-Master auf dem Configuration Board.
  • Ein Kontextmenü öffnet sich.
  • Wähle den Eintrag “Extended Data”.

Eine Eingabemaske öffnet sich.

Hier stellen wir die Modbusbefehle ein. In diesem Beispiel benötigen wir einen Befehl, der die Werte des RFID-Sensors liest. Die nötigen Informationen dazu haben wir bereits aus der Bedienungsanleitung des Sensors ermittelt:

Slave Addr: 1

Function Code: READ_INPUT_REGISTERS

Register Addr.: 1000

Quantity of Registers: 5


Modbus Aufgaben Definieren

Konfiguration speichern

Klicke auf „File>Save“. Damit speicherst Du Deine Datei.

Klicke auf „Tools>Reset Driver“. Damit aktivierst Du die Änderungen für den Adapter.

Werte im Prozessabbild abfragen

  • Öffne die Kommandozeile.
  • Gib folgenden Befehl ein:
piTest -v Input_Word_1
  • Du erhältst als Ausgabe die Information, wo Deine Werte im Prozessabbild stehen:
 variable name: Input_Word_1
 offset: 11
 length: 16
 bit

Die Werte stehen ab Adresse 16 im Prozessabbild. Wir müssen 10 Bytes lesen.

Wir geben den folgenden Befehl ein und sehen unsere Werte: “piTest -r 11,10,h”. Wenn wir jetzt die RFID-Karte an den Kartenleser halten, können wir die Veränderung der Werte im Prozessabbild beobachten.

piTest -r 11,10,h
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
04 00 00 00 1b 00 87 00 2b 00
04 00 00 00 1b 00 87 00 2b 00
04 00 00 00 1b 00 87 00 2b 00
[...]