基于实验的电动汽车动力电池SOC

前言

本文为笔者在学习《基于MATLAB的新能源汽车仿真》过程中学习笔记,所涉及的表格数据和公式均为书籍里的。仿真数据是网上找的恒电流放电数据。本文仅作为笔者的入门学习记录。

一、分析动力电池SOC估算方法

SOC是指动力电池按照规定放电条件可以释放的容量占可用容量的百分比,对于BMS(电池管理系统)很多功能都依赖于SOC的精确估算。

SOC的估计方法有很多,具体分类如下图:

特别地,开路电压法和安时法在SOC估计方法中特别普遍,本文重点介绍。

开路电压法:开路电压是指动力电池在开路状态下的电池端电压,开路电压与SOC值在一定条件下呈比例关系。该方法对SOC值的估算精度高,且容易实现。但是只能估算静置0.5-1.5h之后的SOC值,所以该方法一般不单独使用,需要和其他方法结合。

安时法:该方法是对电流在时间上的积分,对电池容量的改变进行检测,进而估算出SOC值。该方法容易实现,缺点是受初始条件的影响,而且误差会积累,一般该方法需要与其它方法结合。

二、建立安时-开路电压补偿法数学模型

安时-开路电压补偿法式以安时法为主,开路电压法为辅。因为安时法具有不易受到电池本身影响的优点,而且不用分析电池的内部复杂反应,只需考虑外部系统的影响;而开路电压法的优点是对于静置状态下的SOC值估算非常精确,能很好弥补安时法的缺点。

该方法分为两步实现,第一步是采用开路电压法对SOC初值进行估算,第二步是对一些因素的影响进行补偿。

1.考虑充放电倍率的补偿方法

根据经验公式:I^nt=K

I为放电电流,t为放电时间,n为电池类型常数,K为活性物质常数。

只要在实验中测出电池在两种不同电流I1,I2的放电时间t1,t2就可以联立解出n和K的值。

公式为:

n=\frac{lgt_1-lgt_2}{lgI_1-lgI_2}

lgK=nlgI_1+lgt_1

由之前的经验公式可以得到容量C_t:

C_t=It=I^{1-n}K

充电补偿系数为:\eta_1=\frac{C_I}{C_N}=(\frac{I}{I_0})^{1-n}

其中I_0为最佳放电电流。

SOC=SOC_0-\frac{1}{C_N}\int_{t_0}^{t_1} \eta_1I dt

2.考虑温度的补偿方法

目前常用的公式为:

\eta_2=1-0.008|T_B-T|

考虑温度的补偿公式为:

C_T=\eta_2C_B

C_T为温度T时的电池容量,C_B为温度20℃时的电池容量。

3.考虑电池老化的补偿方法

C_2=\eta_3C_N

C_2为循环充电后电池容量衰减后的总容量。

通过上述三种补偿方式,式子可写为:

SOC=SOC_0-\frac{1}{C_N}\int_{t_0}^{t_1} \eta_1\eta_2\eta_3I dt

C_N也称为标称容量,是预先标定好的。

4.基于安时-开路电压补偿法对动力电池SOC仿真

通过上面的三组数据,使用MATLABcftool工具箱进行拟合即可,以第一个为例:

I = [0.12, 0.24, 0.48, 0.72, 0.96, 1.2, 2.4];
C = [1.232, 1.128, 0.921, 0.789, 0.659, 0.552, 0.143];
cftool

 

得到了电池SOC值与开路电压的关系。

下面通过拟合多项式绘制曲线:

u = 25:1:50;
SOC = -(9.393e-4) * u .^ 2 + 0.1122 * u - 2.207;
plot(u, SOC)
xlabel('开路电压/V')
ylabel('SOC值')

 

下面是使用MATLAB与simulink联合进行仿真: 

SOC = zeros(length(data02Cconstant(:, 1)), 2);
voltage = zeros(length(data02Cconstant(:, 1)), 2);
current = zeros(length(data02Cconstant(:, 1)), 2);SOC(:, 1) = 0:length(data02Cconstant(:, 1)) - 1;
voltage(:, 1) = 0:length(data02Cconstant(:, 1)) - 1;
current(:, 1) = 0:length(data02Cconstant(:, 1)) - 1;
j = 0;
for i = 1:length(SOC(:, 2))voltage(i, 2) = data02Cconstant(i, 1);current(i, 2) = data02Cconstant(i, 2);SOC(i, 2) = data02Cconstant(i, 3);% 这里查看得知:j为3600,证实了数据集里的是一秒采一次样,电流满足A.hif current(i, 2) ~= 0j = j + 1;endend

 

参考资料:

《基于MATLAB的新能源汽车仿真》 崔胜民

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/850848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 期末复习(谢希仁版本)第5章

**屏蔽作用:**运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。 10. 端口用一个 16 位端口号进行标志,允许…

学习使用Opentelemetry python SDK

前言 📢博客主页:程序源⠀-CSDN博客 📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正! 一、什么是 OpenTelemetry OpenTelemetry 由 OpenTracing 和 OpenCensus 项目合并而成,是一组规范、工具、API…

HQChart小程序教程4-动态控制手势滚动页面

动态控制手势滚动页面 示例效果canvas 控制页面滚动属性步骤1. 使用变量绑定disable-scroll2. 在手势处理函数中控制是否滚动页面 交流QQ群HQChart代码地址 示例效果 canvas 控制页面滚动属性 根据官方文档,disable-scroll 属性是控制画布手势是否可以滚动页面。 h…

《python程序语言设计》2018版第5章第47题绘制随机球,在一个宽120高100的矩形里绘制随机的点

这个题其实并不难。 首先我们利用turtle功能绘制一个矩形,圆心点题里要求的是0,0 这个好办 然后我们根据宽120,高100计算一下。肯定是正负两个值参与其中。 坐标点如下 建立矩形代码如下 turtle.penup() turtle.goto(-60, 50) turtle.pend…

【Redis】什么是Redis缓存 雪崩、穿透、击穿?(一篇文章就够了)

目录 什么是Redis? Redis的正常存储流程? 什么是Redis缓存雪崩? 缓存雪崩 缓存预热 缓存失效时间的随机性 什么是Redis缓存穿透? 缓存穿透 缓存空对象 BloomFilter(布隆过滤器) 什么是Redis缓存击穿&#…

【Python教程】2-函数、逻辑运算与条件判断

在整理自己的笔记的时候发现了当年学习python时候整理的笔记,稍微整理一下,分享出来,方便记录和查看吧。个人觉得如果想简单了解一名语言或者技术,最简单的方式就是通过菜鸟教程去学习一下。今后会从python开始重新更新&#xff0…

TransformerFAM:革新深度学习的新型注意力机制

深度学习领域的一项突破性技术——Transformer架构,已经彻底改变了我们处理序列数据的方式。然而,Transformer在处理长序列数据时面临的二次复杂度问题,限制了其在某些应用场景下的潜力。针对这一挑战,研究者们提出了一种名为Tran…

window wsl2的ubuntu如何配置代理获取docker image

最近两天,docker pull一直下不来docker image, 研究了下可以通过代理pull, 我的是window电脑下的linux子系统wsl2, 装的是ubuntu跑docker. # 创建/etc/systemd/system/docker.service.d路径 sudo mkdir -p /etc/systemd/system/docker.service.d # 创建 http-proxy…

[ue5]建模场景学习笔记(5)——必修内容可交互的地形,交互沙(3)

1.需求分析: 我们现在已经能够让这片地形出现在任意地方,只要角色走在这片地形上,就能够产生痕迹,但这片区域总是需要人工指定,又无法把这片区域无限扩大(显存爆炸),因此尝试使角色无…

【BUG】已解决:Could not find a version that satisfies the requirement tensorflow

已解决:Could not find a version that satisfies the requirement tensorflow 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,同时是武汉城市开发者社区主理人 擅长.net、C…

ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的架构差异

安全之安全(security)博客目录导读 RME系统中的应用处理单元(PE)之间的架构差异可能会带来潜在的安全风险并增加管理软件的复杂性。例如,通过在ID_AA64MMFR0_EL1.PARange中为每个PE设置不同的值来支持不同的物理范围,可能会妨碍内…

Foxmail邮箱的使用方法和功能最全介绍

Foxmail邮箱是我们办公邮箱中比较有代表性和使用性的一款邮箱软件,今天笔者为大家介绍一下Foxmail邮箱的功能和使用方法。 1、首先我们从安装Foxmail邮箱开始 2、点击安装等待安装成功 3、双击打开 ,出现邮箱设置界面输入我们的账号密码,点击…

Here Doucument

一、Here Document概述 1.概念 使用I/0重定向的方式将命令列表提供给交互式程序 标准输入的一种替代品 2.语法格式 命令 <<标记 标记 3.注意事项 标记可以使用任意合法字符&#xff08;通常为EOF&#xff09; 结尾的标记一定要顶格写&#xff0c;前面不能有任何字符…

2024年11个博客初学者建议

博客仍然是在线赚钱的最佳机会之一&#xff0c;因为您可以吸引受众&#xff0c;然后销售产品、服务或赞助。 然而&#xff0c;如果您刚刚开始博客生涯&#xff0c;那么建立一个可以带来数千美元收入的博客的前景可能会让您感到畏惧。 博客领域的竞争比以往更加激烈&#xff0…

代码随想录算法训练营第二十三天

题目&#xff1a;39. 组合总和 这道题目和组合差不多 集合里元素可以用无数次&#xff0c;那么和组合问题的差别 其实仅在于 startIndex上的控制 还有就是重复的如何进行剔除的方法如何实现 其实出现这个问题是因为没有理解startIndex的作用 详细看视频的 4分钟开始的地方…

嵌入式单片机产品微波炉拆解分享

在厨房电器中,微波炉可以说是最具技术含量的电器,它的工作原理不像其他电器那样一眼就能看个明白,于是拆解了一个微波炉,分析内部电路。 微波炉的结构 微波炉由箱体、磁控管、变压器、高压电容器、高压二极管、散热风扇、转盘装置及一系列控制保护开关组成,大多数微波炉还…

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/ &#x1f4dc; 智能合约依赖下载失败的解决方案摘要引言正文内容1. 场景描述 &#x1f914;2. 可能原因分析2.1 包不存在或名称错误2.2 网络问题2.3 npm配置错误 3. 解决方案&#x1f6e0;️3.1 …

展会邀请 | 龙智即将亮相2024上海国际嵌入式展,带来安全合规、单一可信数据源、可追溯、高效协同的嵌入式开发解决方案

2024年6月12日至14日&#xff0c;备受全球嵌入式系统产业和社群瞩目的2024上海国际嵌入式展&#xff08;embedded world china 2024&#xff09;即将盛大开幕&#xff0c;龙智将携行业领先的嵌入式开发解决方案亮相 640展位 。 此次参展&#xff0c;龙智将全面展示专为嵌入式行…

csdn上传图片失败解决办法

今天下午写笔记&#xff0c;上传图片的时候总是出现图片上传不成功。查询了下解决方案&#xff1a; C:\Windows\System32\drivers\etc &#xff0c;使用管理员打开hosts文件加入&#xff1a; 49.7.22.7 csdn-img-blog.oss-cn-beijing.aliyuncs.com保存之后&#xff0c;&#x…

csrf与xss差别 别在弄乱了 直接靶场实操pikachu的csrf题 token绕过可以吗???

我们现在来说说这2个之间的关系&#xff0c;因为昨天的我也没有弄清楚这2者的关系&#xff0c;总感觉迷迷糊糊的。 xss这个漏洞是大家并不怎么陌生&#xff0c;导致xss漏洞的产生是服务器没有对用户提交数据过滤不严格&#xff0c;导致浏览器把用户输入的当作js代码返回客户端…