基于双卡尔曼滤波算法的电池SOC估计


1. 电池等效电路模型

采用二阶RC等效模型,将电池等效为一个理想电压源、一个电阻和两个RC环节的串联。
电池的电动势、内阻等会随着SOC和温度的变化而变化,不是定值。对于同一型号的电池来说,电动势和SOC的关系曲线基本上相同,可以通过HPPC放电实验测出。将电池静置足够长时间后的开路电压看作电动势,由此可得到开路电压与SOC的关系曲线。
其他电池参数则需要根据脉冲放电的数据使用参数辨识的方法得到。


2. 电池模型参数辨识

2.1 基于Simulink的辨识

Simulink自带Parameter Estimation功能。可以对Simulink模型中的参数进行估计。MATLAB的Parameter Estimation官方说明中有一个电池参辨识的例子(见[Simulink参数辨识官方示例])。使用Simulink进行辨识的步骤为:

  1. 建立Simulink模型,将需要辨识的参数用base workspace中的变量表示。
  2. 打开菜单栏中Analysis选项下的Parameter Estimation功能。
  3. 打开Transient Data, 导入使用实验或其他方法得到的输入、输出数据(由于用不到状态数据所以不用设置States)。在这里,输入数据为电池的电流,输出数据为电池的端电压。由于电池参数随SOC而变化,输入数据只能为脉冲放电的那一段数据,认为这段时间内电池的SOC没有太大变化。当然也可以将模型建立为与SOC有关的,但这样就过于复杂了。
  4. 打开Variables,设置需要辨识的参数。在这里可以设置参数的初始值、范围等。由于使用的算法一般只能找到一个局部最优解,并不能保证为全局最优解,所以初始值的设置还是比较重要的。对于锂电池来说,电阻一般为 mΩ 量级,时间常数为10s~1000s。
  5. 打开Estimation,进行参数估计的相关设置。勾选要用的Data Set和Parameters。使用Estimation Options进行估计算法的设置。MATLAB提供了几种优化算法,一般选非线性最小方差。比较重要的两个参数是参数截止误差(Parameter tolerance)和函数截止误差(Function tolerance)。只要满足了两次迭代的参数或cost function的不超过截止误差,迭代就会停止。在Parallel Options中可以选择启用parallel pool来进行多线程加速,但是有时候会失败。
  6. 点击Start就可以开始了,勾选Show progress views可以看到仿真输出和参数的变化。
  7. 按照同样的方法进行其他SOC下的参数辨识。也可以在Simulink中建立一个模块,对输入进行筛选,对不同的SOC使用不同的参数。可以一次性辨识出参数-SOC的关系。

这种方法的优点是简单易用。几乎全部为图形化操作,不需要写代码,只需要搭建好Simulink模型就可以进行估计了,而且几乎可以估计任何线性、非线性的模型。缺点是速度慢、效率低。每次迭代都需要编译并运行仿真程序很多次,这个过程程序十分卡顿。

2.2 基于优化方法的辨识

也可以直接用MATLAB的优化工具进行参数估计,全部使用MATLAB代码实现。

            ---未完待续

3. 双卡尔曼滤波算法

使用安时积分法可以在短时间内较为精确的计算SOC的变化量,但无法确定积分初值,电流误差也会随着时间逐渐累及。使用开路电压可以查表得到SOC,但需要将电池静置一段时间才能得到稳定的开路电压,不适用于SOC时时估计。
所以使用卡尔曼滤波进行SOC估计的主要思想就是结合安时积分和开路电压这两种方法。系统状态的估计使用安时积分,然后用电压进行反馈,得到最优的估计结果。在估计的过程中,需要用到电池的电阻、电容等参数,也会用到开路电压。
但是即使是同一种型号的电池,其内参也会有一定的差异,而且这些参数还和电池的温度有关,相差10度的情况下参数就可能相差2倍之多。
双卡尔曼滤波算法的总体思想是使用两条卡尔曼滤波的线路,模型估计和系统状态估计交替进行。在电池的所有参数中,欧姆内阻(即 R0 )对电池的外特性影响最大,而其他4个参数影响较小,也不方便建模,所以就认为其是常数。

整个系统由相关的两个卡尔曼滤波构成,SOC估计的卡尔曼滤波使用SOC和RC环节上的电压为状态变量。即

X(k)=S(k)URC1(k)URC2(k)

这里 S(k) 表示第K步的SOC, URC1(k) 表示RC环节第k步的电压。

具体的双卡尔曼滤波算法步骤为:

  1. 初始值给定
    为使迭代能够快速收敛,应当将SOC的初始值设定的比较接近真实值。 R0 的初始值则通过当前SOC查表给出。另外两个状态可以设为0。由此就得到了 X(0) R(0)
  2. SOC估计
    使用第k-1步的系统参数来估计第k步的系统状态。然后再用第k步的系统状态估计第k步的系统参数。
    首先,使用电流积分对第k步的系统状态进行估计:

    X(k|k1)=AS(k)X(k1)+BS(k)I(k)+wS

    其中
    AS(k)=1000exp(Δt

  • 19
    点赞
  • 149
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值