1.背景
Intelligent Systems Division | NASA
Randomized Battery Usage Data Set: PCoE Datasets
随机(Random Walk,RW)充放电循环的组成:
1、从{-4.5A,-3.75A,-3A,-2.25A,-1.5A,-0.75A,1.5A,2.25A,3A,3.75A,4.5A}中随机选择一个充电或放电电流。负电流表示充电,正电流表示放电;
2、应用所选电流充放电5分钟或达到截止电压(3.2V/4.2V);
3、每个充放电步骤后,有<1秒的休息间隔,用于设定新的充放电电流。
每重复1500次步骤2、3,进行一次特性测试循环,标记老化状态。
充放电循环设定:
1、采用0.04A小电流放电标定OCV;
2、每1500个RW步骤后,采用标准充放电循环标定电池容量。标准充放电循环先以2A恒流充电至4.2V,再恒压至充电电流小于0.01A。静置,2A放电至3.2V,静置;
3、每3000个RW循环后,对充满电的电池进行脉冲放电,标记电池动态特性。每段脉冲由10分钟1A负载,20分钟空载组成;
4、每3000个RW循环后,对电池进行脉冲充电,标记电池动态特性。每段脉冲由10分钟1A负载,20分钟空载组成;
链接:Intelligent Systems Division | NASA
本文对室温随机游走充放电数据集的描述进行了python的读取
数据下载地址
Battery_Uniform_Distribution_Charge_Discharge_DataSet_2Post
百度网盘下载链接:https://pan.baidu.com/s/15jloKXS3f_OMYiALwitENg
提取码:de1d
2.数据读取与分析
下载的数据有两个版本,Matlab版本和R语言版,下载的数据文件自带了python和R语言分析处理的程序。自带的m文件,MatlabSamplePlots.m为matlab版的读取例程。本文使用python对数据进行了一个读取和初步分析。
import matplotlib.pyplot as plt
import scipy.io as scio
RW9 = 'mats/RW9.mat' # 需要读取的mat文件路径
matData = scio.loadmat(RW9)
# 注意,读取出来的data是字典格式,可以通过函数type(data)查看。
print(type(matData))
print(list(matData.keys()))
print("\n\n")
对读取到的类型的返回:
<class 'dict'>
['__header__', '__version__', '__globals__', 'data']
有效数据存放在data字段,但是在data中还嵌套了一个step,step又是一个多维数组,需要使用连续三个[0]才能获取实际数据。
数据共有8个字段,官网文件有一个说明:
对low current discharge at 0.04A 的电压和电流数据进行一个获取并用matplotlib进行一个绘制,代码和结果如下:
data = matData['data']
datacC = data['step'][0][0][0]
for i in range(0,len(datacC)):
print(datacC[i][0][0])
if(datacC[i][0][0]=='low current discharge at 0.04A'):
print(datacC[i][0][0])
print(datacC[i][3][0])
print(datacC[i][4][0])
plt.plot(datacC[i][3][0]/3600,datacC[i][4][0], c='g')
plt.show()
plt.plot(datacC[i][3][0]/3600, datacC[i][5][0], c='r')
plt.show()
break