双卡尔曼滤波(KF-UKF)用于考虑电池老化的SOC估计

news/2024/11/30 8:32:13/

       这篇博文来介绍一下如何使用Simulink来完成无迹卡尔曼滤波的搭建以估计锂电池非线性系统的SOC。

       (1)KF估计电池老化。电池的容量会随着每次充放电循环而下降,从而导致SOC估计不准确。当电池在充电和放电之间转换时,使用基于事件的线性卡尔曼滤波器来估计电池容量。然后使用估计容量来反映电池的健康状况。

       (2)UKF估计电池SOC。基于二阶RC模型所辨识的参数,使用UKF来实时估计电池的SOC。

1.电池模型

       考虑具有以下等效电路的电池模型:

       其中Uoc为OCV,Ub为终端电压,I为电流,T为温度,R0为内阻,R1、R2为极化电阻,C1、C2为极化电容。

       模型总览:

        电池模型的状态转移方程由下式给出:

       其中,U1,U2分别为两个极化端的电压,Cn为容量,W为过程噪声。

       输入电流在电池放电时随机产生脉冲,在充电时保持恒定。

         测量方程如下所示:

 2.SOC估计

       要使用无迹卡尔曼滤波器模块,需要借助Matlab或function函数指定状态转移方程和量测方程。我们这里使用function函数,如下图所示:

       由于无迹卡尔曼滤波器是离散时间滤波器,因此首先将状态方程离散化。在本例中,采用欧拉离散化。让采样时间不变。对于一般的非线性系统,系统可以离散为:

        非线性电池系统的状态向量为:

 应用欧拉离散化得到以下方程:

       离散状态转移方程在Simulink函数batteryStateFcn中实现。函数输入x是状态向量,函数输出xNext是下一步的状态向量,使用离散状态转移方程计算。在函数中,需要指定x和xNext的信号维度和数据类型。在本例中,x和xNext的信号维数为3,数据类型为double。batteryStateFcn的其他输入是温度、估计容量和电流。请注意,额外的输入是状态转换方程的输入,而不是Unscented卡尔曼滤波器块所需要的。

       同样,测量功能也在名为batteryMeasurementFcn的Simulink函数中实现。

配置Unscented Kalman Filter块参数,如下所示:

       这里主要讲一下协方差矩阵、初始协方差与观测噪声协方差的确定过程,这在很多的文献里是没有讲到的,初学者可能会对这几个参数的调参过程表示迷茫,但其实调参是有规律的,并且是可以通过计算求出来的,而不是随机设置的。这也是该篇博文比较干货的部分。

       (1)过程噪声。

       基于电池系统的动态特性,对电池系统的过程噪声进行了估计。电池的标称容量为30Ah,在15A的平均电流幅值下进行放电或充电循环。因此,一次放电或充电过程大约需要2小时(7200秒)。SOC的最大值是100%,U1、U2的最大值是4V。SOC和U1、U2的每一步的最大变化是

max(|d(SOC)|)=Ts*100%/3600*2;

max(|d(U1)|)=Ts*4/3600*2;

max(|d(U2)|)=Ts*4/3600*2;

       其中Ts为滤波器的采样时间。在本例中,Ts设置为1秒。因此,过程噪声可确定为:

       (2)初始状态。设置为(1;0;0),这个没有什么好纠结的,初始SOC值设置为1,U1、U2分贝设置为0,因为我们没有任何的关于U1、U2的先验信息。

       (3)初始协方差。初始协方差表示初始猜测的准确性和可靠性。假设SOC的最大初始猜测误差为10%,U1、U2的初始猜测误差均为1V,则初始的协方差可设置为:diag(0.1,1,1)。

       (4)无迹变换参数。

Alpha:确定sigma点在x周围的扩散。将Alpha设置为1以获得更大的扩散。

Beta:用于结合分布的先验知识。一般设置为2。

Kappa:二级缩放参数。一般设置为0。

       (5)量测噪声。测量噪声V根据测量设备的精度来估计。用于电池电压测量的电压表的精度约为1%。电池电压在4V左右。因此,我们可以计算出量测噪声为max(dEm)=1%*4V=0.04V,因此V=(max(dEm))^2≈1e-3。

3.估计电池退化

       电池退化是通过容量递减来模拟的。在这个例子中,电池容量被设置为每个充放电循环减少1 Ah,以说明退化的影响。由于时间的关系,电池老化的详细介绍放在下一篇文章里。

4.结果

       在每一个仿真步长内,Unscented卡尔曼滤波器提供了一个估计SOC,基于电压的测量值。绘制实际SOC与UKF预测的SOC的变化曲线,以及它们之间的差异。

% Synchronize two time series
[RealSOC, EstimatedSOC] = synchronize(RealSOC, EstimatedSOC, 'intersection');figure;
subplot(2,1,1)
plot(100*RealSOC,'b','LineWidth',1.5);
hold on
plot(100*EstimatedSOC,'r--','LineWidth',1);
title('State of Charge');
xlabel('Time (s)');
ylabel('SOC (%)');
legend('Actual','UKF estimate','Location','Best','Orientation','horizontal');
axis tightsubplot(2,1,2)
DiffSOC = 100*(RealSOC - EstimatedSOC);
plot(DiffSOC.Time, DiffSOC.Data, 'LineWidth', 1.5);
xlabel('Time(s)');
ylabel('\Delta SOC (%)','Interpreter','Tex');
legend('Difference between Real SOC and Estimated SOC','Location','Best')
axis tight

       在初始估计误差后,SOC迅速收敛到实际SOC。最终估计误差在0.5%以内。因此,Unscented卡尔曼滤波器给出了一个准确的SOC估计。

       在每次充放电转换时,对电池容量进行估计,以改进电池荷电状态的估计。电池系统输出指示灯信号,告知电池处于哪个进程。放电过程在指示灯信号中用-1表示,充电过程用1表示。在本例中,使用指示器信号的变化来确定何时启用或禁用卡尔曼滤波器进行容量估计。我们绘制了实际容量和估计容量以及充放电指示信号。

figure;
subplot(2,1,1);
plot(RealCapacity,'b','LineWidth',1.5);
hold on
plot(EstimatedCapacity,'r--','LineWidth',1.5);
xlabel('Time (s)');
ylabel('Capacity (Ah)');
legend('Actual','KF estimate','Location','Best');subplot(2,1,2);
plot(DischargeChargeIndicator.Time,DischargeChargeIndicator.Data,'b','LineWidth',1.5);
xlabel('Time(s)');
ylabel('Enable Signal');

        一般情况下,卡尔曼滤波能够跟踪实际容量。估计容量与实际容量之间存在半个周期的延迟。这是因为当一个完整的充放电循环结束时,电池容量就会下降。而库仑计数给出了最后一次放电或充电周期的容量测量。

5.总结

       这个模型展示了如何使用Unscented卡尔曼滤波块对锂电池进行SOC估计。此外,还开发用于电池容量估计的基于事件的卡尔曼滤波器。将新估计的容量用于改进无迹卡尔曼滤波器的SOC估计。

6.参考文献

[1] Huria, Tarun, et al. "High fidelity electrical model with thermal dependence for characterization and simulation of high power lithium battery cells." Electric Vehicle Conference (IEVC), 2012 IEEE International. IEEE, 2012.

[2] Wan, Eric A., and Rudolph Van Der Merwe. "The unscented Kalman filter for nonlinear estimation." Adaptive Systems for Signal Processing, Communications, and Control Symposium 2000. AS-SPCC. The IEEE 2000. Ieee, 2000.


http://www.ppmy.cn/news/739863.html

相关文章

全文干货:蓝牙耳机哪个品牌最好?平价好用的蓝牙耳机推荐

挑选蓝牙耳机的时候预算大部分限制在五百元内,我个人从3年前入坑至今已经买了十几款蓝牙耳机了,对行业十分关注,看到网友们在发帖咨询蓝牙耳机哪个品牌最好,于是整理了这份平价好用的蓝牙耳机推荐,一起看看性价比最高的蓝牙耳机都…

win10蓝牙开关不见了_山灵MW200评测:玩转高清蓝牙全编码,MMCX换线耳机必备升级线...

山灵MW200评测:玩转高清全编码,MMCX耳机好搭档! 实际上到手山灵MW200的时候我挺犹豫要不要顺手来一条ME500白金版,不过MW500白金版没货只好搞了一条ME500普通版本,还好搭配下来也没有让人失望。 关于MW200这根蓝牙线是采用最成熟c…

为什么有些蓝牙耳机有底噪?高音质便宜实惠的蓝牙耳机分享

目前的蓝牙耳机应该是仅次于智能手机又一广泛普及的数码产品了吧!大街小巷随处可见戴着蓝牙耳机的人,不管是运动还是办公都是不可或缺的物件,但是对于刚接触蓝牙耳机的小伙伴来说,怎么使用,或者使用不当都容易减少蓝牙…

ZLMediaKit+MediaServerUi

环境 Ubuntu 22 下载系统镜像、安装虚拟机步骤很简单,不再细述。 设置国内源镜像、安装开发工具包、配置ssh、安装基础工具 设置国内源镜像 sudo apt install vim # 安装vimsudo vim /etc/apt/source.list # 插入如下代码 deb https://mirrors.tuna.tsinghua.…

ubuntu安装合适的显卡驱动

ubuntu安装好后可能自动安装的显卡并不是推荐的显卡,如果因为显卡驱动的原因不能进入图形界面,可以通过下面的方法来安装合适的显卡驱动在终端输入:ubuntu-drivers devices命令即可看到如下界面,他会告诉我们你的显卡信息GM108M [GeForce MX130],和推荐安装的驱动版…

显卡mx150和230哪个好_MX130与MX150差距对比分析

NVIDIA GeForce MX130是一款笔记本入门级独立显卡,虽然从命名上来看给人感觉是全新的,但事实上看过参数的网友已经知道这是马甲显卡。MX130与MX150差距会有多大,下面我们来分析看看。MfM显卡之家 MfM显卡之家 MX150主打低功耗性能也出色MfM显…

java mx150显卡够了吗_MX150性能究竟怎么样,与GTX1050相比差别有多大,白话评测性能...

MX150性能究竟怎么样,与GTX1050相比差别有多大,白话评测性能 MX150自从出世后,被各大厂商宣传坏了,“高性能独立显卡”,“2GB独立显卡”,“4GB独立显卡”。把小白坑得团团转,最重要的宣传就是MX…

Win10系统安装Tensorflow-GPU和VSCode构建Tensorflow开发环境

【前言】 1. 最近因为上课需要安装Anaconda和Tensorflow-GPU,Anaconda安装很容易,但Tensorflow-GPU版本的安装较为复杂,因为需要考虑版本匹配的一些问题,很容易出现问题。我花了两天多的时间终于安装成功,属实不易&…