为什么在仿真里都使用安时积分法可以作为理论的soc值?

获取同款模型关注公众号:新能源BMS佬大

为什么在仿真里都使用安时积分法可以作为理论的soc值?刚入门BMS的同学估计会有这样的一个疑惑,就是往往会觉得安时积分法原理简单,而卡尔曼滤波算法相比于安时积分法来说很复杂,潜意识会认为越复杂的算法精度会越高,但其实不是这样的,下面就分析一下为什么在MATLAB仿真里电流积分法可以作为理论参考值,注意这句话的前提是仿真里而不是实际中,这就需要从引起安时积分法的两个误差来说起了,第一个误差就是初始值不准确所造成的,安时积分法的公式如下式所示。

也就是公式里的SOC0会有误差,这个在仿真里面则可以完全忽略,因为仿真里的初始值一般都是100%,因为我们做的实验往往也都是从满电开始的,所以这个值是精确的。安时积分法的第二个误差就是由于在充放电的过程中,由于电流传感器的测量误差所导致的累积起来的误差,注意累积这个词,我们实验的电池数据往往是一个放电或者充电循环,经过测试,在一个充电循环里,累计误差非常非常的小,小到完全可以忽略不计。综和上面两个误差原因分析,安时积分法在仿真里作为理论SOC值的结论就可以站得住脚啦,还有粉丝会觉得为什么不用电池测量设备所测量到的SOC,因为有的实验室的测量设备是除了可以测量电流电压温度以外,还可以直接测量到soc,我觉得用这个来作为理论值也肯定是OK的,但可以回顾下初学SOC的定义的时候可能会了解到的这样一句话:“SOC是电池当前剩余电量与总电量的比值,SOC不可通过传感器直接测量,只能通过测量电流、电压、温度等参数间接获得”。这句话就说明了你的测试设备上的soc也是估计出来的,精度还不一定有MATLAB中计算出来的SOC精度高! 

最后来分享两个使用安时积分法来计算SOC理论值的程序和simulink模型。获取可关注公众号:新能源BMS佬大

代码:

clc;
clear;
close all;

%%%%%%%%%%%%%%%%%%%加载数据%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
load('LiBatt_PulseDataEVE.mat');
time = PulseData.time;
Vol = PulseData.voltage;
Cur = -PulseData.current; 
Temp = -PulseData.temperature;
Capacity = 287;%%%电池容量
Len=round(length(Vol)*1); 

T=1;%%%采样时间


SOC = zeros(Len,1);
SOC(1)=1;
Vocv = zeros(Len,1);
% Vocv(1)=polyval(pfit,SOC(1));
for i=2:Len
    SOC(i)=SOC(i-1)-Cur(i)*T/3600/Capacity;
%     Vocv(i)=polyval(pfit,SOC(i)); 
    
end
plot(SOC);
xlabel"时间/s";
ylabel"SOC";

 

模型:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新能源BMS佬大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值