Queries regarding time axis

Hii All, I have some problems with the Aging code I prepared. The time axis for trace voltage (vTrace) vs time and Relative capacity vs time are not appropriate as the unit there is NOT days because no battery will age to 65% its original capacity during 8*10^-3 days.. Please provide me the solution for my mistakes.Thanks in advance!
clear;
%% loading the OCV-SOC curve
load ocvSoc
f = polyfit(soc,ocv,20);
socTest = linspace(0, 100, 100);
ocvTest = polyval(f, socTest);
subplot(2,2,1)
plot(soc,ocv, socTest, ocvTest);
title('OCV-SOC curve');
xlabel('SOC (%)')
ylabel('OCV (V)')
legend('Simulink model', 'Curve-fitted');
Ah = 3.5; % Ah
%% input time-soc profile
Crate = 0.3;
DOD = 0.6;
SOCavg = 0.5;
cycles = 4000;
time = (0:1:(2*cycles-1)).*(3600*DOD/Crate);
SOC = repmat([SOCavg+DOD/2 SOCavg-DOD/2], [1 cycles]);
T = 36.94+273;
subplot(2,2,2)
plot(time, SOC)
title('SOC profile')
xlabel('time (s)')
ylabel('SOC (0 to 1)')
%% pre-process inputs to the aging model
vTrace = polyval(f, SOC*100);
V = mean(vTrace); % is it OCV or CCV?
quadVavg = sqrt(mean(vTrace.^2));
t = time(end)/3600/24; % time in days
Q = DOD*cycles*Ah; % do I have to multiply by 2 for charge?
subplot(2,2,3)
plot(time/3600/24,vTrace);
title('Aging');
xlabel('time(days)')
ylabel('vTrace (1 to 2.5)')
%% aging model evaluation
% is it additive? NO
% Calendar aging coefficients
% V: voltage at the mean SOC
% T: cycle test temperature (Let's just take the average temperature)
alpha_cap = (7.534 * V - 23.75)*10^6*exp(1)^(-6976/T);
alpha_res = (5.270 * V - 16.32)*10^5*exp(1)^(-5986/T);
% Cycle aging coefficients
% quadVavg: quadratic average voltage (RMS voltage)
% DoD: depth of discharge (0 to 1)
beta_cap = 7.348*10^-3*(quadVavg - 3.667)^2 + 7.600*10^-4 + 4.081*10^-3*DOD;
beta_res = 2.153*10^-4*(quadVavg - 3.725)^2 - 1.521*10^-5 + 2.798*10^-4*DOD;
% Resulting function, Crel and Rrel are relative capacity and resistance
% respectively
% t: time in days
% Q: charge throughput in ampere hours (how much charge has been moved in
% and out)
%CcycleRel = beta_cap * sqrt(Q);
%RcycleRel = beta_res * Q;
Crel = 1 - alpha_cap * t.^0.75 - beta_cap .* sqrt(Q);
Rrel = 1 + alpha_res * t.^0.75 + beta_res .* Q;
disp(['Crel: ' num2str(Crel)])
disp(['Rrel: ' num2str(Rrel)])
%% This cell is to plot aging pattern over time
t = (0:1:cycles).*(3600*DOD/Crate*2/3600/24);
Q = (0:1:cycles).*DOD*Ah;
%CcycleRel = beta_cap * sqrt(Q);
%RcycleRel = beta_res * Q;
Crel = 1 - alpha_cap * t.^0.75 - beta_cap * sqrt(Q);
Rrel = 1 + alpha_res * t.^0.75 + beta_res * Q;
subplot(2,2,4)
plot(t/3600/24, Crel)
title('Relative Cap')
xlabel('time (days)')

 Risposta accettata

VBBV
VBBV il 20 Apr 2021
%if true
plot(t, Crel)
It seems you have converted the cycles to days already. Try this

1 Commento

VBBV
VBBV il 20 Apr 2021
You are dividing vector t by factor of 3600/24 twice

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Data Import and Analysis in Centro assistenza e File Exchange

Prodotti

Release

R2021a

Richiesto:

il 20 Apr 2021

Commentato:

il 20 Apr 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by