%% Rensa minnet och ladda in datat
clear all;close all
load TSFS17_pulse.mat
ReplaceME=1;

% Skapar variabler som behövs för simuleringsmodellen
global IVec tVec par
% Skapar simulerings data och simulerar modellen över de första 202 sekunderna 
IVec=zeros(size(d35.I))+74*(d35.I>10)-74*(d35.I<-10);
tVec=d35.t;

%% Börja med data för 35 %

% använd figure, subplot och plot för att studera strömmar och batterispänningar
figure(1);clf
subplot(2,1,1)
ph(1)=subplot(2,1,1);
plot(d35.t,d35.I,d65.t,d65.I)
ylabel('Ström [A]')
ph(2)=subplot(2,1,2);
plot(d35.t,d35.U,d65.t,d65.U)
legend('35% SOC','65% SOC')
ylabel('Spänning [V]')
xlabel('Tid [s]')
linkaxes(ph,'x')

% Kolla på koden ovan. Bekanta er med data för att se hur pulserna ser ut.
% Ser ni dynamiken i data? Känner ni igen utseendet från föreläsningar och
% lektion? Används generator eller motor konvention på riktningarna sett ur ett
% batteriperspektiv?
% Ledning: De som gjorde mätningarna använde laddarens ström som mätsignal och
% riktning ut ur laddaren är positiv, dvs ström in batteriet är positiv. Vi
% kunde ha vänt på tecknen för att det skulle se ut precis som i lektionen
% men vill att ni skall titta på data kritiskt och förstå vad som ligger
% bakom.
stopHere

%% Börja med data för att parametrar till en dynamisk modell
% Zooma in i figuren och läs ut följande information ur plotten på datat enligt lektionen
U_init=653.28; % Spänningen vid start, kolla att detta verkar stämma
par1.R_i=ReplaceME; % använd ekvationerna från lektionen för att bestämma R_i från höjd 1
par1.R_C=ReplaceME; % Zooma in i figuren och använd ekvationerna från lektionen för att bestämma R_C från  höjd 2
par1.C=ReplaceME;   % Kolla hur snabb dynamiken är och bestäm C från tiden och R_C.
par1.Cbatt=2800;    % Batterikapacitet, lutning på OCV-kurvan V/Q; 

% Kör simulering över 202 s och plotta data
par=par1; % Variabeln par används i 'batteryModel'
[t,y]=ode23('batteryModel',[0 202],[0 U_init],odeset('MaxStep',1)); % Simulering
[dy,U]=batteryModel(t,y);
figure(2);clf
plot(t,U,'.-',tVec,d35.U)
xlim([0 250])
title('Första gissningen')
legend('Modell','Mätdata','Location','southeast')
ylabel('Spänning [V]')
xlabel('Tid [s]')

stopHere


%% Förfina gissningen genom att justera modell-parametrarna manuellt
par2=par1;
par2.R_i=ReplaceME;
par2.R_C=ReplaceME;
par2.C=ReplaceME;
% Kör simulering över 202 s och plotta data
par=par2;
[t,y]=ode23('batteryModel',[0 202],[0 U_init],odeset('MaxStep',1));
[dy,U]=batteryModel(t,y);
figure(3);clf
plot(t,U,'.-',tVec,d35.U)
xlim([0 250])
title('Finjustering av gissningen')
legend('Modell','Mätdata','Location','southeast')
ylabel('Spänning [V]')
xlabel('Tid [s]')
% Iterera tills ni är nöjda
stopHere

%% Byt till arbetspunkt vid 65% SOC
U_init=692.265;% kolla att detta verkar stämma
par3=par2; % börja med att återanvända parametrar från punkt två
% Kör simulering över 202 s och plotta data
par=par3;

[t,y]=ode23('batteryModel',[0 202],[0 U_init],odeset('MaxStep',1));
[dy,U]=batteryModel(t,y);
figure(4);clf
plot(t,U,'.-',tVec,d65.U)
xlim([0 250])
legend('Modell','Mätdata','Location','southeast')
title('Gissning baserat på 35%')
% Från tidigare data får ni en gissning är överensstämmelsen bra?
stopHere

%% Finjustera parametrarna för 65% SOC
par4=par3;
par4.R_i=ReplaceME; 
par4.R_C=ReplaceME;
par4.C=ReplaceME;
% Kör simulering över 202 s och plotta data
par=par4;
[t,y]=ode23('batteryModel',[0 202],[0 U_init],odeset('MaxStep',1));
[dy,U]=batteryModel(t,y);
figure(5);clf
plot(t,U,'.-',tVec,d65.U)
xlim([0 250])
legend('Modell','Mätdata','Location','southeast')
title('Förfining av modell för 65%')
% Iterera tills ni är nöjda

disp('Skriv slutsatserna ni kom fram till.')
