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

文章最下方的长方形小方框内有博主的QQ名片获取本文同款程序

或者关注博主成为粉丝后聊天框会自动发送小企鹅哦!!!!或可直接+企鹅:2629471989

硕博期间所有的程序代码,一共2个多g,可以给你指导,赠送半个小时的语音电话答疑。电池数据+辨识程序+各种卡尔曼滤波算法都在里面了,后续还会有新模型的更新。快速入门BMS软件。

       这篇博文来介绍一下如何使用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 tight

subplot(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.

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
rbf-ukf径向基神经网络结合无迹卡尔曼滤波是一种用于估计锂离子电池SOC的方法。 首先,径向基神经网络(RBF)是一种以径向基函数为激活函数的神经网络,可通过学习数据的非线性关系来进行预测。在锂离子电池SOC估计中,RBF可以根据输入的电池特征(例如电流、电压等)预测电池SOC值。 然而,由于电池系统具有非线性和不确定性,单独使用RBF可能存在一定的误差。因此,我们将无迹卡尔曼滤波UKF)引入RBF中,以减小估计误差。UKF是一种扩展卡尔曼滤波(EKF)的改进方法,通过对非线性系统引入一组Sigma点来近似真实分布,从而提高滤波的精度和鲁棒性。 RBF-UKF方法的实施过程如下:首先,通过收集电池特征数据训练RBF网络,建立输入与SOC的映射关系。然后,将实时测量的电池特征输入到经过训练的RBF网络中,获取SOC的初始估计值。 接下来,利用UKFSOC进行迭代更新。首先,根据RBF-UKF的模型状态方程,通过预测电池的状态和协方差矩阵。然后,通过计算测量向量的协方差矩阵和初始估计值,利用UKF算法对SOC进行更新和修正,从而获得更准确的SOC估计值。 最后,重复进行上述步骤,不断更新SOC估计值,以实现对锂离子电池SOC的准确估计。 综上所述,rbf-ukf径向基神经网络结合无迹卡尔曼滤波是一种用于估计锂离子电池SOC的方法,通过结合RBF神经网络和UKF滤波算法,可以有效地提高估计的准确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新能源佬大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值