Main Content

Tabulated battery model

**Library:**Simscape / Electrical / Sources

The Battery (Table-Based) block represents a high-fidelity battery model. The block calculates no-load voltage as a function of charge level and optional temperature using lookup tables and includes several modeling options:

Self-discharge

Battery fade

Charge dynamics

Calendar aging

**Note**

The block can use linear or nearest interpolation and extrapolation for all the table based parameters. For rows and columns, it follows the row-column convention, whereas rows are indexed first and, subsequently, columns.

The plot shows a battery whose performance varies with temperature and state of charge changes, as typically found on a datasheet.

Use this block to parameterize batteries with complex no-load voltage behavior from datasheets or experimental results. For a simpler representation of a battery, see the Battery block.

The Battery (Table-Based) block has four modeling
variants, accessible by right-clicking the block in your block diagram and then
selecting the appropriate option from the context menu, under
**Simscape** > **Block choices**:

**Uninstrumented | No thermal port**— Basic model that does not output battery charge level and simulates at a fixed temperature. This modeling variant is the default.**Uninstrumented | Show thermal port**— Model with exposed thermal port. This model does not output internal charge level of the battery.**Instrumented | No thermal port**— Model with exposed charge output port. This model uses a fixed temperature throughout the simulation.**Instrumented | Show thermal port**— Model that lets you output internal charge level of the battery. Both the thermal port and the charge output port are exposed.

The instrumented variants have an extra physical signal port that outputs the internal state of charge. Use this functionality to change load behavior as a function of state of charge, without the complexity of building a charge state estimator.

The thermal port variants expose a thermal port, which represents the battery thermal mass.

You can also choose different built-in parameterizations for this block. For more information, see the Predefined Parameterization section.

The battery equivalent circuit is made up of the fundamental battery model, the
self-discharge resistance *R _{SD}*, the charge
dynamics model, and the series resistance

The block calculates the no-load voltage, or the voltage across the fundamental battery model by interpolation:

$${v}_{0}={v}_{0}(\text{SOC},T)$$

Where:

*v*is the no-load voltage of the battery. Specify the grid of lookup values using the_{0}**No-load voltage, V0(SOC,T)**parameter if tabulating parameters over temperature, or**No-load voltage, V0(SOC)**otherwise.`SOC`

is the ratio of current charge to nominal battery capacity specified in the**Ampere-hour rating, AH(T)**parameter along with the effects of the temperature dependent fade percentage change in ampere-hour rating,*δ*, specified in the_{AH}(n, Tfade)**Percentage change in ampere-hour rating, dAH(N, Tfade)**parameter. Specify the SOC breakpoints using the**Vector of state-of-charge values, SOC**parameter. The block estimates the nominal battery capacity based on the number of cycles and the temperature of the battery by interpolating the specified temperature dependent fade characteristics and the**Ampere-hour rating, AH(T)**parameter.`SOC`

represents the normalized data with respect to*q*._{nom}For the lookup-table based fade characteristics option,

$${q}_{nom}(T,n)=\left(1+\frac{{\delta}_{AH}(n,{T}_{fade})}{100}\right)*AH(T)\text{\hspace{0.17em}}Ah.$$

For the equation-based fade characteristics option,

$${q}_{nom}(T,n)=\left(1+\frac{{\delta}_{AH}}{100}\sqrt{\frac{n}{N}}\right)*AH(T)\text{\hspace{0.17em}}Ah.$$

Finally,

`SOC`

is obtained from the following equation.$$SOC(t)=\frac{1}{{q}_{nom}(T,n)}{\displaystyle \int \left(i(t)-\frac{{V}_{open}(T,n,t)}{{R}_{SD}(T,n)}\right)}dt$$

Where:

*q*is the ampere-hour rating of the battery. Specify this value using the_{nom}**Ampere-hour rating, AH(T)**parameter.*N*is the reference number of discharge cycles over which you specify percent change of several battery parameters. Set this value using the**Number of discharge cycles, N**parameter.*n*is the present number of cycles of the battery.*δ*is the percentage change in ampere-hour rating of the battery after_{AH}*N*discharge cycles.

*T*is the battery temperature. Specify the*T*breakpoints using the**Vector of temperatures, T**parameter if tabulating the parameters over temperature.

The block also models the series resistance
*R _{0}* as a function of state of charge
and optional temperature. Specify the grid of lookup values for the series
resistance using the

When the battery terminals are open-circuit, it is still possible for internal
currents to discharge the battery. This behavior is called self-discharge. To enable
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. You can specify the lookup values for this resistance
using the

Batteries are not able to respond instantaneously to load changes. They require some time to achieve a steady-state. This time-varying property is a result of battery charge dynamics and is modeled using parallel RC sections in the equivalent circuit.

You can model battery charge dynamics using the **Charge
dynamics** parameter:

`No dynamics`

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

— The equivalent circuit contains one parallel RC section. Specify the time constant using the**First time constant, tau1(SOC,T)**parameter if tabulating parameters over temperature or**First time constant, tau1(SOC)**otherwise.`Two time-constant dynamics`

— The equivalent circuit contains two parallel RC sections. Specify the time constants using the**First time constant, tau1(SOC,T)**and**Second time constant, tau2(SOC,T)**parameters if tabulating parameters over temperature or**First time constant, tau1(SOC)**and**Second time constant, tau2(SOC)**otherwise.`Three time-constant dynamics`

— The equivalent circuit contains three parallel RC sections. Specify the time constants using the**First time constant, tau1(SOC,T)**,**Second time constant, tau2(SOC,T)**, and**Third time constant, tau3(SOC,T)**parameters if tabulating parameters over temperature or**First time constant, tau1(SOC)**,**Second time constant, tau2(SOC)**, and**Third time constant, tau3(SOC)**otherwise.`Four time-constant dynamics`

— The equivalent circuit contains four parallel RC sections. Specify the time constants using the**First time constant, tau1(SOC,T)**,**Second time constant, tau2(SOC,T)**,**Third time constant, tau3(SOC,T)**, and**Fourth time constant, tau4(SOC,T)**parameters if tabulating parameters over temperature or**First time constant, tau1(SOC)**,**Second time constant, tau2(SOC)**,**Third time constant, tau3(SOC)**, and**Fourth time constant, tau4(SOC)**otherwise.`Five time-constant dynamics`

— The equivalent circuit contains five parallel RC sections. Specify the time constants using the**First time constant, tau1(SOC,T)**,**Second time constant, tau2(SOC,T)**,**Third time constant, tau3(SOC,T)**,**Fourth time constant, tau4(SOC,T)**, and**Fifth time constant, tau5(SOC,T)**parameters if tabulating parameters over temperature or**First time constant, tau1(SOC)**,**Second time constant, tau2(SOC)**,**Third time constant, tau3(SOC)**,**Fourth time constant, tau4(SOC)**, and**Fifth time constant, tau5(SOC)**otherwise.

This diagram shows the equivalent circuit for the block configured with two time-constant dynamics.

In the diagram:

*R*and_{1}*R*are the parallel RC resistances. Specify these values with the_{2}**First polarization resistance, R1(SOC,T)**and**Second polarization resistance, R2(SOC,T)**parameters, respectively, if tabulating parameters over temperature or**First polarization resistance, R1(SOC)**and**Second polarization resistance, R2(SOC)**otherwise.*C*and_{1}*C*are the parallel RC capacitances. The time constant_{2}*τ*for each parallel section relates the*R*and*C*values using the relationship $$C=\tau /R$$. Specify*τ*for each section using the**First time constant, tau1(SOC,T)**and**Second time constant, tau2(SOC,T)**parameters, respectively, if tabulating parameters over temperature or**First time constant, tau1(SOC)**and**Second time constant, tau2(SOC)**otherwise.*R*is the series resistance. Specify this value with the_{0}**Terminal resistance, R0(SOC,T)**parameter if tabulating parameters over temperature or**Terminal resistance, R0(SOC)**otherwise.

Battery fade is the deterioration of battery performance over repeated charge and
discharge cycles. When the **Fade characteristics defined by**
parameter is set to `Equations`

, the battery fade is
modeled as follows.

The no-load voltage across the fundamental battery model fades proportionally with
the number of discharge cycles *n*:

$${v}_{0,\text{fade}}={v}_{0}\left(1+\frac{{\delta}_{{v}_{0}}}{100}\frac{n}{N}\right)$$

Where
*δ _{v0}* is the
percent change in no-load voltage after

The nominal charge, from which state of charge is calculated, fades with the square root of number of discharge cycles:

$${q}_{nom,\text{fade}}={q}_{nom}\left(1+\frac{{\delta}_{AH}}{100}\sqrt{\frac{n}{N}}\right)$$

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

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

Where:

*R*is the_{i}*i*^{th}resistance*δ*is the percent change in this resistance over_{Ri}*N*cycles

Depending on how you have configured the block, the resistances might include:

The series resistance — Specify the percent change over

*N*cycles using the**Change in terminal resistance after N discharge cycles (%)**parameter.The self-discharge resistance — Specify the percent change over

*N*cycles using the**Change in self-discharge resistance after N discharge cycles (%)**parameter.The first charge dynamics resistance — Specify the percent change over

*N*cycles using the**Change in first polarization resistance after N discharge cycles (%):**parameter.The second charge dynamics resistance — Specify the percent change over

*N*cycles using the**Change in second polarization resistance after N discharge cycles (%)**parameter.The third charge dynamics resistance — Specify the percent change over

*N*cycles using the**Change in third polarization resistance after N discharge cycles (%)**parameter.The fourth charge dynamics resistance — Specify the percent change over

*N*cycles using the**Change in fourth polarization resistance after N discharge cycles (%)**parameter.The fifth charge dynamics resistance — Specify the percent change over

*N*cycles using the**Change in fifth polarization resistance after N discharge cycles (%)**parameter.

**Note**

You can also model the battery fade characteristics by using lookup tables (temperature independent) or lookup tables (temperature dependent). Choosing any of these two options changes the blocks parameters accordingly. For more information, see the Fade parameters tab.

For thermal variants of the block, the battery temperature is determined from a summation of all the ohmic losses included in the model:

$${M}_{th}\dot{T}={\displaystyle \sum _{i}{V}_{T,i}{}^{2}/{R}_{T,i}}$$

Where:

*M*_{th}is the battery thermal mass.*i*corresponds to the*i*^{th}ohmic loss contributor. Depending on how you have configured the block, the losses might include:The series resistance

The self-discharge resistance

The first charge dynamics segment

The second charge dynamics segment

The third charge dynamics segment

The fourth charge dynamics segment

The fifth charge dynamics segment

*V*is the voltage drop across resistor_{T,i}*i*.*R*is resistor_{T,i}*i*.

You can model the battery performance deterioration that occurs when the battery is not used. Calendar aging affects both the internal resistance and capacity. In particular, the resistance increase depends by various mechanisms such as the creation of Solid Electrolyte Interface (SEI) at both anode and cathode and the corrosion of the current collector. These processes mainly depends on the storage temperature, the storage state of charge, and time.

You can model the calendar aging in the Battery (Table-Based) block
by setting the **Calendar aging model** parameter to:

`Equation-based`

`Tabulated: temperature`

`Tabulated: time and temperature`

This equation defines the terminal resistance increase of the battery due to calendar aging:

$$\begin{array}{c}{\alpha}_{r}\left(T,{V}_{oc}\right)=\left(b{V}_{oc}-c\right){e}^{-\frac{qd}{kT}},\\ R={R}_{0}\left(1+{\displaystyle \sum _{i=1}^{i=n}{\alpha}_{r}\left({T}_{i},{V}_{oc}\right)\left({t}_{i}^{a}-{t}_{i-1}^{a}\right)}\right),\end{array}$$

where:

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

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

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

The aged terminal resistance is the product between the terminal resistance,
*R _{0}(SOC,T)*, the percentage
resistance increase,

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

where:

*T*is the battery temperature. Specify the*T*breakpoints using the**Vector of temperatures, T**parameter if tabulating the parameters over temperature.*T*is the_{st}**Vector of storage temperatures**.*t*and_{st,i}*t*are the time samples derived from the_{st,i-1}**Vector of time intervals**.*t*is assumed to be null._{0}*t*is the moment in time at which the resistance increase,_{st,m}*dR*, is measured._{0}

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

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

There are multiple available built-in parameterizations for the Battery (Table-Based) block.

This pre-parameterization data allows you to set up the block to represent
components by specific suppliers. The parameterizations of these batteries match the
manufacturer data sheets. To load a predefined parameterization, click on the
**Select a predefined parameterization** hyperlink in the
Battery (Table-Based) block mask and select the part you want to use from the list
of available components.

The available pre-parameterized data model steady state electrical parameters of a lithium-ion battery. The change in series resistance with the battery cycle life, the thermal mass, and the dynamic RC network parameters are not parameterized. Instead, the net resistance of the RC network resistors is summed to the series resistance of the specific pre-parameterized data. If you need to fill the RC parameter data, subtract the net RC network resistance from the series resistance data.

The available data is parameterized for 1C discharge current for up to 99% of the depth of discharge. Simple fading parameters are given for single temperature.

**Note**

Predefined parameterizations of Simscape components use available data sources for supplying parameter values. Engineering judgement and simplifying assumptions are used to fill in for missing data. As a result, deviations between simulated and actual physical behavior should be expected. To ensure requisite accuracy, you should validate simulated behavior against experimental data and refine component models as necessary.

A quick plot feature lets you visualize the voltage-charge characteristic for the
battery model parameter values. To plot the characteristics, right-click a
Battery (Table-Based) block in your model and,
from the context menu, select **Electrical** >
**Basic characteristics**. The software automatically
computes a set of bias conditions, based on the block parameter values, and opens a
figure window containing a plot of no-load voltage versus the state-of-charge (SOC)
for the block. For more information, see Plot Basic Characteristics for Battery Blocks.