EKF在LiFePO4电池SOC估算中不好用?一问带你破解EKF应用难题

2024-06-09 00:28

本文主要是介绍EKF在LiFePO4电池SOC估算中不好用?一问带你破解EKF应用难题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

磷酸铁锂电池因为平台区的存在,导致使用戴维南模型+EKF的方法时,无法准确进行SOC准确预估。所以最近搜索了大量关于磷酸铁锂电池SOC预估的论文、期刊,但我被海量忽略客观事实、仅为了毕业的硕士论文给震惊到了。很多论文为了掩饰平台区的存在,人为伪造平台区的压差数据进行建模,有些SOC上下跳变3-8%以上(想像你开电动车时,发现剩余电量在5%上下跳变,就问你怕不怕 ) ,有些预估的OCV差异20mV以上也敢自称精度良好,而且大部分论文都不敢展示初始SOC有差异时的收敛效果。

好在最终发现一个比较靠谱的论文,总结一下供大家参考。

原文链接:

https://www.sciencedirect.com/science/article/abs/pii/S0306261923009455

原文标题:

State-of-charge estimation for onboard LiFePO4 batteries with adaptive state update in specific open-circuit-voltage ranges

注:本文除了插图为手动加入外,90%内容由国产gpt-kimi生成,只作为一般性介绍,不用作任何商业用途。转载时请也遵循此原则。

图片

       在电动汽车(EV)的快速发展中,电池管理系统(BMS)的核心功能之一是准确估算电池的剩余电量,即电池的荷电状态(State of Charge, SOC)。SOC的准确估算对于提高电池使用效率、延长电池寿命、保障行车安全至关重要。然而,现有的SOC估算方法在面对具有平坦电压-SOC关系的锂铁磷(LiFePO4)电池时,常常无法提供准确的估算结果。本文将深入解析一种新型的SOC估算方法,该方法专为解决LiFePO4电池的SOC估算难题而设计,并补充不同P, Q, R值下的测试结果。

1. 引言

LiFePO4电池因其高安全性、长寿命和低成本等优点,在电动汽车领域得到了广泛应用。但是,由于其电压-SOC曲线相对平坦,传统的基于模型的SOC估算方法难以准确反映电池的荷电状态。为了克服这一难题,研究者们提出了一种结合自适应递推平方根算法(Adaptive Recursive Square Root, ARSR)和扩展卡尔曼滤波器(Extended Kalman Filter, EKF)的新型SOC估算方法。

2. 新型SOC估算方法概述

该方法的核心在于两个主要的创新点:

  1. 自适应状态更新:根据不同的开路电压(Open Circuit Voltage, OCV)范围,采用不同的状态更新策略,以适应LiFePO4电池在不同SOC区间的特性变化。

  2. 参数在线识别:使用ARSR算法在线识别OCV和其他电池模型参数,然后根据识别结果自适应地更新EKF算法的参数。

3. 电池模型与参数识别

3.1 电池模型选择

本文选用了广泛认可的Thevenin等效电路模型来描述电池的电压特性。该模型包括一个电压源UOCV、一个欧姆内阻R、一个极化电阻Rp和一个极化电容Cp。

3.2 参数在线识别

由于电池管理系统(BMS)的计算精度限制,传统的递推最小二乘法(Recursive Least Squares, RLS)在参数识别时容易出现问题。为此,本文采用了ARSR算法,该算法通过分解协方差矩阵P来避免非正半定矩阵的问题,提高了参数识别的稳定性。

图片

4. SOC更新策略

4.1 EKF算法在SOC更新中的应用

EKF算法利用模型预测电压和实测电压之间的差异来更新SOC。该过程包括先验估计和后验估计两个部分,其中涉及到状态矩阵和协方差矩阵的更新。

4.2 自适应算法参数更新

自适应算法参数更新是本方法的核心创新之一。在不同的OCV范围内,电池的电压响应特性存在显著差异,因此需要对EKF算法的参数进行自适应调整以优化SOC更新过程。

4.2.1 OCV范围的划分与识别

首先,根据OCV曲线的斜率,将整个OCV范围划分为不同的区域,包括陡峭斜率区、平台区和缓斜率区。通过在线识别当前的OCV值,可以确定当前所处的OCV范围。

图片

4.2.2 EKF参数的自适应调整

在陡峭斜率区和平台区,由于OCV对SOC变化的响应较小,若继续进行SOC更新可能导致算法发散。因此,在此两个区域内,通过设置EKF参数Q和R的值,使得Kalman增益G趋于零,从而禁止后验估计中的SOC更新。

相反,在缓斜率区,电池的电压响应特性与SOC变化的关联性更强,适合进行SOC更新。此时,通过增大Q值并减小R值,可以提高Kalman增益G,从而加快SOC的更新速度。

图片

4.3 不同P, Q, R值下的测试结果

在实验验证中,研究者们测试了不同的P, Q, R参数设置对SOC估算准确性和稳定性的影响。实验结果表明,适当的P值有助于算法在初始阶段快速收敛,而合理的Q和R值对于维持算法在不同OCV范围内的稳定性至关重要。实验数据显示,当P设置过大时,如diag(1e2, 1e5),在OCV平台区可能会导致算法发散,而较小的P值,如diag(1e-4, 1e-4),有助于保持算法的稳定性。此外,通过调整Q和R的值,可以在不同的OCV范围内实现对SOC更新的精细控制,从而优化整个SOC估算过程。

图片

5. SOC平滑处理

为了进一步提高SOC估算的稳定性,本方法引入了Ah滤波器对EKF输出的SOC进行平滑处理。

5.1 Ah滤波器的原理

Ah滤波器基于库仑计量法,通过电池的充放电电流和时间来计算累积的电荷量,从而得到一个平滑的SOC估计值。其核心思想是利用电池的安时容量特性,通过电流积分来抵消EKF算法可能产生的SOC估计波动。

5.2 Ah滤波器的实现

具体实现中,Ah滤波器的输出SOC_Ah与EKF算法的输出SOC_EKF相结合,通过一个平滑系数k_out进行加权平均,得到最终的SOC估计结果SOC+_Ah。平滑系数k_out是一个小的正数,用于控制滤波器的响应速度。

图片

6. 实验验证

研究者们在不同温度下,通过不同的驾驶模式对所提出的SOC估算方法进行了大规模实验验证。实验结果表明,与传统方法相比,新方法在确保高精度的同时,展现出了良好的稳定性,最大绝对误差控制在2%以内。

图片

7. 方法的实用性验证

通过分析从2,909辆电动汽车收集的实车运行数据,验证了所提方法的实用性。统计分析表明,所提方法的收敛SOC范围在实际应用中具有较高的覆盖率,能够满足实际应用需求。

8. 讨论与展望

尽管本文提出的算法在新电池上进行了验证,但电池老化后OCV范围的电压会发生变化,因此需要根据电池健康状态(SOH)更新OCV曲线。未来的研究将考虑联合估计SOH和SOC,以确保算法在整个电池生命周期内的准确性和可靠性。

9. 结论

本文提出的基于Thevenin模型的SOC估算方法,通过ARSR算法在线识别电池模型参数,结合EKF算法实时估算电池SOC,并在线识别特定OCV范围以自适应更新EKF参数,有效避免了算法在OCV平坦区域的发散问题。通过不同温度和驾驶模式的实验验证,以及实车数据的应用分析,证明了该方法的高精度和高稳定性,为电动汽车中LiFePO4电池的可靠管理奠定了基础。

10. 附录:数学表达式

以下是文章中提到的一些关键数学表达式,供有兴趣深入了解的读者参考:

图片

这篇关于EKF在LiFePO4电池SOC估算中不好用?一问带你破解EKF应用难题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043744

相关文章

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav