# Battery Equivalent Circuit

**Libraries:**

Simscape /
Battery /
Cells

## Description

The Battery Equivalent Circuit block models the electro-thermal dynamics of a battery by using electrical circuit elements with variable characteristics and a zero-dimensional lumped-mass thermal heat equation. You can also use this block to simulate the faulted dynamics of a battery in shorted, open-circuit, and thermal runaway conditions. To model cycling aging and calendar aging of the battery, you can use lookup tables or empirical relationships. The block tabulates the variable characteristics of the electrical circuit elements as functions of the battery state of charge (SOC) and, optionally, current directionality and temperature. This block comprises these constituent model files:

Electrical model

Open-circuit voltage and hysteresis model

Instantaneous overpotential model

Dynamic overpotential model

Thermal model

Constant temperature

Lumped thermal mass model

Cycling aging model

Equations

Temperature-independent table lookup

Temperature-dependent table lookup

Calendar aging model

Resistance aging model

Capacity aging model

Faults model

Short model

Open-circuit model

Exothermic reactions model

### Electrical Model

The Battery Equivalent Circuit block models the battery terminal voltage by using a combination of electrical circuit elements arranged in a specific circuit topology. This figure shows the equivalent circuit topology, which relies on variable resistances, variable capacitances, and a variable voltage source. However, the implementation of the Battery Equivalent Circuit block is completely in the Simscape language.

All the circuit elements have variable characteristics that are functions of other battery states:

**OpenCircuitVoltage**— The block tabulates this circuit element as a function of the SOC. If you set the**Thermal model**parameter to`Constant temperature`

or`Lumped thermal mass`

, this circuit element also depends on the 2-D lookup temperature. If you set the**Hysteresis model**parameter to`One-state model`

, then the voltage source value is a function of the previous charge or discharge history of the battery.**R0, R1, R2, R3, Tau1, Tau2, Tau3**— The block tabulates this circuit element as a function of the SOC. If you set the**Thermal model**parameter to`Constant temperature`

or`Lumped thermal mass`

, this circuit element also depends on the 2-D lookup temperature. If you set the**Current directionality for resistance parameters**parameter to`Enabled`

, then the resistance and capacitance values are also functions of the instantaneous current charge or discharge direction. Therefore, you can use charge and discharge parameter tables if they are available. If the current flowing through the battery is positive, then the block uses the charge lookup table parameters. If the current flowing through the battery is negative, then the block uses the discharge lookup table parameters.**SelfDischargeResistor**— If you set the**Thermal model**parameter to`Constant temperature`

or`Lumped thermal mass`

, this circuit element also depends on the 2-D lookup temperature.

**Note**

For all the table-based parameters, the Battery Equivalent
Circuit block supports linear interpolation only. For
extrapolation, set the **Extrapolation method for all tables**
parameter to `Nearest`

,
`Linear`

, or `Error`

.

For rows and columns, the extrapolation follows the row-column convention, in which rows are indexed before columns.

**Terminal Voltage**

The Battery Equivalent Circuit calculates the terminal voltage of the battery at every time step by solving the Kirchhoff's voltage law

$$U\text{=}OC{V}_{\text{hyst}}\text{+}{\eta}_{\text{inst}}\text{+}{\eta}_{\text{dyn}},$$

where:

*U*is the battery terminal voltage.$$OC{V}_{\text{hyst}}\text{=}OCV\left(SOC,T\right)+{U}_{\text{hyst}}\left(SOC,T\right)$$ is the hysteresis-adjusted open-circuit voltage. The software updates the battery state of charge

*SOC*, the temperature*T*, and the corresponding variables that depend on them at every time step during the simulation.*OCV(SOC,T)*is the open-circuit voltage.*U*_{hyst}*(SOC,T)*is the hysteresis voltage.

$${\eta}_{\text{inst}}\text{=}\text{}\text{\hspace{0.17em}}I\text{\hspace{0.17em}}{R}_{0}\left(SOC,T,CurDir\right)$$ is the instantaneous overpotential. The software updates the battery SOC, the temperature, and the current directionality

*CurDir*, as well as the corresponding variables that depend on them, at every time step during the simulation.*I*is the battery current. If the value of*I*is positive, the block uses the charge lookup table parameters. If the value of*I*is negative, the block uses the discharge lookup table parameters.

$${\eta}_{\text{dyn}}\text{=}\text{\hspace{0.17em}}{\displaystyle \sum _{i=1}^{3}\Delta {U}_{R{C}_{i}}\left(SOC,T,CurDir\right)}$$ is the dynamic overpotential. This optional term depends on the number of parallel resistor-capacitor pairs. This number can vary between 1 and 3. The software updates the battery SOC, temperature, and current directionality, as well as the corresponding variables that depend on them, at every time step during the simulation.

*ΔU*_{RCi}is the voltage drop for parallel resistor-capacitor pair*i*. The block calculates the voltage drop using this ordinary differential equation:$$\left({\tau}_{i}\left(SOC,T,CurDir\right)\frac{d\text{\hspace{0.17em}}\Delta {U}_{R{C}_{i}}}{dt}+\Delta {U}_{R{C}_{i}}\right)\frac{1}{{R}_{i}\left(SOC,T,CurDir\right)}=I$$

For the Battery Equivalent Circuit block, *I* has a negative
sign during discharge and a positive sign during charge. During discharge, the
block subtracts the battery overpotentials from the open-circuit voltage value,
lowering the terminal voltage of the battery. In the discharge and charge cases,
the overpotentials dissipate energy as heat. This figure shows the evolution of
the battery overpotentials during a battery pulse discharge. The dynamic
overpotential from the resistor-capacitor pairs increases slowly over the pulse,
as opposed to the instantaneous overpotential, which increases during the first
few milliseconds.

**Dynamic Overpotential**

Batteries do not respond instantaneously to load changes. They require some time to achieve a steady state. This time-varying property is a result of the battery charge dynamics. The block models the charge dynamics by using parallel RC sections in the equivalent circuit.

To model the battery charge dynamics, set the **Parallel resistor
capacitor pairs** parameter to one of these values:

`No dynamics`

— The equivalent circuit contains no parallel RC sections. The battery exhibits no delay between terminal voltage and internal charging voltage.`One time-constant dynamics`

— The equivalent circuit contains one parallel RC section.`Two time-constant dynamics`

— The equivalent circuit contains two parallel RC sections.`Three time-constant dynamics`

— The equivalent circuit contains three parallel RC sections.

This diagram shows the battery equivalent circuit for the block circuit topology with only two time-constant dynamics and no self-discharge resistance.

In this figure:

*R*_{1}and*R*_{2}are the parallel RC resistances. Specify these values by setting the**First polarization resistance, R1(SOC,T)**and**Second polarization resistance, R2(SOC,T)**parameters, respectively, if you tabulate parameters over temperature. Otherwise, specify these values by setting the**First polarization resistance, R1(SOC)**and**Second polarization resistance, R2(SOC)**parameters, respectively. The voltage drop of the first RC pair is directly related to the activation overpotential from the chemical reaction at the interface of the electrodes. The time constant*τ*_{1}for this dynamic is typically lower than*τ*_{2}, which indicates a faster response or faster dynamics. The voltage drop of the second RC pair is related to concentration overpotentials and typically evolves more slowly than the activation overpotential.*C*_{1}and*C*_{2}are the parallel RC capacitances. The time constant*τ*for each parallel section relates the*R*and*C*values through the relationship $$C=\tau /R$$. Specify*τ*for each section by using the**First time constant, tau1(SOC,T)**and**Second time constant, tau2(SOC,T)**parameters if you tabulate parameters over temperature or**First time constant, tau1(SOC)**and**Second time constant, tau2(SOC)**otherwise.*R*_{0}is the instantaneous resistance. Specify this value with the**Instantaneous resistance, R0(SOC,T)**parameter if you tabulate parameters over temperature or**Instantaneous resistance, R0(SOC)**otherwise.

**Note**

The charge dynamics parameters can also depend on the current
directionality. If you set the **Current directionality for
resistance parameters** to `Enabled`

,
the parameters in the **Overpotential** section change
accordingly.

**State of Charge**

The Battery Equivalent Circuit block calculates the SOC of the battery with the Coulomb counting method:

$$\text{SOC}=\frac{1}{{\text{C}}_{\text{aged}}}\frac{d\text{charge}}{dt},$$

where:

*C*_{aged}is the aged capacity of the cell.$$\frac{d\text{charge}}{dt}=I-{I}_{\text{D,SD}}\left(T\right)$$

*I*_{D,SD}is the self-discharge current drain. This equation gives the current drain from the self-discharge resistor, which you can tabulate as a function of temperature*T*:$${I}_{\text{D,SD}}\left(T\right)=\frac{1}{{R}_{\text{SD}}\left(T\right)}OC{V}_{\text{internal}}\text{.}$$

*R*_{SD}*(T)*is the self-discharge resistance.*OCV*_{internal}is the internal open-circuit voltage.

**Heat Generation Rate**

The Battery Equivalent Circuit block calculates the battery heat generation rate by adding these quantities:

Power dissipation terms from all the resistors in the equivalent circuit topology. This term is also called the irreversible heat generation. This quantity contains ohmic and activation overpotential heat terms.

Reversible heat generation from entropy

Heat generation terms from the faulted cell behaviour:

Short resistance (or parallel-added resistance)

Open-circuit resistance (or series-added resistance)

Thermal runaway reaction heat

This equation shows this summation:

$${\dot{Q}}_{\text{gen}}={P}_{\text{diss}}+{\dot{Q}}_{\text{rev}}+{Q}_{\text{flow,exr}},$$

where:

$${\dot{Q}}_{\text{gen}}$$ is the heat generation rate.

$${P}_{\text{diss}}={I}^{2}\text{\hspace{0.17em}}{R}_{0}\left(SOC,T,CurDir\right)+\left({\displaystyle \sum _{i=1}^{3}\Delta {U}_{R{C}_{i}}\left(SOC,T,CurDir\right)}\right)I+\frac{OC{V}_{\text{internal}}^{2}}{{R}_{SD}\left(T\right)}\text{\hspace{0.17em}}+{Q}_{\text{flow,series}}+{Q}_{\text{flow,parallel}}$$ is the dissipated power.

*Q*_{flow,series}is the series resistor heat flow.*Q*_{flow,parallel}is the parallel resistor heat flow.

$${\dot{Q}}_{\text{rev}}=I\text{\hspace{0.17em}}T\text{\hspace{0.17em}}\frac{dOCV}{dt}\left(SOC\right)$$ is the reversible heat.

*Q*_{flow,exr}is the exothermic reaction heat flow. For more information, see Faults.

**Hysteresis**

The hysteresis of a battery describes the dependency of the open-circuit voltage (OCV) on the charge or discharge history. Hysteresis is only indirectly dependent on the OCV.

The data obtained from measuring the OCV during a complete charging or
discharging cycle is called a *major loop*. If the battery
is only partially charged or discharged, the measured OCV forms a
*minor loop*. The minor loops approach the major loops
after a delay in charge. This effect is prominent in Li-ion batteries and it has
a significant effect on the SOC estimation.

The Battery Equivalent Circuit block models the hysteresis by using a one-state model

$${U}_{\text{hyst}}=M\text{\hspace{0.17em}}H+\mathrm{sgn}\left(I\right){M}_{0}$$

where:

*U*_{hyst}is the hysteresis voltage.*H*defines the hysteresis state. The block uses this ordinary differential equation to calculate the hysteresis state:$$\frac{dH}{dt}=\frac{\gamma}{{C}_{\text{aged}}}\left[I-\left|I\right|\text{\hspace{0.17em}}H\right]$$

*γ*is the hysteresis rate.*C*_{aged}is the aged capacity of the cell.*M*is the value of the**Maximum hysteresis voltage, MaximumHysteresisVoltage(SOC,T)**parameter if you tabulate the parameters over temperature, or**Maximum hysteresis voltage, MaximumHysteresisVoltage(SOC)**otherwise.*M*_{0}is the value of the**Instantaneous hysteresis voltage, InstantaneousHysteresisVoltage(SOC,T)**parameter if you tabulate the parameters over temperature, or**Instantaneous hysteresis voltage, InstantaneousHysteresisVoltage(SOC)**otherwise.

For more information on hysteresis and on how to model it, see the Model Voltage Hysteresis in Battery example.

**Self-Discharge**

When the battery terminals are open-circuit, internal currents can still
discharge the battery. This behavior is called self-discharge. To enable and
model this effect, set the **Self discharge** parameter to
`Enabled`

.

The block models these internal currents with a temperature-dependent
resistance *R*_{SD}*(T)*
across the terminals of the fundamental battery model. Specify the lookup values
for this resistance by using the **Self-discharge resistance,
SelfDischargeR(T)** parameter if you tabulate the parameters over
temperature, or **Self-discharge resistance, SelfDischargeR**
otherwise.

### Thermal Model

Setting the **Thermal model** parameter to ```
Lumped
thermal mass
```

adds a thermal model to the Battery
Equivalent Circuit block. This model computes the battery
temperature at every time step. The block uses this temperature for all
temperature-dependent lookup tables. The lumped thermal mass adds this ordinary
differential equation:

$${M}_{\text{th}}\frac{d\text{\hspace{0.17em}}T}{dt}={\dot{Q}}_{\text{gen}}-{\dot{Q}}_{\text{diss}},$$

where:

*M*_{th}is the battery thermal mass.$${\dot{Q}}_{\text{gen}}={P}_{\text{diss}}+{\dot{Q}}_{\text{rev}}+{\dot{Q}}_{\text{flow,exr}}.$$

$${\dot{Q}}_{\text{diss}}$$is the heat across the

**H**thermal port.

To increase the fidelity of the thermal
modeling and to model the thermal gradient inside the block, you can discretize the
thermal model along the cell height. To height-discretize the thermal model, set the
**Thermal model** parameter to ```
Height distributed
thermal mass
```

. The block then exposes the
**HDist** thermal port, which is an array of thermal nodes that
represents the nodes along the height of the cell. To compute the electrical
behavior of the cell, the block uses the mean of the discretized thermal
nodes.* (since R2024b)*

### Cycling Aging Model

Battery aging is the deterioration of the battery performance over repeated charge and discharge cycles.

When you set the **Cycling aging model** parameter to
`Equations`

, the open-circuit voltage across the
fundamental battery model fades proportionally with the number of discharge cycles
*n*:

$$OC{V}_{\text{faded}}=OCV\left(1+\frac{\delta OCV\left(N,T\right)}{100}\frac{n}{N}\right),$$

where *δOCV(N,T)* is the percentage change in
open-circuit voltage after *N* discharge cycles. Specify
*δOCV(N,T)* by using the ** Change in open-circuit
voltage after NumDisCycles discharge cycles (%)** parameter.

**Note**

The Battery Equivalent Circuit block tracks the
current and integrates it over time. The number of discharge cycles
*n* increases by 1 every time an equivalent cell discharge
capacity is extracted.

The nominal charge, from which the block calculates the SOC, fades with the square root of the number of discharge cycles:

$${C}_{\text{faded}}=C\left(1+\frac{\delta C\left(N,T\right)}{100}\sqrt{\frac{n}{N}}\right),$$

where *C* is the initial capacity and
*δC(N,T)* is the percentage change in capacity after
*N* discharge cycles. Specify *δC(N,T)* by
using the ** Change in capacity after NumDisCycles discharge cycles
(%)** parameter.

All resistances in the battery model also fade with the square root of the number of discharge cycles:

$${R}_{i,\text{faded}}={R}_{i}\left(1+\frac{\delta {R}_{i}\left(N,T\right)}{100}\sqrt{\frac{n}{N}}\right),$$

where *δR _{i}(N,T)* is the
percentage change in the

*i*th resistance after

*N*discharge cycles. Specify

*δR*by using the

_{i}(N,T)**Change in resistance after NumDisCycles discharge cycles (%)**parameter.

Depending on how you configure the block, the resistances include these values:

Instantaneous resistance — Specify the percentage change over

*NumDisCycles*cycles using the**Change in instantaneous resistance after NumDisCycles discharge cycles (%)**parameter.Self-discharge resistance — Specify the percentage change over

*NumDisCycles*cycles using the**Change in self-discharge resistance after NumDisCycles discharge cycles (%)**parameter.First charge dynamics resistance — Specify the percentage change over

*NumDisCycles*cycles using the**Change in first polarization resistance after NumDisCycles discharge cycles (%)**parameter.Second charge dynamics resistance — Specify the percentage change over

*NumDisCycles*cycles using the**Change in second polarization resistance after NumDisCycles discharge cycles (%)**parameter.Third charge dynamics resistance — Specify the percentage change over

*NumDisCycles*cycles using the**Change in third polarization resistance after NumDisCycles discharge cycles (%)**parameter.

**Note**

You can also model the battery cycling aging characteristic by using the temperature-dependent or temperature-independent lookup tables. Choosing one of these options changes the block parameters accordingly.

### Calendar Aging Model

You can model the battery performance deterioration that occurs when the battery is not in use. Calendar aging affects the internal resistance and the capacity. In particular, the resistance increase varies by mechanisms such as the creation of a solid-electrolyte interface (SEI) at the anode and cathode and the corrosion of the current collector. These processes mainly depend on the storage temperature, the storage SOC, and storage time.

To model calendar aging in the Battery Equivalent Circuit block,
set one of the **Resistance calendar aging** or **Capacity
calendar aging** parameters to `Enabled`

and
then set the **Modeling option** parameter to one of these values:

`Equation-based`

`Tabulated: temperature`

`Tabulated: time and temperature`

**Note**

The Battery Equivalent Circuit block applies the calendar aging
only during initialization. When you set the **Resistance calendar
aging** or **Capacity calendar aging** parameter
to `Enabled`

, the block exposes the **Vector of
time intervals** parameter, which represents the time over which
the battery ages before the start of the simulation. This option does not
include calendar aging during the simulation.

**Equation-based**

These equations define the terminal resistance increase of the battery due to calendar aging:

$$\begin{array}{c}{\alpha}_{\text{R}}\left(T,{V}_{\text{oc}}\right)=\left({b}_{\text{R}}\text{\hspace{0.17em}}{V}_{\text{oc}}-{c}_{\text{R}}\right){e}^{-\frac{q\text{\hspace{0.17em}}{d}_{\text{R}}}{k\text{\hspace{0.17em}}T}}\\ {R}_{\text{calendar-aged}}={R}_{0}\left(1+{\displaystyle \sum _{i=1}^{i=n}{\alpha}_{R}\left({T}_{i},{V}_{\text{oc}}\right)\left({t}_{i}^{{a}_{\text{R}}}-{t}_{i-1}^{{a}_{\text{R}}}\right)}\right)\end{array}$$

where:

*V*_{oc}is the**Normalized open-circuit voltage during storage, V/Vnom**parameter.*R*_{0}is the**Internal resistance**parameter.*t*is the time sample derived from the_{i}**Vector of time intervals**parameter.*T*is derived from the_{i}**Temperature breakpoints, T**parameter.*b*_{R}is the**Terminal resistance linear scaling for voltage, b**parameter.*c*_{R}is the**Terminal resistance constant offset for voltage, c**parameter.*d*_{R}is the**Terminal resistance temperature-dependent exponential increase, d**parameter.*a*_{R}is the**Terminal resistance time exponent, a**parameter.*q*is the electron elementary charge, in C.*k*is the Boltzmann constant, in J/K.

These equations define the capacity decrease of the battery due to calendar aging:

$$\begin{array}{c}{\alpha}_{\text{C}}\left(T,{V}_{\text{oc}}\right)=\left({b}_{\text{C}}\text{\hspace{0.17em}}{V}_{\text{oc}}-{c}_{\text{C}}\right){e}^{-\frac{q\text{\hspace{0.17em}}{d}_{\text{C}}}{k\text{\hspace{0.17em}}T}}\\ {C}_{\text{calendar-aged}}=\text{C}\left(1+{\displaystyle \sum _{i=1}^{i=n}{\alpha}_{\text{C}}\left({T}_{i},{V}_{\text{oc}}\right)\left({t}_{i}^{{a}_{\text{C}}}-{t}_{i-1}^{{a}_{\text{C}}}\right)}\right)\end{array}$$

where:

*C*is the initial capacity.*b*_{C}is the**Capacity linear scaling for voltage, b**parameter.*c*_{C}is the**Capacity constant offset for voltage, c**parameter.*d*_{C}is the**Capacity temperature-dependent exponential increase, d**parameter.*a*_{C}is the**Capacity time constant, a**parameter.

If you set the **Storage condition** parameter to
`Specify state-of-charge during storage`

, the block
converts the SOC during storage into the normalized open-circuit voltage by
using the tabulated voltage **V _{0}**
against the SOC and the temperature during storage.

**Tabulated: Temperature**

The aged terminal resistance is the product of the terminal resistance,
*R*_{0}*(SOC,T)*, the
percentage resistance increase, *dR*_{0},
and the power law that describes the time dependence of the calendar aging:

$${R}_{0}(SOC,T;{t}_{\text{st}},{T}_{\text{st}})={R}_{\text{0}}(SOC,T)\left(1+{\displaystyle \sum _{i=1}^{n}\frac{d{R}_{0}({T}_{\text{st},i})}{100}\left(\frac{{t}^{\text{a}}{}_{\text{st},i}-{t}^{\text{a}}{}_{\text{st},i-1}}{{t}^{\text{a}}{}_{\text{st,m}}}\right)}\right),$$

where:

*T*is the battery temperature. Specify the*T*breakpoints using the**Temperature breakpoints, T**parameter if you tabulate the parameters over temperature.*T*_{st}is the**Vector of storage temperatures**parameter.*t*_{st,}and_{i}*t*_{st,}_{i}_{-1}are the time samples derived from the**Vector of time intervals**parameter.*t*_{0}is 0.*t*_{st,m}is the moment at which the software measures the resistance increase,*dR*_{0}.

The same equation applies to the calculation of the aged battery capacity.

**Tabulated: Time and Temperature**

The aged terminal resistance is the product of the terminal resistance,
*R*_{0}*(SOC,T)* and
*dR*_{0}:

$${R}_{0}(SOC,T;\Delta {t}_{\text{st}},{T}_{\text{st}})={R}_{0}(SOC,T)\left(1+{\displaystyle \sum _{i=1}^{n}\frac{d{R}_{0}(\Delta {t}_{\text{st},i},{T}_{\text{st},i})}{100}}\right).$$

The same equation applies to the calculation of the aged battery capacity.

### Faults

The Battery Equivalent Circuit block supports three different types of fault:

Additional resistance fault — The resistance of a series-connected resistor ranges from a value of 0 ohm to a value that you specify. You can use this fault to model an open-circuit cell when the additional series-connected resistance is high (greater than 1000 ohm), or an abnormal internal resistance.

Internal short fault — The resistance of a parallel-connected resistor ranges from an infinite value to a value that you specify.

Exothermic reactions — Use this fault to simulate a thermal runaway event. Heat-releasing chemical reactions occur at the cell level. At low temperatures, the rate of reaction is low and the self-heating rate is not significant. At higher temperatures, the rate of exothermic reactions increases exponentially. The battery generates more heat than the amount it can dissipate. The temperature starts to rise exponentially, reaches a thermal runaway event, and the cell starts to burn. During the burn, the cell electrical behavior is equivalent to an open circuit.

The released heat rate is a function of the extent of the reaction and the cell temperature:

$${Q}_{\text{reaction}}\left(\xi ,T\right)={K}_{\text{scale}}{\left(1-\xi \right)}^{\rho \text{\hspace{0.17em}}}{e}^{\frac{-Ea}{RT}},$$

where:

*K*_{scale}is a constant that scales the equation to define how fast the reaction advances.*ξ*is the reaction extent. If the reaction extent is 0, the reaction has not started. If the reaction extent is 1, the reaction has consumed all possible reactants and is completed.*ρ*is the value of the**Order of reaction**parameter and defines the polynomial dependency of the reaction rate with respect to the extent of reaction.$${e}^{\frac{-Ea}{RT}}$$ is the Arrhenius equation and defines the temperature dependency.

*Ea*is the activation energy, in kJ/mol, and*R*is equal to 8.314 J/k/mol.

The block computes

*K*_{scale}by using the**Exotherm onset temperature**parameter. The exotherm onset temperature is the temperature in an accelerating rate calorimetry (ARC) test at which the self-heating rate exceeds a threshold of 0.02 celsius per minute at which the reaction heat rate slowly increases the cell temperature. If the temperature exceeds this value, the reaction becomes self-sustaining and eventually produces the runaway event.In an ARC test, the released heat rate at the exothermic onset is equal to:

$${Q}_{\text{reaction}}\left(\xi =0\text{,}\text{\hspace{0.17em}}\text{\hspace{0.17em}}T={T}_{\text{EO}}\right)={M}_{\text{th,cell}}\text{\hspace{0.17em}}{\text{dTdt}}_{\text{EO}}={K}_{\text{scale}}\text{\hspace{0.17em}}{e}^{\frac{-Ea}{R{T}_{EO}}}$$

where:

*T*_{EO}is the exothermic onset temperature in Kelvin.*M*_{th,cell}is the thermal mass of the cell.*dTdt*_{EO}is the rate of change of the cell temperature when the cell is at the exothermic onset temperature. The typical value is 0.02 celsius per minute.

You can then compute

*K*_{scale}as a function of*dTdt*_{EO},*T*_{EO}, the thermal mass of the cell, and the activation energy:$${K}_{\text{scale}}=\frac{{M}_{\text{th,cell}}\ast {\text{dTdt}}_{\text{EO}}}{{e}^{\frac{-Ea}{R{T}_{EO}}}}.$$

As the reaction advances, some of the materials in the battery decompose into gases. These gases dissipate into the environment. The loss of these materials decreases the thermal mass of the battery. To model this loss of thermal mass, the thermal mass decreases linearly with the reaction extent. To control the rate of thermal mass decrease with reaction extent, specify the

**Percent of thermal mass vented**parameter accordingly.

To model a fault in the Battery Equivalent Circuit block, in the
**Faults** section, click the **Add fault**
hyperlink in the parameter that corresponds to the fault that you want to model.
When the **Create Fault** window opens, use it to specify the fault
properties. For more information about fault modeling, see Fault Behavior Modeling and Fault Triggering.

### Predefined Parameterization

You can parameterize the Battery Equivalent Circuit block by using built-in parameterizations that represent components from specific suppliers.

These parameterizations model the steady-state electrical parameters of a battery. The
software parameterizes the **Open-circuit voltage (SOC)**,
**Instantaneous resistance, R0(SOC, T)**, **Battery
capacity**, **Percentage change in cell capacity,
CapacityChange(N)**, and **Percentage change in open-circuit
voltage, OCVChangeVec(N)** parameters from characteristic curves in the
manufacturer datasheets. The software does not parameterize the change in series
resistance with the battery cycle life and the dynamic RC network parameters.
Instead, the software sums the net resistance of the RC network resistors to the
series resistance of the specific parameterized data. To populate the RC parameter
data, subtract the net RC network resistance from the series resistance data. The
software estimates the battery thermal mass by assuming a value of 900 J/kg K for
the specific heat of the battery. The thermal mass is then equal to 900 times the
weight of the battery in the manufacturer datasheet.

The available data corresponds to a 1 C discharge current for different
temperatures up to the minimum terminal voltage in the datasheet. The software
extrapolates the data below the minimum terminal voltage. The **Open-circuit voltage, OCV(SOC)** parameter is temperature-independent.
At lower temperatures, in the low-SOC region, the terminal resistances are constant
and equal to the value of the resistance at the minimum terminal voltage. In this
regime, batteries often experience higher thermal losses.

To load a predefined parameterization, double-click the Battery Equivalent Circuit
block, click the **<click to select>** hyperlink
of the **Selected part** parameter, and, in the Block
Parameterization Manager window, select the part you want to use from the list of
available components.

**Note**

The predefined parameterizations of Simscape™ components use available data sources for the parameter values. Engineering judgement and simplifying assumptions are used to fill in for missing data. As a result, expect deviations between simulated and actual physical behavior. To ensure accuracy, validate the simulated behavior against experimental data and refine component models as necessary.

For more information about predefined parameterization and for a list of the available components, see List of Pre-Parameterized Components (Simscape Electrical).

### Variables

To set the priority and initial target values for the block variables before simulation,
use the **Initial Targets** section in the block dialog box or Property
Inspector. For more information, see Set Priority and Initial Target for Block Variables.

Nominal values provide a way to specify the expected magnitude of a variable in a model.
Using system scaling based on nominal values increases the simulation robustness. You can
specify nominal values using different sources, including the **Nominal
Values** section in the block dialog box or Property Inspector. For more
information, see System Scaling by Nominal Values.

### Public Variables (Visible with Probe Block)

The Battery Equivalent Circuit block comprises these public variables that you can probe using the Probe block:

`batteryCurrent`

— Total current measured through the battery terminals. By default, this variable has units of Amperes.`batteryTemperature`

— Battery average temperature that the block uses for the table look-up of resistances and open-circuit voltage. If you set the**Thermal model**parameter to`Constant temperature`

, then the`batteryTemperature`

variable is equal to the specified temperature value. If you set the**Thermal model**parameter to`Lumped thermal mass`

, then the`batteryTemperature`

variable is a differential state that varies during the simulation.`batteryVoltage`

— Battery terminal voltage, or the voltage difference between the positive and the negative terminals. By default, this variable has units of Volts.`charge`

— Electrical charge drawn from or added to the battery. By default, this variable has units of A*h.`heatGenerationRate`

— Total battery heat generation rate. The block calculates the heat generation rate by adding up all resistive losses, reversible heating contribution, and the exothermic reaction heat if you enabled an exothermic fault. By default, this variable has units of Watts.`hysteresisState`

— Hysteresis state in the range [-1,1]. A value of 1 indicates that the block is using the charge open-circuit voltage curve at that time step. A value of -1 indicates that the block is using the discharge open-circuit voltage curve at that time step. By default, this variable is unitless.`isCurrentInterruptionTempExceeded`

— Boolean that indicates whether the battery has exceeded its current interruption temperature during a thermal runaway event. This variable is relevant only when modeling faults.`isExothermFaulted`

— Boolean that indicates whether the battery model has transitioned into a thermal runaway or exothermic mode. This mode can be triggered by high temperature or timed based on the fault model specification. This variable is relevant only when modeling faults.`numCycles`

— Equivalent number of discharge cycles of the battery. The counter starts at zero and increases by one every time an equivalent discharge charge has been drawn from the battery. By default, this variable is unitless.`ocv`

— Open-circuit voltage of the battery adjusted for temperature, ageing, and state of charge. By default, this variable has units of Volts.`power_dissipated`

— Resistive heat generation rate or dissipated power. By default, this variable has units of Watts.`reactionExtent`

— Exothermic reaction progression in the range [0,1]. Initially, the value of this variable is 0. This variable is relevant only when modeling faults.`reactionHeatRate`

— Exothermic reaction heat, if you enabled an exothermic fault. By default, this variable has units of Watts.`reversibleHeat`

— Reversible heating contribution from entropy changes. By default, this variable has units of Watts.`stateOfCharge`

— Battery state of charge obtained from coulomb counting. By default, this variable is unitless.`voltageDropRC1`

— Voltage drop that the first RC branch of the equivalent circuit model causes. By default, this variable has units of Volts.`voltageDropRC2`

— Voltage drop that the second RC branch of the equivalent circuit model causes. By default, this variable has units of Volts.`voltageDropRC3`

— Voltage drop that the third RC branch of the equivalent circuit model causes. By default, this variable has units of Volts.

## Examples

## Ports

### Conserving

## Parameters

## References

[1] Zhang, Ran, and Zhengqiang
Pan. “Model Identification of Lithium-Ion Batteries Considering Current-Rate Effects on
Battery Impedance.” In *2019 4th International Conference on Power and
Renewable Energy (ICPRE)*, 305–9. Chengdu, China: IEEE, 2019.
https://doi.org/10.1109/ICPRE48497.2019.9034704R.

[2] Baronti, Federico, Nicola
Femia, Roberto Saletti, Ciro Visone, and Walter Zamboni. “Hysteresis Modeling in Li-Ion
Batteries.” *IEEE Transactions on Magnetics* 50, no. 11 (November
2014): 1–4. https://doi.org/10.1109/TMAG.2014.2323426

[3] Baronti, F., W. Zamboni, N.
Femia, R. Roncella, and R. Saletti. “Experimental Analysis of Open-Circuit Voltage
Hysteresis in Lithium-Iron-Phosphate Batteries.” In *IECON 2013 - 39th Annual
Conference of the IEEE Industrial Electronics Society*, 6728–33, 2013.
https://doi.org/10.1109/IECON.2013.6700246

[4] Ramadass, P., Bala Haran,
Ralph White, and Branko N. Popov. “Mathematical Modeling of the Capacity Fade of Li-Ion
Cells.” *Journal of Power Sources* 123, no. 2 (September 2003):
230–40. https://doi.org/10.1016/S0378-7753(03)00531-7

[5] Ning, Gang, Bala Haran, and
Branko N. Popov. “Capacity Fade Study of Lithium-Ion Batteries Cycled at High Discharge
Rates.” *Journal of Power Sources* 117, no. 1–2 (May 2003): 160–69.
https://doi.org/10.1016/S0378-7753(03)00029-6

[6] Plett, Gregory L.
*Battery Management Systems. Volume I, Battery Modeling*. Artech
House, 2015.

## Extended Capabilities

## Version History

**Introduced in R2023b**