BlockWerk Documentatie
🔋

Battery SOC EKF

Advanced

Het Battery SOC EKF-blok schat de laadtoestand (State of Charge, SOC) van een batterijcel op basis van twee signalen die een Battery Management System (BMS) daadwerkelijk meet: de celstroom en de klemspanning. Het voert een Extended Kalman Filter (EKF) uit op een equivalent circuitmodel met één of twee RC-takken. Daardoor wordt de drift van pure coulomb-telling gecorrigeerd met de spanning, en de polarisatie-vertraging van de cel gecompenseerd met het dynamische RC-model.

Bovendien kan het blok de nulpuntsafwijking (bias/offset) van de stroomsensor online mee-schatten — de sluipende fout waardoor coulomb-telling na verloop van tijd wegdrift. Het filter rapporteert zijn eigen onzekerheid (σ), zodat het BMS de SOC kan tonen met een betrouwbare foutmarge (bijv. SOC ± 2 %).

De nullastspanningscurve (Open Circuit Voltage, OCV) wordt gedefinieerd als een tabel en kan lineair (linear) of als een monotone kubische spline (smooth) worden geëvalueerd. Het filter her-lineariseert deze OCV-curve bij elke sample rond de actuele toestandsschatting, waardoor het zuiver en zonder bias blijft convergeren.

Simuleren in BlockWerk

Interactieve sandbox direct in je browser — geen installatie, aangedreven door WebAssembly.

Simuleren in BlockWerk →

Wiskundig Model

x=[SOC, V1, V2, b],I=Im−b (werkelijke stroom; Im gemeten, b sensoroffset)SOC˙=−η I3600 Q,V˙j=−VjRjCj+ICj (j=1,2),b˙=0V=OCV(SOC)−V1−V2−R0I,H=[d OCVd SOC, −1, −1, R0]Exact gediscretiseerd over Ts met nulde-orde hold op Im;Qd via Van LoanGeı¨tereerde 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{(werkelijke stroom; } I_m \text{ gemeten, } b \text{ sensoroffset)} \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{Exact gediscretiseerd over } T_s \text{ met nulde-orde hold op } I_m; \quad Q_d \text{ via Van Loan} \text{Geïtereerde 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)

Waarbij:

  • I_m de gemeten stroom in ampère is (positief bij ontladen) en V de klemspanning in volt.
  • Q de nominale celcapaciteit in Ah is, en η het coulometrisch rendement tijdens laden.
  • De continue systeemmatrices exact worden omgezet naar discrete tijd met behulp van Van Loan's methode.
  • H de lokale richtingscoëfficiënt van de OCV-curve is bij de voorspelde SOC.
  • Een RC-tak met R2=0R_2 = 0 automatisch wordt weggelaten, en met pBias = qBias = 0 het model overgaat in de klassieke tweetoestands-EKF.
  • Eén iteratie overeenkomt met de standaard EKF; meerdere iteraties activeren het Iterated Extended Kalman Filter (IEKF).

Ingangen & Uitgangen

Direction ID Label Type 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

Parameters

Parameters Label Type Standaard Beschrijving
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

Gebruiksvoorbeelden

SOC-bepaling van een Rustende Cel

Een tot rust gekomen cel op 3.72 V (werkelijke SOC 30 %) wordt bemeten met een ruizige spanningsmeter (σ=50 mV\sigma = 50\text{ mV}) bij 10 Hz. Het filter start met een foutieve aanname van 60 % en convergeert binnen 1.5 s tot binnen 2 % van de werkelijke waarde.

Compensatie van Stroomsensor-drift

Een stroomsensor met 0.2 A offset leidt bij gewone coulomb-telling tot continue accumulatiedrift. Het BatterySocEkf-blok herkent de afwijking tussen ladingsintegraal en klemspanning, schat de biaswaarde b correct in en stabiliseert de SOC.

Opmerkingen & Best Practices

  • SOC σ-uitgang: SOC ± 2σ geeft een 95%-betrouwbaarheidsband. De NIS-statistiek bevestigt of het ruismodel klopt (gemiddelde rond 1).
  • Valid-ingang: Bij sensoruitval schakelt het filter naadloos over op pure coulomb-integratie waarbij de gerapporteerde onzekerheid groeit totdat er weer klemspanningsmetingen beschikbaar zijn.
  • Twee RC-takken: Biedt superieure dynamische nauwkeurigheid bij gepulste belastingen door zowel snelle elektrochemische overdracht als trage diffusieprocessen mee te modelleren.
  • Herstart: Een puls op de Reset-poort (> 0) brengt alle toestanden en covarianties direct terug naar hun initiële instellingen.

Gerelateerde Componenten