%%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