About:ECM Documentation [Archived - v3.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:
Cell voltage is defined:
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:
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):
Component type R (resistor):
Component type C (capacitor):
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):
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.
Resistance increase is approximated as applying exclusively to the series resistance R0, which corresponds principally to ohmic and activation overvoltages of the cell. Thus:
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:
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:
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\):
Boundary Conditions
Initial values
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.
- Specified current
- Specified voltage
- Specified power
Evaluated quantities
The cell heat source can be provided to a thermal model:
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.
Simulink
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.