Hi,
kennt Ihr das Problem, Ihr wollt 20 Batteriemodule mit integriertem BMS im Parallelverbund verwenden, die BMS unterstützen aber nativ keine Parallelschaltung oder nur in begrenzter Stückzahl?
(Parallelverbund heißt, Ihr achtet natürlich auf die Verschaltung nach Tichelmann und eine dem zu erwartenden Kurzschlussstrom im kA-Bereich genügender Absicherung auf der DC-Seite)
Oder Ihr habt ein Akkumodul und wollte mehrere Wechselrichter an einem BMS betreiben, wie es zur Leistungserhöhung oder zur leistungselektronischen Netzkupplung verschiedener AC-Netze gebräuchlich ist?
Oder Ihr wollte die Datentelegramme des BMS inspizieren oder manipulieren, um nachträglich eine netzdienliche Steuerung oder eine Fernauslesung einzurichten?
-
Für diese Anwendungen habe ich hier eine Gateway-Software in Python implementiert.
-
Parallel zum NxM-CAN-CAN-Multiplexing kann auch ein regelmäßiges Statustelegramm über MQTT gesendet werden, für Statusüberwachung.
-
Fernsteuerung (SOC-Limit etc.) ist geplant
Das Gateway verwendet das asyncio-Modul für eventbasierte, asynchrone Programmierung, was eine Form des kooperativen Multitaskings darstellt.
Parallel dazu werden die Module python-can und aiomqtt verwendet.
Im Gegensatz zum Multithreading ist es hier vom Ansatz so, dass die Programmlogik nicht "frei drehen" kann, d.h. alles hat seinen koordinierten Ablauf. Wenn Eingabedaten der BMS ausbleiben, wird das Gateway demnach auch keine Ausgabedaten erzeugen, so dass der oder die angeschlossenen Wechselrichter nach Time-Out einen Fehler erkennen und abschalten können.
Illustration:
Den Code findet Ihr hier:
-
Das BMS-Gateway ist hiermit (Stand v0.0.1) eine Vorabversion, die ausschließlich der Anschauung und als Muster für fachkundige Personen gedacht ist.