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

news2024/11/25 2:47:07

前言

本文为笔者在学习《基于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.h
    if current(i, 2) ~= 0
        j = j + 1;
    end

end

 

参考资料:

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

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

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

相关文章

国标GB/T 28181详解:校时流程详细说明

目录 一、定义 二、作用 1. 时间同步性 2. 事件记录的准确性 3. 跨平台、跨设备协作 4. 降低时间误差 5. 安全性提升 三、基本要求 四、命令流程 五、协议接口 六、校时效果 1、未校时的情况 2、校时后的效果 七、参考 一、定义 GB28181协议要求所有的监控设…

多种策略提升线上 tensorflow 模型推理速度

前言 本文以最常见的模型 Bi-LSTM-CRF 为例,总结了在实际工作中能有效提升在 CPU/GPU 上的推理速度的若干方法,包括优化模型结构,优化超参数,使用 onnx 框架等。当然如果你有充足的 GPU ,结合以上方法提升推理速度的效…

Edge浏览器视频画中画可拉动进度条插件Separate Window

平时看一些视频的时候,一般需要编辑一些其他的东西,于是开启画中画,但是画中画没有进度条,需要大幅度的倒退前进得回到原视频,很麻烦。这里推荐插件Separate Window,可实现画中画进度条拉动和播放sudu的调节…

商城项目【尚品汇】08异步编排

文章目录 1.线程的创建方式1.1继承Thread类,重写run方法1.2实现Runnable接口,重写run方法。1.3实现Callable接口,重新call方法1.4以上三种总结1.5使用线程池创建线程1.5.1线程池创建线程的方式1.5.2线程池的七大参数含义1.5.3线程池的工作流程…

LLVM Cpu0 新后端5 静态重定位 动态重定位

想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…

springboot集成uid-generator生成分布式id

一、简介 uid-generator是由百度技术部开发,GitHub地址 UidGenerator是Java实现的, 基于Snowflake算法的唯一ID生成器 Snowflake算法 Snowflake算法描述:指定机器 & 同一时刻 & 某一并发序列,是唯一的。据此可生成一个64 bits的唯一ID&#x…

【Linux】信号(二)

上一章节我们进行了信号产生的讲解。 本节将围绕信号保存展开。 目录 信号保存:信号的一些概念:关于信号保存的接口:sigset_t的解释:对应的操作接口:sigprocmask:sigpending:代码实践&#xf…

Macbook M芯片JDK的安装

Macbook M芯片JDK的安装 下载 搜索zulu; 进入这个网址 https://www.azul.com/downloads/#zulu 进入页面后向下滑动 选择对应选项 然后点击Download进行下载。 选择.dmg格式的安装包,点击。 安装 下载完成后,到下载目录,双击…

日进2000,我怎么做到的

昨天遇到一个有意思的项目,让我一天进账2000,一个字:爽。 这几天接洽了一位新客户,主要诉求就是优化系统,基于LNMP的系统优化。正好这个领域我比较熟悉,以前都是在公司做项目,也不怎么涉猎系统优…

LabVIEW硬件与仿真双模式设计液压系统

在实际项目中,结合LabVIEW与液压运动控制器,通过设计两种运行方式:硬件运行和仿真运行,使得系统既能进行实际操作又能进行仿真测试。此设计不仅方便了开发调试,也为教学培训和展示提供了极大的便利。本文将从项目背景、…

【优选算法】栈 {后缀表达式求值;中缀转后缀表达式;中缀表达式求值}

一、经验总结 何时使用栈结构解题? 做过相似的使用栈结构解得的题目嵌套处理:在从前向后处理的过程中,由于之后内容的不确定性而导致当前操作不能贸然进行,需要先进行保存,直到遇到区间结束标志(如’)&am…

MLU370-M8 chattts-ui快速出击

目录 一、paas平台环境选择二、代码环境准备1.代码下载2.环境安装modelsopetransformersaccelerate 3.常规pip安装4.代码修改4.代码修改 三.算法启动 一、paas平台环境选择 驱动选择:5.10.22及以上 镜像选择:pytorch2.1 二、代码环境准备 1.代码下载…

HC-SR505人体感应灯

1硬件 1.1硬件组成 1.正点原子探索者开发板 2 HC-SR505迷你小型人体感应模块 3 继电器+5V小灯 HC-SR505迷你小型人体感应模块介绍 1.2 硬件连接 1.HC-SR505(连接在PE0) 2.继电器(连接在PE1) 2.主要代码 int ma…

【Stable Diffusion】(基础篇一)—— Stable Diffusion的安装

本系列笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili **Stable Diffusion(简称…

SpringCloud Gateway中Filters详细说明

前面 https://blog.csdn.net/J080624/article/details/139494909 我们研究了GateWay中各种路由断言的使用。SpringCloud GateWay 还提供了各种过滤器用来对请求和响应进行处理。 官网地址:SpringCloud Gateway Filter 【1】GatewayFilter Factories 路由过滤器允…

前端修改接口返回测试工具 Inssman使用教程

之前用的requestly现在要登录才能用了,然后我又登录不上去,同事又推荐了个谷歌插件,试了下,挺好用,还不用登录,用法和之前差不多 下载网站:https://chromewebstore.google.com/detail/inssman-…

【网络安全】【深度学习】【入侵检测】SDN模拟网络入侵攻击并检测,实时检测,深度学习

文章目录 1. 前言2. Mininet 和 Ryu 的区别2.1 Mininet2.2 Ryu2.3 总结 3. 模拟攻击3.1 环境准备3.2 创建 Mininet 网络拓扑3.2 启动 Ryu 控制器3.3 模拟网络攻击3.4 捕获流量 4. 实时异常检测4.1 在 Ryu 控制器中4.2 在 h2 机器上的实验结果4.3 深度学习模型部署上h2机器 帮助…

OrangePi Kunpeng Pro深度评测:性能与体验的完美融合

文章目录 一、引言二、硬件开箱与介绍1.硬件清单2.硬件介绍 三、软件介绍四、性能测试1. 功率测试2. cpu测试2.1 单线程cpu测试2.2 多线程cpu测试 五、实际开发体验1. 搭建API服务器2. ONNX推理测试3. 在线推理平台 五、测评总结1. 能与硬件配置2. 系统与软件3. 实际开发体验个…

[Kubernetes] 容器运行时 Container Runtime

文章目录 1.容器运行时(Container Runtime)2.容器运行时接口3.容器运行时层级4.容器运行时比较5.强隔离容器6.K8S为何难以实现真正的多租户 1.容器运行时(Container Runtime) Container Runtime 是运行于 k8s 集群每个节点中,负责容器的整个生命周期。Docker 就目前…

Redis的删除策略与内存淘汰

文章目录 删除策略设置过期时间的常用命令过期删除策略 内存淘汰相关设置LRU算法LFU 总结 在redis使用过程中,常常遇到以下问题: 如何设置Redis键的过期时间?设置完一个键的过期时间后,到了这个时间,这个键还能获取到么…