You are on page 1of 16

𝑀𝑥̈ (𝑡) = 𝐹(𝑡) − 𝐹1(𝑡) − 𝐹2(𝑡)

Donde la masa 𝑀 = 1, 𝐹(𝑡) = 4𝑠𝑖𝑛(𝑤𝑡), 𝐹1(𝑡) = 𝐾𝑥(𝑡) = 25𝑥(𝑡), 𝐹2(𝑡) = 𝐵𝑥̇ (𝑡) = 6𝑥̇ (𝑡)

Esto nos da

𝑥̈ (𝑡) + 6𝑥̇ (𝑡) + 25𝑥(𝑡) = 4 sin(𝑤𝑡) − − − −(1)


Ecuación diferencial que representa el movimiento del sistema aplicando la transformada de
Laplace
4𝑤
(𝑠 2 + 6𝑠 + 25)𝑋(𝑠) = [𝑠𝑥(0) + 𝑥̇ (0)] + 6𝑥(0) +
𝑠2 + 𝑤 2
Donde X(s) es la transformada de X(t), incorporando las condiciones iniciales dadas 𝑥(0) =
𝑥(̇0) = 0 llegamos a
4𝑤
𝑋(𝑠) =
(𝑠 2 + 𝑤 2 )(𝑠 2 + 6𝑠 + 25)
En el caso (a) contamos con w=2
8
𝑥(𝑠) =
(𝑠 2 + 4)(𝑠 2+ 6𝑠 + 25)
La cual resolviendo en fracciones parciales se llega a
4 −4𝑠 + 14 2 8𝑠 + 20 4 −4𝑠 + 14 2 8(𝑠 + 3) − 4
𝑋(𝑠) = ( 2 )+ ( 2 )= ( 2 )+ ( )
195 𝑠 + 4 195 𝑠 + 6𝑠 + 25 195 𝑠 + 4 195 (𝑠 + 3)2 + 16
Aplicando la transformada inversa de Laplace se obtiene la respuesta

4 2 ∗ 𝑒 −3𝑡 (8 cos(4𝑡) − sin(4𝑡))


𝑋(𝑡) = (7 sin(2𝑡)) − 4 cos(2𝑡) + − − − (3)
195 195
En el caso (b) con w=5
20
𝑋(𝑠) = − − − (4)
(𝑠 2 + 25)(𝑠 2 + 6𝑠 + 25)
Esto es
−2𝑠
1 2(𝑠 + 3) + 6
𝑋(𝑠) = 2 15 + ( )
𝑠 + 15 15 (𝑠 + 3)2 + 16
La cual, aplicando la transformada de Laplace inversa, da la respuesta requerida
−2 1 3
𝑋(𝑡) = (cos(5𝑡)) + 𝑒 −3𝑡 (2 cos(4𝑡) + 𝑠𝑒𝑛(4𝑡)) − − − (5)
15 15 2
Si no hay amortiguador entonces (4) será
20
𝑋(𝑠) = − − − (6)
(𝑠 2 + 25)2
Linealización con la serie de Taylor

𝐹(𝑥) = 𝐹(𝑥 ∗ ) + ∇𝐹(𝑥 ∗ )∆𝑥

Sistema resorte-amortiguador

𝑥̈ (𝑡) + 6𝑥̇ (𝑡) + 25𝑥(𝑡) = 4 sin(𝑤𝑡) − − − −(1)


𝑑2 𝑥 𝑑𝑥 𝑑2 𝑥 𝑑𝑥
2
+ 6 + 25𝑥 = 4 sin(𝑤𝑡) − − − 2
+6 = 4 sin(𝑤𝑡) − 25𝑥
𝑑𝑡 𝑑𝑡 𝑑𝑡 𝑑𝑡
F (t)

𝑑(𝐹) 𝑑(𝐹)
𝐹(𝑥, 𝑡) = 𝐹(𝑥 ∗ , 𝑤 ∗ ) + |(𝑥 − 𝑥 ∗ ) + |(𝑤 − 𝑤 ∗ )
𝑑𝑥 𝑥1∗ 𝑤1∗ 𝑑𝑡 𝑥1∗ 𝑤1∗
Donde se sabe que

𝑋̈(𝑡) = 0, 𝑋̇(𝑡) = 0, 𝑋(𝑡) = 0, 𝐹(𝑡) = 0


De la ecuación anterior se podrá descomponer como

0 + 0 + 0 = 4 sin(𝑤𝑡) ≠ 0
El sistema no es lineal por ello deberemos encontrar el equilibrio

Donde X en equilibrio estará dado por Xe

𝑋̈(𝑡) = 0, 𝑋̇(𝑡) = 0, 𝑋𝑒, 𝑈(𝑡) = 0


4 sin(𝑤𝑡)
0 + 0 + 25𝑋𝑒 = 4 sin(𝑤𝑡) − − − 𝑋𝑒 = , 𝑈𝑒 = 0
25
𝑑2 𝑥 𝑑𝑥
2
+6 = 4 sin(𝑤𝑡) − 25𝑋(𝑡) − − −
𝑑𝑡 𝑑𝑡
𝑓(𝑥, 𝑢)
𝑑(𝐹) 𝑑(𝐹)
𝑓(𝑋𝑒, 𝑈𝑒) + |(𝑑𝑥) + | (𝑑𝑤) − −−→ −25𝑑𝑥 + 4cos(𝑤)𝑑𝑤 = 𝑑𝑥̈ + 6𝑑𝑥̇
𝑑𝑥 𝑋𝑒,𝑤𝑒 𝑑𝑤 𝑋𝑒,𝑤𝑒

Pasando al dominio de Laplace

∆𝑋(𝑠) 4cos(𝑤)
−25∆𝑋(𝑠) + 4cos(𝑤)∆𝑊(𝑠) = 𝑠 2 ∆𝑋(𝑠) + 6𝑠∆𝑋(𝑠)------- =
∆𝑊(𝑠) 𝑠2 +6𝑠+25
clc
clear all
close all
K=25;
Ba=6;
M=1;
t=0:0.01:5;
A1=5;%Posición inicial de 5cm
A2=7;%Posición final de 7cm
%La altura de la deformacion por el resorte y amortiguador
estara dado por
%Xe la deformacion en equilibrio
Xe=(4*sin(2*t))/25
figure(1)
plot(t,Xe),grid on
title('Variacion en relacion a la posicion inicial y final en el
punto de equilibrio')
ylabel('Posicion (x)')
xlabel('Tiempo en la deformación')
Dada una función en un instante ts=5seg en equilibrio
clc
clear all
close all
K=25;
Ba=6;
M=1;
t=0:0.01:6;
ts=5; %En el equilibrio
w=2;%Frecuencia
%La altura de la deformacion por el resorte y amortiguador
estara dado por

%Xe la deformacion en equilibrio


Xe=(4*sin(w*ts))/25
Eq1=[Xe];

%Perfil de estados
xe=((4.*sin(2.*t))/25);
figure(1)
plot(t,xe),grid on
title('Variacion en relacion a la posicion inicial y final en el
punto de equilibrio')
ylabel('Posicion (x)')
xlabel('Tiempo en la deformación')

%Linealizacion del sistema por jacobiana


syms xa ut
%x=Ca
%u=fsoUo

%Funciones para realizar la jacobiana


fxa=(4*sin(w*ut)-K*xa-Ba*diff(xa));
%Conformando vectores
fx=[fxa];
x=[xa];

%linealiza por medio de jacobiana


A=jacobian(fx,x);
B=jacobian(fx,ut);
C=[0 1];

%Pasando de simbolico a numero


Ad=double(A);
Bd=double(subs(B,{ut},{Eq1}));
Cd=double(C);
As=[Ad 1;1 1]
Bs=[Bd;1]
Cs=Cd

%Determinando la funcion de transferencia


display('Funcion de transferencia para el problema resorte-
amortiguador')
[num1,den1]=ss2tf(As,Bs,Cd,0);
ft1=tf(num1,den1)
Xe =

-0.0870

As =

-25 1
1 1

Bs =

7.8791
0

Cs =

0 1

Función de transferencia para el problema resorte-amortiguador

ft1 =

7.879
---------------
S^2 + 24 s – 26

%Determinando la funcion de transferencia


display('Funcion de transferencia para el problema resorte-
amortiguador')
[num1,den1]=ss2tf(As,Bs,Cd,0);
ft1=tf(num1,den1)
r=rlocus(num1,den1);
figure(2)
plot(r,'o')
figure(3)
step(num1,den1,t)
%Respuesta ante escalón unitario

%Expresando ante el diagrama de bode


figure(4)
% Espacio de magnitud de la frecuencia desde 10^-2 hasta 10^3
w=logspace(-2,5,100);
%Guardamos la respuesta en el vector magnitud y phase
[mag,phase,w]=bode(num1,den1,w);

%la magnitud lo expresamos en db


magdb=20*log10(mag);

%Establecemos el dbmax y dbdmin

dbmax=50*ones(1,100);
dbmin=-100*ones(1,100);
subplot(2,1,1)
semilogx(w,magdb,'o',w,magdb,'-',w,dbmax,'-',w,dbmin,'-')
grid
title('Diagrama de Bode')
xlabel('Frecuencia(rad/seg)')
ylabel('Ganancia db')

%Establecemos los limites de la phase entre -50 y -200

pmax=-50*ones(1,100);
pmin=-200*ones(1,100);
subplot(2,1,2)
semilogx(w,phase,'o',w,phase,'-',w,pmax,'-',w,pmin,'-')
grid
xlabel('Frecuencia(rad/seg)')
ylabel('Fase en grados')
A partir de su función de transferencia calcularemos la
transforma inversa de laplace para obtener la respuesta ante el
tiempo y así poderlo pasar al dominio Z

s + 32.88
F(s)= ---------------
s^2 + 24 s – 26

Por medio del matlab calcularemos la transformada inversa en el


tiempo

Syms s t
y=((s+32.88)/(s^2+24*s-26))
ilaplace(y)
exp(-12*t)*(cosh(170^(1/2)*t) +
(261*170^(1/2)*sinh(170^(1/2)*t))/2125)
pretty(ilaplace(y))

%Expresamos la transformada Z con matemática simbólica


syms n w t;
Y=exp(-12*t)*(cosh(170^(1/2)*t) +
(261*170^(1/2)*sinh(170^(1/2)*t))/2125);
fk=ztrans(Y);
pretty(fk)
As=[-25 1;1 1]
Bs=[7.8791;1.0000]
Cs=[0 1]
[num,den]=ss2tf(As,Bs,Cs,0)
y=tf(num,den)

%Convirtiendo el espacio de estados continuo a disreto contando


de T=0.1segundos en el momento que
%el bloque de masa M=1 oscila por medio del amortiguador y
resorte

[G,H]=c2d(As,Bs,0.06);
[num1,den1]=ss2tf(G,H,Cs,0);
y1=tf(num1,den1);
r=ones(1,101);
k=0:100;
y=filter(num1,den1,r);
plot(k,y,'o',k,y,'-')
grid
title('Posicion del bloque y(k)=0.1')
xlabel('k')
ylabel('y(k)=0.1')

El muestreo de la señal es casi fiel a la original donde se puede considerar que el tiempo
T=0.1seg es óptimo en cada instante del movimiento del bloque por efecto del amortiguador y
resorte unido a este. Los puntos nos representan como la imagen es muestreada ante un
impulso escalón sin producir aleasing o solapamiento entre un punto a otro. La imagen es
reconstruida totalmente a partir de los 100 puntos establecidos en el filtro de que viene a
partir de la F.T
Problema de Transformada Z

En este sistema dinámico que consta de un carrito con un péndulo simple que oscilara
mientras el coche este en movimiento pero el ángulo estará dado por θ que por ser un
péndulo simple el ángulo es menor a 8º pero adquirirá la aceleración del coche en
movimiento. Por lo cual se debe obtener primero el modelo de espacio de estado en tiempo
continuo y luego se discretizara el sistema contando puntos o instantes en el cual el sistema
está en movimiento es decir puntos para muestrear el sistema ante una respuesta escalon y
verificar la estabilidad en el sistema. El periodo de muestreo de la señal es tomada cada T=0.1s
donde 𝑀, 𝑚, 𝑙 estarán determinados por los valores

𝑀 = 2𝑘𝑔, 𝑚 = 0.1𝑘𝑔, 𝑙 = 0.5𝑚

Se define el ángulo de la varilla desde la línea vertical como θ (Como se desea que el péndulo
invertido permanezca vertical, el ángulo es pequeño como ya se había nombrado
anteriormente, por ello se trabaja con su centro de gravedad 𝑋, 𝑍

𝑋 = 𝑥 + 𝑙𝑠𝑒𝑛𝜃
𝑍 = 𝑙𝑐𝑜𝑠𝜃
(𝑀 + 𝑚)𝑥̇ − 𝑚𝑙(𝑠𝑒𝑛𝜃)𝜃̇ 2 + 𝑚𝑙(𝑐𝑜𝑠𝜃)𝜃̇ = 𝑢
La ecuación del movimiento de la masa m en la dirección z no se puede escribir sin considerar
el movimiento de la masa m en la dirección x. Por lo que el movimiento de la masa m en la
dirección z se considera el movimiento rotacional de la masa m alrderdor del punto P. Al
aplicar movimiento rotacional se obtiene

𝑑2𝑋 𝑑2𝑍
[𝑚 𝑙𝑐𝑜𝑠𝜃 − 𝑚 𝑙𝑠𝑒𝑛𝜃 = 𝑚𝑔𝑙𝑠𝑒𝑛𝜃]
𝑑𝑡 2 𝑑𝑡 2
Luego que se ha encontrado el espacio de estado se procederá a ubicar instantes con un
tiempo T=0.1 s y para ello el sistema se debe discretizar el sistema y por medio del comando
c2d(convierte de modelo continuo a discreto)
clc
clear all
close all
%El diagrama de estado dela funcion anterior del diagrama
bloque-pendulo
A=[0 1 0 0
20.601 0 0 0
0 0 0 1
-0.4905 0 0 0];
B=[0;-1;0;0.5];
C=[0 0 1 0];
D=[0];
[G,H]=c2d(A,B,0.1)
%Matrices G1,H1,Q y R
G1=[G zeros(4,1);-C*G 1]
H1=[H;-C*H]
Q=[10 0 0 0 0
0 1 0 0 0
0 0 100 0 0
0 0 1 0 0
0 0 0 0 1]
R=[1]
%Se comienza a resolver la ecuacion de Riccati en estado
estacionario
%para P cuando P=diag(0,4)
P=diag(0,4);
P=Q+G1'*P*G1-G1'*P*H1*inv(R+H1'*P*H1)*H1'*P*G1;
%Se revisa la solucion de P cada 20 interacciones
%La iteración se detiene cuando P permanece constante
for i=1:20;
P=Q+G1'*P*G1-G1'*P*H1*inv(R+H1'*P*H1)*H1'*P*G1;
end
%Segunda iteración
for i=1:20;
P=Q+G1'*P*G1-G1'*P*H1*inv(R+H1'*P*H1)*H1'*P*G1
end
Probando con la variable 𝑓𝑜𝑟 desde 𝑖 = 1: 20 observaremos que se alcanza la estabilidad
cuando se llega una prueba infinita es decir un bucle con lo cual el sistema se volverá estable
en un diagrama de espacio de estado

%Si ponemos una matriz de realimentacion


KK=inv(R+H1'*P*H1)*H1'*P*G1
K=[KK(1) KK(2) KK(3) KK(4)]
KI=-KK(5)
%Se establece las matrices ante un escalon unitario y(k)
%La posición del carro
GG=[G-H*K H*KI;-C*G+C*H*K 1-C*H*KI]
HH=[0;0;0;0;1];
CC=[0 0 1 0 0];
FF=[1 0 0 0 0];
JJ=[0 1 0 0 0];
LL=[0 0 0 1 0];
MM=[0 0 0 0 1];
DD=[0];
[num,den]=ss2tf(GG,HH,CC,DD)
F1=tf(num,den)
%Se multiplica por un escalón unitario
r=ones(1,101);
axis([0 100 -0.2 1.2]);
k=0:100;
y=filter(num,den,r);
figure(1)
plot(k,y,'o',k,y,'-')
grid
title('Posicion de carro:y(k)=x3(k)')
xlabel('k')
ylabel('y(k)=x3(k)')
%Para obtener x1(k) las ecuaciones en el espacio de estado
%se convierten a una funcion de transferencia
[num1,den1]=ss2tf(GG,HH,FF,DD);
%Se introduce el comando para obtener la respuesta escalon
axis([0 100 -0.1 0.2]);
x1=filter(num1,den1,r);
figure(2)
plot(k,x1,'o',k,x1,'-')
grid
title('Desplazamiento angular teta:x1(k)')
xlabel('k')
ylabel('x1(k)')
%Para obtener en x2(k)las ecuaciones de estado las
%cuales se volveran a la funcion de transferencia X2(z)/R(z)
[num2,den2]=ss2tf(GG,HH,JJ,DD);
%Se introduce el comando para obtener la respuesta escalon
axis([0 100 -0.1 0.5]);
x2=filter(num2,den2,r);
figure(3)
plot(k,x2,'o',k,x2,'-')
grid
title('Desplazamiento angular teta:x2(k)')
xlabel('k')
ylabel('x2(k)')

%cuales se volveran a la funcion de transferencia X4(z)/R(z)


[num4,den4]=ss2tf(GG,HH,LL,DD);
%Se introduce el comando para obtener la respuesta escalón
axis([0 100 -0.5 1]);
x4=filter(num4,den4,r);
figure(4)
plot(k,x4,'o',k,x4,'-')
grid
title('Desplazamiento
angular teta:x4(k)')
xlabel('k')
ylabel('x4(k)')

You might also like