Voltt Docs About:ECM Documentation [Archived - v2.0 Release]

About:ECM Documentation [Archived - v2.0 Release]

Version Release Date Comments
1.0 14 Mar 2023 First release
2.0 23 Aug 2024 Addition of degradation-compatible inputs
3.0 11 Apr 2025 Addition of 1-state hysteresis

Overview

Key features

About:ECM is an “Equivalent Circuit Model” (ECM) representing the battery as a network of electronic components. This model predicts the battery current-voltage relation as a function of state-of-charge (SOC) and temperature. Battery properties depend on state-of-health (SOH) as defined by inputs for capacity fade and resistance increase. The model is capable of evaluating battery heat dissipation rate and battery temperature change in conjunction with a thermal model.

  • Compatible with any thermal model
  • Compatible with distributed electronic networks and 3D cell/module/pack models
  • Compatible with user-defined inputs for capacity fade and resistance increase

Key applications

  • Cell comparison and cell selection
  • Rapid system prototyping
  • Beginning-of-life and aged-cell scenario analysis
  • Representation of cell performance in 3D thermal models

Technical Description

About:ECM solves Kirchhoff’s laws for the current-voltage relation of a network of electronic components. About:ECM is compatible with any specification of current, voltage or power load on the battery. Specifically, the equivalent circuit used is either a “1-RC pair” or “2-RC pair” circuit, depending on the cell. The circuits constitute (Figure 1) an open-circuit voltage source (Vsrc0) in series with a resistance (R0) and respectively one or two elements comprising a resistor and capacitor in parallel:

Figure 1: Schematic of a 2-RC pair circuit. The 1-RC pair circuit removes elements R2 and C2.

Mathematical Specification

Equations

The electrical circuit is defined with nodes \(k = 1, 2, ...\) including the special nodes “grd” and “term” which connect to the external load and between which total cell voltage is measured.

An electric potential \(\phi\) is defined at each node.

Circuit ground is defined:

\[ \begin{equation} \phi_{\mathrm{grd}} = 0 \end{equation} \]

Cell voltage is defined:

\[ \begin{equation} {{V}_{\text{cell}}}=\phi_\mathrm{term} \end{equation} \]

For a circuit with nodes \(k\) connected by components \(m\), Kirchhoff’s laws require the currents \(I_m\) and voltages \(V_m\) to obey, for all \(k\) and all \(m\) respectively:

\[ \begin{equation} \sum\limits_{m}{{{\theta }_{km}}}{{I}_{m}}=\left\{\begin{split}& 0, \;\;\;\;\;\; k\neq \mathrm{grd, term} \\ & I_\mathrm{cell}, \;\;\,k=\mathrm{term}\\ & {-I_\mathrm{cell}}, k=\mathrm{grd}\end{split}\right. \end{equation} \]
\[ \begin{equation} {{V}_{m}}=\sum\limits_{k}{{{\theta }_{km}}{{\phi}_{k}}} \end{equation} \]

Cell current \(I_\mathrm{cell}\) is defined as positive in the charging direction. The quantities \(\theta_{km}\) represent the component connectivity. The following relationships apply at component level:

Component type OCV (open-circuit voltage source):

\[ \begin{equation} {{V}_{m}}={{E}_{m}} \end{equation} \]

Component type R (resistor):

\[ \begin{equation} {{V}_{m}}={{I}_{m}}{{R}_{m}} \end{equation} \]

Component type C (capacitor):

\[ \begin{equation} {{I}_{m}}={{C}_{m}}\frac{d{{V}_{m}}}{dt} \end{equation} \]

The standard connectivities for the RC pair circuits are then as follows. \(\theta_{km}=0\) except where otherwise specified.

\(m\) \(k\) for which \(θ_{km} = -1\) \(k\) for which \(θ_{km} = +1\)
OCV grd 1
R0 1 2
R1 2 3
C1 2 3
R2 3 term
C2 3 term

The case of a 1-RC pair circuit is defined using the following substitutions in place of (6) and (7):

\[ \begin{equation} {{V}_{\text{R2}}}={{V}_{\text{C2}}}={{I}_{\text{C2}}}=0 \end{equation} \]
\[ \begin{equation} {{I}_{\text{R2}}}={{I}_{\text{cell}}} \end{equation} \]

Resistances and capacitances are determined from the provided lookup tables for beginning-of-life properties as \(f_{m,0}(T,\text{SOC})\) as below, where \(f\) represents a resistance \(R\) or capacitance \(C\) and \({\lambda}_{\mathrm{deg},m}\) is a component-specific degradation factor.

\[ \begin{equation} f_m = \lambda_{\mathrm{deg},m} f_{m,0}(T,\mathrm{SOC}) \end{equation} \]

Resistance increase is approximated as applying exclusively to the series resistance R0, which corresponds principally to ohmic and activation overvoltages of the cell. Thus:

\[ \begin{equation} \lambda_\mathrm{deg,R0} = \lambda_{\mathrm{deg},R} \end{equation} \]
\[ \begin{equation} \lambda_{\mathrm{deg},m\neq \mathrm{R0}} = 1 \end{equation} \]

No degradation correction is applied to the source voltage \(E_\mathrm{OCV}\), whose functional relation \(f(T,\mathrm{SOC})\) is assumed to be independent of degradation. Note, however, that capacity fade will influence the relation of SOC to charge passed (see below).

The cell state-of-charge (SOC) evolves as follows:

\[ \begin{equation} \text{SOC}=\text{SO}{{\text{C}}_{0}}+\frac{1}{{3600 \cdot{Q}_{\text{nom}}\cdot{\lambda}_{\mathrm{deg},Q}}}\int_{0}^{t}{{{I}_{\text{cell}}}\ dt'} \end{equation} \]

The multiple of 3600 converts the unit of \(Q_\mathrm{nom}\) from A h (conventional reporting standards) to A s = C. \({\lambda}_{\mathrm{deg},Q}\) is a scalar degradation factor that can be specified by the user to simulate the cell with a degraded capacity.

SOC values reported in parameterisation are referenced to a condition of SOC = 1, corresponding to the cell state at nominal temperature 25 \(^\circ\)C following a long hold at the upper (end-of-charge) cut-off voltage \(V_\mathrm{EOC}\). Any other SOC is defined according to a relative charge passed, according to (13).

Optionally, a hysteresis model can be used, such that:

\[ \begin{equation} E_\mathrm{OCV} = \frac{1+h}{2}E_\mathrm{OCV,ch}+ \frac{1-h}{2}E_\mathrm{OCV,dch} \end{equation} \]

A “one-state” hysteresis model is used, where the hysteresis state \(h\) is the solution to a relaxation equation according to a decay rate \(\gamma\):

\[ \begin{equation} \frac{\partial h}{\partial t} = \gamma\left|\frac{I_\mathrm{cell}}{3600\cdot Q_\mathrm{nom}}\right|\left(\mathrm{sgn}(I_\mathrm{cell})-h\right) \end{equation} \]

Boundary Conditions

Initial values

\[ \begin{equation} \mathrm{SOC}_{t=0}=\mathrm{SOC}_0 \end{equation} \]
\[ \begin{equation} h_{t=0}=h_0 \end{equation} \]
\[ \begin{equation} {{V}_{\text{R1}(t=0)}}={{V}_{\text{R2}(t=0)}}= {{V}_{\text{C1}(t=0)}}= {{V}_{\text{C2}(t=0)}}=0 \end{equation} \]

Loading conditions

The cell loading is specified by determining \(I_\mathrm{cell}\) from exactly one additional constraint for each discrete simulated time, chosen from the following options. Typically, the chosen loading condition will change at certain times during the protocol being simulated.

  1. Specified current
\[ \begin{equation} {{I}_{\text{cell}}}={{I}_{\text{app}}} \end{equation} \]
  1. Specified voltage
\[ \begin{equation} {{V}_{\text{cell}}}={{V}_{\text{app}}} \end{equation} \]
  1. Specified power
\[ \begin{equation} {{V}_{\text{cell}}}{{I}_{\text{cell}}}={{P}_{\text{app}}} \end{equation} \]

Evaluated quantities

The cell heat source can be provided to a thermal model:

\[ \begin{equation} {{Q}_{\text{cell}}}={{Q}_{IR}} + {{Q}_{\text{hys}}} + {{Q}_{\text{rev}}} \end{equation} \]
\[ \begin{equation} {{Q}_{IR}}={{I}_{\text{cell}}}\left( {{V}_{\text{cell}}}-{{E}_{\text{OCV}}} \right) \end{equation} \]
\[ \begin{equation} {{Q}_{\text{hys}}}={{I}_{\text{cell}}}\left( {{E}_{\text{OCV}}}-{E}{_{\text{OCV,avg}}}\right) \end{equation} \]
\[ \begin{equation} {{Q}_{\text{rev}}}={{I}_{\text{cell}}} {T} \Delta S \end{equation} \]
\[ \begin{equation} E_\text{OCV,avg} = \frac{E_\mathrm{OCV,ch} + E_\mathrm{OCV,dch}}{2} \end{equation} \]

User Inputs: Operating Conditions

Quantity Unit Description Default
\(I_\mathrm{app}\) A Applied current* -
\(P_\mathrm{app}\) W Applied power* -
\(V_\mathrm{app}\) V Applied voltage* -
\(h_0\) 1 Initial hysteresis state 0
\(\mathrm{SOC}_0\) 1 Initial state-of-charge 1
\({\lambda}_{\mathrm{deg},Q}\) 1 Capacity degradation factor (capacity fade) 1
\({\lambda}_{\mathrm{deg},R}\) 1 Resistance degradation factor (resistance increase) 1

* Exactly one of the three possible applied quantities must be specified at each simulated time. Additional logic (for example, cut-off voltages or currents for different loading steps) can be built into the simulated protocol at the user’s discretion.

Internal Quantities

Supplied Parameterisation

Details of how the supplied parameterisation is encoded for each implementation are given in Implementation Details.

The below parameters are supplied as functions of state-of-charge and temperature \(f(\mathrm{SOC},T)\) at cell beginning-of-life (BoL):

Quantity Unit Description
\(C_\mathrm{C1,0}\) F Capacitance (RC pair 1), cell BoL, tabulated function of SOC / temperature
\(C_\mathrm{C2,0}\) F Capacitance (RC pair 2), cell BoL, tabulated function of SOC / temperature
\(E_\mathrm{OCV,ch}\) V Open-circuit voltage (charge branch), cell BoL, tabulated function of SOC / temperature
\(E_\mathrm{OCV,dch}\) V Open-circuit voltage (discharge branch), cell BoL, tabulated function of SOC / temperature
\(R_\mathrm{R0,0}\) Ω Series resistance R0, cell BoL, tabulated function of SOC / temperature
\(R_\mathrm{R1,0}\) Ω Resistance (RC pair 1), cell BoL, tabulated function of SOC / temperature
\(R_\mathrm{R2,0}\) Ω Resistance (RC pair 2), cell BoL, tabulated function of SOC / temperature
\(\Delta S\) V K\(^{-1}\) Cell entropic coefficient
\(\gamma\) 1 Open-circuit voltage hysteresis decay rate

The below parameters are supplied as scalar quantities:

Quantity Unit Description
\(Q_\mathrm{nom}\) Ah Cell nominal capacity
\(V_\mathrm{EOC}\) V Cell upper (end-of-charge) cut-off voltage
\(V_\mathrm{EOD}\) V Cell lower (end-of-discharge) cut-off voltage

Internal Variables

All internal and inherited variables are expressed as functions of time (\(t\)).

Quantity Unit Description
\(C_\mathrm{C1}\) F Capacitance (RC pair 1)
\(C_\mathrm{C2}\) F Capacitance (RC pair 2)
\(E_\mathrm{OCV}\) V Cell open-circuit voltage (apparent with hysteresis)
\(E_\mathrm{OCV,avg}\) V Cell open-circuit voltage (average without hysteresis)
\(h\) 1 Hysteresis state
\(I_\mathrm{cell}\) A Cell current
\(I_m\) A Current through component \(m\)
\(Q_\mathrm{­cell}\) W Total cell heat source
\(Q_\mathrm{hys}\) W Cell heat source (irreversible heating from hysteresis)
\(Q_{IR}\) W Cell heat source (irreversible heating from apparent resistive losses)
\(Q_\mathrm{rev}\) W Cell heat source (reversible heating)
\(R_\mathrm{R0}\) Ω Series resistance R0
\(R_\mathrm{R1}\) Ω Resistance (RC pair 1)
\(R_\mathrm{R2}\) Ω Resistance (RC pair 2)
\(\mathrm{SOC}\) 1 State-of-charge
\(t\) s Elapsed time
\(V_\mathrm{cell}\) V Cell voltage
\(V_m\) V Voltage across component \(m\)
\(θ_{km}\) 1 Helper variable for connectivity:

\(= +1\) for node \(k\) at positive terminal of component \(m\) \(= -1\) for node \(k\) at negative terminal of component \(m\) else \(= 0\) | | \(\phi_k\) | V | Electric potential at node \(k\) |

Variables Inherited From Thermal Model

Quantity Unit Description
\(T\) K Temperature

Implementation Details

CSV

The CSV implementation consists of raw parameterisation data. These data are intended for use with a user-defined implementation of the equations in the Mathematical Specification.

A lookup table for properties depending on state-of-charge and temperature is given in ECM.csv. Columns are named in a header row, below which all rows are data rows. The lookup variables are given in the first two columns, and data are given in the subsequent columns.

Quantity Unit Type Column name
\(\text{SOC}\) 1 Lookup SOC
\(T\) \(^\circ\)C Lookup T_degC
\(E_\mathrm{OCV,ch}\) V Data E_OCV_ch_V
\(E_\mathrm{OCV,dch}\) V Data E_OCV_dch_V
\(R_\mathrm{R0,0}\) Ω Data R_R0_Ohm
\(R_\mathrm{R1,0}\) Ω Data R_R1_Ohm
\(C_\mathrm{C1,0}\) F Data C_C1_F
\(R_\mathrm{R2,0}\) Ω Data R_R2_Ohm
\(C_\mathrm{C2,0}\) F Data C_C2_F
\(\gamma\) 1 Data gamma
\(\Delta S\) V K\(^{-1}\) Data dUdT

Scalar properties are given in cellprops.csv. Columns are named in a header row, and there is one data row containing the values for each property.

Quantity Unit Type Column name
\(Q_\mathrm{nom}\) Ah Scalar Qnom_Ah
\(V_\mathrm{EOC}\) V Scalar V_EOC_V
\(V_\mathrm{EOD}\) V Scalar V_EOD_V

Notes on use

  • Consult carefully the definition of SOC given in (13), according to which the data should be used. Definitions of SOC may vary in other applications or standards.
  • To support standard usage, lookup data for \(T\) are provided in units \(^\circ\)C, not K.
  • Where coefficient data are not available for a given input combination, a NaN value is given in the corresponding row and column.

The Simulink implementation requires a license for MATLAB R2021b or later, with Simulink and Simscape.

The implementation comprises Simulink blocks provided in ECM_Library.slx, which can be embedded in an application. Further documentation is provided internal to each block. See exampleModel.slx for an illustration of the coupling of a provided Simulink block to a user-defined model, including specification of operating conditions.