0% encontró este documento útil (0 votos)
11 vistas42 páginas

D5

El documento describe el diseño y análisis de controladores para un sistema controlado utilizando Sisotool y Simulink. Se determina que el controlador P es el más efectivo, logrando un sobreimpulso del 10% y un tiempo de establecimiento de 1.17 segundos, además de presentar los mejores índices ISE y IAE. Se presentan también las funciones de transferencia y los cálculos necesarios para los controladores en diferentes configuraciones.

Cargado por

Luis Amendaño
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas42 páginas

D5

El documento describe el diseño y análisis de controladores para un sistema controlado utilizando Sisotool y Simulink. Se determina que el controlador P es el más efectivo, logrando un sobreimpulso del 10% y un tiempo de establecimiento de 1.17 segundos, además de presentar los mejores índices ISE y IAE. Se presentan también las funciones de transferencia y los cálculos necesarios para los controladores en diferentes configuraciones.

Cargado por

Luis Amendaño
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte