BYD DESS P09H - Remote Controll - Modbus RTU

Hallo Zusammen,

ich habe einen BYD DESS-P09H mit 2 Batterien im Keller verbaut, und bin sehr zufrieden damit. Laut dem XLS von 2014 mit den modbus Registern, kann er wohl eine Art Remote-Controll Betrieb.

Leider habe ich das bisher nicht zum laufen bekommen. Ich kann über modbus RTU alles auslesen, das klappt wunderbar. Aber wenn ich die Register 2988, 2989, 2990, 2991 beschreibe, dann wird sobald ich eins davon beschreibe der Wert sofort in allen 4 angezeigt, aber nix passiert.

Hat irgendjemand hier im Forum das RemoteControll Feature zum laufen gebracht?

Hintergrund: ich will zu bestimmten Zeiten vom Netz laden, und dazu müsste ich den BYD DESS überreden, dass er seinen Active und Reactive Power sich von aussen setzen lässt.

Über das eingebaute Android-GUI habe ich gesehen kann man ja im Admin-Modus Beladen erzwingen, dann wird aber “volle Pulle” mit 9kw der Speicher beladen. Ich würde hier gerne filigraner vorgehen, und halt über diese Register ihm sagen wie viel er laden kann.

Das Android-GUI redet soweit ich weiß auch via modbus mit dem System. Hier kennt die Software also vermutlich deutlich mehr Register als im Dokument stehen.

Hat hier jemand schon evtl. was zum laufen bekommen? Oder hat jemand eine Idee, wie man evtl. den RS485 Traffic mitschneiden/debuggen kann?

Vielen Dank für weitere Tipps

Gruß

Ernst

Hallo Ernst,

schade, dass sonst leider niemand aus der Community an dem Thema arbeitet. Ich selbst habe leider auch keine Zeit. Trotzdem hier noch ein paar Ansätze:

  1. Die Excel-Datei kann hier heruntergeladen werden: openems/io.openems.edge.fenecon.dess/doc/BYD DESS MODBUS Protocol 20140114.xlsx at develop · OpenEMS/openems · GitHub

  2. Um Modbus/RTU Traffic mitzulesen braucht es eigentlich nicht viel. Es müsste reichen, sich mit einem USB-RS485-Adapter in die beiden Drähte zu hängen, dann kann man alles mitlesen; am besten zwischen den Geräten, falls Endwiderstände verbaut sind.

Hier ist ein passendes Python-Tool:

Gruß,
Stefan

Hallo ernstleh15,
ich betreibe auch einen BYD DESS und lese Daten vom Gerät per Modbus RTU von der nach außen geführten RS485 Schnittstelle.
Erst habe ich den Datenverkehr zwischen Steuerschrank und FEMS nur mitgelesen. Dazu genügt ein einfacher USB Adapter und zum Beispiel HTerm. Vom FEMS kommt immer eine 8 Byte lange “Frage”, z.B.: 0403279F000C7F00. Das erste Byte 04 spricht den Steuerschrank an ( Adresse 4 ). Das zweite Byte 03 fordert das Senden. Die folgenden zwei Byte 279F entsprechen dezimal 10.143 und kennzeichnen das erste zu lesende Register 143. Die nächsten zwei Byte 000C entsprechen dezimal 12 und bezeichnen die Anzahl der angeforderten Daten. Die letzten zwei Byte 7F00 sind die Prüfsumme. Die “Frage” fordert also zum Senden von zwölf Registern beginnend mit 143 auf.
Der BYD antwortet z.B. 0403180051006408010884006B007200042580000054B800004F5EE754.
Das bedeutet: Der Teilnehmer mit der Adresse 04 sendet ( 03 ) mit 24 Byte ( das ist die 18 im dritten Byte ). Die letzten beiden E754 sind wieder die Prüfsumme.
Nach dem Ausfall des FEMS mache ich das jetzt mit python auf einem PI und verpacke danach die für mich interessanten Daten in ein CODESYS konformes Datenpaket für deren “Netzwerkvariablen” und versende es als Broadcast UDP über TCP/IP. So können alle Netzteilnehmer die Daten mitlesen, auch ein Node-Red.

Das das Display am Steuerschrank ähnlich angebunden ist, wusste ich gar nicht. Das “Mitlesen” sollte aber auf gleichem Weg möglich sein…

Da nun doch einige BYD DESS gebraucht im Netz angeboten werden, habe ich mir einen besorgt. Der Steuerschrank könnte mal Ersatzteile spenden, den Batterieschrank habe ich an meine Anlage angeschlossen.

Anfangs sah das auch ganz gut aus, aber ich sehe nun an meinen mitgelesenen Daten, dass das System offenbar nicht weiß, dass es jetzt zwei Batterieschränke gibt?!
Beide Batterieschränke sind 1:1 parallel an den Steuerschrank angeschlossen und ich kann keine Möglichkeit finden, wie das System zwischen beiden Schränken unterscheiden können soll.
Die Kommunikation ist ja CAN und nirgends gibt es Einstellmöglichkeiten für Adressen…
Ich bräuchte dringend einen “alten Hasen” von Fenecon, der mir verrät, wie das System erkennen könnte, dass es jetzt zwei Batterieschränke gibt.

Keine Ahnung, ob das mit OpenEMS funktionieren würde, aber soweit bin ich noch lange nicht…

Grüße
Tom


Das ist ja alles eigentlich auch hier in den Registern beschrieben, da wäre kein “Sniffen” nötig gewesen :smiley: