Está en la página 1de 19

%%QUIZ

%%TEODORO RIOS
%% CC:1098814291
clc
clear all
close all

%%CONDICIONES INCIALES
syms x;
M1 = 2500;
M2 = 320;
K1 = 80000;
K2 = 500000;
b1 = 350;
b2 = 15020;
s = tf('s');

%%MATRIZ DE ESTADO
A=[0 1 0 0
-(b1*b2)/(M1*M2) 0 ((b1/M1)*((b1/M1)+(b1/M2)+(b2/M2)))-(K1/M1) -(b1/M1)
b2/M2 0 -((b1/M1)+(b1/M2)+(b2/M2)) 1
K2/M2 0 -((K1/M1)+(K1/M2)+(K2/M2)) 0];
B=[0 0
1/M1 (b1*b2)/(M1*M2)
0 -(b2/M2)
(1/M1)+(1/M2) -(K2/M2)];
c=[0 0 1 0];
D=[0 0];

%%BLOQUE DE FUNCIONES G1 Y G2
nump=[(M1+M2) b2 K2];
denp=[(M1*M2) (M1*(b1+b2))+(M2*b1) (M1*(K1+K2))+(M2*K1)+(b1*b2) (b1*K2)+(b2*K1) K1*K2];
G1=tf(nump,denp)

G1 =

2820 s^2 + 15020 s + 500000


------------------------------------------------------------
800000 s^4 + 3.854e07 s^3 + 1.481e09 s^2 + 1.377e09 s + 4e10

Continuous-time transfer function.

num1=[-(M1*b2) -(M1*K2) 0 0];


den1=[(M1*M2) (M1*(b1+b2))+(M2*b1) (M1*(K1+K2))+(M2*K1)+(b1*b2) (b1*K2)+(b2*K1) K1*K2];
G2=tf(num1,den1)

G2 =

-3.755e07 s^3 - 1.25e09 s^2


------------------------------------------------------------
800000 s^4 + 3.854e07 s^3 + 1.481e09 s^2 + 1.377e09 s + 4e10

Continuous-time transfer function.

1
numf=num1;
denf=nump;
F=tf(numf,denf)

F =

-3.755e07 s^3 - 1.25e09 s^2


---------------------------
2820 s^2 + 15020 s + 500000

Continuous-time transfer function.

step(G1)

step(0.1*G2)

2
%%PID CONTROL

Kd = 208025;
Kp = 832100;
Ki = 624075;
C = pid(Kp,Ki,Kd);
sys_cl=F*feedback(G1,C);

%%RESPUESTA EN LAZO CERRADO


t=0:0.05:5;
step(0.1*sys_cl,t)
title('Response to a 0.1-m Step under PID Control')

3
%%LUGAR GEOMETRICO DE LAS RAICES PID
z1=1;
z2=3;
p1=0;
s = tf('s');
C = ((s+z1)*(s+z2))/(s+p1);
rlocus(C*G1)
title('root locus with PID controller')

4
%%GANANCIA PARA EL CONTROL PID

Kd=2*Kd;
Kp=2*Kp;
Ki=2*Ki;
C=pid(Kp,Ki,Kd);
sys_cl=F*feedback(G1,C);
step(0.1*sys_cl,t)
title('Response to a 0.1-m Step w/ High-Gain PID')
axis([0 5 -.01 .01])

5
%%LUGAR GEOMETRICO DE LAS RAICES

R = roots(denp)

R = 4×1 complex
-23.9758 +35.1869i
-23.9758 -35.1869i
-0.1098 + 5.2504i
-0.1098 - 5.2504i

%%GRAFICAR EL LUGAR GEOMETRICO DE LAS RAICES

rlocus(G1)
z=-log(0.05)/sqrt(pi^2+(log(0.05)^2))

z = 0.6901

sgrid(z,0)

6
%%AGREGANDO UN FILTRO DE CAMPANILLA CON POLOS EN 3+-5i CON ANGULOS DE 30 Y 60
z1=3+3.5i;
z2=3-3.5i;
p1=30;
p2=60;
numc=conv([1 z1],[1 z2]);
denc=conv([1 p1],[1 p2]);
C=tf(numc,denc);

rlocus(C*G1)

axis([-40 10 -30 30])


z=-log(0.05)/sqrt(pi^2+(log(0.05)^2))

z = 0.6901

sgrid(z,0)

%%ENCONTRAR LA GANANCIA DE LOS POLOS

[k,poles]=rlocfind(C*G1)

Select a point in the graphics window

7
selected_point = -14.5739 + 3.5732i
k = 1.3598e+06
poles = 6×1 complex
-55.3402 +78.6729i
-55.3402 -78.6729i
-13.0729 +15.8509i
-13.0729 -15.8509i
-0.6726 + 5.2168i
-0.6726 - 5.2168i

%%k = 1.0888e+08; %%EXAMPLE DEL PROBLEMA


sys_cl=F*feedback(G1,k*C);

%%GRAFICA DEL CONTROL EN LAZO CERRADO


t=0:0.01:2;
step(0.1*sys_cl,t)
title('Closed-Loop Step Response w/ Notch Filter')

8
%%CONTROL CON ESPACIOS DE ESTADO

sys=ss(A,B,c,D);

%%CONTROLADOR DE COMPLETO DE RETROALIMENTACIÓN DE ESPACIOS DE ESTADO


Aa = [[A,[0 0 0 0]'];[c, 0]];
Ba = [B;[0 0]];
Ca = [c,0];
Da = D;
sys=ss(Aa,Ba,Ca,Da);
K = [0 2.3e6 5e8 0 8e6]

K = 1×5
0 2300000 500000000 0 8000000

%%RESPUESTA EN LAZO CERRADO

t = 0:0.01:3;
sys_cl = ss(Aa-Ba(:,1)*K,-0.1*Ba,Ca,Da);
step(sys_cl*[0;1],t)
title('Closed-Loop Response to a 0.1-m Step')

9
%%CONTROL PID DISEÑADO POR EL USUARIO
syms x;
t = 0:0.01:2;
[b1,a1]=ss2tf(A,B,c,D,1);
[b2,a2]=ss2tf(A,B,c,D,2);
g11=tf(b1(1,:),a1);
g21=tf(b2(1,:),a2);
G=[g11;g21]

G =

From input to output...


0.003525 s^2 + 0.01878 s + 0.625
1: ------------------------------------------
s^4 + 48.17 s^3 + 1851 s^2 + 1721 s + 5e04

-46.94 s^3 - 1563 s^2 + 2.843e-14 s + 1.221e-12


2: -----------------------------------------------
s^4 + 48.17 s^3 + 1851 s^2 + 1721 s + 5e04

Continuous-time transfer function.

d1=(4*x^(4) +48.17*x^(3) +1851*x^(2) + 1721*x +5000)/(0.003525*x^(2)+0.01878*x + 0.625)

d1 =

10
D1=diff(d1,x)

D1 =

D11=(16*x^3 + (14451*x^2)/100 + 3702*x + 1721) - (((141*x)/20000 + 939/50000)*(4*x^4 + (4817*x^

D11 =

D11=simplify(D11)

D11 =

Z1=roots([0.003525 0.01878 0.625])

Z1 = 2×1 complex
-2.6638 +13.0464i
-2.6638 -13.0464i

P1=roots([4 48.17 1851 1721 5000])

P1 = 4×1 complex
-5.5777 +20.4687i
-5.5777 -20.4687i
-0.4436 + 1.6064i
-0.4436 - 1.6064i

R1=roots([-(141)/5000 (829437)/2000000 (10229087)/5000000 (9761517)/100000 (181721481)/50000 16

R1 = 5×1 complex
27.8435 + 0.0000i
0.9284 +17.7095i
0.9284 -17.7095i
-14.5408 + 0.0000i
-0.4532 + 0.0000i

x=R1(5,1)

11
x = -0.4532

K=-(4*x^(4) +48.17*x^(3) +1851*x^(2) + 1721*x +5000)/(0.003525*x^(2)+0.01878*x + 0.625)

K = -7.4462e+03

syms k;

r=((1721+k*0.1878)/(48.17))*(((1721+k*0.1878)/(48.17))-1851-0.003525*k)+5000 +0.625*k;
r=simplify(r)

r =

k=roots([(67610817)/46406978000000 -(59761393091)/9281395600 -1388853695700/23203489])

k = 2×1
106 ×
4.4288
-0.0093

w=sqrt((1721+k*0.1878)/(48.17))

w = 2×1 complex
102 ×
1.3154 + 0.0000i
0.0000 + 0.0066i

p=(2*pi)/w

p = 1×2
0.0478 0

kp=0.6*k(1,1)

kp = 2.6573e+06

ki=kp/(0.5*p(1,1))

ki = 1.1126e+08

kd=(0.125*p(1,1))*(kp)

kd = 1.5866e+04

C1= pid(kp,ki,kd);
sys_cl=F*feedback(G1,C1);

%%RESPUESTA EN LAZO CERRADO PID USUARIO


t=0:0.05:2;
step(0.1*sys_cl,t)
title('Response to a 0.1-m Step under PID Control USER')

12
%%GANANCIA PARA EL CONTROL PID
kd=2*kd;
kp=2*kp;
ki=2*ki;
C1=pid(kp,ki,kd);
sys_cl=F*feedback(G1,C1);
t=0:0.05:5;
step(0.1*sys_cl,t)
title('Response to a 0.1-m Step w/ High-Gain PID')
axis([0 5 -.01 .01])

13
%%CONTROL LUGAR GEOMETRICO DE LAS RAICES USARIO

RA=0.9;
MP=exp(-(RA*pi)/sqrt(1-0.9^(2)))

MP = 0.0015

Ts=0.22;
WN=4/(RA*Ts);
x=-RA*WN+WN*sqrt(1-0.9^(2))*i

x = -18.1818 + 8.8059i

%% CONTROL COMPENSADOR EN ADELANTO

Mag1=(0.003525*x^(2)+0.01878*x + 0.625)/(4*x^(4) +48.17*x^(3) +1851*x^(2) + 1721*x +5000);


Ang1=radtodeg(angle((0.003525*x^(2)+0.01878*x + 0.625)/(4*x^(4) +48.17*x^(3) +1851*x^(2) + 1721

Ang1 = 37.0943

Mag2=x+1;
Ang2=radtodeg(angle(x+1))

Ang2 = 152.8644

Angt=-180+Ang1+Ang2;

14
p=((WN*sqrt(1-0.9^(2)))/tand(Angt))+RA*WN

p = 68.3335

Mag3=x+p;
Ang3=radtodeg(angle(x+p));
ANGT=radtodeg(angle(((Mag2/Mag3)*Mag1)))

ANGT = 180

kc=1/abs(((Mag2/Mag3)*Mag1))

kc = 1.4959e+06

%%CONTROL COMPENSADOR EN ATRASO


Ess=0.1;
Ko=1/Ess;
x=0;
Mag1=(0.003525*x^(2)+0.01878*x + 0.625)/(4*x^(4) +48.17*x^(3) +1851*x^(2) + 1721*x +5000);
Mag2=x+1;
Mag3=x+p;
Bs=Ko/(kc*(Mag2/Mag3)*Mag1)

Bs = 3.6545

%%GRAFICA DEL CONTROL EN LAZO CERRADO


ADELANTO=tf([1,1],[1,p])

ADELANTO =

s + 1
---------
s + 68.33

Continuous-time transfer function.

ATRASO=tf([1,1/10],[1,1/(10*Bs)])

ATRASO =

s + 0.1
-----------
s + 0.02736

Continuous-time transfer function.

sys_cl=F*feedback(G1,kc*ADELANTO*ATRASO);
t=0:0.01:2;
step(0.1*sys_cl,t)
title('Closed-Loop Step Response w/ Notch Filter USER')

15
%%CONTROL ESPACIOS DE ESTADO SIN INTEGRADOR DEL USUARIO (OPTIMO CUADRATICO)

Rang=rank(A)

Rang = 4

Dete=det(A)

Dete = 50000

P=5*WN*RA;

Q=[1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]; %%Matriz hermitica positiva


R=[1]; %%determinan la importancia relativa del error y del coste de esta energía
[K,P,E]=lqr(A,B,Q,R) %%devuelve la matriz K, el vector de valores propios E y la matriz P, que

K = 2×4
0.0003 0.0003 -0.0015 0.0000
0.4142 1.3652 -13.5190 -0.5652
P = 4×4
1.9308 0.4320 -0.7389 0.0237
0.4320 0.4241 -0.7360 0.0230
-0.7389 -0.7360 11.4047 -0.3370
0.0237 0.0230 -0.3370 0.0106
E = 4×1 complex
103 ×
-0.0016 + 0.0000i

16
-0.0053 + 0.0010i
-0.0053 - 0.0010i
-1.5628 + 0.0000i

k1=k(1,1);
t = 0:0.01:5;
AA = A-B*K;
BB = B*k1;
CC = c;
DD = D;
XO=[1;1;1;1];
sys = ss(AA,BB,CC,DD);
[y,x,t] = step (AA,BB,CC,DD,1,t);
plot(t,x)
grid
title('Curvas de respuesta x1, x2, x3,x4 respecto de t USUARIO')
xlabel('t Seg')
ylabel('x1,x2,x3,x4')
text(0.17,579.8,'x1')
text(0.58,486.8,'x2')
text(1.15,427.1,'x3')
text(0.8,68.95,'x4')

step(sys*[0;1],t)
title('Closed-Loop Response to a 0.1-m Step')

17
%%CONTROL ESPACIOS DE ESTADOS CON INTEGRADOR USER

%%CONTROLADOR DE COMPLETO DE RETROALIMENTACIÓN DE ESPACIOS DE ESTADO


Aa = [[A,[0 0 0 0]'];[c, 0]];
Ba = [B;[0 0]];
Ca = [c,0];
Da = D;
sys=ss(Aa,Ba,Ca,Da);
Q=[400000 0 0 0 0; 0 100000000 0 0 0; 0 0 90000000 0 0; 0 0 0 30000000 0; 0 0 0 0 1000000]; %%M
R=[1]; %%determinan la importancia relativa del error y del coste de esta energía
[K,P,E]=lqr(Aa,Ba,Q,R) %%devuelve la matriz K, el vector de valores propios E y la matriz P, qu

K = 2×5
104 ×
0.0503 0.8037 -3.2097 0.0998 0.0607
0.0383 0.6119 -5.9735 -0.3665 -0.0795
P = 5×5
108 ×
0.0639 0.0102 -0.0076 0.0003 0.0002
0.0102 0.1627 -0.1215 0.0043 0.0245
-0.0076 -0.1215 2.5551 -0.0773 0.0386
0.0003 0.0043 -0.0773 0.0023 -0.0011
0.0002 0.0245 0.0386 -0.0011 0.8089
E = 5×1 complex
106 ×

18
-0.0000 + 0.0000i
-0.0000 + 0.0000i
-0.0000 + 0.0000i
-0.0000 - 0.0000i
-8.5700 + 0.0000i

%%RESPUESTA EN LAZO CERRADO


t = 0:0.01:3;
sys_cl = ss(Aa-Ba(:,1)*K(1,:),1/20*Ba,Ca,Da);
step(sys_cl*[0;1],t)
title('Closed-Loop Response to a 0.1-m Step')

19

También podría gustarte