Matlab Compensación Por Cancelación de Polos Dominantes
Matlab Compensación Por Cancelación de Polos Dominantes
Matlab Compensación Por Cancelación de Polos Dominantes
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)
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
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:
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
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)
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));