主要内容

本页采用了机器翻译。点击此处可查看英文原文。

Cell Delta SOC Estimator (Kalman Filter)

基于电芯增量卡尔曼滤波器的电荷状态估算器

自 R2025a 起

库:
Simscape / Battery / BMS / Estimators

描述

Cell Delta SOC Estimator (Kalman Filter) 模块实现了一个估算器,该估算器利用电芯增量卡尔曼滤波器来计算电池的电荷状态 (SOC)。增量 SOC 是内部估计器状态,电流是控制输入,电芯电压是测量值。

此模块支持单精度和双精度浮点仿真。

注意

要启用继承的单精度浮点仿真,除采样时间(-1 表示继承) 参数外,所有输入和参数的数据类型必须为 single

对于连续时间仿真,将滤波器类型参数设置为扩展卡尔曼-布西滤波器无迹卡尔曼-布西滤波器

注意

此模块的连续时间实现仅适用于双精度浮点仿真。如果您提供单精度浮点参数和输入,此模块会将它们转换为双精度浮点值,以防止出现错误。

对于离散时间仿真,将滤波器类型参数设置为扩展卡尔曼滤波器无迹卡尔曼滤波器,并将采样时间(-1 表示继承) 参数设置为一个正值或 -1

方程

该方程定义了电芯增量 SOC:

ΔSOCi=SOCiSOC¯,i=1,,Ns,

,其中 SOCi 是电芯 i 的荷电状态,SOC¯ 是电池组平均荷电状态,Ns 是串联的电芯数量。

该方程定义了逆增量电芯容量:

ΔAHinv,i=AHinv,iAHinv¯,

,其中 AHinv,i=1AHi 是电芯 i 的逆容量,AH¯inv=1AH¯ 是电池的平均逆容量。

增量 SOC 的状态空间模型为

dΔSOCidt=iΔAHinv,i3600Vt,i=V0(SOC¯+ΔSOCi,T¯)iR0V¯dyn

,其中 Vt,i 是电芯 i 的端电压,R0 是端电阻。

对于卡尔曼滤波算法,该模块使用 dΔSOCi 作为状态,并采用以下过程和观测函数:

f(ΔSOCi)=iΔAHinv,i3600h(dΔSOCi)=V0(SOC¯+ΔSOCi,T¯)iR0V¯dyn

扩展卡尔曼滤波器 (EKF) 依赖于在每个时间步长上进行线性化,以对非线性系统进行逼近。为了在每个时间步长上进行线性化,该算法会在线计算这些雅可比矩阵:

F=fΔSOCi=0H=V0ΔSOCi

EKF 是一种离散时间算法。离散化后,雅可比矩阵为:

Fd=1Hd=V0ΔSOCi

无迹卡尔曼滤波器对算法以确定性方式选择的一组西格玛点应用非线性变换。

然后,该模块使用以下方程计算电池的 SOC:

SOCi=SOC¯+ΔSOCi.

用于容量估计的卡尔曼滤波器的实现遵循本节所述的 SOC Estimator (Kalman Filter) 模块中针对单状态模型的理论。

示例

假设与限制

过程噪声和 SOC 噪声是相互独立的、均值为零的高斯噪声。

端口

输入

全部展开

电池电流(以安培为单位),指定为标量(对于单个电芯)或向量(对于多个电芯)。要将此输入指定为电芯电流向量,请选择指定电流输入作为电芯电流参数。

电芯电压,以伏特为单位,对于单个电芯指定为标量,对于多个电芯指定为向量。该输入端口的尺寸必须与 CellTemperaturedInvCellAH 输入端口的尺寸相同。

电芯温度,单位为开尔文或摄氏度,对于单个电芯指定为标量,对于多个电芯指定为向量。该输入端口的尺寸必须与 CellVoltagedInvCellAH 输入端口的尺寸相同。

电池的逆增量电芯容量(单位为安时),对于单个电芯,指定为标量;对于多个电芯,指定为向量。该输入端口的尺寸必须与 CellVoltageCellTemperatureCellR0 输入端口的尺寸相同。

电池包的平均 SOC,以标量形式指定。

电池包的平均动态过电位电压(单位:伏特),指定为标量。

输出

全部展开

电池电芯的 SOC,以标量或向量形式返回。该输出端口的尺寸与 CellVoltageCellTemperaturedInvCellAH 输入端口的尺寸相同。

参数

全部展开

主要参数

以电芯电流向量的形式指定电流输入端口值的选项。如果选择此参数,电流输入端口的值可以是标量或向量,其大小与模块输入的大小相等。

该模块用于估计电池荷电状态的卡尔曼滤波器类型。

控制西格玛点扩散的系数。该模块在实现无迹卡尔曼滤波器和无迹卡尔曼-布西滤波器的方程时使用此参数。

依赖关系

要启用此参数,请将滤波器类型设置为无迹卡尔曼滤波器无迹卡尔曼-布西滤波器

与分布相关的系数。该模块在其实现的无迹卡尔曼滤波器及无迹卡尔曼-布西滤波器中使用此参数。

依赖关系

要启用此参数,请将滤波器类型设置为无迹卡尔曼滤波器无迹卡尔曼-布西滤波器

控制西格玛点扩散的系数。该模块在实现无迹卡尔曼滤波器和无迹卡尔曼-布西滤波器的方程时使用此参数。

依赖关系

要启用此参数,请将滤波器类型设置为无迹卡尔曼滤波器无迹卡尔曼-布西滤波器

各状态中噪声的协方差。

测量中噪声的协方差。

初始状态误差的协方差。该参数定义了状态初始化过程中的偏差。

连续两次模块执行之间的时间。在执行期间,模块产生输出,并在需要时更新其内部状态。有关详细信息,请参阅什么是采样时间?指定采样时间

对于继承的离散时间运行,请将此参数指定为 -1。对于离散时间运算,请将此参数指定为正实数。对于连续时间运行,将该参数指定为 0

如果此模块位于支持在连续操作和离散操作之间切换的封装子系统或变体子系统中,则提升采样时间参数。提升采样时间参数可确保在模块的连续实现和离散实现之间正确切换。有关详细信息,请参阅Promote Block Parameters to a Mask

依赖关系

要启用此参数,请将滤波器类型设置为扩展卡尔曼滤波器无迹卡尔曼滤波器

系统模型

荷电状态断点向量,用于定义指定查找数据的点位。该向量的元素必须严格按升序排列。

温度断点向量,用于定义您指定查找数据的点。该向量必须严格按升序排列,且数值必须大于 0 K。该参数的物理单位必须与 CellTemperature 输入端口的物理单位一致。

在指定 SOC 和温度临界点下,查询电池串联电阻的数据。

在指定 SOC 状态下,查阅基本电池模型两端开路电压的电压值数据。该矩阵的行数等于荷电状态值向量,SOC (-) 参数的大小。该矩阵的列数等于温度向量,T 参数的大小。

信号属性

自 R2025a 起

选择模块算法的数据类型的选项,指定为以下值之一:

  • 继承: 自动 - 您可以采用 singledouble 两种精度仿真模块。您必须以 singledouble 的形式明确提供输入和参数。

  • double - 模块算法将所有输入和参数转换为 double 数据类型。

  • single - 模块算法将所有输入和参数转换为 single 数据类型。

  • <数据类型表达式> - 模块算法将所有输入和参数转换为您指定的数据类型对象。

点击显示数据类型助手按钮 以显示数据类型助手,它可以帮助您设置数据类型属性。有关详细信息,请参阅使用数据类型助手指定数据类型控制信号的数据类型

参考

[1] Plett, Gregory L. "Efficient Battery Pack State Estimation Using Bar-Delta Filtering,” 2009. https://api.semanticscholar.org/CorpusID:54178271.

扩展功能

全部展开

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2025a 中推出