基于遗忘因子的最小二乘法电池参数辨识

  最小二乘法是系统辨识中最常用的一种估算方法。为了克服最小二乘法存在”数据饱和”的问题,我们通常采用含有遗忘因子的递推最小二乘法(Forgetting Factor Recursive Least Square,FFRLS)算法进行电池模型的参数辨识。

1、二阶RC数学模型的建立

  一般来说,建立精准的电池模型我们需要考虑以下几点:该模型能够准确的描述电池的动态及静态特性;该模型复杂度较低,易于计算;该模型工程实现较为简单可行。综合考虑,我们选择二阶RC等效电路模型。为了对电池等效电路模型进行参数辨识,我们需要把电池模型转化为可应用最小二乘法辨识的数学形式。具体的递推公式可以参考电池SOC相关文献。

2、遗忘因子递推最小二乘法辨识

  利用Matlab进行编程,步骤如下:
  (1)系统初始化。

    c0 = [1 4 4 -0.057 -0.005 -0.001]';p0 = 10^6*eye(6,6);c=[c0,zeros(6,N-1)];

  (2)载入测试数据,包括k-1时刻和k-2时刻的端电压和电流值。

    I1=-I(3:95057);  %I ,kI2=-I(2:95056);  %I ,k-1I3=-I(1:95055);  %I ,k-2U1= V(3:95057);  %V ,kU2= V(2:95056);  %V ,k-1U3= V(1:95055);  %V ,k-2

  (3)启动递推最小二乘法。

    h=[1,y2(k),y3(k),I1(k),I2(k),I3(k)]'; x=h'*p0*h+1; x1=inv(x);               % 开始求K(k) 遗忘因子为0.996Kk=p0*h*x1;              % 求出K的值 G(n)d1(k)=y1(k)-h'*c0;       % 电压差c1=c0+Kk*d1(k);          % 求被辨识参数c c0=c1;                   % 新获得的参数作为下一次递推的旧参数 c(:,k)=c1;               % 把辨识参数c列向量加入辨识参数矩阵的最后一列p1=(p0-Kk*h'*p0)/0.996;  % 求出 p(k)的值 p0=p1; %给下次用

  (4)根据含遗忘因子的递推最小二乘法,得出常数项k1~k5。

    k0=c(1,:);k1=c(2,:);k2=c(3,:);k3=c(4,:);k4=c(5,:);k5=c(6,:);

  (5)根据递推公式分别求得极化电阻R1-R2,欧姆内阻R0,极化电容C1-C2。

    R0 = a;pp = tao1 - tao2;R1 = (tao1.*d+R0.*c-R0.*tao1-e)./pp;R2 = d - R0 - R1;C1 = tao1./R1;C2 = tao2./R2;

  (6)绘图。

    figure(1)i=1:N; plot(i,R0)figure(2)i=1:N; plot(i,R1)figure(3)i=1:N; plot(i,R2)figure(4)i=1:N; plot(i,C1)figure(5)i=1:N; plot(i,C2)

3、实验结果及分析

  电路模型参数辨识结果如下图所示。



  在模拟工况情况下,辨识前一阶段,电路模型参数变化较为剧烈,这是因为模型参数初值的选取差异和其初值的较大偏差造成的,辨识中后期各参数的辨识值变得较为平缓,此时辨识的参数较为准确。同时,也为后面的工作打下良好的基础。因而可以说明,针对二阶RC模型,利用FFRLS算法进行模型参数在线辨识较为精确。

4、常见问题

4.1、激励要求

  在参数辨识过程中存在一个非常明显的问题:往往我们需要辨识的参数个数大于被提供用于参数辨识的激励。以二阶RC等效电路为例,我们需要辨识欧姆内阻、传荷过程和扩散过程的参数,而后两者每个都包含两个参数,导致我们做该模型辨识时,只有电流和电压两个输入作为模型激励,却需要辨识5个参数结果。在更高阶的等效电路模型或者更复杂的电池模型中这个问题会更加严重。因此,某些情况下,导致RC环节参数无法准确辨识甚至无法收敛,乃至出现负数的情况。
  另外不同的激励条件(不同的电池测试工况)也会带来不同的参数辨识结果。比如:如果使用短时间的直流脉冲数据进行参数辨识,则锂电池中存在的扩散环节的作用无法充分体现,导致参数辨识算法对扩散环节的辨识存在极大的误差。所以,在参数辨识过程中,对激励的选择也是十分重摇的。

4.2、数值计算

  在电动汽车的动力电池系统中,电流偏移量可能是几百安培的数量级,而电压偏移量则是几伏的数量级。试图避免数值问题所采取的一项有效措施是缩放信号,使得它们在同一数量级。因此,用输入电流和电压的最大值来缩放输入电流和电压的方法被认为是解决数值问题的有效方法。

4.3、模型特性的多尺度问题

  电池在电流作用下的电压响应中包含快速响应环节,也包含缓慢变化环节,即电池的动态特性分布在一个较宽的频率范围之内。为了适应这种情况,一般确立的二阶RC等效电路模型中两个RC环节具有明显不同的时间常数,描述双电层效应导致的环节与扩散效应导致的环节时间常数相差较大。

5、总结

  综上所述,电池参数辨识的过程中会遇到各种各样的问题,当我们面对问题时一定要耐心的对待,切勿急躁,相信过程一定会找到相应的解决办法。(备注:需要本期文章试验数据和模型的同学可以联系QQ:2057034985或者关注微信公众号:xinnengyuanqiche666学习更多相关知识)

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

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

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

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

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

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

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

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

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

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

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

  6. 永磁同步电机PMSM在线参数辨识,包括模型参考自适应MRAS、最小二乘法在线参数辨识,其中含电阻电感磁链辨识

    永磁同步电机PMSM在线参数辨识,包括模型参考自适应MRAS.最小二乘法在线参数辨识,其中含电阻电感磁链辨识. 误差在百分之五以内. ID:7475674241662351二十四侨明月夜

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

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

  8. 风力发电仿真系列-基于Simulink搭建的DFIG仿真模型

    基于Simulink搭建的DFIG仿真模型   双馈式感应发电机(DFIG)是在同步电机和异步电机的基础上发展起来的一种新型发电机.DFIG的主要优点是其足够宽的速度范围,能使组合式风力涡轮机以最佳的 ...

  9. java电池soc算法实现,BMS算法设计之电池SOC介绍(一)

    大家好!今天给大家带来的是[BMS 算法设计]系列文章的第一篇.本期主要介绍的是电池SOC的基本常识,后续会给大家介绍各种SOC的估算方法及其优劣势的对比,让我们一起来学习吧! 电池的SOC通常被定义 ...

最新文章

  1. xml 需要转义
  2. html5在线音乐列表播放器,HTML5列表音乐播放器SMusic
  3. Spring系列(八):Spring生命周期中BeanPostProcessor接口用法介绍
  4. 【对比学习】koa.js、Gin与asp.net core——中间件
  5. python无法对存在交叉部分的图片进行识别_Python异常样本识别 交叉验证出现错误?...
  6. 【CodeForces - 570A】Elections(模拟,水题)
  7. 汇编使用跳转实现1累加到100的和
  8. python 加速方法_24种方法加速你的Python
  9. java8 function 多线程安全_Java8新特性_传统时间格式化的线程安全问题
  10. python中用来占位的语句是_MySQL / Python-gt;语句中占位符的语法错误?
  11. python安装包的路径
  12. 深圳市科技创新委员会关于2021年高新技术企业培育库拟入库企业名单公示的通知
  13. 信息论基础知识:【信息熵 不确定性】
  14. Inno Setup打包教程
  15. 利用List集合实现简单的斗地主
  16. iOS--系统升级之后Xcode无法识别
  17. 代购工作简历如何写得高大上?
  18. EKL日志平台:ElasticSearch离线安装
  19. 计算机新教师汇报课报道,提升专业促成长—开元路小学开展新教师汇报课记实...
  20. ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)的解决方法。

热门文章

  1. [SilkyBible] XviD系列-9
  2. 微信营销系统(第三方微信平台)之微分销模块拓展
  3. 大话设计模式 第二十三章 命令模式 考羊肉串
  4. 设置WinSCP实时更新目录
  5. 使用canvas画一个流星动画送给她吧
  6. ERROR 1044 (42000)Access denied for user @localhost to database
  7. 基于stm32人体健康监测系统
  8. 加密市场的牛熊周期;NFT 定义的争论
  9. cobar mysql5.6_Cobar init error
  10. java怎么把数据返回给客户端_java 服务器怎样给客户端传输数据