基于卡尔曼滤波算法电池参数辨识

  本期在已经确定的电池模型的基础上,建立二阶RC等效电路模型。以数学模型中的五个参数变量为卡尔曼滤波的状态变量,根据已知的端电压数据估算出各个时刻的参数值,进而得到相应的模型参数值的。

1、电池数据导入

   clc;clear;load 动态工况.mat

2、OCV-SOC关系曲线

    SOC = [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1];Voc = [3.2591,3.6095,3.7175,3.7559,3.8052,3.8052,3.8671,3.9477,4.0380,4.13066,4.193909]p=polyfit(SOC,Voc,9);SOC(1)=1;          Voc(1)=4.193909;for i=2:ts;SOC(i)=SOC(i-1)+I(i)*1/(2.48*3600);Voc(i)=polyval(p,SOC(i));end

3、构造端电压与开路电压差值

    y1 = Voc1-V1;      % k   开路电压与端电压的差值y2 = Voc2-V2;      % k-1 开路电压与端电压的差值y3 = Voc3-V3;      % k-2 开路电压与端电压的差值

4、卡尔曼滤波算法递推

  由以上小节已经得知卡尔曼滤波的算法原理和参数的数学模型,现在运用卡尔曼算法来对模型参数进行实时辨识。根据卡尔曼滤波在k时间点所求出来的参数状态值,经过循环迭代可以得出各个时间点参数状态值,即k1~k5的值。通过上述公式就能求出各个时刻R1`C2的参数值根据已测得的数据来对算法进行验证,继而来获得动力电池实时参数。
  根据卡尔曼滤波的算法原理及二阶RC数学模型,现运用卡尔曼滤波算法对模型进行实时参数辨识。这里的系统状态变量为[k1,k2,k3,k4,k5],观测值y(k)为Voc-V(k),由此可得状态方程和观测方程为:

    Xkf = zeros(5,N);Xkf(:,1) = [0.0001 0.0001 0.0001 0.0001 0.0001];P0 = [1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 0 1];    % 协方差阵初始值Q = 0.75 * eye(5);   % 过程噪声R = 0.25 * 0.25;     % 观测噪声F = [1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 0 1];  % 状态转移矩阵k = ts-2;H = [y2(:,k),y3(:,k),I1(k),I2(k),I3(k)];

  卡尔曼滤波递推公式如下:
  时间更新方程:
  1)状态变量的先验估计:

    Xn = F * Xkf(:,i-1);                 % 状态一步预测

  2)状态变量协方差矩阵的先验估计:

    P1 = F * P0 * F' + Q;                % 预测协方差阵

  测量更新方程:
  3)卡尔曼增益:

    K = P1 * H' * inv(H * P1 * H' + R);  % 滤波增益矩阵

  4)状态变量的后验估计:

    Xkf(:,i) = Xn + K*(y1(:,i)-H*Xn);    % 状态更新

  5)状态变量协方差矩阵的后验估计:

    P0 = (eye(5) - K*H) * P1;            % 协方差阵更新

5、二阶RC模型参数递推

    k0(1,i) = 1/(Xkf(1,i)+Xkf(2,i)-1);a = Xkf(2,i)*k0(1,i);b = -k0(1,i)*(Xkf(1,i)+2*Xkf(2,i));c = k0(1,i)*(Xkf(3,i)+Xkf(4,i)+Xkf(5,i));d = -k0(1,i)*(Xkf(4,i)+2*Xkf(5,i));R0(1,i) = -Xkf(5,i)/Xkf(2,i);tao1(1,i)=min((b+sqrt(b^2-4*a))/2,(b-sqrt(b^2-4*a))/2);tao2(1,i)=max((b+sqrt(b^2-4*a))/2,(b-sqrt(b^2-4*a))/2);    R2(1,i) = (tao2(1,i)*c+b*R0(1,i)-tao2(1,i)*R0(1,i)-d)/(tao2(1,i)-tao1(1,i));R1(1,i) = c-R2(1,i)-R0(1,i);C1(1,i) = tao1(1,i)/R1(1,i);C2(1,i) = tao2(1,i)/R2(1,i);

6、仿真分析

  电池采用的是国内某电池公司2.4Ah的磷酸铁锂电池。试验环境包括:高低温试验箱、Arbin-BTS2000及上位机。Arbin-BTS2000可以根据设置的程序对电池进行充放电。记录的数据包括时间、电流、电压、温度和充放电量等。测量数据通过TCP/IP传输到主机电脑。电脑主机用于设置电池充放电流程序,实时接收并保存采集到的数据。
  在HPPC的工况下,通过卡尔曼滤波辨识的参数部分结果如下所示:

  结果分析:通过观察上图可以显然看出,预测的输出端电压与实际输出的端电压基本上吻合,使用该方法所获得的预测输出端电压曲线与实际输出电压段曲线大体上基本一致,证明了该方法进行参数辨识的有效性。卡尔曼滤波的参数辨识方法与最小二乘法的结果类似,该两种方法都适合用于电池参数辨识中。
  后面几期会带来粒子群算法及遗传算法的电池参数辨识方法。(备注:需要本期文章试验数据和模型的同学可以联系QQ:2057034985或者关注微信公众号:xinnengyuanqiche666学习更多相关知识)

电池SOC仿真系列-基于卡尔曼滤波算法的电池参数辨识相关推荐

  1. 电池SOC仿真系列-基于UKF算法的电池SOC估算研究

    基于UKF算法的电池SOC估算 1.UKF算法   无迹卡尔曼滤波是将数据变化(UT变换)与卡尔曼滤波结合起来的一种算法,通过UT变换将一个状态点转换为多个状态点,依据一定的权重传递给后面观测值,再根 ...

  2. 电池SOC仿真系列-基于遗忘因子的最小二乘法电池参数辨识(二阶RC)

    基于遗忘因子的最小二乘法电池参数辨识   最小二乘法是系统辨识中最常用的一种估算方法.为了克服最小二乘法存在"数据饱和"的问题,我们通常采用含有遗忘因子的递推最小二乘法(Forge ...

  3. ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)***

    ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)*** ## 1 研究背景 电池的荷电状态(SOC)代表的是电池当前的剩余容量,数值定义是电池剩余电量与电池额 ...

  4. 电机仿真系列-基于最小二乘法的永磁同步电机参数辨识

    基于最小二乘法的永磁同步电机参数辨识   永磁同步电机具有体积小.转动惯量低.结构简单等优点,被广泛应用于控制系统中.然而在实际应用过程中,控制系统会受到高温.负载等外界因素的影响,永磁同步电机的电感 ...

  5. 电动SOC仿真系列-考虑电池老化影响的电池UKF-SOC估算研究

    考虑电池老化影响的电池UKF-SOC估算研究(无迹卡尔曼滤波算法)   传统的电池模型往往将电池容量设定为定值.然后在实际情况中,电池的容量会随着电池循环充放电次数的增加而减少.因此有必要在建立电池模 ...

  6. 【算法系列】卡尔曼滤波算法

    系列文章目录 ·[算法系列]卡尔曼滤波算法 ·[算法系列]非线性最小二乘求解-直接求解法 ·[算法系列]非线性最小二乘求解-梯度下降法 ·[算法系列]非线性最小二乘-高斯牛顿法 ·[算法系列]非线性最 ...

  7. 光纤光栅matlab,基于PSO算法的光纤光栅参数重构(附Matlab源程序)

    基于PSO算法的光纤光栅参数重构(附Matlab源程序)(含任务书,开题报告,外文翻译,毕业论文12600字) 摘要: 本文利用粒子群优化算法重构了啁啾光纤光栅的结构参数.根据啁啾光纤光栅的目标反射谱 ...

  8. matlab 广义最小二乘,基于MATLAB的广义最小二乘参数辨识与仿真

    总第 238 期 2009 年第 8 期 计算机与数字工程 Computer & Digital Engineering Vol. 37 No. 8 173 基于 MA TLAB 的广义最小二 ...

  9. kalman滤波基础及matlab仿真_MATLAB基于EKF算法估计电动汽车蓄电池的SOC

    点击上方蓝字关注"公众号" MATLAB基于EKF算法估计电动汽车蓄电池的SOC 电动汽车(EV)是未来汽车的一大发展方向.动力锂电池组是电动汽车动力源,其荷电状态(SOC)直接反 ...

  10. 电动汽车仿真系列-基于Simulink的并联混合动力汽车建模分析

    基于Simulink的并联混合动力汽车建模分析   本期介绍一种基于Simulink的并联混合动力汽车的建模方法.并联混合动力汽车的工作模式可以分为六种.纯电动模式.纯发动机模式.混合驱动模式.充电模 ...

最新文章

  1. zedboard嵌入式linux,zedboard构建嵌入式linux
  2. 准备您的虚拟桌面--WinXp模板
  3. python画代码-一行Python代码画心型
  4. Redis进阶-无所不知的info命令诊断redis
  5. 2021年5月信息系统项目管理师案例分析真题+视频讲解(1)
  6. 转:使用 Tkprof 分析 ORACLE 跟踪文件
  7. python计算区间内偶数和_Python 计算当真因子个数为偶数个时为幸运数,计算区间内幸运数之和...
  8. git本地安装配置与基础概念
  9. 【python基础知识】error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file
  10. php删除英文链接词,英语写作词汇大全:转折连接词
  11. 关于Websockets问题:
  12. 微信dat文件用什么软件打开方式_2020微信dat文件解密工具怎么获取软件
  13. 开源组件分析工具OpenSCA教程
  14. 推荐|10本不得不看的算法书籍,挖掘数据的灵魂!
  15. 网页中下拉列表框自动展开的方法
  16. 设置计算机从u盘启动的英文,如何在BIOS中设置U盘启动
  17. python 灰度图转rgb rgb转灰度之间的变化
  18. 包装严重的IT行业,作为面试官,我是如何甄别应聘者的包装程度!
  19. 服务器装系统步骤图解win7,Win7原版系统安装教程(超详细图文版)
  20. Android程序员生活就是这么朴实无华,那真是穷的喝自来水

热门文章

  1. win7设置自动开机时间_使计算机自动开机
  2. homeassistant搭建_安卓环境home assistant搭建
  3. python计算日期是一年中的第几天,Python根据年月日,计算是一年的第几天
  4. 恶劣天气 3D 目标检测数据集收集
  5. 【笔记】用Python写百度翻译网络爬虫
  6. vue接入百度翻译api
  7. poj3537 Crosses ans Crosses
  8. UFS系列六:UFS设备初始化和启动
  9. Glide 缓存机制分析二,内存缓存(3.7.0为例 5)
  10. foxmail邮箱修改服务器,foxmail基本设置方法.foxmail使用技巧