RevPI connect: interne RS485 unter balenaOS nutzen

Rund um die Software von Revolution Pi
Post Reply
PeterL.
Posts: 5
Joined: 16 Jun 2020, 10:35
Answers: 0

RevPI connect: interne RS485 unter balenaOS nutzen

Post by PeterL. »

Hallo zusammen,

für ein anstehendes Projekt soll der RevPI connect unter Nutzung des balena OS als IoT Gateway einrichtet werden.

Dazu wurde der RevPI mit der Software balena OS 2.31.5+rev2 und dem deviceType 'revpi-core-3' geflasht.
Ein entsprechenden deviceType für den 'RevPI connect' konnte nicht gefunden werden.

In diesem Projekt sollen u.a. MODBUS RTU Geräte über RS485 angeschlossen werden.

Wie ist ein Zugriff auf die interne RS485 Schnittstelle möglich?
Das Device /dev/ttyRS485 fehlt.

Wäre super, wenn mir jemand dazu eine Hilfestellung geben könnte.

Vielen Dank.
Last edited by PeterL. on 19 Jun 2020, 07:57, edited 1 time in total.
User avatar
lukas
Expert
Posts: 186
Joined: 13 Feb 2017, 10:29
Answers: 0

Re: RevPI connect: interne RS485 unter balenaOS nutzen

Post by lukas »

Der Connect hat zwei USB Serial Adapter eingebaut, einen für RS485 an der Front des Gehäuses und einen für RS232 an der ConBridge. Typischerweise sind diese Schnittstellen unter /dev/ttyUSB0 und /dev/ttyUSB1 ansprechbar. Allerdings ist nicht garantiert, welche Schnittstelle welchem dieser beiden Device Files zugeordnet ist, denn wie der Kernel die Nummern 0 oder 1 verteilt, kann sich bei jedem Booten ändern. Wenn ein weiterer USB Serial Adapter extern angestöpselt wird, könnte die Nummer 0 oder 1 auch diesem zugeordnet sein und einer der internen bekommt dann die Nummer 2.

Aus diesem Grund legt man mit udev-Regeln fest, dass ein Symlink mit einem festen Namen erzeugt wird, der auf das passende /dev/ttyUSB* Device File deutet. Bei unserem Image geschieht das in dem File /lib/udev/rules.d/50-revpi.rules, das im Paket revpi-tools enthalten ist. Die Regeln sehen so aus:

Code: Select all

ACTION=="add", DEVPATH=="*/usb1/1-1/1-1.5/1-1.5.2/*", SYMLINK+="ttyRS485"
ACTION=="add", DEVPATH=="*/usb1/1-1/1-1.5/1-1.5.3/*", SYMLINK+="ttyConBridge"
ACTION=="add", DEVPATH=="*/spi0.1/net/pieth*", NAME="pileft"
Du kannst händisch ein File in /lib/udev/rules.d/ anlegen und diese Regeln dort eintragen.

Oder Du lädst Dir das revpi-tools Paket auf den Connect und installierst es mit "dpkg -i". (Vorausgesetzt, balenaOS ist Debian-basiert, ich kenne mich damit nicht aus.)

Du kannst das revpi-tools Paket auch mit "dpkg -x" in ein Verzeichnis extrahieren und nur die Datei /lib/udev/rules.d/50-revpi.rules auf den Connect kopieren.

Wenn Du die Datei 50-revpi.rules verwenden willst, muss im DeviceTree der compatible string "kunbus,revpi-connect" stehen. Mach mal "sudo cat /sys/firmware/devicetree/base/compatible" und prüfe ob dort was von "kunbus,revpi-connect" steht. Wenn nicht, dann prüfe ob das File /boot/overlays/revpi-connect.dtbo existiert. Existiert es, dann stelle sicher dass in /boot/config.txt eine Zeile "dtoverlay=revpi-connect" steht. Existiert es nicht, kannst Du entweder unser raspberrypi-kernel Paket installieren oder du extrahierst aus diesem händisch mit "dpkg -x" die Datei /boot/overlays/revpi-connect.dtbo, kopierst sie auf den Connect und fügst in /boot/config.txt die Zeile "dtoverlay=revpi-connect" hinzu.
PeterL.
Posts: 5
Joined: 16 Jun 2020, 10:35
Answers: 0

Re: RevPI connect: interne RS485 unter balenaOS nutzen

Post by PeterL. »

Hi lukas,
vielen Dank für die ausführliche Erklärung und deine Hilfestellung zu diesem Problem :D

Mit Hilfe zusätzlicher Konfigurationsarbeit konnten die o.a. SYMLINK's im balena OS schlussendlich eingetragen werden und funktionieren auch. Vielen Dank.
Leider ist davon nichts im Container zu sehen, der unter balena OS läuft.

Für die Erstellung der Container für balena dient docker als Basis. Daher erweiterte Tests ohne balena nur mit debian und docker.
Hier das exakt das gleiche Problem: "kein Symlnk Device im Container unter /dev/ zu finden.

Daran hat auch das Definieren eines volumes (-v=/dev:/dev) oder eines entsprechenden devices im privileged mode nichts geändert.
Hatte dann Hinweise gefunden, dass SYMLNK's im Container generell nicht funktionieren u.ä.
Ich habe es auch nicht geschafft im Conainer die SYMLNK's nachträglich zu setzen.

ttyUSB0/1 sind vorhanden und ein Test mit ttyUSB0 als RS485 Schnittstelle funktioniert auch problemlos.

Wäre super, wenn noch jemand hier eine Idee hätte, wie ich sicherstellen kann, dass ich immer mit dem korrekten Interface kommuniziere.

Wäre es evtl. möglich die "ttyConBridge" Schnittstelle komplett zu deaktivieren, damit nur die RS485 Schnittstelle erkannt wird und die somit immer dem device 'ttyUSB0' zugeordnet wird?

Bin für jeden Hinweis dazu sehr dankbar.
User avatar
p.rosenberger
KUNBUS
Posts: 89
Joined: 03 Jul 2020, 11:07
Answers: 1

Re: RevPI connect: interne RS485 unter balenaOS nutzen

Post by p.rosenberger »

Hallo PeterL.,

es ist logisch, dass ein Symlink im Container nicht funktioniert. Der Symlink zeigt im Container auf ein Device, welches im Container nicht existiert. Eventuell geht es wenn man auch die anderen Devices in den Contianer packt, da bin ich mir aber nicht sicher. Sonst könnte man die udev-Regel so anpassen, dass kein Symlink erstellt wird. sondern das Device umbenannt wird. Da sollte so etwas funktionieren:

Code: Select all

ACTION=="add", DEVPATH=="*/usb1/1-1/1-1.5/1-1.5.2/*", NAME="ttyRS485"
Ich kann das hier gerade leider nicht testen.

Viele Grüße
Philipp
PeterL.
Posts: 5
Joined: 16 Jun 2020, 10:35
Answers: 0

Re: RevPI connect: interne RS485 unter balenaOS nutzen

Post by PeterL. »

Vielen Dank für deine Antwort :)

Eigentlich sollten alle Dateien auch im Container vorhanden sein. Mit -v hatte ich ebenso das gesamte /dev Verzeichnis dem Container zur Verfügung gestellt.
Es sind ja auch alle devices aus dem Container heraus ansprechbar. ttyUSB0 funktioniert ja schließlich.
Also, warum dann der symlink nicht?
ACTION=="add", DEVPATH=="*/usb1/1-1/1-1.5/1-1.5.2/*", NAME="ttyRS485"
Genau das hatte ich auch bereits getestet. Es wird kein device mit dem Namen ttyRS485 gefunden.
User avatar
p.rosenberger
KUNBUS
Posts: 89
Joined: 03 Jul 2020, 11:07
Answers: 1

Re: RevPI connect: interne RS485 unter balenaOS nutzen

Post by p.rosenberger »

Hallo PeterL.

hmmm da bin ich dann auch überfragt. Meine Erfahrung mit Docker ist begrenzt und bezieht sich bisher rein auf Services ohne H/W-Zugriff. Da muss ich dich nun leider an die Docker Community verweisen. Wenn du eine Lösung finden solltest wäre es aber super, wenn du die hier noch einbringst.

Vielen Dank und viele Grüße
Philipp
Post Reply