EtherCAT -> MQTT mit RevPi Connect

Hier kannst du dein Revolution Pi Projekt der Community vorstellen
nmg97
Posts: 15
Joined: 22 Jun 2022, 14:41

EtherCAT -> MQTT mit RevPi Connect

Post by nmg97 »

Hallo zusammen,

ich würde gerne Daten aus einer SPS via EtherCAT an meinen RevPi Connect+ (zzgl. EtherCAT Erweiterungsmodul) senden und diese dort in MQTT umwandeln, also prinzipiell so wie es auch für den Connect geworben wird. :)
In meiner SPS wird das EtherCAT Erweiterungsmodul auch als Slave erkannt und es ist auch möglich Daten zu senden.

Meine Frage ist nun, wie geht es weiter? Wie komme ich an die EtherCAT Daten in meinem RevPi Connect+? Und wie kann ich diese in MQTT übersetzen/umwandeln?

Ich freue mich, wenn Ihr mir da schnellstmöglich weiterhelfen könnt!
Vielen lieben Dank.

Mit freundlichen Grüßen
Nina
User avatar
nicolaiB
KUNBUS
Posts: 931
Joined: 21 Jun 2018, 10:33
Location: Berlin
Contact:

Re: EtherCAT -> MQTT mit RevPi Connect

Post by nicolaiB »

Hallo Nina,

du kannst die Anbindung mit einer Programmiersprache deiner Wahl vornehmen. Ich persönlich würde hier auf Python und die Bibliotheken revpimodio2 (auslesen der Daten vom Prozessabbild) und paho-mqtt (Verbindung zum MQTT Broker) einsetzen. Bitte beachte dabei, dass die Daten eines Gateways immer als Byte Blöcke im Prozessabbild vorliegen.

Gruß Nicolai
nmg97
Posts: 15
Joined: 22 Jun 2022, 14:41

Re: EtherCAT -> MQTT mit RevPi Connect

Post by nmg97 »

nicolaiB wrote: 24 Jun 2022, 12:41 Hallo Nina,

du kannst die Anbindung mit einer Programmiersprache deiner Wahl vornehmen. Ich persönlich würde hier auf Python und die Bibliotheken revpimodio2 (auslesen der Daten vom Prozessabbild) und paho-mqtt (Verbindung zum MQTT Broker) einsetzen. Bitte beachte dabei, dass die Daten eines Gateways immer als Byte Blöcke im Prozessabbild vorliegen.

Gruß Nicolai
Hi Nicolai,

vielen lieben Dank für deine Antwort. Dann habe ich da ja schon mal alles richtig gemacht. *grins*
Das mit den Bytes ist mir auch aufgefallen... gibt es da eine elegante Möglichkeit auf die einzelnen Bits zuzugreifen (sodass jedes Bit ein eigenes Topic bekommen könnte)? Mein Gedanke war, dass mich aus der SPS hauptsächlich nur die Maschinenzustände (true, false) interessieren und vereinzelt mal analoge Werte (welche als ein Byte übertragen würden).

Ist es hier eventuell sinnvoller den RevPi Connect mit CoDeSys auszustatten?

Viele Grüße
Nina
User avatar
nicolaiB
KUNBUS
Posts: 931
Joined: 21 Jun 2018, 10:33
Location: Berlin
Contact:

Re: EtherCAT -> MQTT mit RevPi Connect

Post by nicolaiB »

Hallo Nina,

um aus den Bytes im Prozessabbild der Gateways Daten in Tyen wie z.B. float oder bit umzuwandeln, schau dir mal die Funktion replace_io im revpimodio2 an. Am einfachsten ist es wenn du die Definition, welche Bytes in welche Typen gewandelt werden sollen, in ein replace io ini file auslagerst. Falls du mit der Dokumentation nicht weiter kommst, melde dich gerne mit einem Codebeispiel hier im Forum.

Gruß Nicolai
nmg97
Posts: 15
Joined: 22 Jun 2022, 14:41

Re: EtherCAT -> MQTT mit RevPi Connect

Post by nmg97 »

nicolaiB wrote: 29 Jun 2022, 11:29 Hallo Nina,

um aus den Bytes im Prozessabbild der Gateways Daten in Tyen wie z.B. float oder bit umzuwandeln, schau dir mal die Funktion replace_io im revpimodio2 an. Am einfachsten ist es wenn du die Definition, welche Bytes in welche Typen gewandelt werden sollen, in ein replace io ini file auslagerst. Falls du mit der Dokumentation nicht weiter kommst, melde dich gerne mit einem Codebeispiel hier im Forum.

Gruß Nicolai
Hallo Nicolai,

schon mal vielen Dank für deine Antwort.
Ist es auch möglich in der _config.rsc Datei z. B. die Input-Arrays des Device entsprechend so zu verändern, dass eine Variable über den Speicherbereich von beispielsweise 2 Bytes geht (die nachfolgende dann mit entsprechend neuem Offset usw.)?

Viele Grüße
Nina
User avatar
nicolaiB
KUNBUS
Posts: 931
Joined: 21 Jun 2018, 10:33
Location: Berlin
Contact:

Re: EtherCAT -> MQTT mit RevPi Connect

Post by nicolaiB »

Hallo Nina,

das ist eine interessante Idee die mit eigener eigenen / angepassten RAP Datei funktionieren könnte. Ich würde hier wie folgt vorgehen um das Ganze mal auszuprobieren:
  • Vorhandene RAP Datei des entsprechenden Gateways kopieren und unter einem neuen Namen abspeichern
  • Inhalt so modifizieren, dass anstatt 512 Bytes pro Input bzw. Output deine Datenstrukturen abgebildet werden (ggf. drauf achten mit Dummies die Lücken zu füllen)
  • RAP Datei im Katalog ablegen
  • Konfiguration mit Pictory erstellen, speichern und Treiber zurücksetzen


Eine Einführung zum Thema RAP Dateien findest du hier: https://revolutionpi.de/tutorials/was-i ... erstellen/

Alles in allem denke ich aber, das du - sofern revpimodio2 verwendet wird - mit dem replace_io Ansatz schneller bist.

Gruß Nicolai
nmg97
Posts: 15
Joined: 22 Jun 2022, 14:41

Re: EtherCAT -> MQTT mit RevPi Connect

Post by nmg97 »

nicolaiB wrote: 06 Jul 2022, 12:07 Hallo Nina,

das ist eine interessante Idee die mit eigener eigenen / angepassten RAP Datei funktionieren könnte. Ich würde hier wie folgt vorgehen um das Ganze mal auszuprobieren:
  • Vorhandene RAP Datei des entsprechenden Gateways kopieren und unter einem neuen Namen abspeichern
  • Inhalt so modifizieren, dass anstatt 512 Bytes pro Input bzw. Output deine Datenstrukturen abgebildet werden (ggf. drauf achten mit Dummies die Lücken zu füllen)
  • RAP Datei im Katalog ablegen
  • Konfiguration mit Pictory erstellen, speichern und Treiber zurücksetzen


Eine Einführung zum Thema RAP Dateien findest du hier: https://revolutionpi.de/tutorials/was-i ... erstellen/

Alles in allem denke ich aber, das du - sofern revpimodio2 verwendet wird - mit dem replace_io Ansatz schneller bist.

Gruß Nicolai
Hallo Nicolai,

ich habe alles so gemacht wie beschrieben. Zu Testzwecken habe ich neben dem Dateinamen erstmal nur die id (eigener Name) und den producttype (auf 32769) entsprechend des Tutorials geändert (ansonsten alles gleich wie bei dem originalen EtherCAT Gate).
Die anschließende Konfiguration des Virtuellen Devices in Pictory vorzunehmen und zu laden funktioniert auch.

Jedoch funktioniert es nicht mehr die Daten via MQTT zu senden.
Wodran könnte dies eventuell liegen?

Besten Dank und viele Grüße
Nina

Nachtrag: Interessanterweise, wenn ich während dem Betrieb die alte Config mit dem originalen EtherCAT Gate in Pictory lade, zeigt mir mein MQTT Explorer sowohl das eigentliche Topic als auch das des Virtuellen Devices an. Jedoch wird Zweiteres nicht mehr aktiv beschrieben. :?
User avatar
nicolaiB
KUNBUS
Posts: 931
Joined: 21 Jun 2018, 10:33
Location: Berlin
Contact:

Re: EtherCAT -> MQTT mit RevPi Connect

Post by nicolaiB »

Hallo NIna,

die Produkt Id muss in deinem Fall gleich der originalen bleiben, da sonst der Treiber das Gerät nicht erkennt und somit auch keine Daten schreibt. Du kannst dies testen in dem du z.B. mit piTest -r VARIABLEN_NAME die Daten ausliest.

Gruß Nicolai
nmg97
Posts: 15
Joined: 22 Jun 2022, 14:41

Re: EtherCAT -> MQTT mit RevPi Connect

Post by nmg97 »

Hi Nicolai,

vielen lieben Dank für deine Unterstützung!

Viele Grüße
Nina
nmg97
Posts: 15
Joined: 22 Jun 2022, 14:41

Re: EtherCAT -> MQTT mit RevPi Connect

Post by nmg97 »

nicolaiB wrote: 11 Jul 2022, 16:51 Hallo NIna,

die Produkt Id muss in deinem Fall gleich der originalen bleiben, da sonst der Treiber das Gerät nicht erkennt und somit auch keine Daten schreibt. Du kannst dies testen in dem du z.B. mit piTest -r VARIABLEN_NAME die Daten ausliest.

Gruß Nicolai
Hi Nicolai,

ich habe jetzt diverse Anpassungen vorgenommen:
1. Produkt ID angepasst und erstmal alles so belassen -> Daten kamen bis zum MQTT Broker
Als 2. habe ich die Ein- und Ausgänge nach dem Beispiel mit der id 003 aus der Virtual01_20200429_1_0.rap Datei bearbeitet und entsprechende Dummys eingefügt.
Mit piTest kann ich meine Bits erfolgreich auslesen, jedoch gelangen die Daten nicht mehr bis zum MQTT Broker...

Wo hängt es hier eventuell?

Viele Grüße
Nina
Post Reply