Azzera filtri
Azzera filtri

Photovoltaic model (5 parameter model)

5 visualizzazioni (ultimi 30 giorni)
Andrew Alkiviades
Andrew Alkiviades il 1 Mar 2012
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 Commenti
Andrew Alkiviades
Andrew Alkiviades il 1 Mar 2012
I emailed you all the info (m file and spreadsheet)
Hope thats ok!
Andrew
Lucardo Montreuil Jean
Lucardo Montreuil Jean il 18 Giu 2015
Hi everyone. I get the same probleme, could anyone send the m.file. Please.

Accedi per commentare.

Risposte (0)

Categorie

Scopri di più su Solar Power in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by