viernes, 14 de diciembre de 2007

Diseño de un Compensador de Atraso- Matlab

Diseño de un Compensador de Atraso

Programación en Matlab – Script:

%---------------------------------------------
%Diseño de un Compensador de Atraso
%Ogata K, Ingeniería de Control Moderna
%Tercera Edicion
%Ejemplo 9.2, pag. 623
%---------------------------------------------

close all;clear all;clc;

fprintf('-------------------------------------------\n')
fprintf('Diseño de un Compensador de Atraso\n')
fprintf('Ogata K, Ingeniería de Control Moderna\n')
fprintf('Tercera Edicion\n')
fprintf('Ejemplo 9.2, pag. 623\n')
fprintf('-------------------------------------------\n')

%Requerimientos del sistemas
kv=5; MF1=40;MG1=10;

%Planta
den1=[1 0];
den2=[1 1];
den3=[.5 1];
den4=conv(den1,den2);
den=conv(den4,den3);
kva=1/polyval(deconv(den,[1 0]),0);
k=kv/kva
num=[k];
fprintf('\n**Planta del Sistema**\n')
planta=tf(num,den)

%Se halla los vectores de Ganancia y Fase (fase)
w0=logspace(-2,2,500);
[Gan,Fase]=bode(num,den,w0);
GandB=20*log10(Gan);

%Marge de fase
indice=find(GandB<=0);
wcgan=w0(indice(1));
MF=Fase(indice(1))+180;

%Margende ganancia
indice2=find(Fase<=-180);
wcfase=w0(indice2(1));
MG=-GandB(indice2(1));

%Angulo de fase
Fadic=-180+MF1+5;

%Buscamos la frecuencia de corte wgc que tenga esa fase
indice3=find(Fase<=Fadic);
wgc=w0(indice3(1));

%Ganancia de fase a esa frecuencia de corte
GanW=GandB(indice3(1));

%Atenuación del compensador
beta=10^(GanW/20);

%Para asegurar una frecuencia alta del compensador se hace
T=5/wgc;

%Parámetros del Compensador
zc=1/T;
pc=1/(beta*T);
kc=k/beta;
numc=kc*[1 zc];
denc=[1 pc];
fprintf('\n**Compensador Diseñado**\n')
Comp=tf(numc,denc)

%Planta Compensada
fprintf('\n**Planta Compensada**\n')
plantacompensada=series(planta,Comp)

%Gráfica de Bode del Compensador en atraso

%Respuesta en el Tiempo
figure(1);step(feedback(planta,1)),hold on, grid on
step(feedback(plantacompensada,1))
title('Respuesta en el Tiempo')
legend('Planta Sin Compensador','Planta Compensada')

%Respuesta en Frecuencia
figure(2);bode(planta),hold on, grid on
bode(plantacompensada)
title('Respuesta en Frecuencia')
legend('Planta Sin Compensador','Planta Compensada')


Resultados de la compilación del programa:



Gráficas resultantes

Grafica Nº 1


Grafica Nº 2

1 comentario:

Unknown dijo...

Muchas Gracias!!!