主要内容

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

探索估计电池荷电状态的技术

自 R2024b 起

此示例探讨了估计电池荷电状态 (SOC) 的不同技术,包括卡尔曼滤波器算法和库仑计数法。卡尔曼滤波器是一种估计算法,可从不完整且存在噪声的测量值推断出线性动态系统的状态。此例说明了卡尔曼滤波器在动态估计电池 SOC 时,即使在初始条件不准确且测量值存在噪声的情况下,也能发挥有效作用。电池的 SOC(状态)表示电池的当前电量与最大电量之比。

为了突出卡尔曼滤波器的精度,您还可以使用库仑计数算法估计电池的 SOC。然后,将这些结果与之前使用卡尔曼滤波器估计的 SOC 值进行比较。

如需查看此示例的更简洁紧凑版本,请参阅 电池荷电状态估计 示例。

测量电动汽车的荷电状态

电动汽车 (EV) 通过使用电力作为动力来源,为传统内燃机车辆提供了一种更清洁的替代方案。这种替代能源使电动汽车能够减少对化石燃料的依赖,从而降低温室气体排放和空气污染。电动汽车 (EV) 通过使用由电池供电的电动机来运行,电池是电动汽车的核心部件。这些电池决定了电动汽车的续航里程、性能以及环境影响。然而,由于电池本身的固有特性,包括电池能量密度和重量、热管理、老化和退化,以及 SOC 和健康状态 (SOH) 的估计,管理电动汽车内的电池是一项复杂的任务。

能够实时监测电池系统状态 (SOC) 对于高效管理电池系统以及在电池性能和寿命至关重要的应用场景中至关重要。

该图显示了电动汽车 (EV) 的电池管理系统 (BMS) 及其与电池的交互作用,重点介绍了 BMS 如何利用传感器数据和卡尔曼滤波器算法估计电池的荷电状态 (SOC)。EV 配备温度、电流和电压传感器,可随时告知您这些物理参数的值。然而,该电动汽车缺乏专用的 SOC 传感器,因为作为单一组件的直接 SOC 传感器目前并不存在。要了解电池的 SOC 值,您必须通过解释各种传感器数据的算法来估计 SOC。

在此示例中,您使用库仑计数法和卡尔曼滤波器算法估计电池的 SOC:

  • 库仑计数 - 积分电流随时间的变化

SOC=SOC(t0)+1Cratedt0t0+τIbatt,

其中 Crated 表示电池的额定容量,单位为安培小时 (Ah),Ibatt 表示电池电流,单位为安培。

  • 卡尔曼滤波器 - 预测电池的未来荷电状态,并根据新测量结果更新预测。

荷电状态

电池的荷电状态以电池总容量的百分比来表示电池的充电水平。要计算 SOC 值的百分比,将电池的电量除以其总容量,然后将该值乘以 100:

SOC=100CreleasableCrated,

其中,Creleasable 表示电池的电量,单位为安时,Crated 表示电池的额定容量,单位为安时。制造商提供额定容量值,该值代表电池的最大充电量。例如,如果一块电池的容量为 200 Ah,目前含有 100 Ah 的电量,则 SOC 等于 50%。

SOC(状态指示器)在许多应用中对于管理电池系统至关重要,包括电动汽车 (EV) 和可再生能源储能系统。如果您知道电池的 SOC 值,就可以高效管理能源,防止深度放电循环,延长电池寿命,并确保系统可靠性。

打开模型

打开模型 EstimateBatterySOCUsingKF。该模型使用 PreLoadFcn 模型回调在 BatterySOCEstimationData.m 脚本中自动加载所需的参数。

该模型是上一节中 EV 原理图的简化 Simscape™ 实现。电池的实际初始 SOC 为 0.5(或 50%),但卡尔曼滤波器估计器以 SOC 为 0.8(或 80%)的初始条件开始。电池的充电和放电周期为 6 小时。尽管实际 SOC 与估计器的初始条件之间存在差异,但卡尔曼滤波器会迅速调整以准确反映实际 SOC 值。估计值在不到 10 分钟内收敛到实际值,然后继续准确跟踪实际 SOC。

open_system('EstimateBatterySOCUsingKF')

在此示例中,扩展卡尔曼滤波器是 SOC Estimator (Kalman Filter) 模块用于估计电池 SOC 的算法。要使用不同的卡尔曼滤波器实现,在 SOC 估计器(卡尔曼滤波器)模块中,将滤波器类型参数设置为 Extended Kalman-Bucy FilterUnscented Kalman FilterUnscented Kalman-Bucy Filter

该模型包括三个主要组件:

  • 热网络 - 对电池与其环境之间的热交换进行建模。

  • 电气网络 - 建模电池和在仿真期间为电池充电和放电的电流配置文件。

  • SOC 估计器 - 使用卡尔曼滤波器算法估计电池的 SOC。

探索热网络

电池与环境之间的热交换会影响电池的性能及其安全性。低温或高温会降低电池的性能,而过热则可能导致热失控。在热失控过程中,电池产生的热量超过其散热能力,可能导致火灾或爆炸。

这种热量传递是通过传导和对流两种方式进行的。传导是通过材料传递热量。电池在充电和放电循环过程中,由于内阻以及电化学反应会产生热量。电池的材料随后将热量传导至其表面。当热量到达表面后,电池通过对流将热量传递给周围的空气或冷却液。对流换热的效率取决于多个因素,包括电池表面与环境之间的温度差、电池的表面积以及空气或流体的流速。要了解更多关于传导、对流和热质量的基本知识,请参阅Heat Conduction Through Iron Rod示例。

该图显示了该示例如何对电池的热网络进行建模:

为了捕捉电池系统的热动态特性,该模型包括:

  • Battery Equivalent Circuit 模块 - 对产生和交换热量的电池进行建模。

  • 电池的热质量 - 表示电池的质量及其存储热量的能力。要建模此质量,在 Battery Equivalent Circuit 模块中,将热模型参数设置为 Lumped thermal mass,并在设置中为电池热质量参数指定一个值。该参数代表将热端口温度提高 1 开尔文所需的能量。

  • Convective Heat Transfer 模块 - 模拟电池与环境之间的热交换。

  • Controlled Temperature Source 模块 - 代表热网络中的理想能源,无论热流量如何,都能保持受控的温差。此模块对环境温度进行建模。AB 是与源入口和出口相关的保温端口。端口 S 是应用驱动源的控制信号的物理信号端口。

  • Temperature Sensor 模块 - 测量电池温度。SOC 估计器(卡尔曼滤波器)模块需要此温度值。

Convective Heat Transfer 模块代表电池与环境之间通过流体运动进行的对流传热。牛顿冷却定律描述了这种传热,

Q=kA(TA-TB),

其中:

  • Q 是热流,单位为瓦特 (W)。

  • k 是对流传热系数。在此示例中,该系数等于 5 W/(K*m2)。

  • A 是表面积。在此例中,表面积为电池电芯的面积,等于 0.1019 m2

  • TATB 分别表示电池温度和环境温度,单位为开尔文。

AB 是与其间发生了对流传热的点关联的热守恒端口。由于模块的正方向是从端口 A 到端口 B,因此,如果热流从 A 流向 B,则热流为正。

探索电气网络

该图显示了构成模型电气网络的元素:

  • Battery Equivalent Circuit 模块 - 对要估计 SOC 的电池进行建模。

  • Probe 模块 - 将电池的 SOC 值作为 Simulink® 信号输出。

  • Controlled Current Source 模块 - 代表一个理想电流源,其功率足以维持您指定的电流,无论其两端电压如何。输出电流 Is 是物理信号输入端口 iT 上的数值。

  • 电流配置文件子系统 - 对通过输入端口 iT 提供给 Controlled Current Source 模块的电流进行建模,该电流随后产生流过电池的电流。

  • 传感器和噪声 - 使用 Voltage Sensor 模块测量 SOC 估计器(卡尔曼滤波器)模块估计 SOC 所需的电池电压。两个 Band-Limited White Noise 模块向电流和电压测量值添加噪声,以更准确地反映实际应用情况。

Battery Equivalent Circuit 模块

Battery Equivalent Circuit 模块通过组合特定电路拓扑结构中的电气电路元素来建模电池端电压。该图展示了等效电路拓扑结构,其基于可变电阻、可变电容及可变电压源。电池不会立即对负载变化做出反应。它们需要一定时间才能达到稳定状态。这种随时间变化的属性是电池充电动态的结果。该模块通过等效电路中的并联 RC 部分对充电动态特性进行建模。

电池等效电路通过求解基尔霍夫电压定律,计算每个时间步的电池端电压。

Vt=V0(SOC,T)+IR0(SOC,T)+V1,

其中:

  • V0(SOC,T) 是开路电压。

  • IR0(SOC,T) 是瞬时过电势。

  • R0(SOC,T) 是电池在指定 SOC 和温度值下的瞬时电阻。

  • V1=ΔURC1(SOC,T) 是动态过电势。此可选术语取决于并联电阻器-电容器对的数量。由于此示例中的 Battery Equivalent Circuit 模块仅对一个时间常数动态特性进行建模,因此动态过电势仅包含一个项。

  • ΔURC1 是并联电阻器-电容器组 1 的电压降。

该软件在仿真期间的每个时间步更新电池的荷电状态 SOC、温度 T 以及与它们相关的变量。对于 Battery Equivalent Circuit 模块,I 在放电期间为负号,在充电期间为正号。在放电过程中,该模块从开路电压值中减去电池过电势,降低电池的端电压。在放电和充电情况下,过电势以热能的形式消散能量。该图显示了电池脉冲放电过程中电池过电势的变化。与瞬时过电势在最初几毫秒内迅速上升相反,电阻器-电容器对产生的动态过电势在脉冲期间缓慢上升。

此示例中的电池未建模自放电、滞后、电流方向性、电池衰减或日历老化。

该模块通过计算电池中的所有欧姆损耗之和来确定电池温度。

MthT˙=iVT,i2RT,i,

其中:

  • Mth 是电池热质量。

  • i 对应于第 ith 个欧姆损耗贡献项。由于此模块仅对一个时间常数动态特性进行建模,因此这些损耗包括串联电阻和第一个充电动力学段。

  • VT,i 是电阻器 i 两端的电压降。

  • RT,i 是电阻器 i

电池表征

此例通过使用 SOC、温度、电压、电阻和电池电芯容量来描述电池的特性。本例中电池的参数设置对应于锂离子电池。如果您没有这些参数的有效值,或者想要使用特定供应商来表示组件,则可以使用预定义的参数化设置对 Battery Equivalent Circuit 模块进行参数化。这些参数与制造商的数据手册一致。要加载预定义的参数化设置,请双击模块,然后点击 <点击选择> 超链接中的已选部分参数。“模块参数化管理器”窗口随即打开,您可以选择所需的参数化设置。有关预参数化的更多信息以及可用组件列表,请参阅 List of Pre-Parameterized Components (Simscape Electrical)

此图显示了 Battery Equivalent Circuit 模块的模块参数。

检查荷电状态值的向量 SOC_vec

SOC_vec
SOC_vec = 1×7

         0    0.1000    0.2500    0.5000    0.7500    0.9000    1.0000

SOC_vec 变量表示 SOC 断点的向量,该向量定义了指定查找数据的点。该向量必须严格按照升序排列。该模块根据您在电芯容量,AH 参数中指定的电池额定容量计算 SOC 值。此示例通过七个数据点描述了电池的状态 (SOC)。

检查温度向量 T_vec

T_vec
T_vec = 1×3

   278   293   313

T_vec 变量表示温度断点向量,该向量定义了指定查找数据的点。该向量必须严格升序且大于 0 开尔文。此示例通过三个数据点描述了电池温度。这些温度单位是开尔文。

测量开路电压,V0_mat

V0_mat
V0_mat = 7×3

    3.4900    3.5000    3.5100
    3.5500    3.5700    3.5600
    3.6200    3.6300    3.6400
    3.7100    3.7100    3.7200
    3.9100    3.9300    3.9400
    4.0700    4.0800    4.0800
    4.1900    4.1900    4.1900

变量 V0_mat 代表在变量 SOC_vecT_vec 中指定的 SOC 和温度断点处基本电池模型上的开路电压的查找数据。V0_mat7x3 矩阵。每列与温度有关,而每行与 SOC 有关。

检查端电阻,R0_mat

R0_mat
R0_mat = 7×3

    0.0117    0.0085    0.0090
    0.0110    0.0085    0.0090
    0.0114    0.0087    0.0092
    0.0107    0.0082    0.0088
    0.0107    0.0083    0.0091
    0.0113    0.0085    0.0089
    0.0116    0.0085    0.0089

R0_mat 变量表示电池在您在 SOC_vecT_vec 变量中指定的 SOC 和温度断点处的串联电阻查找数据。R0_mat7-by-3 矩阵。每列与温度有关,而每行与 SOC 有关。

检查电芯容量,AH

AH
AH = 
27

AH 变量表示电池在完全充电时的容量。该模块通过将累积电荷除以该值来计算 SOC。该模块通过积分电池电流来计算累积电荷。

在此示例中,这些矩阵较小,但您可以根据需要将这些基于表的模型划分为所需的粒度级别。

当前配置文件

打开“当前配置文件”子系统。

open_system("EstimateBatterySOCUsingKF/Current Profile")

当前配置文件子系统通过定义流过电池的电流来实现简化的系统负载。在仿真过程中,电流对电池进行充电和放电。在充电过程中,子系统定义了一个以恒定电流 15 安培为电池充电的电流。在放电过程中,子系统通过白噪声和均匀随机数引入了一些可变性。通过为放电过程引入一定变异性,您可以更准确地验证估计结果的可靠性。

模型将当前配置文件直接输入到 Controlled Current Source 模块中,以驱动电池。

卡尔曼滤波器测量中的噪声引入

为了评估估计器的性能和鲁棒性,仿真必须尽可能地接近实际应用。在实际应用中,传感器和测量设备采集的数据中总是包含噪声,这些噪声可能源于传感器的不准确性、环境干扰或信号处理错误。信号噪声是指信号中出现的非预期变化,这些变化会干扰信息准确传输。通过在仿真中引入噪声,模型能够反映实际工况,从而提高仿真的可靠性。

理论上,连续白噪声的相干时间为 0,功率谱密度 (PSD) 为恒定值,总能量为无穷大。在实际应用中,白噪声从未对物理系统造成干扰。然而,当噪声扰动的关联时间相对于系统自然带宽非常小时,白噪声作为一种有用的理论近似模型具有重要意义。在 Simulink 中,您可以使用相关时间远小于系统最短时间常数的随机序列来仿真白噪声的效果。此示例使用两个 Band-Limited White Noise 模块在电流和电压测量中引入噪声。噪声的相关时间是模块的采样率。为了进行精确的仿真,请使用远小于系统最快动态特性的关联时间。您可以通过指定以下内容获得良好的结果:

tc11002πfmax,

其中 fmax 表示系统的带宽,单位为弧度每秒。

SOC 估计器(卡尔曼滤波器)模块接收带噪声的电流和电压测量值。然后,该模块根据这些不确定性和干扰估计电池的 SOC。通过添加噪声,您可以有效评估滤波器从噪声中提取信号的性能,这对于精度要求极高的应用至关重要。

噪声测量对于调整滤波器的参数也非常有用。卡尔曼滤波器的有效性取决于其参数的正确性,包括过程噪声协方差和测量噪声协方差矩阵。

用于荷电状态估计的卡尔曼滤波器

从实际应用的角度来看,直接测量电池的 SOC 并不简单,因为 SOC 并非像电压或电流那样可以直接观测的物理量。SOC 是一个衍生参数,反映了电池的内部化学状态。该化学状态受多种因素影响,包括年龄、温度和放电速率。由于直接测量非常困难,因此必须估计 SOC 值。

此示例使用卡尔曼滤波器算法估计电池 SOC。卡尔曼滤波器算法根据噪声测量值估计线性动态系统的状态。为了估计电池的 SOC,卡尔曼滤波器会预测未来状态,然后根据新测量值更新预测。卡尔曼滤波器即使在数据噪声较大的情况下也能提供准确的估计值,能够适应电池的行为变化(包括老化效应),并整合电压、电流和温度等不同测量值来提高 SOC 估计的准确性。要了解有关卡尔曼滤波器的更多信息,请参阅了解卡尔曼滤波器入门示例。

SOC 估计器(卡尔曼滤波器)模块提供四种不同的卡尔曼滤波器算法,用于 SOC 估计。此示例重点介绍扩展卡尔曼滤波器 (EKF) 算法。

该图显示了具有单一时间常数动态特性的电池的等效电路:

具有一个时间常数动态特性的等效电路的方程为:

dSOCdt=-i3600AH

dV1dt=iC1(SOC,T)-V1R1(SOC,T)C1(SOC,T)

Vt=V0(SOC,T)-iR0-V1

在这些方程中:

  • SOC 是荷电状态。

  • i 是当前值。

  • V0 是空载电压。

  • Vt 为端电压。

  • AH 是安时额定值。

  • R1 是极化电阻。

  • C1 是并联的 RC 电容。

  • T 是温度。

  • V1 是 RC 电路上的极化电压。

并联部分的时间常数 τ1 通过关系式 C1=τ1R1 将极化电阻 R1 与并联 RC 电容 C1 联系起来。

对于卡尔曼滤波器算法,该模块使用此状态以及以下过程和观测函数:

x=[SOCV1]T

f(x,i)=[-i3600AHiC1(SOC,T)-V1R1(SOC,T)C1(SOC,T)]

h(x,i)=

V0(SOC,T)-iR0-V1

此图显示了 SOC Estimator (Kalman Filter) 模块中的扩展卡尔曼滤波器 (EKF) 的内部结构:

EKF 技术依赖于在每个时间步进行线性化,以近似描述非线性系统。为了在每个时间步对系统进行线性化,算法计算以下雅可比矩阵:

F=fx

H=hx

EKF 是一种离散时间算法。离散化后,电池 SOC 估计的雅可比矩阵为:

Fd=[100e-TsR1(SOC,T)C1(SOC,T)]

Hd=[VOCSOC-1]

Gd=[-Ts3600AH(e-TsR1(SOC,T)C1(SOC,T)+1)R1(SOC,T)]

其中 TS 表示采样时间,VOC 表示开路电压。

EKF 算法包括三个阶段:初始化、预测和校正。

初始化

EKF 算法在 0 秒时初始化状态估计及其不确定性(协方差)。

  • xˆ(0|0) - 在时间步 0 时,基于时间步 0 的测量值对状态的估计。

  • Pˆ(0|0) - 状态估计误差协方差矩阵在时间步 0 时,使用时间步 0 的测量值。

P0 是初始误差的协方差。P0 是一个方阵,表示系统初始状态估计的不确定性,包含所有初始状态估计对之间的协方差。对角线元素代表状态中每个变量的不确定性。非对角线元素代表状态的不同变量之间的协方差。该矩阵取决于对初始状态、期望收敛速度以及滤波器稳定性的了解。如果您对状态有良好的初步估计,则可以将此矩阵设置为一个较小的值。如果初始值不确定,请将此矩阵设置为较高的值。P0 矩阵的选择很重要,因为它会影响滤波器的性能,尤其是在仿真开始时。如果将 P0 设置过低,则表示对初始估计值过于自信,滤波器可能无法及时调整以适应系统实际行为。如果将 P0 设置得过高,您对初始估计值的置信度几乎为零,滤波器可能会过分依赖前几个测量值。此操作可能会导致状态估计不稳定,尤其是在测量数据存在噪声或不准确的情况下。

预测

EKF 算法基于电池的行为特性(例如在特定条件下放电或充电的方式)以及控制输入(例如电池是否在吸收或提供电流)来预测未来的 SOC。该预测结果产生一个预测状态和一个估计误差。预测状态将状态估计向前推进到未来时间点。

  • 提前预测状态(基于先验信息):

xˆ(k+1|k)=Fdxˆ(k|k)+Gdi

  • 提前预测误差协方差:

Pˆ(k+1|k)=Fd(k)Pˆ(k|k)FdT(k)+Q

其中 Q 是过程噪声的协方差。

过程噪声的协方差 Q 是一个方阵,代表状态转换模型中的不确定性,包含过程噪声所有组件对之间的协方差。对角线元素代表过程噪声中每个组件的不确定性。非对角线元素代表过程噪声中不同组件之间的协方差。您通常通过系统识别、试验和领域知识的结合来确定它。Q 矩阵中元素的值越高,表明系统动态的不确定性和不可预测性越强。

校正

EKF 算法利用新测量数据中的信息来更新状态和误差的预测值。滤波器计算测量残差,即实际测量值与预测值之间的差值。该差异反映了预测的不准确性。滤波器随后根据测量残差更新预测状态。该过程涉及计算卡尔曼增益,该增益决定了滤波器必须根据新测量值对预测进行多少修正。为了计算卡尔曼增益,算法使用测量噪声的协方差,R

测量噪声的协方差 R 是一个方阵,代表观测模型中的不确定性,包含所有成对测量误差之间的协方差。对角线元素代表每次测量的误差。非对角线元素代表不同测量值之间的协方差,表明一个测量值中的噪声与另一个测量值中的噪声的相关程度。R 矩阵中元素的值越高,表明测量噪声越高或对传感器的置信度越低。该矩阵取决于传感器的特性及其精度。例如,如果传感器的标准偏差等于 0.01,则 R 的合适值为 (0.01)2=1e-4

  • 计算卡尔曼增益:

K(k+1)=Pˆ(k+1|k)HdT(k)(Hd(k)Pˆ(k+1|k)HdT(k)+R)-1.

  • 使用测量值更新估计值 y(k)事后):

xˆ(k+1|k+1)=xˆ(k+1|k)+K(k+1)(Vt(k)-(V0(SOC,T)-V1-R0(SOC,T)i)).

  • 更新误差协方差:

Pˆ(k+1|k+1)=(I-K(k+1)Hd)Pˆ(k+1|k).

这个过程对每个新测量值重复进行,卡尔曼滤波器通过平衡模型预测与实际测量值来不断改进状态估计。

绘制实际和估计荷电状态

对模型进行仿真。

sim("EstimateBatterySOCUsingKF.slx");

创建一个图窗,以绘制实际 SOC 值和估计 SOC 值。

FigureEstimateBatterySOCUsingKF = figure(Name="EstimateBatterySOCUsingKF");
figure(FigureEstimateBatterySOCUsingKF)
clf(FigureEstimateBatterySOCUsingKF)

从仿真输出中获取仿真时间、实际的 SOC 和估计的 SOC 值。

time = SimulationOutputKalmanFilter.time/3600;
SOCRealKF = SimulationOutputKalmanFilter.signals(1).values(:)*100;
SOCEstKF = SimulationOutputKalmanFilter.signals(2).values(:)*100;

绘制实际和估计的 SOC 值。

plot(time,SOCRealKF,LineWidth=1,Color="blue")
hold on
plot(time,SOCEstKF,LineWidth=1,Color="red")
hold off
grid on
title('Real and Estimated State of Charge')
ylabel('SOC (%)')
xlabel('Time (hours)')
legend({'Real','Estimated'},Location="Best");

Figure EstimateBatterySOCUsingKF contains an axes object. The axes object with title Real and Estimated State of Charge, xlabel Time (hours), ylabel SOC (%) contains 2 objects of type line. These objects represent Real, Estimated.

电池的初始 SOC 等于 0.5。估计器使用的 SOC 初始条件等于 0.8。扩展卡尔曼滤波器估计器在不到 10 分钟的时间内收敛到 SOC 的实际值,然后跟随 SOC 的实际值。

比较卡尔曼滤波器估计与库仑计数估计

为了突出卡尔曼滤波器算法的准确性,使用库仑计数法估计同一电池模型的 SOC。库仑计数法通过积分电池中随时间流过的电流来估计电池的自放电电流 (SOC) 。本节介绍,如果初始估计值错误,库仑计数估计器如何无法收敛到 SOC 的实际值。

开放式库仑计数模型

打开模型 EstimateBatterySOCUsingCC。电池的实际初始 SOC 为 0.5(或 50%),但库仑计数估计器以初始条件假设 SOC 为 0.8(或 80%)开始计算。电池的充电和放电周期为 6 小时。

open_system('EstimateBatterySOCUsingCC')

该模型的热和电网络与 EstimateBatterySOCUsingKF 模型完全相同。

此图显示了 SOC Estimator (Coulomb Counting) 模块的结构:

为了计算电池的 SOC,SOC 估计器(库仑计数)模块计算安培小时和电流积分。

将估计的荷电状态与库仑计数和卡尔曼滤波器进行比较

仿真 EstimateBatterySOCUsingCC 模型。

sim("EstimateBatterySOCUsingCC.slx");

创建一个图窗,以绘制实际 SOC 值和估计 SOC 值。

FigureEstimateBatterySOCUsingCC = figure(Name="EstimateBatterySOCUsingCC");
figure(FigureEstimateBatterySOCUsingCC)
clf(FigureEstimateBatterySOCUsingCC)

从仿真输出中获取仿真时间、实际的 SOC 和估计的 SOC 值。

time = SimulationOutputCoulombCounting.time/3600;
SOCRealCC = SimulationOutputCoulombCounting.signals(1).values(:)*100;
SOCEstCC = SimulationOutputCoulombCounting.signals(2).values(:)*100;

绘制实际 SOC 值以及使用卡尔曼滤波器和库仑计数算法估计的 SOC 值。

plot(time,SOCRealCC,LineWidth=1,Color="blue")
hold on
plot(time,SOCEstCC,LineWidth=1,Color="magenta")
plot(time,SOCEstKF,LineWidth=1,Color="red")
hold off
grid on
title('Real and Estimated SOC with Coulomb Counting and Kalman Filter')
ylabel('SOC (%)')
xlabel('Time (hours)')
legend({'Real','Estimated Coulomb Counting','Estimated Kalman Filter'},Location="Best");

Figure EstimateBatterySOCUsingCC contains an axes object. The axes object with title Real and Estimated SOC with Coulomb Counting and Kalman Filter, xlabel Time (hours), ylabel SOC (%) contains 3 objects of type line. These objects represent Real, Estimated Coulomb Counting, Estimated Kalman Filter.

电池的初始 SOC 等于 0.5。估计器使用的 SOC 初始条件等于 0.8。由于初始估计值的误差,库仑计数估计值无法收敛到 SOC 的实际值。但是,如果您正确初始化库仑计数器,并且完全确定电池的容量,那么在短时间特定负载情况下,库仑计数方法的精度实际上优于卡尔曼滤波器。库仑计数方法的主要问题出现在较长时间段内,由于电池的自放电行为,估计的电池 SOC 会略微偏离实际值。所有电池在存储过程中都会出现自放电现象,这是由于电池内部的化学反应或其他过程消耗了电池中的电荷所致。当电池断电时,电池管理系统 (BMS) 无法频繁唤醒以准确重新计算剩余电量 (SOC)。例如,如果您将电动汽车 (EV) 电池包未充电存放两周,锂离子电池包可能会损失约 2% 的 SOC。BMS 无法检测到此能量损失,且该损失未计入库仑计数器中。该自放电率也会随着电池的使用寿命而发生变化。因此,使用库仑计数时,BMS 在长时间(例如,几个小时甚至两周的存储期后)唤醒后,会认为其 SOC 与实际值不同,并且无法纠正初始值中的差异。随着时间的推移,这种差异会显著累积。

因此,选择正确的算法来估计电池的 SOC 值取决于多个因素,包括模型依赖性、计算复杂度、准确性和适应性。通常,卡尔曼滤波器提供更高的精度和适应性(如果您正确设置了 QRP0 矩阵),但需要更详细的系统模型,实现更复杂,计算量更大。相反,库仑计数算法更易于实现,无需系统模型,但适应电池特性变化的能力较弱。

参考

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

[2] Plett, Gregory L. Battery Management Systems. Volume II, Equivalent-Circuit Methods. Artech House, 2015.

[3] Kalman, R. E. 'A New Approach to Linear Filtering and Prediction Problems'. Journal of Basic Engineering, vol. 82, no. 1, Mar. 1960, pp. 35–45. DOI.org (Crossref), https://doi.org/10.1115/1.3662552.

另请参阅

|

主题