%% Bekanta er med datat
% cy.t     - tid i [s] för data
% cy.U     - spänningarna i [V] för de 7 cellerna i modulen
% cy.I     - strömmen i [A] som går igenom modulen
% cy.t0    - tid i [s] där cykeln startar
% cy.cyNo  - Vilken cykel det var i mätkampanjen

% Skapa en figur för att titta på datat för att bekanta er med dess utseende
figure(1+FigOffset);clf
ax(1)=subplot(2,1,1); % skapa ett utrymme för att plotta datat
plot((cy.t-cy.t0)/60,cy.I);
grid on
ylabel('Ström [A]')   % Det är god programmerings sed att skriva ut variabler och enheter på axlarna
ax(2)=subplot(2,1,2); % skapa ett utrymme för att plotta datat
plot((cy.t-cy.t0)/60,cy.U);
legend('Cell 1','cell 2','cell 3','Cell 4','Cell 5','Cell 6','Cell 7','Location','SouthEast')
grid on
ylabel('Cellspänningar [V]')
xlabel('Tid [min]')
linkaxes(ax,'x') % länkar ihop axlarna så att båda följer när man Zoomar


% Titta på data i figuren och diskutera frågorna i kompendiet med din kamrat.

% Är cellerna balanserade? Titta på datat och notera hur mycket spänningen
% skiljer mellan två celler under första vilan.

% Markera förstoringsglaset med (+) uppe till höger precis ovaför plotten
% då kan ni Zooma in genom att klicka och dra och leta efter intressanta index.
% Ett dubbelklick i plotten zommar ut och tar er tillbaka till ursprungsvyn.

stopHere % Kommentera denna rad när ni studerat data så kommer programmet att fortsätta 
         % till nästa stopp, nästa gång ni kör Uppgift1.



%% Titta på datat med data-index på x-axeln för att se vid vilket index saker händer
figure(2+FigOffset);clf
ax(1)=subplot(2,1,1); % skapa ett utrymme för att plotta datat
plot(cy.I);
grid on
ylabel('Ström [A]')
ax(2)=subplot(2,1,2); % skapa ett utrymme för att plotta datat
plot(cy.U);
grid on
ylabel('Cellspänningar [V]')
xlabel('Data index [-]')
linkaxes(ax,'x') % länkar ihop axlarna så att man kan Zooma båda samtidigt

% Titta i figur 2, och identifiera index (x-värden, heltal) där de olika
% processerna börjar och slutar. Gör detta genom att Zooma in i figuren
% till den intressanta  händelsen är synlig, skriv in de index ni sett att
% strömmen är 0 före och efter ur och uppladdning i på raderna 19-22 i Uppgift1.m.  

stopHere % Kommentera denna rad när ni är klara för att få programmet att fortsätta

% Nu kan vi kolla att ni hittade rätt punkter i tidsplotten
figure(1+FigOffset)
subplot(2,1,1); hold on
plot((cy.t(cy.disSta)-cy.t0)/60,cy.I(cy.disSta),'ro')
plot((cy.t(cy.disSto)-cy.t0)/60,cy.I(cy.disSto),'rx')
plot((cy.t(cy.chaSta)-cy.t0)/60,cy.I(cy.chaSta),'ko')
plot((cy.t(cy.chaSto)-cy.t0)/60,cy.I(cy.chaSto),'kx')
legend('signal','Dis. Start','Dis. Stop','Cha. Start','Charge Stop')
subplot(2,1,2); hold on
plot((cy.t(cy.disSta)-cy.t0)/60,cy.U(cy.disSta),'ro')
plot((cy.t(cy.disSto)-cy.t0)/60,cy.U(cy.disSto),'rx')
plot((cy.t(cy.chaSta)-cy.t0)/60,cy.U(cy.chaSta),'ko')
plot((cy.t(cy.chaSto)-cy.t0)/60,cy.U(cy.chaSto),'kx')

% Kolla nu i figur 1 igen så har det dykt upp markörer o, x.
% Granska punkterna och säkerställ att ni fångat rätt värden?
stopHere % Kommentera denna rad när ni är klara för att få programmet att fortsätta


%% Beräkna total laddning under urladdning och laddningsförloppet
% Implementera integrationsfunktionen i integrateFun.m
% Beräkna total laddning från data, båda skall vara positiva så tänk efter
% vilket tecken det skall vara för att resultaten skall bli positiva. Tänk
% även igenom enheter så ni får resultatet i Ah.

stopHere % Kommentera denna rad när ni börjar implementera för att få programmet att fortsätta

Res.Qdis=integrateFun(cy.t,cy.I,cy.disSta,cy.disSto); % Här anropas integrateFun som ni implementerat för att beräkna total laddning ut
Res.Qcha=ReplaceME; % Kopiera och modifiera anropet ovan så att ni beäknar total laddning in tänk igenom så att det blir rätt tecken

% Svara på frågorna från kompendiet
Res.DOD=ReplaceME; % Ange svaret i procent

% Vad är Columbic efficiency och Columbic inefficiency.
Res.eta_Col=ReplaceME;
Res.Cineff=ReplaceME;

% Hur många elektroner motsvarar förlusten, en elektron har laddningen
% 1.602e-19 Coloumb
Res.n_e=ReplaceME;

% Ni kan studera era resultat genom att skriva "Res" i Matlabs "Command Window"
stopHere; % Kommentera bort när ni är klara med avsnittet

%% Mätosäkerheter
% Strömsensorn har en liten offset dvs 0 A i ström visar inte 0 A i mätsystemet.
% Zooma in på strömmen efter att cykeln slutat och titta visuellt att den inte är
% exakt 0 A, ni kan också se ungefärlig storlek på vilken offset som finns i sensorn.
% Identifiera bästa gissningen genom att medelvärdesbilda strömmen från
% chaSto till slutet.
Res.I_Offset=mean(cy.I(cy.chaSto:end)); % förstår ni kodraden?
cy.Icorr=cy.I-Res.I_Offset;

% Ni kan skriva Res i "Command Window" för att skriva ut resultaten fram
% tills nu. Stämmer värdet 
stopHere
% Stämmer värdet med det som ni såg i plotten?

% Kopiera och modifiera koden från 78, 79, 85, 86, och 90 Implementera 
Res.QdisCorr=ReplaceME; % total laddning ut
Res.QchaCorr=ReplaceME; % total laddning in
Res.eta_ColCo=ReplaceME;
Res.CineffCo=ReplaceME;
Res.n_eCo=ReplaceME;

% Svara på frågorna från kompendiet (skriver över gamla resultatet)
Res.DOD=Res.QdisCorr/24*100; % Ange svaret i procent

%% DOD och approximativ OCV kurva
% Beräkna urladdningskurvan med funktionen cumtrapz
cy.Q=cumtrapz(cy.t,cy.I-Res.I_Offset)/3600; % Koll att ni förstår koden?
figure(3+FigOffset);clf
plot(cy.Q,cy.U);
grid on
ylabel('Cellspänning [V]')
xlabel('Urladdning [Ah]')
stopHere
% Kolla plotten och se att ni förstår och känner igen utseendet från föreläsningarna.

%% Approximativ inre resistans för DC
% Välj läget vid 5 Ah urladdning, och beräkna en approximation av vad DC
% resistansen är. Skapa en plot för Q.
figure(4+FigOffset);clf
plot(cy.Q);
grid on
xlabel('data index');ylabel('Urladdning [Ah]')

% Identifiera de index som är närmast 5 Ah vid urladdning och laddning.
% Notera dessa index i Uppgift1.m filen. Resistansen beräknas sedan från
% kvoten mellan spänningsskillnaden och ström skillnaden. Det finns en
% spridning mellan spänningarna, så välj medelvärdet av spänningen vid
% beräkningen, detta fås som mean(cy.U(cy.Ah5xx,:)), där xx är d eller c.
stopHere

Res.R_DC=ReplaceME;

%% Energi in och ut och batteriets effektivitet under cyklingen
% Ange energin ut och energin in i Wh
Pbatt=mean(cy.U,2).*(cy.I-Res.I_Offset); % Batterieffekten där teckninet ger riktning
% kolla att ni förstår ekvationen

Res.Eut=ReplaceME; % Använd integrateFun med tid, effekt och index för att beräkna integralen
Res.Ein=ReplaceME; % Använd integrateFun med tid, effekt och index för att beräkna integralen
% Tänk igenom tecknet på Energierna ovan, energi ut och energi in bör vara
% positiva om eftersom orden ut och in anger riktning.

Res.eta_B=ReplaceME; % Beräkna batterieffektiviteten
