当前位置: 首页 > news >正文

基于实验的电动汽车动力电池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的新能源汽车仿真》 崔胜民

相关文章:

  • 双非本科一年20w,已是人中龙凤了
  • 【问题解决】adb remount 失败或刷机无法连接设备(KaiOS)
  • 苹果WWDC 2024 带来的 AI 风暴:从生产力工具到个人助理,AI 将如何融入我们的生活?
  • Web前端开发个人技能全面剖析:四维度深度理解,五能力实战展现,六要素构建优势,七步骤持续精进
  • 云计算服务
  • MySQL迁移达梦数据库避坑
  • [AI StoryDiffusion] 创造神奇故事,AI漫画大乱斗!
  • 钉钉魔点指纹考勤机多少钱一台,指纹门禁考勤一体机价格
  • 【虚拟现实】二、主要的AR/VR硬件设备
  • Bybatis动态SQL的绑定和公共sql语句片段
  • C# WinForm —— 34 ToolStrip 工具栏 介绍
  • Xinstall:解决App安装跳转难题,让你的用户流畅体验不再受阻
  • Python初学笔记
  • 从零实现ChatGPT:第二章使用注意力Dropout减少过拟合
  • CMS与AI的融合:构建万能表单小程序系统
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 0x05 Python数据分析,Anaconda八斩刀
  • C++类的相互关联
  • github从入门到放弃(1)
  • HTTP那些事
  • HTTP请求重发
  • Objective-C 中关联引用的概念
  • python_bomb----数据类型总结
  • quasar-framework cnodejs社区
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Vue官网教程学习过程中值得记录的一些事情
  • 码农张的Bug人生 - 初来乍到
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端学习笔记之观察者模式
  • 让你的分享飞起来——极光推出社会化分享组件
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用权重正则化较少模型过拟合
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • (003)SlickEdit Unity的补全
  • (12)目标检测_SSD基于pytorch搭建代码
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (排序详解之 堆排序)
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET基础篇——反射的奥妙
  • .Net面试题4
  • .Net中的集合
  • .net中我喜欢的两种验证码
  • .net专家(张羿专栏)
  • @angular/cli项目构建--http(2)
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [Android]Tool-Systrace