# Battery Cell Contact Monitoring

Monitor for battery cell contact

Since R2024a

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.

• vi is the ith cell or parallel assembly voltage.

• Δvi is the smoothed rate of voltage change for the ith 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,

where ΔVth 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 NPA is the number of parallel assemblies.

The block then detects the symptoms if

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

where eth 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.

## Ports

### Input

expand all

Voltages of parallel assemblies, in volts, specified as a vector.

### Output

expand all

Indication of a contact loss error, returned as a vector of values that can be either `0` or `1`. Elements equal to `1` correspond to cells or parallel assemblies that have a contact loss symptom for a time longer than the value of the Qualification time (s) parameter, which indicates a loss-of-contact failure.

The size of this port is equal to the size of the Voltage input port.

Indication of a contact loss symptom, returned as a vector of values that can be either `0` or `1`. Elements equal to `1` correspond to cells or parallel assemblies where the block senses a contact issue.

The size of this port is equal to the size of the Voltage input port.

## Parameters

expand all

To edit block parameters interactively, use the Property Inspector. From the Simulink® Toolstrip, on the Simulation tab, in the Prepare gallery, select .

Time constant for the voltage change smoothing.

Threshold over which the block detects a change in voltage.

Allowed peak-to-average ratio of the voltage change.

Cumulative error threshold that the block uses to detect the contact loss symptom.

Time required to qualify the contact loss error after the block detects a symptom, in seconds.

Time required to disqualify the contact loss error after the block detects a symptom, in seconds. If you set this parameter to `0`, the block does not disqualify the errors.

Time between consecutive block executions. During execution, the block produces outputs and, if appropriate, updates its internal state. For more information, see What Is Sample Time? and Specify Sample Time.

For inherited discrete-time operation, specify this parameter as `-1`. For discrete-time operation, specify this parameter as a positive integer. For continuous-time operation, specify this parameter as `0`.

If this block is in a masked subsystem or a variant subsystem that allows you to switch between continuous and discrete operations, promote the sample time parameter. Promoting the sample time parameter ensures correct switching between the continuous and discrete implementations of the block. For more information, see Promote Block Parameters on a Mask.

## Version History

Introduced in R2024a