close all % load('Feeder.mat', 'Feeder','Feeder_date_time.mat','FeederSolar.mat') BatterySize = 154*10^3; k=0; %Feeder=sum(AllData(:,40:95),2); Feeder=AllData(:,[40:94]); Feeder=cell2mat(Feeder); Feeder=sum(Feeder,2); Feeder_PowerS=Feeder-(FeederSolar*12.54); Feeder_BatS=zeros(length(Feeder_PowerS), 1); Mov_Avg_Day= tsmovavg(Feeder_PowerS, 's' , 48, 1); Mov_Avg_Hour= tsmovavg(Feeder_PowerS, 's' , 8, 1); std_day=zeros(length(Feeder_PowerS),1); for z= 1:length(Feeder_PowerS) if z<49 std_day(z)=0; else std_day(z)=std(Feeder_PowerS(z-48:z)); end end Dispatch=Mov_Avg_Day+std_day/1.5; Charge=Mov_Avg_Day-std_day/1.5; lostcap=zeros(length(Feeder_PowerS),1); for z = 1:length(Feeder_PowerS) if Feeder_PowerS(z) > Dispatch(z) && sum(Feeder_BatS) > 0 %+ sum(lostcap) if (sum(Feeder_BatS) - Feeder_PowerS(z) + Dispatch(z)) < 0.2*BatterySize Feeder_BatS(z) = 0.2*BatterySize - sum(Feeder_BatS); else Feeder_BatS(z)= (Dispatch(z) - Feeder_PowerS(z));%*((Dispatch(z) - Feeder_PowerS(z))/BatterySize)^k; %lostcap(z)= - (Dispatch(z) - Feeder_PowerS(z)) + ((Dispatch(z) - Feeder_PowerS(z))*((Dispatch(z) - Feeder_PowerS(z))/BatterySize)^k); end elseif Feeder_PowerS(z) < Charge(z) && sum(Feeder_BatS) < 0.8*BatterySize if (sum(Feeder_BatS) - Feeder_PowerS(z) + Charge(z)) > 0.8*BatterySize Feeder_BatS(z) = (BatterySize*0.8 - sum(Feeder_BatS)); lostcap=zeros(length(Feeder_PowerS),1); else Feeder_BatS(z) = (Charge(z) - Feeder_PowerS(z))*0.8; end end end GridS=Feeder_PowerS + Feeder_BatS; SOC=(cumsum(Feeder_BatS)*100)/(BatterySize); figure [ax,h1,h2]= plotyy([Feeder_date_time,Feeder_date_time] , [Feeder_PowerS,GridS] , Feeder_date_time , SOC); title('100kWh Feeder-Connected Battery Modelled with ') ylabel(ax(2),'Battery SOC') ylabel(ax(1),'Power (W)') xlabel('Date')