Matlab Compensación Por Cancelación de Polos Dominantes

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

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

También podría gustarte