Pylontech US2000B Daten über Konsole (RS232) auslesen

  • Ich habe 4 der Pylontech US2000B Batterien im Betrieb und der Hersteller knausert mit der Herausgabe des Protokolls für das Auslesen der Batterien. Stand jetzt sind dazu keine Informationen im Internet und den Manuals verfügbar. Erst recht hält sich der Hersteller bedeckt.


    Hier ist also die Anleitung wie man den Batterien die Informationen entlocken kann. Ich benötige die Daten der Batterien, weil die an meinem Wechselrichter PIP4048MS einstellbaren Spannungen für den Speicher zu ungenau sind und durch die flache Kennlinie auch unbrauchbar. Deshalb habe ich mir jetzt ein Programm geschrieben um den PIP bei der 23% Schwelle auf Netzbetrieb umzuschalten.


    Die Batterie kann über den Console Port ausgelesen werden. Bis zu 8 Batterien in Reihe können angesprochen werden.


    Zuerst muss die Konsole aktiviert werden. Dazu das Terminalprogramm auf 1200, 8,N,1 umschalten.


    Dann den folgenden Hexstring an die Batterie senden:


    Data: 7E 32 30 30 31 34 36 38 32 43 30 30 34 38 35 32 30 46 43 43 33 0D


    Jetzt auf 115200,8,N,1 umschalten..


    Data: 0D 0A senden.


    Es erscheint der pylon> Prompt, der die Eingabe von Kommandos ermöglicht.


    Erstes Kommando z.B.


    help\n (\n = Linefeed Zeichen 0A)


    zeigt eine Hilfe


    pwr\n


    /*


    @


    Power Volt Curr Tempr Tlow Thigh Vlow Vhigh Base.St Volt.St Curr.St Temp.St Coulomb Time B.V.St B.T.St


    1 49884 4310 28000 25000 26000 3322 3327 Charge Normal Normal Normal 31 % 2017 - 07 - 09 14:56 : 37 Normal Normal


    2 49832 4472 28000 25000 25000 3321 3323 Charge Normal Normal Normal 31 % 2017 - 07 - 09 14:56 : 36 Normal Normal


    3 49842 4318 28000 25000 25000 3322 3324 Charge Normal Normal Normal 30 % 2017 - 07 - 09 14:56 : 36 Normal Normal


    4 49858 4111 27000 23000 23000 3322 3325 Charge Normal Normal Normal 30 % 2017 - 07 - 09 14:56 : 36 Normal Normal


    5 - ------Absent - ------


    6 - ------Absent - ------


    7 - ------Absent - ------


    8 - ------Absent - ------


    Command completed successfully


    $$


    */


    Die Zahlen sind als Festkommazahlen angegeben und müssen meistens durch 1000 geteilt werden.


    Im Admin Mode stehen sehr viele Routinen zur Verfügung von deren Verwendung abzuraten ist. Bis auf Chip-Ebene um einzelne Chips auf dem Board zu testen.


    Mit


    getpwr 1\n
    ...
    getpwr 8\n


    können die u.a. Zellenspannungen ausgelesen werden. Die Batterien loggen extrem viel. Es lässt sich z.B. eine Event Historie auslesen.


    Mit dem Befehl soh\n kann man den State of Health auslesen.
    reimer22
    Öfters hier



    Beiträge: 13
    Registriert: 13.02.2017, 15:34
    Info: Interessent

  • Zitat von reimer22

    Ich habe 4 der Pylontech US2000B Batterien im Betrieb und der Hersteller knausert mit der Herausgabe des Protokolls für das Auslesen der Batterien. Stand jetzt sind dazu keine Informationen im Internet und den Manuals verfügbar. Erst recht hält sich der Hersteller bedeckt.


    Hier ist also die Anleitung wie man den Batterien die Informationen entlocken kann.


    Ganz super, weiter so!



    Zitat von reimer22

    Ich benötige die Daten der Batterien, weil die an meinem Wechselrichter PIP4048MS einstellbaren Spannungen für den Speicher zu ungenau sind und durch die flache Kennlinie auch unbrauchbar. Deshalb habe ich mir jetzt ein Programm geschrieben um den PIP bei der 23% Schwelle auf Netzbetrieb umzuschalten.



    Meiner Erfahrung nach ist der PIP für LiFePO recht genau und zuverlässig programmierbar:
    https://www.photovoltaikforum.…t=108703&hilit=optimieren


    Vor allem die Untergrenze hat mir nie Probleme bereitet, auch wenn ich - bei selber zusammengestellten Blocks - immer eine 2. und unabhängige Firewall/ Abschaltung empfehlen würde.
    Ich hab allerdings - zumindest den Sommer über - die Netzverbindung des PIP gekappt um frühzeitigen fallback des PIP aufs Netz zu unterbinden.
    Dein Ansatz mag da eleganter sein, vielleicht kannst dazu näher was ausführen?
    Liest du den SOC vom Akku aus und programmierst du dann den PIP entsprechend um?



    ###


    Eines der grössten Dilemmas beim PIP im Zusammenwirken mit LiFePO ist das Fehlen eines battery-sensing (4-Leiter Messung).
    Dadurch wird der Akku bei begrenzten Sonnenstunden nicht in kürzest möglicher Zeit aufgeladen (problematisch bei wechselhaftem Wetter, in der Übergangszeit und in der dunklen Jahreszeit).
    In der dunklen Jahreszeit - wo eine volle Aufladung praktisch nicht erreicht werden kann - kann man sich damit behelfen die Bulk-Spannung hinaufzusetzen - nur darf man dann im Frühjahr nicht darauf vergessen, diese wieder zurückzunehmen, sonst gefährdet man den Akku durch Überladung.
    Ich hab diese Problematik inzwischen durch den Einsatz der PCM60X Laderegler gelöst (identes Trum wie im 4048, lediglich in eigenem Gehäse), welche ein battery-sensing zur Verfügung stellen. Das klappt auch perfekt, aber mich würde trotzdem sehr interessieren, wie du diese Problematik anpackst. Oder hast du bei deiner Anlage extrem kurze Akkukabel?

    LiFePO ist anders.


  • Anlage: Momentan 6.2kWp PIP4048MS BG Stromzähler (RS485) und 4 x Pylontech US2000B Batterien parallel zu 48V/100Ah Blei.


    Erster Schritt war für mich die Programmierung eines Loggers, der die Daten meiner Geräte in 10 sek. Schritten loggt und in eine Dateisystemstruktur schreibt. Für jeden Tag wird eine csv (mit Excel lesbare Textdatei) in das entsprechende Verzeichnis eingespeichert. So hat man für jeden Tag die Daten in 10 sek Schritten. Das ist fein genug um Probleme zu erkennen. Da es Textdateien sind kann man bei Fehlern die Daten schnell editieren. Diesen Logger hatte ich für den PIP 4048 geschrieben. Die Visualisierung erfolgt über National Instruments Diadem. Der Messdatenerfassungsrechner ist ein
    Z83 II Mini PC Windows 10 TV Box Mini Desktop-PC und vor ein paar Wochen noch 99€ gekostet.


    Deine ermittelten Werte (aus deinem obigen Thread) entsprechen ungefähr meinen Einstellungswerten am PIP.


    Das Problem das sich bei ergibt, ist bei niedriger langanhaltender Last, kann man meiner Meinung nach keinen vernünftigen Spannungswert am PIP einstellen, der eine Entladung unter 20% verhindert.


    Meine Werte (aktueller Stand meiner Forschung ;):
    Back to Grind: 47V
    Back to discharge: 48V
    Floating U: 52.7V
    Const U: 53.5V
    Max charging current: 80A (ab 2 Batterien)


    Bei Dir "Back to discharge = 49V" bedeutet bei mir, dass kurze Lastpeaks den PIP über die Nacht auf Netzbetrieb lassen, da die Batterien, obwohl sie noch ausreichend voll sind, mit der Spannung nicht mehr über 49V kommen. Deine Einstellung ist sicherer aber man verliert, da höherer Netzbezug und nur ein leerer (20%) Akku am nächsten morgen, ist ein Akku der sein Geld wert war.


    Also die Sache mit den Einstellungen und LifePO4 am PIP ist uneffektiv, wenn man den Ladestand der Batterien nicht kennt. Deshalb habe ich den Logger erweitert, damit er die Batteriedaten auch in 10 sek. Abständen ausliest und wenn der SOC unter 25% geht, den PIP auf Netzbezug umstellt. 25% da der PIP eventuell noch durch die Nacht muss und Eigenverbrauch hat. Man könnte das noch erweitern, das er den PIP ab 21% auf Netzladen (bis auf 24%) stellt, so das auch längere Phasen Nichtladung abgedeckt sind.


    Die Steuerung auf Netzbezug erfolgt über das PIP Kommando POPnn<CRC>. Mit POP02 wird der PIP auf SBU mit POP00 auf Netzbezug umgestellt. Die Frage ist, ob das Schreiben der Einstellung in einen Flash o.ä. Speicher erfolgt, und ob dieses Einfluss auf die Lebensdauer des Speichers hat, da die Speicher i.A. eine begrenzte Anzahl von Zyklen haben. Leider hat maximum_solar (ebay) gesagt, das er nur dealer ist, und keine Ahnung hat.


    Zu deinen Einstellungen: Die Spannung an den Batterien sollte nicht über 54V gehen. Beim Laden mit 80A koppeln sich die Batterien im Bereich von 53V relativ schnell ab. Die Spannung an der Batterie schwingt über. Deshalb würde ich den const U Wert auf <= 53.4 V lassen. Jedes Mal wenn die Spannung über den Wert geht wird in den Batterien ein Counter hochgezählt (kann man im Admin Modus der Batterie sehen). Die Batterie unterscheidet zwischen OV und High OV. So genau habe ich mir das noch nicht angeschaut.


    Zitat von photoenchen4me

    Eines der grössten Dilemmas beim PIP im Zusammenwirken mit LiFePO ist das Fehlen eines battery-sensing (4-Leiter Messung).
    Dadurch wird der Akku bei begrenzten Sonnenstunden nicht in kürzest möglicher Zeit aufgeladen (problematisch bei wechselhaftem Wetter, in der Übergangszeit und in der dunklen Jahreszeit).
    In der dunklen Jahreszeit - wo eine volle Aufladung praktisch nicht erreicht werden kann - kann man sich damit behelfen die Bulk-Spannung hinaufzusetzen - nur darf man dann im Frühjahr nicht darauf vergessen, diese wieder zurückzunehmen, sonst gefährdet man den Akku durch Überladung.
    Ich hab diese Problematik inzwischen durch den Einsatz der PCM60X Laderegler gelöst (identes Trum wie im 4048, lediglich in eigenem Gehäse), welche ein battery-sensing zur Verfügung stellen. Das klappt auch perfekt, aber mich würde trotzdem sehr interessieren, wie du diese Problematik anpackst. Oder hast du bei deiner Anlage extrem kurze Akkukabel?


    Ja, aber das Problem kann man mit Software lösen. Vielleicht gebe ich die Software mal frei, das dauert aber noch mindestens bis über die NRW Sommerferien.

  • Hallo,
    die Lösung klingt interessant.
    Habe einen HX10.000 von Effekta und 2 Pylontech US2000B. Und ich möchte auch den Batteriestatus lesen und damit den Wechselrichter steuern.


    Wie weit ist denn Deine Software für den Z83 gediehen?
    Grüße
    Gerhard

  • Hallo,


    da meine Pylontech-Batterie im Keller steht und ein serielles Kabel über 20m lang wäre, hab ich mal
    mit einer ESP32 WROOM NodeMcu (Nachfolger vom ESP8266) experimentiert, um die wichtigsten Batteriedaten über WLAN per MQTT- Protokoll an einen Mosquitto-ServerServer auf einen Raspi zu senden.


    Die ESP32 NodeMcu habe ich mit der Ardiuno-umgebung programmiert. Die Software kann die Spannung, Ladestrom,Temperatur und SoC aus der Pylontech auslesen. Außerdem können diese Werte auf einem SPI- Display und/oder einem I2C-Oled dargestellt werden. Ein 4-fach 16_Bit AD-Wandler ADS1115 kann ebenfalls ausgelesen werden, um z. Beispiel den Gesamtstrom oder die Spannung am Laderegler zu messen.


    Leider gehöre ich nicht zu den größten noch lebenden Programmierern sondern zu den Low-level-CopyandPaste-Lutschern.
    Das informationstechnische Werk ist daher eher als Starthilfe für eigene Projekte geeignet.


    Wer Interesse (auch am Erfahrungsaustausch) hat, schickt mir ne PN.


    Grüße
    Kurtow


  • Das klapp leider nicht bei mir
    Egal, was ich eingebe, ich bekomme zurück:


    00000000 A0 B3 F6 D6 76 36 F6 36 F6 F6 F6 F6 36 DD F5 DD ....v6.6....6...
    00000010 95 00 ..


    der Hexstring 7E32303031343638324330303438353230464343330D ändert nichts


    Wenn ich dann auf 115200 umschalte bekomme ich nur noch 24 mal 00 zurück


    Ich hab auch andere Baudraten getestet.

    Dowell iPower 3000 Batteriewechselrichter 3kW 48V
    2 x 260 W + 2x270 W Module mit Envertec Modulwechselrichter + EnverBridge
    PYLONTECH LiFePO4 Speicher 48V - 2,4 kWh
    Zähler: Acrel ADL3000

  • Mir ist gerade ein gravierender Unterschied zwischen der englischensprachigen und der deutschen Bedienungsanleitung aufgefallen! (beide Version 1.0)


      DIP-Schalter zur manuellen Adressenvergabe eines Moduls
      3.4 Adressierung
      Im Normalfall ist eine manuelle Adressierung nicht notwendig. Wie in Abbildung 8 dargestellt, ist
      das Modul mit nicht belegtem „Link Port 0“, das Master-Modul und adressiert alle weiteren
      Module automatisch, sofern diese alle auf Adresse 0 (Auslieferungszustand) eingestellt sind.
      Über die DIP-Schalter können Sie alle Module an der Link-Schnittstelle manuell adressieren.
      Adresse wird dazu binär auf die einzelnen Schalter angewendet. Abbildung 9 zeigt die Umsetzung
      der jeweiligen gewählten Adressnummer.


      ADD Switch: 4 ADD switches, to definite different baud rate.
      Nether position is OFF, means “0”. Upper position is ON, means
      “1”. “0000” setup the baud rate 115200, and “1000” setup the
      baud rate 9600.


    in der englischsprachigen Anleitung steht gar nichts von Adressierung


    Was denn nun?


    Das sind ja zwei völlig verschiedene Dinge, also nicht nur ein Schreib- oder Übersetzungsfehler.


    Und auf welche Schnittstelle bezieht sich die Baudrateneinstellung?

    Dowell iPower 3000 Batteriewechselrichter 3kW 48V
    2 x 260 W + 2x270 W Module mit Envertec Modulwechselrichter + EnverBridge
    PYLONTECH LiFePO4 Speicher 48V - 2,4 kWh
    Zähler: Acrel ADL3000