Compensación por Cancelación de Polos Dominantes
1) Para cada uno de los siguientes sistemas, diseñar un compensador PI utilizando el
método de cancelación de polos y ceros de manera tal de eliminar el error en estado
estable. Ajustar la ganancia del compensador para que la respuesta al escalón
unitario sea críticamente amortiguada, con el menor tiempo de establecimiento
posible. Simular y comparar las respuestas del sistema original a lazo abierto y el
sistema compensado a lazo cerrado.
10
G1 (s)
(s 10)(s 100)
0.8
G2 (s)
(0.1s 1)(0.05s 1)
125
G3 (s)
s 33s 200
2
1.24
G4 (s)
(s 1)3
20(s 60)
G5 (s)
(s 10)(s 20)
Solución del Sistema 1:
Podemos considerar a G1 (s) como el producto de dos sistemas de primer orden en
cascada, de forma tal que G1 (s) G10 (s)G100 (s) . En la Fig. 1 se muestra la respuesta al
escalón de G1 (s) , además de la respuesta al escalón de G10 (s) 0.1 (s 10) y
G100 (s) 1 (s 100) 1. Se aprecia que el polo dominante es el que gobierna la respuesta
transitoria del sistema.
Step Response
0.01
G(s)
0.009 p1=-10
p2=-100
0.008
0.007
0.006
Amplitude
0.005
0.004
0.003
0.002
0.001
0
0 0.1 0.2 0.3 0.4 0.5 0.6
Time (sec)
Fig. 1: Resp. al Escalón a Lazo Abierto
En el lugar de raíces se comprueba que el polo dominante es el más cercano al eje
imaginario.
Root Locus
60
0.707
40
20
Imaginary Axis
100 80 60 40 20
0
-20
-40
0.707
-60
-120 -100 -80 -60 -40 -20 0 20
Real Axis
Fig. 2: Lugar de Raíces de G(s)
Una forma de minimizar la duración del transitorio y eliminar el error en estado
estable consiste en cerrar el lazo de control agregando un compensador proporcional
integrador:
1
Las amplitudes de las Funciones de Transferencia han sido escaladas para facilitar la comparación de los
tiempos de establecimiento.
K p (Ti s 1)
PI (s)
Ti s
Donde los parámetros que se deben ajustar son K p y Ti .
Entonces, la función de transferencia de lazo abierto queda:
K p (Ti s 1) 10 K (T s 1) 0.01
FTla PI (s)G1 (s) p i
Ti s (s 10)(s 100) Ti s (0.1s 1)(0.01s 1)
El valor de Ti se ajusta para cancelar la mayor constante de tiempo, Ti 0.1, luego:
Kp 0.01
FTla
0.1s (0.01s 1)
De esta forma lo que resta calcular es el valor de K p . El mismo se puede determinar a
partir del lugar de raíces de FTla de la Fig. 3:
En la figura se presentan dos valores opcionales para K p , uno para 1y otro para
0.707 . Se escoge K p 250 para minimizar el tiempo de establecimiento mientras
se mantiene la respuesta transitoria sin oscilaciones. Valores inferiores aumentarán el
tiempo de establecimiento. Valores superiores provocarán oscilaciones en la respuesta
temporal.
Root Locus
System: untitled1
100
Gain: 500
Pole: -50 + 50i
80 Damping: 0.707
0.7
Overshoot (%): 4.32
60 Frequency (rad/sec): 70.7
40
20
Imaginary Axis
100
0
System: untitled1
-20 Gain: 250
Pole: -50 + 1.55i
Damping: 1
-40
Overshoot (%): 0
Frequency (rad/sec): 50
-60
0.7
-80
-100
-120 -100 -80 -60 -40 -20 0 20
Real Axis
Fig. 3: Lugar de Raíces para Determinar Kp
Step Response
1.4
K=500
K=250
1.2
K=100
0.8
Amplitude
0.6
0.4
0.2
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
Time (sec)
Fig. 4: Respuesta Temporal del Sistema Compensado
2) Para los sistemas del punto anterior, determinar la ganancia del compensador para
un sobrepasamiento máximo del 4% de la respuesta temporal ante una entrada
escalón unitario.
Soluciones de los ejercicios con Matlab:
%% Ejercicio 1
close all; clear all; clc
G=tf([10],conv([1 10],[1 100]));
[z,p,k]=zpkdata(G,'v');
Ti= -1/max(p);
PI=tf([Ti 1],[Ti 0]);
figure
rlocus(PI*G)
sgrid(0.7,100)
axis([-100 0 -50 50])
% Para psita=[1 0.707]
[K,poles]= rlocfind(PI*G)
Kp=[250 500];
figure
step(feedback(Kp(1)*PI*G,1));
hold on
step(feedback(Kp(2)*PI*G,1);
%% Ejercicio 2
close all; clear all; clc
G=tf(0.8,conv([0.1 1],[0.05 1]));
[z,p,k]=zpkdata(G,'v');
Ti= -1/max(p);
PI=tf([Ti 1],[Ti 0]);
figure
rlocus(PI*G)
sgrid(0.7,100]);
axis([-20 0 -10 10]);
% Para psita=[0.707 1]
[K,poles]= rlocfind(PI*G)
Kp=[1.27 0.625];
figure
step(feedback(Kp(1)*PI*G,1)):
hold on
step(feedback(Kp(2)*PI*G,1));
%% Ejercicio 3
close all; clear all; clc
G=tf(125,[1 33 200]);
[z,p,k]=zpkdata(G,'v');
Ti= -1/max(p);
PI=tf([Ti 1],[Ti 0]);
figure
rlocus(PI*G)
sgrid(0.7,100);
axis([-25 0 -20 20]);
% Para psita=[1 0.707]
[K,poles]= rlocfind(PI*G)
Kp=[1.25 2.5];
figure
step(feedback(Kp(1)*PI*G,1));
hold on
step(feedback(Kp(2)*PI*G,1));
%% Ejercicio 4
close all; clear all; clc
G=zpk([],[-1 -1 -1],1.24);
[z,p,k]=zpkdata(G,'v');
Ti=-1/max(p);
PI=tf([Ti 1],[Ti 0]);
figure
rlocus(PI*G)
sgrid(0.7,100);
% Para psita=[1 0.707]
[K,poles]= rlocfind(PI*G)
Kp=[0.12 0.2];
figure
step(feedback(Kp(1)*PI*G,1));
hold on
step(feedback(Kp(2)*PI*G,1));
%% Ejercicio 5
close all; clear all; clc
G=zpk([-60],[-10 -20],20);
[z,p,k]=zpkdata(G,'v');
Ti= -1/max(p);
PI=tf([Ti 1],[Ti 0]);
figure
rlocus(PI*G)
sgrid(0.7, 100);
axis([120 20 -100 100])
% Para psita=[1 0.707 ]
[K,poles]= rlocfind(PI*G)
Kp=[0.1 0.27];
figure
step(feedback(Kp(1)*PI*G,1));
hold on
step(feedback(Kp(2)*PI*G,1));