Hier sollen Wünsche und Anregungen zur BMS FW, also der SW die auf dem Mikrocontroller des BMS läuft und dessen Verhalten definiert, gesammelt und diskutiert werden.
Für parallel geschaltete Batteriebänke wäre es vorteilhaft, wenn man die Ladespannung um bis zu etwa 500mV absenken könnte. Bei schon abgeklungenem Ladestrom könnte man das Balancieren damit optimieren. Die Mosfets könnte man dazu nutzen, indem men sie in Inversbetrieb mehr oder weniger ansteuert. Die parasitäre Diode würde die daran abfallende Spannung begrenzen. Für Kühlung und Überwachung muss natürlich gesorgt werden.
Hast Du so etwas schon einmal ausprobiert? Welchen Aspekt des Balancing möchtest Du damit optimieren?
Wenn man beim Laden den Discharge-FET nicht durchsteuert würde man 500- 600 mV Spannungsdifferenz erhalten. Bei Strömen bis zu einigen wenigen A wäre das thermisch durchaus vertretbar. Das wäre mit aktueller HW schon möglich.
Die Balancing-Stategie bei meinem BMS weicht allerdings vom Üblichen ab. Mein Ziel ist es, die individuellen Zelleigenschaften, die zur Ladungs-Imbalance führen, also inbesondere die Selbstentladungsdifferenz, zu schätzen und zu kompensieren. Diese Kompensation erfolgt unabhängig davon, ob die Zellspannungen über 3.4 V liegen. Was dann beim Erreichen von 3.4 V noch passiert ist idealerweise nur noch, dass ein kleiner Restfehler korrigiert und damit die Schätzung der Zelleigenschaften verfeinert wird.
Ich lade meine Batterien zunächst bis 3,45V pro Zelle und senke danach auf 3,375V ab. Ist die erste Batterie damit fertig, muss sie unnötigerweise an dieser Spannung bleiben, bis die anderen Batterien ebenfalls voll und balanciert sind.
Wäre deine Strategie dann, dass man
a.) das Vollwerden der "unauffälligen" Packs hinauszögert, dadurch dass man hier frühzeitig die effektive Ladespannung reduziert.
oder
b.) das Weiterladen bei "unauffälligen" Packs, wenn 100% SOC erreicht und das Balancing-Ende Kriterium erfüllt ist, dadurch verhindert ( oder zumindest reduziert ), dass man dann die effektive Ladespannung reduziert.
Für letzteren Fall könnte man auch den Charge-FET einfach solange deaktivieren, bis eine Zellspannugn im Pack unter z.B. 3.36 V gefallen ist.
Dieses Vorgehen, nämlich die Zeit bei hohem SOC und hoher Zellspannung und damit mit besonders reaktiver Anode und folglich hohem Stress für das Elektolyt zu reduzieren, wäre sehr wahrscheinlich am schonensten für die Zellen.
Das habe ich gemeint. An die Möglichkeit die Lade-FETs abzuschalten bin ich gar nicht gekommen. Obwohl ich das schon mal manuell machen wollte
Dass man bei einem BMS mit MOSFET-Schalter in der Regel den Lade- und Entladepfad getrennt schalten kann, ermöglicht im Management von Multi-Pack Anlagen eine ganze Reihe von Möglichkeiten, die soweit mir bekannt heute praktisch nicht genutzt werden.
Z.B. könnte man mit einer geschickten Sequenzierung der FETs das Zuschalten von Packs mit stark unterschiedlichem SOC recht einfach ermöglichen:
Pack A habe 5% SOC, Pack B habe 100 % SOC und soll zu Pack A dazugeschaltet werden. ( Die Packs sollen quasi sequentiell entladen werden )
Pack A wird gerade entladen.
1.) Zunächst wir bei Pack B das Laden und Entladen gesperrt.
2.) Pack B wird physisch an den gemeinsamen Batteriebus angeschlossen
3.) Bei Pack B wird das Laden freigegeben.
4.) Bei Pack A wird das Laden gesperrt.
5.) Bei Pack B wird das Entladen freigeben.
In Folge von Schritt 5 steigt die Spannung an der Sammelschiene von der niedrigen Spannung von Pack A auf die hohe Spannung von Pack B ( bei 16s LFP reden wir von ~ 6.4 V ).
Es kommt dabei zu keinem nennenswerten Energiefluss in Pack A, weil dort das Laden gesperrt ist.
Das Ganze sollte für irgendwelche Lasten oder Energiequellen an der Sammelschiene bis auf den Spannungssprung keinerlei Auswirkungen haben.
Eine solche Funktion möchte ich im nächsten Jahr für mein BMS ergänzen.
Nach einem Pylontech Garantietausch (wurde auf Anhieb anstandslos akzeptiert) bin ich am Verlängern meiner DC Sammelschiene um für die neuen Akkus Platz zu schaffen. Außderdem werden die bislang 2x3 Multis auf 3x3 erweitert. Das schafft mir von der WR Leistung etwas Leistungsreserve für die Split-Klima. Der vorhandene eHZ kann dann mit seinen erlaubten 3x43 Amp ohne Überhitzungsgefahr durch dem bisherigen Dauerbetrieb der Multis an ihrer Leistungsgrenze auch dauerhaft maximal bestromt werden. Hierzu dürfte klar sein, daß die Sammelschiene einen Stromteiler im Mikroohmbereich darstellt, welcher die Belastung unter mehreren Akkus trotz gleich langer Anschlussleitungen nicht wirklich gleichmässig verteilen kann. Auch ein 30x10 Querschnitt bzw. 300mmq heizt sich bei einem Dauerstrom von etwa 600 Amp spürbar auf, so daß sich Stromquellen und Senken in ihrer Position auf der Sammelschiene abwechseln sollten. Wegen räumlicher Restriktionen beim Aufstellen von mehreren Akkupacks in engstem Raum wäre es sogar wünschenswert, unterschiedliche Kabellängen durch unterschiedliche Querschnitte ausgleichen zu können. Ebenso dürfte auch die Belastung im Drehstromnetz nur annähernd symmetrisch sein.
Aus diesem Grund wäre es hilfreich, wenn es eine Möglichkeit gäbe die ohnehin am Shunt gemessenen Ströme eines Akkus parallel im Vergleich zu anderen Akkus im System visualisieren zu können. Dies könnte einen Hinweis dazu geben, ob und in welcher Richtung einzelne Abgriffe auf der Sammelschine zur Angleichung der Ströme verschoben oder einzelne Leitungen gekürzt/verlängert werden können. Möglicherweise ist das bei mehreren CAN Bussen nur im Multiplus sinnvoll? Venus zeigt momentan nur die höchste und niedrigste Zellspannung an. Nicht aber den höchsten und niedrigsten Strom und den daraus indirekt resultierenden SOC eines Packs. Wären diese nicht verschieden, müsste ja auch keine Aggregation gemacht werden. Man könnte damit frühzeitig erkennen, wenn ein einzelner Pack aus dem Arbeitsbereich rausläuft. Beim letzten Pylontech Tausch habe ich das praktisch durch Umstecken des Konsolen-Kabels an allen vorhandenen Packs und Aufschreiben einer Tabelle mit Bleistift und Papier gemacht.
Bei meinem BMS liegen alle Einzelströme dem Master BMS vor.
In meiner GUI kann man mit zwei Klicks zwischen den Strömen der Einzelpacks hin- und herspringen.
Meine GUI könnte ich relativ einfach so erweitern, dass alle Packströme als Traces in einem Graphen dargestellt werden.
Grundsätzich müßte es auch möglich sein, die Ströme per CAN an Venus zu übertragen, um sie dort darzustellen. Mit dem Programmieren von Plugins für Venus habe ich aber keine Erfahrung. Kennt sich hier jemand damit aus?
Bei mehr als 16 Packs also mehreren CAN-Bussen wird es natürliich etwas komplizierter.
Meine GUI könnte man theoretisch so erweitern, dass sie gleichzeitig mit mehreren BMS über BT kommuniuzieren kann. Bereits jetzt kann man sie einfach mehrfach starten und auf einem großen Monitor nebeneinander darstellen.
In Venus kann man natürlich auch die Daten mehrerer CAN-Busse einsammeln.
Über das Pylontech Protokoll habe ich ja schon genug gefrozelt. Momentan macht dieses wieder weitere graue Haare. Neben undokumentierter Kommunikation auf Steuerleitungen abseits von RS485 und CAN gibt es auch undokumentierte Änderungen zwischen den FW Versionen der Akkus. Nach Garantietausch hat einer meiner Akkus jetzt eine neuere Version und läuft deshalb offensichtlich nur als Master in Gruppe1. Außerdem habe ich einen LV-Hub als Ersatz. Er hat ebenfalls eine neuere FW Version und damit krieg ich gar nichts zum Laufen. Vermutlich liegt das an der Inkompabilität der älteren Batterie FW. Mit der alten LV-Hub Version funktionieren wenigstens 2 Gruppen, aber 3 bekomme ich auch nicht hin. Das könnte an der abweichenden Version eines Masters liegen.
Verschiedene Details sind hierbei noch mal klar geworden:
- Jede Gruppe hat einen Master welcher bis zu 15 Slaves aggregiert.
- Alle Master hängen an einem einzigen CAN Bus
- Bei mehr als einem Master macht ein LV Hub die Aggregation der Gruppen
- Die Bus Autokonfiguration funktioniert in keinem Fall
Letzter Punkt ist besonders kritisch. Wir sollten das besser hinkriegen. Der Ausfall von einem BMS bzw. der Kommunikationsausfall einer einzelnen Batterie führt potentiell zu einem gefährlichen Zustand. Damit ein Aggregator Unterscheiden kann ob eine Batterie absichtlich am Bus entnommen oder hinzugefügt wurde oder ob dies durch einen Fehler wie Wackelkontakt am Kabel verursacht wurde, ist meiner Meinung nach zwingend eine manuelle Buskonfiguration erforderlich. Um nicht auf alte Dipschalter zurückgreifen zu müssen, wäre dies etwa durch Einträge in einer Konfigurationsdatei möglich.
Im Fall von einer oder mehreren vermissten Batterien könnte das System vielleicht noch eine Zeit lang weiter laufen, sollte aber mindestens eine nicht übersehbare Warnung abgeben.
Zum Test von chinesischen Anderson Plagiat Steckverbindern habe ich Batterie Dauerströme von 100 Amp provoziert. Hierzu musste die Anzahl der Einzelbatterien auf nur 2 bis 4 Stück verringert werden. Die Testverbindung wäre ansonsten von den anderen Batterien zu sehr entlastet worden. Tatsächlich hat das Vernus System hier die AC Ausgangsleistung dabei begrenzt, damit eine einzelne Batterie nicht überlastet werden kann. Eine Warnung wurde nicht ausgegeben. Die eingestellte AC Leistung wurde einfach nicht erreicht.
Ich denke bzgl. des Verhaltens beim "Verlorengehen" einzelner Packs am Aggregator gibt es je nach Nutzungsszenario unterschiedliche Anforderungen:
In einer "echten" Inselanlage möchte man tendenziell maximale Verfügbarkeit. Eine Trennung/Deaktivierung aller Packs in der Aggregation z.B. nach x Minuten wenn einer nicht mehr normal kommuniziert, wäre da nicht wirklich erwünscht.
Das Verhalten für eine solchen Fall sollte also konfigurierbar sein.
( Im Moment reduziere ich die Kapazität und die erlaubten Ströme die über CAN dem WR gemeldet werden, sowie die Anzahl der Packs die CHG bzw. DSG erlauben. Ein explizites Fehler-Bit setze ich aber, soweit ich mich im Moment erinnere, nicht. )
Bei der Notwendigkeit einer Warnung bin ich definitv bei Dir. Im Worst-Case könnte die ausbleibende Kommunikkation zu einer Batterie schließlich durch einen schwerwiegenden Defekt an dem Pack verursacht werden.
Für meine Bedürfnisse möchte ich da zukünftig den Piezo Buzzer der Display- Einheit nutzen.
Ins Victron System kann man die verschiedensten Fehler vom BMS ja bereits über CAN kommunizieren. Von da aus müßten dann praktisch beliebige Varianten der Benachrichtung möglich sein.
Sobald Du mehrere Einheiten von meinem BMS hast, können wir uns das im Detail ja noch einmal anschauen.
Nur um sicherzugehen, dass dir das bekannt ist: hoher entladestrom bei abgeschaltetem Ladefet ist aber garnicht gut.
Bei einem "anständigen" BMS wird intern zwischen dem "logischen" und dem "wirklichen" Zustand der FETs unterschieden. Der Lade-FET z.B. wird selbst bei gesperrtem Laden aktiviert, wenn ein Entladestrom größer einer gewissen Schwelle vorliegt, aber sofort wieder deaktiviert, sobald der Entladestrom unter die Schwelle fällt.
Ich hab ja auch nur vor unanständiger Implementierung gewarnt.