Technische Artikel

MathWorks Insights

PyBaMM aus MATLAB ausführen: Erweiterung der Batteriesimulationsfähigkeiten


Autoren:

  • Sebastián Arias Alfaro, MathWorks
  • Chris Lim, MathWorks
  • Xiangchun Zhang, MathWorks

10 Minuten Lesezeit

Schlagwörter:

Zusammenfassung

  • Die Modellierung von Batterien wird branchenübergreifend immer wichtiger für Design, Steuerung und virtuelle Verifizierung.
  • MATLAB, Simulink und Simscape bieten eine integrierte Umgebung für dynamische Batterie- und Systemsimulationen.
  • PyBaMM fügt fortgeschrittene elektrochemische Modelle und Parametersätze hinzu, die in MATLAB, Simulink oder Simscape ausgeführt werden können.

Einleitung

Die Modellierung von Batterien ist eine entscheidende Aktivität bei der Entwicklung von Batteriemanagementsystemen in vielen Branchen. Batteriemodelle sind als Teil eines Echtzeit-Ladezustandsschätzungsalgorithmus in die Batteriesteuerungssoftware eingebettet. Sie werden für die schnelle Prototypenerstellung und Entwicklung der Batteriesteuerungsstrategie, zur Untersuchung von Designempfindlichkeiten in Forschungs- und Entwicklungsaktivitäten sowie zur Durchführung von virtuellem Design und Verifizierung während eines Batterieprodukt-Designzyklus verwendet. Alle diese Aufgaben können mit MATLAB® Simulink® und Simscape™ durchgeführt werden, die eine leistungsstarke Umgebung für virtuelle Batterietests bieten, wobei die Steuerungssoftware in den Rest des Systems integriert ist.

Grafik, die sechs Aspekte der Batteriemodellierung darstellt: Design, Lebensdauer, Sicherheit, Steuerung, Charakterisierung und thermische Eigenschaften.

Abbildung 1: Anwendungen der Batteriemodellierung.

PyBaMM ist ein führendes Open-Source-Tool, das eine Bibliothek von Batteriemodellen mit verschiedenen Komplexitätsgraden je nach Ihren Anforderungen bereitstellt. Diese detaillierten, hochauflösenden elektrochemischen Batteriemodelle mit integrierten Degradationseffekten können direkt aus einem MATLAB Skript ausgeführt oder in Simulink eingebettet werden. Darüber hinaus können Sie PyBaMM-Parametersätze direkt in Simscape Battery™-Blöcke importieren, die die Codegenerierung, die automatisierte Erstellung von Batteriepackmodellen und die Modellierung elektrothermischer Systeme sowie vollständig akausale Modellierungsabläufe unterstützen.

Dieser Artikel erklärt, wie man PyBaMM direkt aus MATLAB heraus ausführt, PyBaMM-Batteriemodelle in Simulink importiert und die Parameter aus PyBaMM-Batteriemodellen in entsprechende Simscape Battery Batterieblöcke importiert. Die zum Inhalt gehörenden Dateien sind zum Download verfügbar.

Diagramm mit drei Integrationsmethoden zwischen PyBaMM und MATLAB: PyBaMM direkt aus MATLAB ausführen, Co-Simulation und Importieren von PyBaMM-Parametersätzen in Simscape Blöcke.

Abbildung 2: PyBaMM-zu-MATLAB Integrationsworkflows.

PyBaMM-Installation

Um PyBaMM innerhalb von MATLAB auszuführen, müssen Sie zuerst eine Python-Umgebung einrichten, die innerhalb von MATLAB zugänglich ist. (Die kompatiblen Python-Versionen für jede MATLAB Version finden Sie hier.) Für dieses Beispiel verwenden wir MATLAB R2025a und Python 3.11.

Um PyBaMM in Ihrer Python-Umgebung zu installieren, folgen Sie den Anweisungen auf der PyBaMM-Website.

Sobald Sie über eine kompatible Python-Umgebung mit installiertem PyBaMM verfügen, können Sie eine PyBaMM-Simulation aus MATLAB heraus ausführen. Wenn Sie mehrere Python-Installationen auf Ihrem Rechner haben (oder virtuelle Umgebungen verwenden), geben Sie MATLAB die gewünschte Python-Executable an:

% pe = pyenv("Version", "<path_to_Python.exe>");

Um den Pfad zu Ihrer Python-Ausführungsdatei innerhalb der Python-Umgebung zu erhalten, führen Sie die folgenden Befehle in der Python-Befehlszeile aus:

>>>import sys
>>>print(sys.executable)

Um zu überprüfen, ob PyBaMM in der von MATLAB verwendeten Python-Umgebung installiert ist, führen Sie folgenden Befehl in der MATLAB -Befehlszeile aus:

tf = check_pybamm_install()

  tf = logical
     1

Sobald Sie überprüft haben, dass MATLAB eine Python-Umgebung mit installiertem PyBaMM verwendet, können Sie eine PyBaMM-Simulation direkt aus MATLAB heraus starten.

PyBaMM in MATLAB ausführen

Die Durchführung eines PyBaMM-Experiments in MATLAB ist ähnlich wie die Durchführung in Python. Wir verwenden ein Beispiel aus der PyBaMM-Dokumentation.

Zuerst importieren Sie das PyBaMM-Modul und richten das Modell- und Simulationsobjekt ein. Anschließend wird eine Simulation durchgeführt (in diesem Fall über eine Stunde mit Zeitschrittweiten von 90 Sekunden), um die Lösung zu ermitteln:

pybamm = py.importlib.import_module('pybamm');
model = pybamm.lithium_ion.SPMe();
simulation = pybamm.Simulation(model);
solution = simulation.solve(0:90:3600);

Extrahieren Sie anschließend die Variablen, die Sie interessieren, aus dem Lösungsobjekt. Füllen Sie das Lösungen-Data Dictionary mit den Variablen (in diesem Fall Zeit und Spannung), bevor Sie diese in Double-Datentypen konvertieren, die in MATLAB verwendet werden können:

variables = py.list({'Time [s]', 'Voltage [V]'});
solution.update(variables);
t = double(solution.data.get('Time [s]'));
v = double(solution.data.get('Voltage [V]'));

Die x und y-Variablen sind nun MATLAB Arrays, die Sie mit der normalen MATLAB-Syntax plotten können:

figure; hold on;
plot(t, v, "-");
plot(t, v, ".", "MarkerSize", 5);
grid on; xlabel("Time (s)"); ylabel("Voltage (V)");
Liniendiagramm, das die allmähliche Abnahme der Batteriespannung im Laufe der Zeit zeigt, mit einem starken Abfall gegen Ende des Zyklus.

Abbildung 3: Batterieklemmenspannung aus dem PyBaMM SPMe-Modell, simuliert in MATLAB.

PyBaMM innerhalb von Simulink ausführen

Seit MATLAB R2025a kann Python-Code in Simulink mithilfe von Python Code-Block ausgeführt werden. Dieser Block ermöglicht es Benutzern, nativen Python-Code zu schreiben und ihn innerhalb eines Simulink-Modells auszuführen.

Der Python-Code-Block bietet Benutzern die Möglichkeit, Python-Code zu schreiben, der bei der Modellinitialisierung, bei jedem Modellschritt und bei der Beendigung einer Simulation ausgeführt wird. Benutzer können außerdem die Ports und Parameter für ihren Python-Code definieren, wodurch der Block mit anderen Blöcken innerhalb von Simulink interagieren und parametrisiert werden kann, wie sie es auch mit anderen Blöcken auf der Simulink -Arbeitsfläche tun würden.

In diesem Beispiel nehmen wir eine Stromlast und geben die Spannungsantwort der PyBaMM-Simulation aus, wobei wir dem Benutzer auch die Möglichkeit geben, den anfänglichen Ladezustand für das Zellmodell zu definieren.

Anschlüsse und Parameter

Die Anschlüsse und Parameter sind in Abbildung 4 dargestellt; die Parameter sind wie folgt definiert:

  • current_in ist ein Eingang und definiert die Stromlast für die Zelle. In PyBaMM wird ein positiver Stromeingang verwendet, um das Entladen anzuzeigen.
  • voltage_out ist ein Ausgang, der die Spannungsantwort der Zelle enthält.
  • StepSize ist ein Parameter, der den festen Zeitschritt bestimmt, den der PyBaMM-Solver für die Simulation verwendet.
  • InitialStateOfCharge ist ein Parameter, der verwendet wird, um den anfänglichen Ladungszustand zu Beginn der Simulation festzulegen.
  • simulation ist eine persistente Variable, die es ermöglicht, dass dieser Parameter über verschiedene Phasen der Simulation hinweg im Speicher erhalten bleibt.
Dialogfeld mit Anzeige des Abschnitts „Ports und Parameter“ der Python Code-Blockmaske.

Abbildung 4: Abschnitt „Ports und Parameter“ im Dialogfeld „Python Code-Blockmaske“.

Vier dieser Ports und Parameter sind als Datentypen „double“ definiert. Sie werden automatisch in Python-Gleitkommazahlen konvertiert. Der Simulation-Parameter ist als PythonObject definiert, da es sich um eine PyBaMM-Klasse handelt.

Initialisieren

Der Reiter „Initialize“ enthält den Code, der einmalig zu Beginn einer Simulink-Simulation ausgeführt wird. Wir verwenden dies, um das PyBaMM-Modell zu definieren und Anfangsbedingungen festzulegen.

Dialogfeld mit Anzeige des Initialisierungsabschnitts der Python-Codeblockmaske.

Abbildung 5: Initialisieren der Registerkarte „Code“ im Dialogfeld „Python-Codeblockmaske“.

Hier importieren wir das PyBaMM-Modell und definieren das zu verwendende Zellmodell (in diesem Fall ein SPMe-Modell). Wir erstellen das PyBaMM-Simulationsobjekt und speichern es in der Simulation Variable (definiert als persistenter Parameter). Anschließend legen wir die Stromfunktion als Eingabe fest und setzen das simulation-Objekt fest, das unseren benutzerdefinierten Anfangsladezustand haben soll.

Ausgabe

Die Registerkarte „Output“ definiert den Code, der in jedem Schritt des Simulink Solvers ausgeführt wird.

Dialogfeld mit Anzeige des Ausgabebereichs der Python-Codeblockmaske.

Abbildung 6: Registerkarte „Output code“ im Dialogfeld „Python Code-Blockmaske“.

In diesem Beispiel aktualisieren wir den Stromeingang mit dem neuesten Wert aus dem current_in-Port und führen die Simulation um den im StepSize-Parameter definierten Wert weiter. Anschließend rufen wir den Wert der Klemmenspannung aus dem Ergebnis-Dictionary ab, das vom PyBaMM-Lösungsobjekt generiert wurde, und geben den neuesten Zeitreihenwert über den voltage_out-Port zurück.

Python Code Block-Parametrisierung

Im obigen Abschnitt „Anschlüsse und Parameter“ haben wir zwei Parameter für den Python Code-Block definiert. Diese erscheinen dann in den Blockdialogparametern (siehe unten).

Dialog für Python-Codeblockparameter mit Feldern für StepSize (0,1), InitialStateOfCharge (0,5) und Sample time(0,1).

Abbildung 7: Python-Code-Blockmaske nach Änderungen im Blockdialog.

PyBaMM verwendet eigene Solver für die Simulation. Daher ist es wichtig, mit der Schrittzeit des Simulink Solvers synchronisiert zu bleiben. In diesem Fall verwenden wir einen Solver mit fester Schrittweite und einer Zeitschrittweite von 0,1 Sekunden (daher haben wir den StepSize-Parameter als 0,1 festgelegt).

Der Python-Code-Block hat ebenfalls seinen eigenen Sample time Parameter. In diesem Fall muss der Wert ebenfalls auf 0,1 gesetzt werden.

Simulation ausführen

Sobald Sie Ihre PyBaMM-Simulation parametrisiert haben, können Sie die Simulation wie gewohnt ausführen.

Beispielhafte Anordnung des Python-Code-Blocks im Simulink Canvas.

Abbildung 8: Python-Codeblock im Simulink Canvas.

In unserem Beispiel belasten wir die Zelle nach 5 Sekunden mit einer Last von 10 A, beginnend mit einem Ladezustand von 50 %. Ein positiver Eingangsstromwert führt zur Entladung der Batterie. Dies führt zu der in Abbildung 9 dargestellten Spannungsantwort.

Zwei Diagramme zeigen, wie die Spannung nach 5 Sekunden abfällt, während die Stromlast ansteigt und bis zur 10. Sekunde konstant bleibt.

Abbildung 9. Zeitreihen von Eingangsstrom und Ausgangsspannung an den Klemmen aus der Simulation.

Dies ist die einfachste Konfiguration, die erforderlich ist, um eine PyBaMM-Simulation in Simulink auszuführen.

PyBaMM-Parametersätze in Simscape Blöcke importieren

PyBaMM bietet mehrere vordefinierte Parametersätze für gängige Batteriechemien, die der wissenschaftlichen Literatur entnommen sind. Innerhalb von PyBaMM werden diese Mengen als Klassenobjekte vom Typ ParameterSets definiert. Um einen dieser Parametersätze in einem MATLAB Simscape -Block zu verwenden, muss zuerst ein „äquivalenter“ Simscape Elektrochemie-Modellblock erstellt werden. In diesem Beispiel wird ein Parametersatz importiert, der im Simscape-Modell Battery Single Particle mit Elektrolytblock (TSPMe) verwendet werden soll. Dieser Block ist in Simscape Battery verfügbar.

Zusätzlich wird ein MATLAB Skript oder eine Objektklasse benötigt, die Folgendes kann:

  • Speichern Sie die TSPMe-Parameter.
  • Führen Sie die Parameterkonvertierung von der Standard-PyBaMM-Konvention zu Simscape durch.
  • Den Simscape Block automatisch parametrisieren.

Im Rahmen dieses Artikels stellen wir Ihnen ein benutzerdefiniertes TSPMeParameterSet-Objekt zur Verfügung, das als Parametercontainer für den TSPMe-Block dient und die folgenden PyBaMM-Parametersätze in den Simscape-Block Battery Single Particle importieren kann: ["Chen2020","Marquis2019","OKane2022 ","Ai2020 "]. Diese Klasse kann erweitert werden, um andere Parametersätze zu verwenden oder um jeden anderen Modelltyp zu parametrisieren (z. B. ein Ersatzschaltbildmodell oder ein P2D-Modell). Um einen Parametersatz zu importieren, definieren Sie zuerst den gewünschten Parametersatznamen in MATLAB:

ParameterSetName = "OKane2022";

Um das Parametercontainerobjekt zu instanziieren und den PyBaMM-Parametersatz zu importieren, führen Sie die folgenden Befehle im Befehlsfenster aus:

SimscapeParameterSet = TSPMeParameterSet(ParameterSet = ParameterSetName);

Geometrieparameter werden importiert... Fertig.
Import der minimalen/maximalen Stöchiometrien...Fertig.
OCP-Vektoren werden importiert... Fertig.
Importieren der Elektrodenparameter... Fertig.
Importieren der Elektrolytparameter... Fertig.
Import der Elektrolytdiffusions- und Elektrolytkoeffizienten... Fertig.
Ladungstransferraten werden importiert...Fertig.
Thermische Masse wird importiert... Fertig.
Import der anfänglichen Elektrolytkonzentration...Fertig.

Das Parametercontainerobjekt enthält nun den von PyBaMM angegebenen Parametersatz. Um einen Batterie-Einzelpartikelblock aus Simscape automatisch zu parametrisieren, führen Sie die folgenden Befehle im MATLAB -Befehlsfenster aus:

modelname = "PyBaMM_Simscape_Example";
batteryBlockPath = strcat(modelname,"/","Battery");
open_system(modelname);
parameterizeTSPMe(SimscapeParameterSet, batteryBlockPath);

Der obige Codeausschnitt sollte den Batterieblock im Simscape Beispielmodell parametrisiert haben.

Schema eines Batteriemodells mit Last-, Anlagen- und Messblöcken.

Abbildung 10. Parametrisierter Batterie-Einzelpartikelblock.

Simscape TSPMe-Ausgabe validieren

Anschließend können Sie Ihre Parametrisierung des Batterie-Einzelpartikel-Blocks validieren, indem Sie eine Simulation mit PyBaMM und Simscape durchführen und die Ausgangsspannungen an den Batterieklemmen vergleichen. Zuerst definieren wir den Laststrom und die Randbedingungen:

BatteryCurrent = 2.5; % A
AmbientTemperature = 298.15; % K

PyBaMM-Simulation

Um eine PyBaMM-Simulation unter diesen Bedingungen durchzuführen, müssen Sie zuerst einen PyBaMM-Parametersatz erstellen und aktualisieren. Um dies zu erreichen, führen Sie folgenden Code in der MATLAB -Befehlszeile aus: 

PyBaMMParameterSet = pybamm.ParameterValues(ParameterSetName);
PyBaMMParameterSet.update(py.dict(dictionary("Ambient temperature [K]", AmbientTemperature)));
PyBaMMParameterSet.update(py.dict(dictionary("Current function [A]", BatteryCurrent)));

Dieser PyBaMM-Parametersatz enthält auch Parameter, die mit dem Wärmeübergang in der Umgebung zusammenhängen, sodass Sie ihn für beide Simulationen verwenden können. Um diese Parameter für die Verwendung in der Simscape -Simulation zu extrahieren, führen Sie den folgenden Code in der MATLAB -Befehlszeile aus:

CoolingSurfaceArea = PyBaMMParameterSet.get('Cell cooling surface area [m2]');
HeatTransferCoefficient = PyBaMMParameterSet.get('Total heat transfer coefficient [W.m-2.K-1]');

Um die PyBaMM-Simulation auszuführen, führen Sie folgenden Code aus:

model = pybamm.lithium_ion.SPMe();
simulation = pybamm.Simulation(model,parameter_values=PyBaMMParameterSet);
solution = simulation.solve(0:10:3600*2);

Simscape Simulation

Um dieselbe Simulation in Simscape auszuführen, führen Sie folgenden Code aus:

set_param(modelname,"StopTime","3600*2")
set_param(modelname,"SimscapeLogType","all")
out = sim(modelname);

Wie zuvor extrahieren Sie die Variablen, die Sie interessieren, aus dem PyBaMM-Lösungsobjekt. Füllen Sie das Lösungen-Data Dictionary mit Ihren Variablen (in diesem Fall Zeit und Spannung), bevor Sie diese in den Datentyp „double“ konvertieren, den Sie in MATLAB verwenden können:

variables = py.list({'Time [s]', 'Voltage [V]'});
solution.update(variables);
time = double(solution.data.get('Time [s]'));
voltage = double(solution.data.get('Voltage [V]'));

Die Simscape aus Das Simulationsausgabeobjekt enthält die Batteriespannung und alle anderen vom TSPMe-Block erfassten Variablen. Um ein Vergleichsdiagramm zwischen PyBaMM und Simscape zu erstellen, führen Sie folgenden Befehl aus:

figure;
plot(time, voltage, "o");
halten An
plot(out.simlog.Battery.batteryVoltage.series.time,out.simlog.Battery.batteryVoltage.series.values,"r");
grid on
xlabel("Time (s)")
ylabel("Voltage (V)")
legend(["PyBaMM","Simscape"])
Diagramm zum Vergleich zweier Spannungskurven im Zeitverlauf, das eine enge Übereinstimmung mit einem scharfen Abfall gegen Ende der Entladung zeigt.

Abbildung 11. Vergleich der Klemmenspannung zwischen Battery Single Particle und PyBaMM SPMe.

Bitte beachten Sie, dass der Validierungsfehler je nach angewendeter C-Rate und Temperaturbedingungen variiert. Der standardmäßige Simscape TSPMe-Block enthält keine Konzentrationsparameterabhängigkeit für die Diffusivität und die Elektrolytleitfähigkeit, die im PyBaMM-Modell berücksichtigt werden kann. Daher ist bei höheren C-Raten mit einer größeren Diskrepanz zwischen den Klemmenspannungswerten zu rechnen.

Skalierung von Batteriezellen zum System

Um unser Simscape Modell von der Zelle zum System zu skalieren, verwenden Sie die Funktion „Simscape Battery Pack Builder“. Erstellen Sie zunächst ein Batteriezellenobjekt und verknüpfen Sie es mit dem Modellblock „Batterie – Einzelpartikel“:

battCell = batteryCell();
battCell.CellModelOptions.CellModelBlockPath = "batt_lib/Cells/Electrochemical/Battery Single Particle";
battCell.CellModelOptions.BlockParameters.StoichiometryBreakpointsSpecification = "absolute";

Nachdem Sie Ihr Batteriezellenobjekt definiert haben, skalieren Sie Ihr Zellenmodell auf Modulebene, indem Sie den folgenden MATLAB -Befehl ausführen:

battPSet = batteryParallelAssembly(battCell,4, "Rows",4);
battModule = batterieModule(battPSet,4, ...
    "ModelResolution", "Detailed",...
    "AmbientThermalPath","CellBasedThermalResistance");

Sie können die Modellauflösung erhöhen, indem Sie die ModelResolution-Eigenschaft auf „Detailed“ setzen. Um Ihr Batteriemodell automatisch zu generieren, führen Sie folgenden Befehl aus:

buildBattery(battModule, "MaskParameters", "VariableNamesByType");

Der obige Codeausschnitt sollte eine Batteriebibliothek mit Ihrem Batteriemodul-Modellblock wie in Abbildung 12 dargestellt erzeugt haben.

Abbildung eines Batteriemodulmodells im Simulink Canvas, generiert mit der Funktion buildBattery.

Abbildung 12. Batteriemodulmodell erstellt mit dem Batterie-Einzelpartikel-Block.

Die zum Ausführen dieses neuen Modellblocks erforderlichen Parameter sind im neu generierten Skript gespeichert: Batteries_param.m. Um die Modulparameter mit dem PyBaMM-Parametersatz zu verknüpfen, führen Sie folgenden Befehl aus:

Module1 = SimscapeParameterSet.getModuleElectrochemicalParameters(SimscapeParameterSet);

Mit diesem neu erstellten Batteriemodellblock können Sie nun eine Simulation einer konstanten Batterieentladung in der Simulink Umgebung erstellen und ausführen. Darüber hinaus können Sie das BatterySimulationChart verwenden, um wichtige Batterievariablen dynamisch in Ihrer Simulation zu visualisieren. Um die Simulation zu erstellen und auszuführen, führen Sie folgenden Befehl aus:

run("CreateAndRunBatterySimscapeModel.mlx")

Fazit

In diesem Artikel stellten wir drei verschiedene Arbeitsabläufe zur Integration der PyBaMM-Batteriemodellierungsfunktion in MATLAB, Simulink und Simscape vor. Jeder Arbeitsablauf hat seine eigenen Vorteile und eignet sich besser für bestimmte Aktivitäten. Die Integration von PyBaMM mit Simulink ist beispielsweise eine gute Methode, um schnell Prototypen zu erstellen und ein Batteriemanagementsystem zu entwickeln. Das Importieren von PyBaMM-Parametersätzen in Simscape ist eine gute Methode, um akausale physikalische Modelle zu erstellen, die effizient skaliert und in eine umfassendere elektrische und thermische Simulation einbezogen werden können. Die Skalierung von Zell- zu Systemmodellen kann effizient mit der Funktionalität des Simscape Battery Pack Builders durchgeführt werden. Diese Integration trägt dazu bei, die nativen Funktionen von MATLAB zu erweitern und kann den verschiedenen Arbeitsabläufen bei der Batterieentwicklung in der Industrie einen Mehrwert bieten.

Zukünftige Arbeit

Die in diesem Artikel vorgestellten Methoden sind einfach und basieren auf bereits vorhandenen Funktionen. Diese Methoden können verfeinert und erweitert werden, um mehr elektrochemische PyBaMM-Modelle einzubeziehen, andere Parametersätze zu unterstützen und komplexe Systemmodellierungen hinzuzufügen, neben anderen Verbesserungen.

Zukünftig werden wir auf den hier vorgestellten Arbeitsabläufen aufbauen und demonstrieren, wie diese Integration praktische Batterieentwicklungs- und Verifizierungsaktivitäten unterstützen kann. Wir beabsichtigen außerdem, andere Methoden zur Herstellung einer Verbindung zwischen PyBaMM und MATLAB zu erforschen und diese im Hinblick auf die Vorteile, die sie für die angestrebte Batterieanwendung mit sich bringen, vorzustellen.

Wir sehen Möglichkeiten, Folgendes zu präsentieren: 

  • Packdesign und -verifizierung mit Modul- und Packsystemen zur Vorhersage der Nutzenergie und Leistungsfähigkeit unter realistischen thermischen Bedingungen
  • Verbesserte Vorhersage der Batteriealterung und -garantie mithilfe der PyBaMM-Bibliothek von Batteriedegradationsmodellen
  • Optimierte Parametersatznutzung von PyBaMM für eine größere Vielfalt an Simscape Blöcken
  • Wie PyBaMM-basierte Modelle die Reglerentwicklung in Simulink unterstützen können

Danksagung

Besonderer Dank gilt Professor Daniel Auger von der Cranfield University für seine Zusammenarbeit, seine Anregungen für zukünftige Arbeitsbereiche und die zahlreichen Gespräche, die wir über Verbindungsmethoden zwischen MATLAB und PyBaMM mit Anwendungen auf Batteriesysteme geführt haben.

Literatur

  • Sulzer, V., Marquis, SG, Timms, R., Robinson, M., & Chapman, SJ (2021). Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1).

Veröffentlicht 2026


Eingesetzte Produkte: Simscape, Simscape Battery

Über die Autor/innen

Sebastián Arias Alfaro

Sebastián Arias Alfaro ist Mitglied im Entwicklungsteam für Simscape Battery bei MathWorks. Er erstellt Modelle, Algorithmen und Workflows zur Unterstützung von Kunden in den Bereichen Elektrifizierung und Energiespeicherung. Sebastián hat über 9 Jahre Erfahrung in Algorithmenentwicklung, Parameterschätzung und Batterieentwicklung. Er hat einen Masterabschluss in Chemieprozessentwicklung für Energie von der University of Manchester und einen Abschluss in Chemieingenieurwesen von der University of Costa Rica.

Chris Lim

Chris Lim ist Ingenieur in der MathWorks Consulting Services Group. Er arbeitet primär mit Unternehmenskunden in Luftfahrt- und Verteidigungsindustrie an einer Reihe von Themen, darunter Softwareentwicklung, Modellierung im Großmaßstab und Modellierung von physikalischen Systemen. Chris hat einen Doktor-Abschluss des Oxford Thermofluids Institute der University of Oxford (Bereich Wärmemanagementstrategien für die Formel 1) und einen Master-Abschluss in Ingenieurwissenschaften der University of Oxford.

Xiangchun Zhang

Xiangchun Zhang ist Application Engineer bei MathWorks und konzentriert sich auf Batteriemodellierung und Algorithmenentwicklung für Batteriemanagementsysteme (BMS). Er begann seine Forschung an Li-Ionen-Zellen während seiner Promotion 2005, wo er sich auf Multiskalen-Modellierung von Li-Ionenzellen inklusive Mechanik, Wärmegenerierung und elektrochemische Kinetik konzentrierte. Mehr als zwei Jahrzehnte hat er zur akademischen und industriellen Batterieforschung beigetragen, darunter Solid-State-Batterien bei Dyson. Seine Arbeiten in der Batterieforschung sind mehrere Tausend Mal zitiert worden. Zhang hält Bachelor- und Master-Abschlüsse der Tsinghua University in Beijing sowie einen Doktortitel in Maschinenbau der University of Michigan, Ann Arbor.

Mehr entdecken