Photovoltaic model (5 parameter model)

5 次查看(过去 30 天)
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 个评论
Andrew Alkiviades
I emailed you all the info (m file and spreadsheet)
Hope thats ok!
Andrew
Lucardo Montreuil Jean
Hi everyone. I get the same probleme, could anyone send the m.file. Please.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Solar Power 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by