Daten über RS232 übertragen

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

Antworten
df8oe
Beiträge: 24
Registriert: Fr 17. Jun 2022, 19:20

Daten über RS232 übertragen

Beitrag von df8oe »

Hallo an alle,

mein Hybridinverter besitzt nur eine RS232 Schnittstelle (EASun MPS 5KVA älterer Baureihe). Mir ist bekannt dass man den mittels RS232->USB Adapter einbinden kann. Das scheidet bei mir jedoch aus da alle USB-Ports meines Raspi bereits belegt sind. Auch ist es sinnvoller direkt den auf dem Raspi vorhandenen RS232-Port zu nutzen - ein primitiver RS232 Adapter mit MAX232 Chip für den RPI kostet incl. Versand weniger als 5 Euro :) Vielleicht habe ich etwas übersehen - aber ich habe kein einziges PHP gefunden in dem tatsächlich dieser Port genutzt wird. Ist hier etwas vorhanden was ich übersehen habe oder ist hier Eigenleistung gefragt?

Benutzeravatar
Ulrich
Administrator
Beiträge: 3431
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 70 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Daten über RS232 übertragen

Beitrag von Ulrich »

Hier ist Eigenleistung gefragt.
--------------------------------------
Ulrich [Admin]

df8oe
Beiträge: 24
Registriert: Fr 17. Jun 2022, 19:20

Re: Daten über RS232 übertragen

Beitrag von df8oe »

Danke für die schnelle Antwort! Ich werde meine Ergebnisse hier teilen wenn ich welche habe. Aktuell ist noch das 10m RS232-Kabel auf dem Versandweg zu mir ;)

Ansonsten kann ich über mein Projekt folgenden Zwischenstadn geben:

Einrichtung von Solaranzeige auf einem Raspi 3b+, Betriebssystem Arch 64 Bit, Kernel 5.18.1-1-aarch64-ARCH #1 SMP PREEMPT

Alle Dienste laufen problemlos. Zusätzlich läuft noch ein pi-hole, ein nfs-Server und ein (Amateurfunk) APRS-Gateway mit SDR Stick und diverse andere Steuerungs- und Regelaufgaben auf dem Gerät. Es arbeitet "monitorlos" - eine grafische Oberfläche / ein X-Server ist nicht vorhanden. Swap ist deaktiviert. Wegen der fehlenden Datenanbindung werden noch keine Daten vom Wechselrichter übertragen - aber ich bin sehr zuversichtlich dass das nach Eintreffen des Kabels schnell gelöst werden kann.
Dateianhänge
2022-08-10_09-31_dienste.png
2022-08-10_09-28_top.png

df8oe
Beiträge: 24
Registriert: Fr 17. Jun 2022, 19:20

Re: Daten über RS232 übertragen

Beitrag von df8oe »

Ich kann meinen Inverter nicht korrekt identifizieren - ich hänge mal zwei Fotos an. Aktuell nutze ich auf meinem Linux-Desktop das ätzende Programm "watchpower" (Java...) - die Schnittstelle ist /dev/ttyS0 . Die Kommunikation ist einwandfrei, sie läuft mit 2400 Baud.

Wenn ich die Schnittstelle mit einem Terminalprogramm (minicom) anspreche und z.B. den Befehl QPI<cr> absetze passiert GAR NICHTS. Ich vermutete dass es der Inverter Typ "59" ist - das scheint aber nicht zu stimmen. Solange ich ihn noch nicht mal auf meinem PC mit "echter" RS232-Schnittstelle mit einem Terminalprogramm ansprechen kann machen weitere Versuche mit solaranzeige im Moment keinen Sinn - zu viele Fehlermöglichkeiten...

Es ist ein MPPT, er hat nur eine RS232 Schnittstelle.
Dateianhänge
Hybrid-Inverter-MPPT.jpg
HI-Typenschild.jpg

Benutzeravatar
Ulrich
Administrator
Beiträge: 3431
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 70 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Daten über RS232 übertragen

Beitrag von Ulrich »

Bitte versuche es einmal mit Regler = 45
Die Chance ist groß, dass der es ist. Wenn der Wechselrichter angeschlossen und die user.config.php angepasst ist, dann den Raspberry unbedingt noch einmal neu starten, da erst beim Hochfahren die serielle Geschwindigkeit eingestellt wird.
--------------------------------------
Ulrich [Admin]

df8oe
Beiträge: 24
Registriert: Fr 17. Jun 2022, 19:20

Re: Daten über RS232 übertragen

Beitrag von df8oe »

Reboot verbietet sich für sowas bei meinem Raspi - dafür laufen zu viele Dienste drauf die nicht unterbrochen werden sollte (nur bei Kernel- und Systemd - Updates...)

Ich denke es reicht die usb_init.php einmal laufen zu lassen - oder? Ich habe "45" eingetragen - aber es kommen immer noch keine Daten.

Ich bin aber trotzdem irgendwie weitergekommen:
Auf meinem Desktop bekomme ich mit picocom (Terminalprogramm) eine Antwort, wenn ich mit 2400 8N1 den String QPI absetze. Da die Checksumme fehlt antwortet der Inverter mit NACK. Daraufhin habe ich mal einen RS232 zu USB Adapter gearbeitet - dort bekomme ich ebenfalls ein NACK. Dann habe ich einen USB-Port an meinem Raspi freigeschaufelt und genau den Adapter dort eingesteckt - wird auch brav als ttyUSB0 erkannt. Aber dort bekomme ich mit gleichen Parametern kein NACK. Vielleicht sind 10m Kabel doch zu lang ohne elektronische Treiber - glaube ich aber bei 2400 Baud eher nicht. Ich buddele erstmal alleine weiter.

Ein HowTo wwas man alles auf einem Arch64 System nachinstallieren muss habe ich mitgeführt. Dort gibt es noch eine Nicklichkeit: ich bekomme Fehlermeldungen bei der Verbindung zu Influx. Influx läuft (ich kann mit Browser auf Port 8086 darauf zugreifen). Ich habe einen User "solaranzeige" angelegt mit Passwort und eine db mit Namen solaranzeige. Trotzdem bekomme ich die Meldung dass die User-ID oder das PW zum Einloggen in Influx nicht stimmen. Aber immer einen Schritt nach dem anderen:

1) Kommunikation herstellen - erstmal mit RS232 zu USB Adapter
2) danach auf den "direkten RS232" umstellen
3) dann geht es weiter.

Danke für den Support!

Benutzeravatar
Ulrich
Administrator
Beiträge: 3431
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 70 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Daten über RS232 übertragen

Beitrag von Ulrich »

Ja, die usb_init.php einmal starten reicht. Die stellt die Geschwindigkeit der Schnittstelle ein.
--------------------------------------
Ulrich [Admin]

df8oe
Beiträge: 24
Registriert: Fr 17. Jun 2022, 19:20

Re: Daten über RS232 übertragen

Beitrag von df8oe »

Dein Projekt ist genial und verdient weitere Verbreitung (meine Meinung). Auch außerhalb eines Raspbian-Images auf anderen Distris. So wie ich das bis jetzt abschätze steckt 95% der Arbeit im Ordner /var/www . Und die ist nach kurzer Sichtung wirklich bemerkenswert!

df8oe
Beiträge: 24
Registriert: Fr 17. Jun 2022, 19:20

Re: Daten über RS232 übertragen

Beitrag von df8oe »

Ich habe ein Hardwareproblem. Durch die räumliche Trennung von Raspi und Inverter (verbunden mit unterschiedlichen Potentialen) habe ich eine Brummschleife auf der RS232 Leitung. Schließe ich am Ende ein potentialfreies Gerät an klappt alles - ist es geerdet klappt es nicht mehr. Abhilfe: Galvanische Trennung. Dafür gibt es Adapter mit Optokopplern (gerade bestellt -ebay mit Versand < 25 Euro). 2be continued....

df8oe
Beiträge: 24
Registriert: Fr 17. Jun 2022, 19:20

Lösung zur Nutzung der "echten" seriellen Schnittstelle des Raspi

Beitrag von df8oe »

Jeder Raspi hat eine "echte" RS232 schon on board. Man braucht nur einen Pegelwandler und kann dann das RS232-Kabel eines Inverters ohne USB-Lösung einstöpseln. Das ist auch schon die ganze Hardwareseite.

Nun zur Softwareseite:

Die echte serielle Schnittstelle heißt bei meinem Raspi (Arch 64 Bit System) /dev/ttyS1
Ich ermittle zunächst die Node-Informationen mit

Code: Alles auswählen

ls -l /dev/ttyS1
und erhalte bei mir

Code: Alles auswählen

crw--w---- 1 root tty 4, 65 11. Aug 07:32 /dev/ttyS1
Mit dieser Schnittstelle kann solaranzeige nicht umgehen. Aber ein kleiner Dreizeiler macht aus dieser Schnittstelle eine USB-Schnittstelle! Dazu wird sie sozusagen "mit anderem Namen neu erzeugt". Man muss vorher kontrollieren ob die neu zu erzeugende Schnittstelle vielleicht schon existiert (USB-Dongle noch gesteckt). In dem Fall ist es ratsam den USB-Dongle abzuziehen. Wer das nicht kann/möchte (mehrere Inverter / Regler) muss sich eine freie serielle USB heraussuchen. Man kann sich alle vorhandenen anzeigen lassen mit

Code: Alles auswählen

ls -l /dev/ttyUSB*
Ich nehme mal an auf eurem System kommt da keine Ausgabe - dann wählen wir gleich die erste: /dev/ttyUSB0

Jetzt kommt "die Magie": Führt die folgenden Bash-Befehle als "root" aus:

Code: Alles auswählen

mknod "/dev/ttyUSB0" c [color=red]4 65[/color]
chown :tty /dev/ttyUSB0
chmod 660 /dev/ttyUSB0
Dabei sind die beiden roten Zahlen die Infos die ihr mit 'ls -l /dev/ttyS1' erhalten habt. Ob die Schnittstelle bei einem Raspbian ebenfalls der Gruppe "tty" gehört kann ich nicht sagen - ich nutze keine Raspbian-Systeme. Diese haben ein eingebautes Verfallsdatum, und sowas mag ich gar nicht (darum nutze ich ein Arch-basiertes System). Sollte die Gruppe bei euch anders heißen dann nehmt ihr eben die Gruppe zu der /dev/ttyS1 gehört. Damit existiert die einfache serielle Schnittstelle nun auch als USB-Pendant und wird sofort von solaranzeige erkannt und kann verwendet werden.

Allerdings übersteht die so erzeugt Schnittstelle keinen Reboot. Um das sicherzustellen schreibt man die drei Zeilen in die /etc/rc.local - und ab sofort wird die Schnittstelle bei jedem Reboot automatisch erzeugt.

EDIT:
Ich sehe Farben im Codeblock kann das Forum nicht. Aber wer sich in der Lage sieht die Befehle einzutippen wird auch mit der verstümmelten Anzeige des Codeblocks etwas anfangen können...

EDITEDIT:
Vielleicht baut Ulrich dieses Feature auch in seine Images ein. Dann wird die serielle Schnittstelle generell nutzbar gemacht.

Antworten