0% encontró este documento útil (0 votos)
4 vistas15 páginas

Compensadores de Control en Matlab

a

Cargado por

eddu
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas15 páginas

Compensadores de Control en Matlab

a

Cargado por

eddu
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1

Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva


Sistemas de Control II

COMPENSADOR DE ADELANTO

Script de Matlab

%%%Compensador adelanto

clear;

clc;

Kv = 20;

MF_deseado = 50; %>=50 grados

MG_deseado = 10; %>=10 dB

Tolerancia = 10; %Tolerancia 5-12 grados

%PASO 1: Calcular K

num0=4;

den0=0;

den1=2;

den2=1;

num=[num0];

den=[den2 den1 den0];

g=tf(num,den);

K=Kv*(den2*0+den1)/num0;

g1=tf(num,den)*K %FT G1(s)

figure(1);

margin(g1); %MF y MG original

grid on;
2
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

%PASO 2: Calcular MF de g1

[MG,MF,Wcf,Wcg]=margin(num*K,den);

%PASO 3: Calcular ang_max (phi_max)

phi_max=MF_deseado-MF+Tolerancia; % grados

phi_max_rad=phi_max/180*pi;

%PASO 4: Calcular alpha

alpha=(1-sin(phi_max_rad))/(1+sin(phi_max_rad));

%PASO 5: Calcular Wm (frecuencia maxima)

mag_g1_Wm=-20*log10(1/sqrt(alpha)); % dB

mag_g1_Wm_un=10^(mag_g1_Wm/20); % unidades

w=0.01:0.0001:100;

[mag,fase,w]=bode(num*K,den,w);

for i=1:size(mag)

if mag(i) >= mag_g1_Wm_un-0.01 && mag(i) <= mag_g1_Wm_un+0.01

mag1=mag(i); % unidades

Wm=w(i);

i_aux=i;

end

end
3
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

%PASO 6: Calcular T

T = 1/(Wm*sqrt(alpha));

%PASO 7: Kc opcional

[zero,pole,gain]=zpkdata(g1);

Kc=gain/alpha;

%PASO 8: Verificar MF y MG

gc=tf([T 1],[alpha*T 1])

figure(2);

bode(gc);

grid on;

figure(3);

margin(gc*g1);

grid on;
4
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

COMPENSADOR DE ATRASO

Script de Matlab

%%%Compensador atraso

clear;

clc;

Kv = 20;

MF_deseado = 47; %45-50 grados

MG_deseado = 8; %>=8 dB

Tolerancia = 5; %Tolerancia 5-12 grados

%PASO 1: Calcular K

num0=6;

den0=0;

den1=0.4;

den2=2.2;

den3=1;

num=[num0];

den=[den3 den2 den1 den0];

g=tf(num,den);

K=Kv*(den3*0^2+den2*0+den1)/num0;

g1=tf(num,den)*K %FT G1(s)

figure(1);

margin(g1); %MF y MG original


5
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

grid on;

hold off;

%PASO 2: Calcular w1 de g1 (nueva frecuencia de cruce de ganancia)

Fase_g1=-180+MF_deseado+Tolerancia;

w=0.001:0.0001:10;

[mag,fase,w]=bode(num*K,den,w);

for i=1:size(fase)

if fase(i) >= Fase_g1-0.01 && fase(i) <= Fase_g1+0.01

f1=fase(i);

w1=w(i);

i_aux=i;

end

end

%PASO 3: Calcular T

w_aux = w1/10; %criterio de una decada

T=1/w_aux;

%PASO 4: Atenuancion en w1

At=-20*log10(mag(i_aux));

beta=10^(At/-20);

%PASO 5: Kc opcional

[zero,pole,gain]=zpkdata(g1);

Kc = gain/beta;
6
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

%PASO 6: Verificar MF y MG

gc=tf([T 1],[beta*T 1])

figure(2);

bode(gc);

grid on;

figure(3);

margin(gc*g1);

grid on;
7
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

COMPENSADOR DE ATRASO-ADELANTO

Script de Matlab

%%%Compensador atraso-adelanto (alpha=1/beta)

clear;

clc;

Kv = 20;

MF_deseado = 50; %45-50 grados

MG_deseado = 8; %>=8 dB

Tolerancia = 12; %Tolerancia 5-12 grados

%PASO 1: Calcular K

num0=6;

den0=0;

den1=0.4;

den2=2.2;

den3=1;

num=[num0];

den=[den3 den2 den1 den0];

g=tf(num,den);

K=Kv*(den3*0^2+den2*0+den1)/num0;

g1=tf(num,den)*K %FT G1(s)

figure(1);

margin(g1); %MF y MG original


8
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

grid on;

hold off;

%PASO 2: Calcular w1 de g1 (nueva frecuencia de cruce de ganancia)

Fase_g1=-180; %+MF_deseado+Tolerancia;

w=0.001:0.0001:10;

[mag,fase,w]=bode(num*K,den,w);

for i=1:size(fase)

if fase(i) >= Fase_g1-0.01 && fase(i) <= Fase_g1+0.01

f1=fase(i);

w1=w(i);

i_aux=i;

end

end

%PASO 3: Calcular T2

w_aux = w1/10; %criterio de una decada

T2=1/w_aux;

%PASO 4: Calcular beta y alpha

phi_max=MF_deseado+Tolerancia; % grados

phi_max_rad=phi_max/180*pi;

alpha=(1-sin(phi_max_rad))/(1+sin(phi_max_rad));

beta=1/alpha;

%PASO 5: beta*T2
9
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

polo_atraso=beta*T2;

%PASO 6: Calcular la atenuacion en w1

At=-20*log10(mag(i_aux));

%PASO 7: alpha*T1

w1_aux=10^((At-20*log10(w1))/-20);

polo_adelanto=1/w1_aux;

T1=polo_adelanto/alpha;

%PASO 8: Verificar MF y MG

gc1=tf([T2 1],[beta*T2 1])

gc2=tf([T1 1],[alpha*T1 1])

figure(2);

bode(gc1*gc2);

grid on;

figure(3);

margin(gc1*gc2*g1);

grid on;
10
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

COMPENSADOR DE ADELANTO DOBLE

Script de Matlab

%%%Compensador doble adelanto

clear;

clc;

Kv = 20;

MF_deseado = 47; %45-50 grados

MG_deseado = 8; %>=8 dB

Tolerancia = 24; %Tolerancia 17-24 grados

%PASO 1: Calcular K

% num0=6;

% den0=0;

% den1=0.4;

% den2=1.2;

% den3=1;

num0=6;

den0=0;

den1=0.4;

den2=2.2;

den3=1;

num=[num0];

den=[den3 den2 den1 den0];

g=tf(num,den);

K=Kv*(den3*0^2+den2*0+den1)/num0;
11
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

g1=tf(num,den)*K %FT G1(s)

figure(1);

margin(g1); %MF y MG original

grid on;

hold off;

%PASO 2: Calcular MF de g1

[MG,MF,Wcf,Wcg]=margin(num*K,den);

%PASO 3: Calcular ang_max (phi_max)

phi_max=(MF_deseado-MF+Tolerancia)/2; % grados %compensador doble adelanto

phi_max_rad=phi_max/180*pi; % rad

%PASO 4: Calcular alpha

alpha=(1-sin(phi_max_rad))/(1+sin(phi_max_rad));

%PASO 5: Calcular Wm (frecuencia maxima)

mag_g1_Wm=-40*log10(1/sqrt(alpha)); % dB %compensador doble adelanto

mag_g1_Wm_un=10^(mag_g1_Wm/20); % unidades %compensador doble adelanto

w=0.01:0.0001:100;

[mag,fase,w]=bode(num*K,den,w);

for i=1:size(mag)
12
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

if mag(i) >= mag_g1_Wm_un-0.01 && mag(i) <= mag_g1_Wm_un+0.01

mag1=mag(i); % unidades

Wm=w(i);

i_aux=i;

end

end

%PASO 6: Calcular T

T = 1/(Wm*sqrt(alpha));

%PASO 7: Kc opcional

[zero,pole,gain]=zpkdata(g1);

Kc=gain/alpha;

%PASO 8: Verificar MF y MG

gc=tf([T 1],[alpha*T 1]) %compensador doble adelanto

gcf=gc*gc %compensador doble adelanto

figure(2);

bode(gcf);

grid on;

figure(3);

margin(gcf*g1);

grid on;
13
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

GRÁFICOS DEL COMPORTAMIENTO TEMPORAL DE LOS DISTINTOS


COMPENSADORES EN SIMULINK

Figura 1. Entorno de simulación MATLAB/Simulink 2014-a.

Figura 2. Respuesta de los distintos compensadores: a. Sin compensador (amarillo) b. Compensador


adelanto doble (violeta) c. Compensador atraso (celeste) d. Compensador atraso-adelanto (rojo).
14
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

Figura 3. Respuesta (zoom) de los compensadores: a. Sin compensador (amarillo) b. Compensador


adelanto doble (violeta) c. Compensador atraso (celeste) d. Compensador atraso-adelanto (rojo).

Figura 4. Respuesta de los compensadores a una entrada rampa: a. Sin compensador (amarillo) b.
Compensador adelanto doble (violeta) c. Compensador atraso (celeste) d. Compensador atraso-adelanto
(rojo).
15
Elaborado por Prof. MSc. Ing. Magno Elias Ayala Silva
Sistemas de Control II

Figura 4. Respuesta (zoom) de los compensadores a una entrada rampa: a. Sin compensador (amarillo) b.
Compensador adelanto doble (violeta) c. Compensador atraso (celeste) d. Compensador atraso-adelanto
(rojo).

Figura 5. Error (1/Kv=0.05) de los compensadores a una entrada rampa (marrón): a. Sin compensador
(amarillo) b. Compensador adelanto doble (violeta) c. Compensador atraso (celeste) d. Compensador
atraso-adelanto (rojo).

También podría gustarte