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).