Venus OS: Waveshare RS 485 CAN Hat (B) zum Laufen bekommen (RS485)?

Hallo,

hat von euch jemand schon einmal RS485 auf einem Waveshare Isolated RS485 CAN Hat (B) zum Laufen bekommen?

Bei mir läuft CAN nach nach dem Setup mit VeCanSetup problemlos, die RS485-Schnittstelle für den EM540 allerdings nicht. Ich hätte gerne den USB-RS485 auch durch den Waveshare ersetzt.

Sofern die beiden Schnittstellen vom Raspberry Pi als ttySC0 und ttySC1 erkannt werden müssen folgende Zeilen zur Datei /etc/udev/rules.d/serial-starter.rules hinzugefügt werden:

ACTION=="add",   KERNEL=="ttySC0",   ENV{VE_SERVICE}="modbus"
ACTION=="add",   KERNEL=="ttySC1",   ENV{VE_SERVICE}="modbus"

Danach Venus OS neu starten.

Ich habe hier noch eine Anleitung gefunden (bei der Recherche am Nachmittag wohl übersehen :face_with_monocle:), beim RPI4 muss auch noch Bluetooth deaktiviert werden

https://community.victronenergy.com/questions/167012/can-i-use-the-rs485-of-the-waveshare-canrs485-hat.html

Damit klappt es

Bluetooth musst du für ein anderes Board deaktivieren. Nicht für das in deinem ersten Beitrag verlinkte Board.

Hast du auch noch eine Idee, was für eine hohe Zahl an CAN Bus Fehlern verantwortlich sein könnte?

Ich habe etwa 23 % Overruns, das Kabel habe ich schon getauscht (Cat 5 S/FTP, ca 2 m lang). Belegung gemäß Victron für US3000C (Pin 4 CAN-H, Pin 5 CAN-L, Pin 6 GND)

In der u-boot/config.txt ist eingetragen:

dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25,,spimaxfrequency=1000000

Das soll laut Waveshare-Wiki für mein Modul passend sein

@lokverfuehrer Erhöhe die spimaxfrequency auf 10MHz. Verringert bei mir die overruns auf 0,18%.

dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25,spimaxfrequency=10000000

1 „Gefällt mir“

Moin zusammen

ich hänge mich mal hier dran

Ich stehe auch vor der Wahl eines CAN-HAs Boards für meinen den RPI 3B .

CAN benötige ich für das neue Inverter JKBMS welches mein "altes" JKBMS mit isoliertem USB-TTL Adapter ablösen soll.

Es gibt ja isolierte und nicht isolierte Boards .

mit 2 CAN-Ports isoliert , RS485 + 1 CAN-Port nicht isoliert und den der oben

verlinkt ist mit RS485 + 1 CAN isoliert . Sind bei diesem Board sowohl RS485 als auch CAN isoliert ?

Welchen könnt ihr mior empfehlen . Reicht evtl. ein nicht isolierter CAN-Hat aus ?

@Lokverfuehrer Funktioniert mittlerweile RS485 mit den UDEV - Regeln die @Telekatz beschrieben hat .

Noch eine letzte Frage . Gib es passende Gehäuse für den RPI 3b die auch Platz für das CAN-HAT Board bieten ?

Weil ich mein lieb gewonnenes und schön verbautes RP-Gehäuse nicht auswechseln wollte und wert auf volle Isolation lege, habe ich mir von Innomaker den 2x CAN <-> USB Adapter gekauft. Läuft bei mir prima mit u.a. Victron LynxShunt, Victron RS6000 und JK Inverter BMS. Der Adapter wurde sofort im VenusOS erkannt und CAN0/CAN1 funktionierten - perfektes Plug & Play :+1:

Dual Channels USB to CAN Converter for Raspberry Pi5/Pi4/Pi3B+/Pi3/Pi Zero/Jetson Nano/Tinker Board/Any SBCs/Desktop and Laptop Support Windows Linux and Mac OS: Amazon.de: Computer & Zubehör (Direktlink zum Produkt, kein Affiliate-Link)

2 „Gefällt mir“

Ohne einen Eintrag in der serial-starters kann ich auf SC0 / SC1 via NodeRed zugreifen. Wenn ich diese Einträge setze, kann NodeRed nicht mehr darauf zugreifen. Doch wie / wo finde ich dann die Modbus Zähler?

Habe mehrere SDM630 / SDM72 / SDM120 und würde die gerne darüber ins VenusOS bringen.

@wawibu Mit diesem Eintrag werden die Schnittstellen von Venus OS überwacht und sind nicht mehr für andere Prozesse verfügbar. Für die Eastron Geräte brauchst du noch ein extra Script, die werden von Venus OS normalerweise nicht unterstützt: https://github.com/Telekatz/venus.dbus-modbus-eastron

1 „Gefällt mir“

@telekatz das funktioniert super mit einem nagelneuen SDM120. Meine vorhandenen Zähler haben natürlich andere IDs als 1 und 2.

Reicht es aus, dass units array in Zeile 251 entsprechend um die von mir verwendeten IDs zu erweitern?

EDIT: Try & Error hat meine Annahme bestätigt. Danke !

RS485 funktioniert mit den Maßnahmen aus dem Victron-Forum einwandfrei.

Der CAN hat nach dem Anpassen der SPIMaxFrequency auch nur noch 0,01% Fehlerrate

1 „Gefällt mir“

danke

Jetzt habe ich doch nochmal eine Frage. Habe es durch die Anpassung des Unit Arrays hinbekommen, dass mein EVU SDM angezeigt wird und die Werte sauber kommen. Hierbei ist es dann auch egal on an Port 0 oder Port 1. Nur irgendwie erkennt er einen weiteren Zähler nicht :confused:

Da ist es dann auch egal ob das mein Testzähler mit ID 1 oder ein verbauter Zähler ist. Muss ich noch etwas anpassen um die Anzahl der SDMs anzugeben die er erkennen soll?

Im Log sehe ich folgende Meldung

@4000000066014add03db5bac INFO     Waiting for localsettings
@4000000066014add05e0e3f4 INFO     Starting background scan
@4000000066014add0609094c INFO     Scanning ttySC1 @ 9600 bps (quick)
@4000000066014ae73470accc INFO     Scanning ttySC1 @ 19200 bps (quick)
@4000000066014af2246ce5d4 INFO     Scanning ttySC1 @ 38400 bps (quick)
@4000000066014afd145b2c8c INFO     Scan completed in 32 seconds
@4000000066014afd18e53cd4 /opt/victronenergy/serial-starter/run-service.sh: line 5: shift: 2: shift count out of range

EDIT: okay - habe es hinbekommen mit jeweils einem Gerät pro HAT Anschluß. Schließe ich mehrere SDMs an einen HAT Anschluß, wird nur eines davon erkannt. Eigentlich sollte das bei RS485 doch möglich sein. Geht das in VenusOS mit dem HAT Shield nicht? Brauche ich dann echt für jedes Modbus Gerät einen eigenen Port?

Da mir der PE11 mal wieder keine Daten bei mir bekommt, habe ich nun erstmal einen zweiten Waveshare HAT bestellt. Dann werde ich erstmal mit 2 HATs gehen für 4 Modbus Geräte. Schöner wäre es natürlich, wenn ich mehrere Geräte an einer Modbus Schnittstelle vom HAT betreiben könnte.

Ich vermute das es irgendwie geht, habe aktuell nur leider keine Idee wie / wo ich dafür etwas verändern muss

Es können auch mehrere Geräte auf einem Bus erkannt werden, aber richtig stabil hat es bei mir auch nicht funktioniert.

Aber auch wenn alle Geräte erkannt werden kann es zu einem Problem kommen, wenn eines kurzzeitig ausfällt und getrennt wird. An einem Bus, an dem bereits ein Gerät läuft wird nicht mehr nach weiteren oder getrennten Geräten gesucht. Erst wenn kein Gerät mehr am Bus erkannt wird, scannt der serial-starter wieder die Schnittstelle, ob unterstützte Geräte angeschlossen sind. Sicherer läuft es mit nur einem Gerät pro Bus.

@telekatz okay - verstehe ich. Aber wie kann ich das überhaupt hinbekommen? Ich habe alle SDMs einzeln erkennen lassen und sie sind alle in VenusOS ersichtlich. Es schaut bei mir so aus, als ob der SerialStarter gar nicht mehr nach einem zweiten Gerät sucht. Was dann ja mit Deiner Aussage passen würde. Solange noch mindestens ein Gerät am Bus aktiv ist, sucht er nicht neu.

Wenn mir dieses Risiko bewusst ist, wie kann ich es dann hinbekommen, dass mir mehrere Geräte ausgelesen werden?

Versuch es mal mit gleicher Baud Rate und der ID 1 und 2 für die Geräte. Und überprüfe, ob der Bus richtig terminiert ist.

klappt nun - mit ID 1, 2 und 118 :sunglasses:

@wawibu Ich vermute mal, dass der RS485 Port bzw. die Software in VenusOS kein Bussystem abbilden kann. Um mehrere Modbus-Busteilnehmer ansprechen zu können muss ja zwingend mit Adressen und z.B. Modbus-RTU gearbeitet werden. Ich vermute allerdings, dass über den HAT immer nur ganz simpel ein RS485 Gerät gepollt wird - ohne vorheriges Ansprechen einer konkreten Adresse.