Photovoltaic model (5 parameter model)
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Lucardo Montreuil Jean
le 18 Juin 2015
Hi everyone. I get the same probleme, could anyone send the m.file. Please.
Réponses (0)
Voir également
Catégories
En savoir plus sur Solar Power dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!