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

Dieses Tutorial gilt ab dem Image Jessie. Für Wheezy gilt es leider nicht.

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

Du benötigst dazu:

  • RevPi Core
  • 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 Core befindet sich in Deinem Netzwerk.

Slave an das RevPi Core 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 Core an die Spannungsversorgung an.

Modbus-RTU-Netzwerk-Daten ermitteln

Um den Slave zu konfigurieren, benötigen wir vorab einige Daten, damit wir den Slave über unseren RevPi Core 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

  • Öffne Deinen Webbrowser.
  • Gib die IP-Adresse Deines RevPi Cores in die Adresszeile Deines Browsers ein.

Das Anmelde-Fenster öffnet sich.

pictory-anmelden
  • Melde Dich mit dem Benutzernamen “admin” an.
  • Gib Dein Passwort ein. Du findest es auf dem Aufkleber an der Seite Deines RevPi Cores.
  • Klicke auf “Login”

Du siehst jetzt den aktuellen Gerätestatus Deines RevPi Cores.

  • Klicke auf das Register “Services”.
  • Klicke auf “Enabled” in der Zeile Enable/Disable Modbus Master.
  • Klicke auf den Button “Save All”.
Services Reiter Screenshot

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”.
Apps Reiter Screenshot

PiCtory öffnet sich.

ModbusRTU-Master konfigurieren

  • Öffne im Device Catalog den Ordner “Virtual Devices”.
  • Wähle den Modbus-RTU-Master aus.
  • Halte die linke Maustaste gedrückt und ziehe den Modbus-RTU-Master auf Dein RevPi Core.

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.

FRF
Treiber Reset

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
[...]