Photovoltaic model (5 parameter model)
Mostrar comentarios más antiguos
Hi everyone
I have attempted to model the DC power output (at maximum power point, i.e max Impp_ and Vmpp_ values) for a set of photovoltaic modules. The open circuit voltage (Voc_) and Impp_ and Vmpp equations have been solved using numerical methods (which is where I think the mistake lies). Basically, there is a mistake(s) in the coding since in come case I get a power output that is higher than the nominal power output of the PV panel
Any ideas/suggestions are much appreciated
for iteration = 1:10 % for iteration = 1:10 %10000 iterations
Voc_(:,:,K)= Voc_ref(K) + b_Voc(K).*(Tc(:,:,K)-Tstc);
Voc_old(:,:,K) = Voc_(:,:,K);
Voc_(:,:,K) = ns(K).*Vt(:,:,K).*log((Iph_G(:,:,K).*Rsh_ref(K)-Voc_(:,:,K)./Io_ref(K).*Rsh_ref(K)));
error(:,:,K) = Voc_old(:,:,K) - Voc_(:,:,K);
if abs(error(:,:,K))/Voc_(:,:,K) < 1e-6 % The iteration has converged
break
end
end
Voc_G(:,:,K) = Voc_(:,:,K); %%% ???? check this ????? %%%%%
Voc_T(:,:,K) = Voc_ref(K) + b_Voc(K).*(Tc(:,:,K) - Tstc);
Io_T(:,:,K) = (Isc_T(:,:,K)-((Voc_T(:,:,K) - Isc_T(:,:,K).* Rs(K))./Rsh(:,:,K)))...
.*exp((-Voc_T(:,:,K))./(ns(K).*Vt(:,:,K))); % Dark saturation current temperature
Iph_T(:,:,K) = Io_T(:,:,K).*exp((Voc_T(:,:,K))./(ns(K).*Vt(:,:,K)))+(Voc_T(:,:,K)./Rsh(:,:,K));
Voc_GT(:,:,K) = Voc_G(:,:,K)+(b_Voc(K).*(Tc(:,:,K)-Tstc)); % Radiation and temp of Voc
Isc_GT(:,:,K) = Isc_G(:,:,K).*(1+(a_Isc(K)/100).*(Tc(:,:,K)-Tstc));
Io_GT(:,:,K) = (Isc_GT(:,:,K)-((Voc_GT(:,:,K)-Isc_GT(:,:,K).*Rs(K))./Rsh(:,:,K)).*exp(-1.*(Voc_GT(:,:,K)/ns(K).*Vt(:,:,K))));
Iph_GT(:,:,K) = Io_GT(:,:,K).*exp(Voc_GT(:,:,K)./ns(K).*Vt(:,:,K))+(Voc_GT(:,:,K)./Rsh(:,:,K));
%%Vmpp & Impp
%Initialization
Vmpp_(:,:,K) = Voc_GT(:,:,K)./Voc_ref(K).*Vmp_ref(K);
Impp_(:,:,K) = Isc_GT(:,:,K)./Isc_ref(K).*Imp_ref(K);
w = 0.04; % for SUR
for iteration = 1:10
Vmpp_(:,:,K) = (1-w).*Vmpp_(:,:,K)+w.*(Voc_GT(:,:,K)-Impp_(:,:,K).*Rs(K)+ns(K).*Vt(:,:,K)...
.*log(((Isc_GT(:,:,K)-Impp_(:,:,K)).*(Rs(K)+Rsh(:,:,K))-Vmpp_(:,:,K))./(Isc_GT(:,:,K)...
.*(Rs(K)+Rsh(:,:,K))-Voc_GT(:,:,K))));
Impp_(:,:,K) = (1-w).*Impp_(:,:,K)+w.*(Vmpp_(:,:,K).*(1./Rsh(:,:,K)+(Isc_GT(:,:,K)...
.*Rsh(:,:,K)-Voc_GT(:,:,K)+Isc_GT(:,:,K).*Rs(K)).*exp((Vmpp_(:,:,K)+Impp_(:,:,K)...
.*Rs(K)-Voc_GT(:,:,K))/ns(K)./Vt(:,:,K))./ns(K)./Vt(:,:,K)./Rsh(:,:,K))./(1+Rs(K)...
./Rsh(:,:,K)+Rs(K).*(Isc_GT(:,:,K).*Rsh(:,:,K)-Voc_GT(:,:,K)+Isc_GT(:,:,K).*Rs(K))...
.*exp((Vmpp_(:,:,K)+Impp_(:,:,K).*Rs(K)-Voc_GT(:,:,K))./ns(K)./Vt(:,:,K))./ns(K)./Vt(:,:,K)./Rsh(:,:,K)));
parameter_new(:,:,K) = [Impp_(:,:,K); Vmpp_(:,:,K)];
if iteration ~= 1
mismatch(:,:,K) = abs((parameter_new(:,:,K)-parameter_old(:,:,K))./parameter_new(:,:,K));
if (norm(mismatch(:,:,K),'inf') < 1e-6)
break;
end
end
parameter_old(:,:,K)= [Impp_(:,:,K); Vmpp_(:,:,K)];
PV_power_output(:,:,K) = Vmpp_(:,:,K).*Impp_(:,:,K);
end
end
3 comentarios
Walter Roberson
el 1 de Mzo. de 2012
Probably very few of us are familiar with those particular equations, and you have not given any sample inputs and expected outputs that we could test with.
Andrew Alkiviades
el 1 de Mzo. de 2012
Lucardo Montreuil Jean
el 18 de Jun. de 2015
Hi everyone. I get the same probleme, could anyone send the m.file. Please.
Respuestas (0)
Categorías
Más información sobre Power and Energy Systems en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!