%% I am trying to replicate someone's work and using the flowchart attached and the formula provided I got this code.
% I get this error the I run it" Array indices must be positive integers or logical values. Error in villalva10 (line 74) err2 = ((Vmp+(Rs*Imp))/(Ig-Imp-Isat((exp(1)*(q*(Vmp+(Rs*Imp))/n*k*T)-1))))- Rsh;
Error in villalva10 (line 74)err2 = ((Vmp+(Rs*Imp))/(Ig-Imp-Isat((exp(1)*(q*(Vmp+(Rs*Imp))/n*k*T)-1))))- Rsh;clcclose all clear % Data provided
load('SD_Test_Data_01.mat', 'voltage')load('SD_Test_Data_01.mat', 'current')I = current;V = voltage;P = I.*V; % To find the P-V curve
Pmaxcurve = max(P);% Graphs
figure(1);plot (V, I,'b:')xlabel('Voltage (V)'), ylabel('Current (A)')title('I-V Curve')figure(2);plot(V, P,'r--');xlabel('Voltage(V)'), ylabel('Power (W)')title('P-V Curve')figure(3);plot (V, I,'--')title('Combine Plots')hold onplot(V, P, 'r:'); hold off% %At the standard test conditions (STC)
[Pmax, index_of_Pmax] = max(P);Imp = I(index_of_Pmax); %(A)
Vmp = V(index_of_Pmax); %(v)
Isc = max(I); %(A)
Voc = max(V); %(V)
% Maximum power output
% Pmp = Imp * Vmp;
Pmp = Pmax;% Ig is the light-generated current
% Io = Isat is the diode reverse saturation current
% Rs, Rp are the series and the parallel resistances
n = 1.2; % Ideality factor technology Si-mono
q = 1.6022e-19; %q is the electron charge
K = 1.3806e-23; % k is the Boltzmann constant in (J/k)
% if the solar cells inside a solar module reach 65?C
T = 65; % T the module temperature ?C
Tr = 25; % Reference temperature ?C
% Temperature coefficient of the maximum output power (Pmax ) at STC (%/?C)
k = -0.41;Ns = 72; % Ns is the number of series connected cells forming the PV module
Rs = 0;S = 1000; % Irradiance w/m^2
% At short circuit point (V = 0); I = Isc
Ig = Isc;% Vt is the thermal voltage
Vt = (Ns*n*K*T)/q;% Solve for I(sat), the reverse saturation current of the diode.
Isat = Ig /(exp(1).^(Voc/Vt) - 1);% Calculate Rp = Rp,min
Rsh = (Vmp/(Isc - Imp)) - ((Voc - Vmp)/Imp);% Voltage and current w.r.t. Voc >= V>= 0
V = Vmp((Vmp>=0) & (Vmp<=Voc));I = Isc((Vmp>=0) & (Vmp<=Voc));tol = 1e-4;err1 = ((Vmp/Imp)-(((Ns*n*K*T)/q)*Rsh)/(Isat*Rsh*(exp(1)*(q*(Vmp+(Rs*Imp))/n*k*T)-1))-((n*K*T)/q))- Rs;err2 = ((Vmp+(Rs*Imp))/(Ig-Imp-Isat((exp(1)*(q*(Vmp+(Rs*Imp))/n*k*T)-1))))- Rsh;err3 = ((Rsh + Rs)*(Isc-Ig)/Rsh);err = (err1)^2 + (err3)^2; % err2^2
while(err>tol)% Sol Eq (7),(15) and (16)
Ig = (Isc + k*(T - Tr))*(S/1000); % Eq(7)
% Pmp,model = Pmp,curve = Vmp Imp at the MPP (Vmp , Imp ) of the I?V curve
Rsh = Vmp*(Vmp+(Rs*Imp))/((Vmp*(Ig - Isat*(exp(Vmp+(Rs*Imp)/Vt))-1)) - Vmp*Imp); % Eq(15)
Ig = ((Rsh + Rs)/Rsh)*Isc; % Eq(16)
% The output current of the single diode model is a function of the output voltage
I = Ig - Isat*(exp((V + (I*Rs))/Rsh)-1) - (V + (I*Rs))/Rsh; %Eq(1)
% Solve for I(sat), the reverse saturation current of the diode.Isat = (Ig - (Voc/Rsh))/(exp(Voc/Vt) - 1); % Eq(9) for Voc >= V>= 0
P = V*I;% finding Pmax,model using max(P)
Pmax = max(P);% calculating error
err = abs(Pmax - Pmaxcurve);delRs = 1e-6;% Change in resistance not defined neither described
Rs = Rs + delRs;disp(Rs)disp(Rsh)end
MATLAB: Array indices must be positive integers or logical values.
extracting pv parametersMATLABpv parameter extraction
Related Question
- 5 equations with 5 unknowns
- Unable to perform assignment because the left and right sides have a different number of elements. Error in Esram2 (line 61) g(a+1) = g(a) – (N / D) – T; >>
- While executing a m-file it shows busy
- Solving a system of 5 dependent non-linear equations
- PV module I-V curve Rs, Rsh, error,
Best Answer