BlockWerk Dokumentation
🔋

Battery SOC EKF

Advanced

Der BatterySocEkf-Block schätzt den Ladezustand (State of Charge, SOC) einer Batteriezelle aus den beiden realen Messgrößen eines Batteriemanagementsystems (BMS): Zellstrom und Klemmenspannung. Er führt ein Extended Kalman Filter (EKF) auf Basis eines Ersatzschaltbildes mit ein oder zwei RC-Gliedern aus. Dadurch wird die Drift des reinen Coulomb-Zählens durch die Spannungsmessung korrigiert und der Polarisationsverzug der Zelle durch das dynamische Modell kompensiert.

Zusätzlich kann der Block den Nullpunktfehler (Sensor-Offset/Bias) des Stromsensors online mitlernen — den systematischen Fehler, der Coulomb-Counting sonst weglaufen lässt. Das Filter gibt seine eigene Unsicherheit (σ) aus, sodass das BMS den SOC mit verlässlichem Konfidenzband anzeigen kann.

Die Leerlaufspannungskennlinie (Open Circuit Voltage, OCV) wird tabellarisch definiert und wahlweise stückweise linear (linear) oder als stetig differenzierbare monotone kubische Spline (smooth) ausgewertet. Das Filter linearisiert die Kennlinie bei jedem Zeitschritt am aktuellen Zustandsschätzwert neu.

In BlockWerk simulieren

Interaktive Sandbox direkt im Browser — keine Installation, WebAssembly-Engine.

In BlockWerk simulieren →

Mathematisches Modell

x=[SOC, V1, V2, b],I=Im−b (wahrer Strom; Im gemessen, b Sensor-Offset)SOC˙=−η I3600 Q,V˙j=−VjRjCj+ICj (j=1,2),b˙=0V=OCV(SOC)−V1−V2−R0I,H=[d OCVd SOC, −1, −1, R0]Exakt diskretisiert u¨ber Ts mit ZOH auf Im;Qd u¨ber Van LoanIteriertes Update: xi+1=x^−+Ki (z−h(xi)−Hi(x^−−xi)),Ki=P−Hi⊤/(HiP−Hi⊤+R)x = [\text{SOC},\ V_1,\ V_2,\ b],\qquad I = I_m - b\ \text{(wahrer Strom; } I_m \text{ gemessen, } b \text{ Sensor-Offset)} \dot{\text{SOC}} = -\frac{\eta\, I}{3600\,Q},\qquad \dot{V}_j = -\frac{V_j}{R_j C_j} + \frac{I}{C_j}\ (j = 1, 2),\qquad \dot{b} = 0 V = \text{OCV}(\text{SOC}) - V_1 - V_2 - R_0 I,\qquad H = \left[\tfrac{d\,\text{OCV}}{d\,\text{SOC}},\ -1,\ -1,\ R_0\right] \text{Exakt diskretisiert über } T_s \text{ mit ZOH auf } I_m; \quad Q_d \text{ über Van Loan} \text{Iteriertes Update: } x_{i+1} = \hat{x}^- + K_i\,(z - h(x_i) - H_i(\hat{x}^- - x_i)),\quad K_i = P^- H_i^\top / (H_i P^- H_i^\top + R)

Wobei:

  • I_m der gemessene Zellstrom in Ampere ist (positiv beim Entladen) und V die Klemmenspannung in Volt.
  • Q die Nennkapazität in Ah ist, und η der Coulomb-Wirkungsgrad beim Laden.
  • Die Diskretisierung exakt aus den Modellparametern über die Van-Loan-Methode berechnet wird.
  • H die lokale Steigung der OCV-Kennlinie am geschätzten Arbeitspunkt darstellt.
  • Bei R2=0R_2 = 0 das zweite RC-Glied entfällt und mit pBias = qBias = 0 das klassische 2-Zustands-EKF entsteht.
  • Eine Iteration dem klassischen EKF entspricht; mehrere Iterationen aktivieren das iterierte EKF (IEKF).

Ein- & Ausgänge

Direction ID Label Typ Status
→ In in1 I number Required
→ In in2 V number Required
→ In in3 Reset number Optional
→ In in4 Dropout number Optional
← Out soc_hat SOC number Output
← Out soc_sigma σ SOC number Output
← Out v1_hat V₁ number Output
← Out v2_hat V₂ number Output
← Out bias_hat I bias number Output
← Out voc_hat OCV number Output
← Out jacobian dOCV/dSOC number Output
← Out k_gain_0 K_SOC number Output
← Out innovation Innov. number Output
← Out innovation_cov S number Output
← Out nis NIS number Output

Parameter

Parameter Label Typ Standardwert Beschreibung
sampleTime Sample Time number 1 Filter period in seconds
socInit Initial SOC Estimate number 0.5 Fraction 0…1
v1Init Initial V1 Estimate number 0
pSoc Initial SOC Variance number 0.01 How unsure the initial SOC is; 0.01 is σ = 10 % SOC
pV1 Initial RC Voltage Variance number 0.000001 Per RC branch; small, since a rested cell has V1 ≈ V2 ≈ 0
pBias Initial Bias Variance number 0 How unsure the current sensor's offset is; 0 leaves the offset out of the model, 0.01 is σ = 0.1 A
qSoc Process Noise SOC number 1e-8 Noise density per second, so the filter does not change with the sample time
qV1 Process Noise RC Voltage number 0.000001 Noise density per second, per RC branch
qBias Process Noise Bias number 0 How fast the sensor offset may drift, as a density per second; 0 for a constant offset
rMeas Measurement Noise number 0.0001 Variance of the voltage measurement in V²
r0 R0 (Ω) number 0.05 Ohmic resistance
r1 R1 (Ω) number 0.02 Polarisation resistance of the fast branch
c1 C1 (F) number 1000 Polarisation capacitance of the fast branch
r2 R2 (Ω) number 0 Resistance of a second, slow RC branch; 0 leaves the branch out
c2 C2 (F) number 30000 Capacitance of the second RC branch
capacity Capacity (Ah) number 3.2
chargeEfficiency Charge Efficiency number 1 Coulombic efficiency while charging (current < 0); Li-ion cells are typically 0.99–0.999
ocvSoc OCV Table SOC text 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 SOC breakpoints, ascending
ocvVoltage OCV Table Voltage text 3.00 3.50 3.65 3.72 3.78 3.84 3.90 3.97 4.05 4.14 4.20 Open-circuit voltage at each breakpoint in V
ocvInterpolation OCV Interpolation select linear Linear matches a LookupTable exactly; Smooth (monotone cubic) has no slope jumps at the breakpoints, which steadies the filter's gain
iterations Update Iterations number 1 1 is the classic EKF; 3 relinearises at the corrected estimate (iterated EKF), which helps where the OCV curve bends sharply

Anwendungsbeispiele

SOC-Ermittlung einer ruhenden Zelle

Eine relaxierte Zelle bei 3,72 V (30 % realer SOC) wird mit verrauschtem Spannungssensor (σ=50 mV\sigma = 50\text{ mV}) bei 10 Hz erfasst. Ausgehend von einem fehlerhaften Startwert von 60 % konvergiert das Filter in 1,5 s stabil auf 2 % Genauigkeit.

Online-Kompensation von Stromsensor-Drift

Ein systematischer Stromfehler von 0,2 A führt bei herkömmlicher Integration zu linear anwachsendem Fehler. Das EKF identifiziert die Diskrepanz zur Klemmenspannung, schätzt den Offset b und hält die SOC-Berechnung driftfrei.

Hinweise & Best Practices

  • SOC σ-Ausgang: SOC ± 2σ bildet ein 95%-Konfidenzband. Der NIS-Wert bestätigt die stochastische Konsistenz.
  • Valid-Eingang: Bei Sensorausfall rechnet das Filter rein coulomb-metrisch weiter; die geschätzte Varianz steigt bis zur Wiederherstellung der Messwerte.
  • Zwei RC-Glieder: Erlaubt präzise Modellierung bei schnellen Lastwechseln durch Trennung von rascher elektrochemischer Kinetik und langsamer Diffusionsrelaxation.
  • Reset: Setzt bei Impulsen (> 0) alle Zustände und Kovarianzen auf die Initialwerte zurück.

Verwandte Blöcke