Please help me to check it this algorithm, I think is not changing the duty cycle:

function dc = PyO( V, I, Adc, dcinit)

%#codegen

%Algoritmo P&O mi referencia es la tension de salida

% Isc=input ('Corriente de corto circuito=');

% Voc=input('Voltaje de circuito abierto=');

% Adc=3e-4; %variacion de ciclo de trabajo

persistent dcold Vold Pold Iold

dataType = 'double';

if isempty(Vold)

Vold=0;

Iold=0;

Pold=0;

dcold=dcinit;

end

% dc= dcinit;

%calculo de errores de potencia y tension

P= V*I;

dcmax=0.7636; %esto sale del producto de 24*1.2 como margen superior aceptable, entre 110 que es la salida de los paneles

dcmin=0.15; %esto sale del producto de 24*0.8 como margen inferior aceptable, entre 110 que es la salida de los paneles

%

if P-Pold == 0

dc=dcold;

return

else

if P-Pold>0

if V-Vold>0

dc = dcold + Adc; %incrementa V

else

dc = dcold - Adc; %reduce V

end

end

if V-Vold>0

dc = dcold - Adc; %reduce V

else

dc = dcold + Adc; %incrementa V

end

end

if dc>=dcmax || dc

More Tony Castillo-Calzadilla's questions See All
Similar questions and discussions