# Battery Cell Contact Monitoring

**Libraries:**

Simscape /
Battery /
BMS /
Protection

## Description

The Battery Cell Contact Monitoring block monitors the state of contact between the cells of a battery. Algorithms for cell contact monitoring are essential for the safety, performance, and reliability of battery systems, especially in a battery pack with many cells.

This block first checks for cell contact loss symptoms in parallel assemblies. If the
block detects a symptom, and this symptom lasts for longer than the value of the
**Qualification time (s)** parameter, then the block reports the symptom as
a loss-of-contact error.

You can switch between continuous and discrete implementations of the block by using the
**Sample time (-1 for inherited)** parameter. To configure the block for
continuous time, set the parameter to `0`

. To configure the block for
discrete time, set the parameter to a positive, nonzero value, or to `-1`

to
inherit the sample time from an upstream block.

This diagram shows the structure of the block:

### Equations

In faulty contacts between cells, the rate of voltage change can be very small, and the noise can have a negative impact in the algorithm accuracy. The block computes the rate of change of voltage using a filtered derivative that smooths the output,

$$\begin{array}{cc}\Delta {v}_{i}=\frac{s}{Ts+1}{v}_{i},& i=1,\dots ,N;N>1\end{array},$$

where:

*T*is the time constant for the smoothing.*v*is the_{i}*i*th cell or parallel assembly voltage.*Δv*is the smoothed rate of voltage change for the_{i}*i*th cell or parallel assembly.$$\Delta v={\left[\Delta {v}_{1},\Delta {v}_{2},\dots ,\Delta {v}_{N}\right]}^{T}.$$

$$v={\left[{v}_{1},{v}_{2},\dots ,{v}_{N}\right]}^{T}.$$

When a loss-of-contact fault occurs in a parallel assembly, the rate of voltage change increases. The value of this increase is inversely related to the number of cells inside the parallel assembly. This figure shows the evolution of voltage over time for a functioning parallel assemblies and a faulted parallel assembly.

The block assumes that not all parallel assemblies are faulted and uses the average rate of change for the voltage as reference. To check for faulty symptoms, the block directly compares the deviation of the cumulative error against a given threshold,

$$\begin{array}{c}{u}_{i}=\{\begin{array}{cc}\left|\Delta {v}_{i}\right|,& \text{when}\left|\Delta {v}_{i}\right|\Delta {\text{V}}_{th}\\ \Delta {\text{V}}_{th}\text{,}& \text{when}\left|\Delta {v}_{i}\right|\le \Delta {\text{V}}_{th}\end{array}\\ {u}_{\text{average}}=\frac{1}{{N}_{\text{PA}}}{\displaystyle \sum _{i=1}^{{N}_{\text{PA}}}{u}_{i}}\end{array}$$

where *ΔV _{th}* is the detection
threshold of the voltage change used to eliminate the measurements where the battery is in
idle mode or is close to idle mode, and

*N*

_{PA}is the number of parallel assemblies.

The block then detects the symptoms if

$$\text{Symptom}=\{\begin{array}{cc}0,& \text{when}{\displaystyle \int \left(u-\left(1+\text{VoltageChangePar}\right){u}_{\text{average}}\right)}<{e}_{th}\\ \text{1,}& \text{when}{\displaystyle \int \left(u-\left(1+\text{VoltageChangePar}\right){u}_{\text{average}}\right)}\ge {e}_{th}\end{array}$$

where *e _{th}* is the cumulative
error threshold and

*VoltageChangePar*is the allowed peak-to-average ratio. If

*VoltageChangePar*is very small, the block can detect a false positive. If

*VoltageChangePar*is too large, the block can detect a false negative.

### Assumptions and Limitations

The block does not assume that all parallel assemblies are faulted.

The block does not assume that all cells inside a parallel assemblies are faulted.

## Examples

## Ports

### Input

### Output

## Parameters

## Extended Capabilities

## Version History

**Introduced in R2024a**