Wünsche für BMS FW

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 :grimacing:

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.

2 „Gefällt mir“

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:

  1. Jede Gruppe hat einen Master welcher bis zu 15 Slaves aggregiert.
  2. Alle Master hängen an einem einzigen CAN Bus
  3. Bei mehr als einem Master macht ein LV Hub die Aggregation der Gruppen
  4. 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.

1 „Gefällt mir“

Ich hab ja auch nur vor unanständiger Implementierung gewarnt.

Wie schon privat geschrieben an @nimbus4 wünsche ich mir:

WR: Ladeprofil mit konstanter Leistung (0.5CP/0.5P)
Das heißt nur 1 Ladephase mit konstanter Leistung (bestimmt für Netzbetrieb).

Damit kann man sich bei Kapazitätstesten die neuesten Zelltypen, wie MB30/MB31/CB75/CB71, laut Herstellerangaben laden. Eine zweite Ladephase mit konstanter Spannung und abnehmendem Strom (CV) kann entfallen. Datenblatt MB30 schreibt:

Charging ends: When the cell voltage reaches 3.65 V, stop charging.

Nur für den internen Gleichstromwiderstandstest (DCR) verwendet Eve weiterhin ein CC-CV-Ladeprofil gemäß Datenblattversion A, Abschnitt 1.6.b (Nov. 2023) für das MB30 und MB31.

Mit ein CP-Profil kann den WR benutzt werden als Fast ein bidirektionales Labornetzteil (zum Zyklustests). Auch als Schnellladeprofil für mobile Anwendungen willkommen.

Das BMS macht nicht das Ladeprofil.

Das BMS kann den maximalen Ladestrom an den WR senden. Im Victron-Jargon: Ladestrombegrenzung (CCL).

Vielleicht sollte ich meinen Wunsch anders nennen: dynamischer/spannungsbasierter Ladestrombegrenzing (CCL) bei konstante Leistung. Und wenn die maximale Ladespannung (CVL = 3,65V) erreicht ist, den Ladevorgang stoppen, ggf. CCL auf 0 setzen.

Wenn das Ganze nur für das gelegentliche Durchführen von Kapazitätstests genau nach Herstellervorgaben genutzt werden soll und manuell (de-)aktiviert wird, dürfte das in der Tat recht trivial in der Umsetzung sein. Da nur CCL in Abhängigkeit der höchsten "speziell idealisierten" Zellspannung ( Rausrechnen nur des Spannungsabfalls über den Zellverbinder ) nachgeführt werden muss.
Falls der WR bei 0 für CCL nicht praktisch jegliche Ladungsbewegung zur/von der Batterie unterbindet, so dass man die typische 30 min Ruhe-/Relaxationsperiode vor dem anschließenden Entladen einhalten kann, könnte man zusätzlich den Lade-FET und möglicherweise sogar den Entlade-FET sperren, sobald der Reststrom des WR bei nur noch wenigen Ampere liegt.

Im Grunde steckt hinter diesem veränderten Ladeprofil, das inzwischen wohl viele Hersteller für ihre Zyklentests verwenden, aber mehr: Damit wird nämlich das, was als nominaler 100% SOC definiert wird, gegenüber dem Laden bis 0.05C bei 3.65 V um einige wenige Prozent nach unten verschoben. Es bleibt also bei Laden eine größere Lithiumionen-Restkonzentration in der Kathode.
Meine Vermutung ist, dass das dabei geholfen hat, die spezifizierte Zyklenfestigkeit von ~ 4000 in den Beereich von 8000 Zyklen zu bringen, da bei diesem Profil die Zeit, die die Zelle bei hoher Zellspannung und damit großem Stress für das Elektrolyt verbringt deutlich reduziert wird.

Wenn man diesen "reduzierten SOC", auch in den Regelbetrieb übernehmen möchte sind die Auswirkungen aber größer:
Ich könnte natürlich bei Erreichen des Ladeabbruchkriteriums und nachdem der Restladestrom des WR entsprechend gefallen ist immer den Lade-FET sperren, bis der Pack z.B. auf mindesten 95 % SOC gefallen in. Wenn direkt nach dem Ladeende für eine hinreichende Zeitspanne praktisch kein Entladestrom vom WR verursacht wird , könnte ich aus dem Relaxationsverlauf der Zellen vermutlich sogar auf die SOC-Unterschiede der einzelnen Zellen und damit grob auf den Balancing-Bedarf Rückschlüsse ziehen.
Was dabei problematisch sein dürfte, wäre der Memory-Effekt, den LFP Zellen ausprägen können, wenn wiederholt Teil(ent)ladezyklen gefahren werden. Dieser verursacht Überhöhungen in der Ladespannung der Zellen.
Meiner Erfahrung nach kommt es auch durch Alterung dazu, das manche Zellen bei Annäherung an 100% SOC eine deutlich erhöhte Ladespannung <=> reduzierte Aufnahmefähigkeit von hohen Ladeströmen und ein sehr mitunter verlangsamtes Relaxationsverhalten ( bis zu über mehrere Stunden) nach Ladenende zeigen.
Ich bin also nicht sicher wie prozesssicher das dauerhaft wäre.
Ich denke auch, dass z.B. in der Automobilindustrie nach meinem Kenntnisstand typischerweise mit gutem Grund die Ladeleistung schon bei 90% deutlich reduziert wird.

(Prozess)sicherer wäre es also, wenn man gelegentlich ( mindestens alle paar Wochen ) eine dedizierte Balancing-Phase, in der man die Zellen für > 1 h auf ~ 3.4 - 3.42 V hält, um eine wohl definierte Einschätzung und einen Ausgleich der SOC-Unterschiede der Zellen vornehmen zu können. Dabei würden die Zellen natürlich dann auf einen effektiven SOC von ~ 102 - 105 % geladen, was ich gelegentlich für vertretbar halten würde.

In der Phase dazwischen würde ich sogar davon ausgehen, dass man das Ladeende weitestgegend rein über die SOC-Schätzung auf Basis des Coulomb-Counting vornehmen könnte und damit noch deutlicher flexibler darin ist, wie voll man die Zellen läd, um z.B. besonders schädliche Teilzyklen bei hohem SOC zu verhindern.

Bitte nicht falsch verstehen.... Ihr macht alle einen unfassbar guten Job hier.

Zu dem Zitat, ich bin Old School und kriege immer grüne Pickel, wenn jemand die Fets für irgendwas anderes als NOT-Abschaltung benutzt.

Ich habe inzwischen an verschiedenen Mustern des kombinierten Shunt und MOSFET-Schalters

hunderte Abschaltungen von Kurzschlüssen mit Stromspitzen von ~ 1300 A durchgeführt. Zumindest bei meinem BMS habe ich überhaupt keine Bedenken, die FETs ( insbesondere die Entlade-FETs ) im Betrieb zu betätigen. Da anderes Equipment wie ein WR oder Laderegler damit wegen zu langsamer Regelung aber Probleme machen könnte, würde ich solche Abschaltungen bei Strömen > 10% von maximalen Nominalstrom nicht ohne Not durchführen.

Bei einem BMS, bei dem ich kein Wissen über die Auslegung und Verifikation des MOSFET-Schalter hätte, wäre ich damit aber auch sehr vorsichtig.