ANEXO 2 Ejercicio 2
literal a
El controlador se diseño mediante Sisotool
Lugar geometrico y respuesta paso del sistema controlado
Fue necesario un control P para lograr un sobreimpulso del 10% y un tiempo de
establecimiento de 1.17 segundos el controlador tiene una ganancia de 5,91
ANEXO 2 Ejercicio 2
Literal d
Controladores simulados en simulink
Para el controlador del literal a)
Para el controlador del literal b)
Para el controlador del literal c)
Controlador P Con el polo en -2 Con el polo en -20
ISE 0.9028 7.392 8.235
IAE 0.1742 5.587 6.788
Para poder escoger que controlador es mas recomendable en base al análisis de los índices ISE
y IAE es necesario tener en cuenta que en el caso del ISE se analiza el error cuadrático y mientras
menor sea este valor mejor será el controlador ya que implica que se reduce el error cuadrático
, en el caso del IAE se analiza el valor absoluto del error lo cual nos da un una idea de cual es la
distancia existente entre el valor obtenido con respecto a la referencia , si el valor del IAE es mas
pequeño entonces se tendrá un mejor controlador ya que estará mas cerca de llegar a la
referencia , por lo tanto el mejor controlador con los valores obtenidos de ISE y IAE es el control
P ya que es el que tiene menores valores de estos parámetros además que cumple con los
requerimientos del sobreimpulso 10% y tiempo de establecimiento menor a 2
ANEXO 1 Ejercicio 1
s=tf('s')
s =
Continuous-time transfer function.
Model Properties
G1=(s^2+8*s+15)/((s^2+4*s+10)*(s^2+3*s+12))
G1 =
s^2 + 8 s + 15
---------------------------------
s^4 + 7 s^3 + 34 s^2 + 78 s + 120
Continuous-time transfer function.
Model Properties
step(G1)
grid on
zpk(G1)
ans =
1
(s+5) (s+3)
-------------------------------
(s^2 + 4s + 10) (s^2 + 3s + 12)
Continuous-time zero/pole/gain model.
Model Properties
den1=[1 4 10]
den1 = 1×3
1 4 10
roots(den1)
ans = 2×1 complex
-2.0000 + 2.4495i
-2.0000 - 2.4495i
roots([1 3 12])
ans = 2×1 complex
-1.5000 + 3.1225i
-1.5000 - 3.1225i
g1a=(s^2+8*s+15)/(s^4+7*s^3+42*s^2+78*s+120)
g1a =
s^2 + 8 s + 15
---------------------------------
s^4 + 7 s^3 + 42 s^2 + 78 s + 120
Continuous-time transfer function.
Model Properties
roots([1 7 34 78 120])
ans = 4×1 complex
-1.5000 + 3.1225i
-1.5000 - 3.1225i
-2.0000 + 2.4495i
-2.0000 - 2.4495i
literal b)
syms k1 k2 k3 k4 s
A=[-5 -1 1;0 -3 1;-30*k1 -30*k2 -30*k3]
A =
B=[0;0 ; 30]
2
B = 3×1
0
0
30
C=[2 -1 1]
C = 1×3
2 -1 1
D=0
D = 0
SI_A=[s 0 0;0 s 0;0 0 s]-A
SI_A =
G2cascada=C*inv(SI_A)*B
G2cascada =
s=tf('s')
s =
Continuous-time transfer function.
Model Properties
G2C=G2cascada
G2C =
3
literal c)
syms k1 k2 k3 k4 s
A3=[-5-k1 -k2 -k3;-k1 -6-k2 -k3;-k1 -k2 -7-k3]
A3 =
B3=[1;1;1]
B3 = 3×1
1
1
1
C3=[50 -300 300]
C3 = 1×3
50 -300 300
D3=0
D3 = 0
SI_A3=[s 0 0;0 s 0;0 0 s]-A3
SI_A3 =
s=tf('s')
s =
Continuous-time transfer function.
Model Properties
G3Paralelo=C3*inv(SI_A3)*B3
G3Paralelo =
4
5
ANEXO 2 Ejercicio 2
literal a
El controlador se diseño mediante Sisotool
Lugar geometrico y respuesta paso del sistema controlado
Fue necesario un control P para lograr un sobreimpulso del 10% y un tiempo de
establecimiento de 1.17 segundos el controlador tiene una ganancia de 5,91
ANEXO 2 Ejercicio 2
Literal d
Controladores simulados en simulink
Para el controlador del literal a)
Para el controlador del literal b)
Para el controlador del literal c)
Controlador P Con el polo en -2 Con el polo en -20
ISE 0.9028 7.392 8.235
IAE 0.1742 5.587 6.788
Para poder escoger que controlador es mas recomendable en base al análisis de los índices ISE
y IAE es necesario tener en cuenta que en el caso del ISE se analiza el error cuadrático y mientras
menor sea este valor mejor será el controlador ya que implica que se reduce el error cuadrático
, en el caso del IAE se analiza el valor absoluto del error lo cual nos da un una idea de cual es la
distancia existente entre el valor obtenido con respecto a la referencia , si el valor del IAE es mas
pequeño entonces se tendrá un mejor controlador ya que estará mas cerca de llegar a la
referencia , por lo tanto el mejor controlador con los valores obtenidos de ISE y IAE es el control
P ya que es el que tiene menores valores de estos parámetros además que cumple con los
requerimientos del sobreimpulso 10% y tiempo de establecimiento menor a 2
ANEXO 2 Ejercicio 2
literal a)
s=tf('s')
s =
Continuous-time transfer function.
Model Properties
G_ejer2=(20*s+40)/(s*(s+5)*(s+7))
G_ejer2 =
20 s + 40
-------------------
s^3 + 12 s^2 + 35 s
Continuous-time transfer function.
Model Properties
C=5.91
C = 5.9100
Gc_ejer2=G_ejer2*C
Gc_ejer2 =
118.2 s + 236.4
-------------------
s^3 + 12 s^2 + 35 s
Continuous-time transfer function.
Model Properties
step(feedback(Gc_ejer2,1))
1
stepinfo(feedback(Gc_ejer2,1))
ans = struct with fields:
RiseTime: 0.1525
TransientTime: 1.1692
SettlingTime: 1.1692
SettlingMin: 0.9045
SettlingMax: 1.1003
Overshoot: 10.0294
Undershoot: 0
Peak: 1.1003
PeakTime: 0.3054
ans = 3×1 complex
-5.1263 +10.4406i
-5.1263 -10.4406i
-1.7474 + 0.0000i
literal b)
A=[0 1 0;0 0 1; 0 -35 -12]
A = 3×3
0 1 0
0 0 1
0 -35 -12
B=[0;0;1]
B = 3×1
0
0
1
C=[40 20 0]
C = 1×3
2
40 20 0
D=0
D = 0
E=(-log(10/100))/(sqrt(pi^2+(log(10/100)^2)))
E = 0.5912
Wn=4/(2*E)
Wn = 3.3832
[num,den]=ord2(Wn,E)
num = 1
den = 1×3
1.0000 4.0000 11.4461
r=roots(den)
r = 2×1 complex
-2.0000 + 2.7288i
-2.0000 - 2.7288i
polos=[r(1) r(2) -2];
polos = 1×3 complex
-2.0000 + 2.7288i -2.0000 - 2.7288i -2.0000 + 0.0000i
poly(polos);
ans = 1×4
1.0000 6.0000 19.4461 22.8922
Kf=acker(A,B,polos)% valores de K para comparar los calculados
Kf = 1×3
22.8922 -15.5539 -6.0000
Ac=A-B*Kf
Ac = 3×3
0 1.0000 0
0 0 1.0000
-22.8922 -19.4461 -6.0000
Bc=B
Bc = 3×1
0
0
1
Cc=C
Cc = 1×3
40 20 0
3
Dc=0
Dc = 0
sysc=ss(Ac,Bc,Cc,Dc);
sysc =
A =
x1 x2 x3
x1 0 1 0
x2 0 0 1
x3 -22.89 -19.45 -6
B =
u1
x1 0
x2 0
x3 1
C =
x1 x2 x3
y1 40 20 0
D =
u1
y1 0
Continuous-time state-space model.
Model Properties
Gsc=tf(sysc)
Gsc =
20 s + 40
-----------------------------
s^3 + 6 s^2 + 19.45 s + 22.89
Continuous-time transfer function.
Model Properties
pole(sysc) % polos deseados
ans = 3×1 complex
-2.0000 + 0.0000i
-2.0000 + 2.7288i
-2.0000 - 2.7288i
step(sysc)
4
stepinfo(sysc)
ans = struct with fields:
RiseTime: 0.5421
TransientTime: 1.7515
SettlingTime: 1.7515
SettlingMin: 1.5770
SettlingMax: 1.9221
Overshoot: 10.0000
Undershoot: 0
Peak: 1.9221
PeakTime: 1.1513
literal c)
polosc=[r(1) r(2) -20]
polosc = 1×3 complex
-2.0000 + 2.7288i -2.0000 - 2.7288i -20.0000 + 0.0000i
poly(polosc)
ans = 1×4
1.0000 24.0000 91.4461 228.9218
Kf1=acker(A,B,polosc)% valores de K para compararlos con los calculados
Kf1 = 1×3
228.9218 56.4461 12.0000
Ac1=A-B*Kf1
Ac1 = 3×3
5
0 1.0000 0
0 0 1.0000
-228.9218 -91.4461 -24.0000
Bc1=B
Bc1 = 3×1
0
0
1
Cc1=C
Cc1 = 1×3
40 20 0
Dc1=0
Dc1 = 0
sysc1=ss(Ac1,Bc1,Cc1,Dc1);
sysc1 =
A =
x1 x2 x3
x1 0 1 0
x2 0 0 1
x3 -228.9 -91.45 -24
B =
u1
x1 0
x2 0
x3 1
C =
x1 x2 x3
y1 40 20 0
D =
u1
y1 0
Continuous-time state-space model.
Model Properties
Gsc1=tf(sysc1)
Gsc1 =
20 s + 40
------------------------------
s^3 + 24 s^2 + 91.45 s + 228.9
Continuous-time transfer function.
Model Properties
pole(sysc1) % polos deseados
ans = 3×1 complex
6
-20.0000 + 0.0000i
-2.0000 + 2.7288i
-2.0000 - 2.7288i
step(sysc1)
stepinfo(sysc1)
ans = struct with fields:
RiseTime: 0.2039
TransientTime: 2.1991
SettlingTime: 2.1991
SettlingMin: 0.1597
SettlingMax: 0.2489
Overshoot: 42.4491
Undershoot: 0
Peak: 0.2489
PeakTime: 0.6309
7
ANEXO 3 Ejercicio 3
literal b) i)
num=20*[1 2]
num = 1×2
20 40
den=poly([0 -5 -7])
den = 1×4
1 12 35 0
[Ac,Bc,Cc,Dc]=tf2ss(num,den);
E=(-log(10/100))/(sqrt(pi^2+(log(10/100)^2)));
Wn=4/(2*E);
[num_2,den_2]=ord2(Wn,E)
num_2 = 1
den_2 = 1×3
1.0000 4.0000 11.4461
r=roots(den_2)
r = 2×1 complex
-2.0000 + 2.7288i
-2.0000 - 2.7288i
polos=[r(1) r(2) -2];
poly(polos);
Kf_2=acker(Ac,Bc,polos)
Kf_2 = 1×3
-6.0000 -15.5539 22.8922
k1=-6;
k2=-15.55365;
k3=22.8926;
Kf_polo2=[k1 k2 k3];
Af=Ac-(Bc*Kf_polo2)
Af = 3×3
-6.0000 -19.4464 -22.8926
1.0000 0 0
0 1.0000 0
Bf=Bc
Bf = 3×1
1
0
0
Cf=Cc
1
Cf = 1×3
0 20 40
Df=Dc
Df = 0
sysc=ss(Af,Bf,Cf,Df);
Gc=tf(sysc)
Gc =
20 s + 40
-----------------------------
s^3 + 6 s^2 + 19.45 s + 22.89
Continuous-time transfer function.
Model Properties
pole(sysc)
ans = 3×1 complex
-2.0000 + 2.7288i
-2.0000 - 2.7288i
-2.0000 + 0.0000i
step(sysc)
stepinfo(sysc)
ans = struct with fields:
2
RiseTime: 0.5421
TransientTime: 1.7515
SettlingTime: 1.7515
SettlingMin: 1.5770
SettlingMax: 1.9220
Overshoot: 10.0001
Undershoot: 0
Peak: 1.9220
PeakTime: 1.1513
literal b) ii)
E=(-log(10/100))/(sqrt(pi^2+(log(10/100)^2)));
Wn=4/(2*E);
[num_20,den_20]=ord2(Wn,E);
r=roots(den_20)
r = 2×1 complex
-2.0000 + 2.7288i
-2.0000 - 2.7288i
polos_20=[r(1) r(2) -20];
poly(polos);
Kf_20=acker(Ac,Bc,polos_20)
Kf_20 = 1×3
12.0000 56.4461 228.9218
k1b=12
k1b = 12
k2b=56.4436
k2b = 56.4436
k3b=228.326
k3b = 228.3260
Kf_pole20=[k1b k2b k3b]
Kf_pole20 = 1×3
12.0000 56.4436 228.3260
Afb=Ac-Bc*Kf_pole20;
Bfb=Bc;
Cfb=Cc;
Dfb=Dc;
sysc_pole20=ss(Afb,Bfb,Cfb,Dfb);
Gc=tf(sysc_pole20)
3
Gc =
20 s + 40
------------------------------
s^3 + 24 s^2 + 91.44 s + 228.3
Continuous-time transfer function.
Model Properties
pole(sysc_pole20)
ans = 3×1 complex
-19.9984 + 0.0000i
-2.0008 + 2.7229i
-2.0008 - 2.7229i
step(sysc_pole20)
stepinfo(sysc_pole20)
ans = struct with fields:
RiseTime: 0.2046
TransientTime: 2.2004
SettlingTime: 2.2004
SettlingMin: 0.1597
SettlingMax: 0.2492
Overshoot: 42.2425
Undershoot: 0
Peak: 0.2492
PeakTime: 0.6310
4
ANEXO 4 Ejercicio 4
literal a) polo en -2
syms a k1 k2 k3 x y z k1_20 k2_20 k3_20 k1_cas k2_cas k3_cas k1_cas_20
k2_cas_20 k3_cas_20
A=[-k1 -k2 -k3;-k1 -k2-5 -k3;-k1 -k2 -k3-7];
B=[1;1;1];
C=[8/7 6 -50/7];
D=0;
aI_A=[a 0 0;0 a 0;0 0 a]-A;
det(aI_A)
ans =
eq1=k1+k2+k3==-6;
eq2=12*k1+7*k2+5*k3==19.4463-35;
eq3=35*k1==22.8926;
[I1,R1]=equationsToMatrix([eq1 eq2 eq3],[k1 k2 k3]);
R=linsolve(I1,R1);
r1=R(1,:);
r2=R(2,:);
r3=R(3,:);
k1=1610923512961591/2462906046218240
k1 = 0.6541
k2=6943832864214693/1407374883553280
k2 = 4.9339
k3=-22832053842117395/1970324836974592
k3 = -11.5880
Ac=[-k1 -k2 -k3;-k1 -k2-5 -k3;-k1 -k2 -k3-7]
Ac = 3×3
-0.6541 -4.9339 11.5880
-0.6541 -9.9339 11.5880
-0.6541 -4.9339 4.5880
Bc=[1;1;1]
Bc = 3×1
1
1
1
Cc=[8/7 6 -50/7]
Cc = 1×3
1.1429 6.0000 -7.1429
1
Dc=0
Dc = 0
sysc=ss(Ac,Bc,Cc,Dc);
pole(sysc)
ans = 3×1 complex
-2.0000 + 0.0000i
-2.0000 + 2.7288i
-2.0000 - 2.7288i
step(sysc)
stepinfo(sysc)
ans = struct with fields:
RiseTime: 0.5421
TransientTime: 1.7515
SettlingTime: 1.7515
SettlingMin: 1.5770
SettlingMax: 1.9220
Overshoot: 10.0003
Undershoot: 0
Peak: 1.9220
PeakTime: 1.1513
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5555
2
literal a) polo en -20
eq4=k1_20+k2_20+k3_20+12==24;
eq5=12*k1_20+7*k2_20+5*k3_20+35==91.4463;
eq6=35*k1_20==228.326;
[I1_20,R1_20]=equationsToMatrix([eq4 eq5 eq6],[k1_20 k2_20 k3_20]);
R=linsolve(I1_20,R1_20);
r5=R(1,:);
r6=R(2,:);
r7=R(3,:);
k1=1606701388310931/246290604621824
k1 = 6.5236
k2=-3463472182806027/140737488355328
k2 = -24.6095
k3=29639448748246017/985162418487296
k3 = 30.0859
Ac_20=[-k1 -k2 -k3;-k1 -k2-5 -k3;-k1 -k2 -k3-7]
Ac_20 = 3×3
-6.5236 24.6095 -30.0859
-6.5236 19.6095 -30.0859
-6.5236 24.6095 -37.0859
Bc_20=[1;1;1]
Bc_20 = 3×1
1
1
1
Cc_20=[8/7 6 -50/7]
Cc_20 = 1×3
1.1429 6.0000 -7.1429
Dc_20=0
Dc_20 = 0
sysc_20=ss(Ac_20,Bc_20,Cc_20,Dc_20);
pole(sysc_20)
ans = 3×1 complex
-19.9982 + 0.0000i
-2.0009 + 2.7228i
-2.0009 - 2.7228i
step(sysc_20)
3
stepinfo(sysc_20)
ans = struct with fields:
RiseTime: 0.2046
TransientTime: 2.2003
SettlingTime: 2.2003
SettlingMin: 0.1597
SettlingMax: 0.2492
Overshoot: 42.2400
Undershoot: 0
Peak: 0.2492
PeakTime: 0.6310
%5%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
literal b) polo en -2
% para el cascada
Acas=[-7 -3 1;0 -5 1;-20*k1_cas -20*k2_cas -20*k3_cas];
Bcas=[0;0;20];
Ccas=[1 0 0];
Dcas=0;
aI_Ab=[a 0 0;0 a 0;0 0 a]-Acas;
det(aI_Ab)
4
ans =
eq1_cas=12+20*k3_cas==6;
eq2_cas=240*k3_cas+20*k2_cas+20*k1_cas+35==19.4463;
eq3_cas=40*k1_cas+140*k2_cas+700*k3_cas==22.8926;
[I1_cas,R1_cas]=equationsToMatrix([eq1_cas eq2_cas eq3_cas],[k1_cas k2_cas
k3_cas]);
R=linsolve(I1_cas,R1_cas);
r1_cas=R(1,:);
r2_cas=R(2,:);
r3_cas=R(3,:);
k1_cas=4566410768423479/2814749767106560
k1_cas = 1.6223
k2_cas=6/5
k2_cas = 1.2000
k3_cas=-3/10
k3_cas = -0.3000
Acas=[-7 -3 1;0 -5 1;-20*k1_cas -20*k2_cas -20*k3_cas]
Acas = 3×3
-7.0000 -3.0000 1.0000
0 -5.0000 1.0000
-32.4463 -24.0000 6.0000
Bcas=[0;0;20]
Bcas = 3×1
0
0
20
Ccas=[1 0 0]
Ccas = 1×3
1 0 0
Dcas=0
Dcas = 0
syscas=ss(Acas,Bcas,Ccas,Dcas);
pole(syscas)
ans = 3×1 complex
-2.0000 + 2.7288i
-2.0000 - 2.7288i
-2.0000 + 0.0000i
step(syscas)
5
stepinfo(syscas)
ans = struct with fields:
RiseTime: 0.5421
TransientTime: 1.7515
SettlingTime: 1.7515
SettlingMin: 1.5770
SettlingMax: 1.9220
Overshoot: 10.0003
Undershoot: 0
Peak: 1.9220
PeakTime: 1.1513
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
literal b) polo en -20
Acas_20=[-7 -3 1;0 -5 1;-20*k1_cas_20 -20*k2_cas_20 -20*k3_cas_20];
Bcas_20=[0;0;20];
Ccas_20=[1 0 0];
Dcas_20=0;
aI_Ab=[a 0 0;0 a 0;0 0 a]-Acas_20;
det(aI_Ab);
eq1_cas_20=12+20*k3_cas_20==24;
eq2_cas_20=240*k3_cas_20+20*k2_cas_20+20*k1_cas_20+35==91.4463;
eq3_cas_20=40*k1_cas_20+140*k2_cas_20+700*k3_cas_20==228.326;
6
[I1_cas_20,R1_cas_20]=equationsToMatrix([eq1_cas_20 eq2_cas_20 eq3_cas_20],
[k1_cas_20 k2_cas_20 k3_cas_20]);
R=linsolve(I1_cas_20,R1_cas_20);
r1_cas_20=R(1,:);
r2_cas_20=R(2,:);
r3_cas_20=R(3,:);
k1_cas_20=-29639448748246017/7036874417766400
k1_cas_20 = -4.2120
k2_cas_20=-145721354661711/879609302220800
k2_cas_20 = -0.1657
k3_cas_20=3/5
k3_cas_20 = 0.6000
Acas_20=[-7 -3 1;0 -5 1;-20*k1_cas_20 -20*k2_cas_20 -20*k3_cas_20]
Acas_20 = 3×3
-7.0000 -3.0000 1.0000
0 -5.0000 1.0000
84.2404 3.3133 -12.0000
Bcas_20=[0;0;20]
Bcas_20 = 3×1
0
0
20
Ccas_20=[1 0 0]
Ccas_20 = 1×3
1 0 0
Dcas_20=0
Dcas_20 = 0
syscas_20=ss(Acas_20,Bcas_20,Ccas_20,Dcas_20);
pole(syscas_20)
ans = 3×1 complex
-19.9982 + 0.0000i
-2.0009 + 2.7228i
-2.0009 - 2.7228i
step(syscas_20)
7
stepinfo(syscas_20)
ans = struct with fields:
RiseTime: 0.2046
TransientTime: 2.2003
SettlingTime: 2.2003
SettlingMin: 0.1597
SettlingMax: 0.2492
Overshoot: 42.2400
Undershoot: 0
Peak: 0.2492
PeakTime: 0.6310