Está en la página 1de 8

PRÁCTICA 5

MODELACIÓN DE SISTEMAS NO LINEALES


Nombre: Jairo Fernandez
OBJETIVOS
1. Linealizar sistemas no lineales invariantes en el tiempo (NLIT).

2. Emplear Simulink para la simulación de sistemas no lineales.

3. Utilizar los diferentes comandos que proporciona MATLAB para linealizar sistemas no lineales invariantes en
el tiempo.

Modelacion Pendulo Rotativo Invertido

Datos de la planta

Mp=0.027;
lp=0.153;
r=0.0826;
g=9.81;
Jeq=1.23e-4;
Jp=1.1e-4;
Rm=3.3;
kt=0.028;
km=kt;

X0=[0, pi/30, 0,0] % condiciones iniciakes

X0 = 1×4
0 0.1047 0 0

Linealización del sistema


Ecuaciones del sistema

syms theta d1theta alpha d1alpha Vm


% Ecuaciones
Toutput=(kt*(Vm-km*d1theta))/Rm;

den=(Mp*r^2*sin(theta)^2-Jeq-Mp*r^2)*Jp-Mp*lp^2*Jeq;

num11=Mp^2*g*lp^2*r*cos(theta)*alpha;
num12=Jp*Mp*r^2*cos(theta)*sin(theta)*(d1theta^2);
num13=Jp*Toutput+Mp*lp^2*Toutput;

num21=lp*Mp*(-Jeq*g+Mp*r^2*(sin(theta)^2)*g-Mp*r^2*g)*alpha;

1
num22=lp*Mp*r*sin(theta)*Jeq*(d1theta^2);
num23=lp*Mp*r*Toutput*cos(theta);

% Vector de Estados
x=[theta; alpha; d1theta; d1alpha]

x =

dx1=d1theta;
dx2=d1alpha;
dx3=(-num11-num12-num13)/den;
dx4=(-num21-num22+num23)/den;

% Representación en espacios de estado no lineal


xdot=[dx1; dx2; dx3; dx4]

xdot =

% Modelo Linealizado
A1=jacobian(xdot,x)

A1 =

2
B1=diff(xdot,Vm)

B1 =

Evaluación en el punto de equilibrio

theta=0; alpha=0; d1theta=0; d1alpha=0; Vm=0;


A=eval(A1)

A = 4×4
0 0 1.0000 0
0 0 0 1.0000
0 123.9792 -1.5806 0
0 -111.6234 0.7268 0

B=eval(B1)

B = 4×1

3
0
0
56.4498
-25.9578

C=[0 1 0 0];
D=[0];
Gm1=ss(A,B,C,D)

Gm1 =

A =
x1 x2 x3 x4
x1 0 0 1 0
x2 0 0 0 1
x3 0 124 -1.581 0
x4 0 -111.6 0.7268 0

B =
u1
x1 0
x2 0
x3 56.45
x4 -25.96

C =
x1 x2 x3 x4
y1 0 1 0 0

D =
u1
y1 0

Continuous-time state-space model.

%impulse(Gm1,X0)

Signals=out.linea.signals.values;
Signal1=Signals(:,1);
Signal2=Signals(:,2);
plot(out.linea.time,Signal1, 'black')
title('NO LINEALIZADO')
xlabel('Tiempo [s]')
ylabel('Posición [rad/s]')
grid on;

4
plot(out.linea.time,Signal2, 'b')
title('LINEALIZADO')
xlabel('Tiempo [s]')
ylabel('Posición [rad/s]')
grid on;

5
Modelo Lineal desde simulink

[Ams,Bms,Cms,Dms]=linmod('Pendulo_modelo')

Ams = 12×12
0 0 0 1.0000 0 0 0 0
76.8757 -1.6244 -105.5647 0 0 0 0 0
0 1.0000 0 0 0 0 0 0
-73.7128 1.1775 55.5574 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1.0000
0 0 0 0 0 0 0 0
0 0 0 0 0 0 123.9792 -1.5806
0 0 0 0 0 0 -111.6234 0.7268
0 0 0 0 123.9792 0 0 0

Bms = 12×1
0
64.7837
0
-16.0957
0
0
0
0
0
0

Cms = 1×12

6
1 0 0 0 0 0 0 0 0 0 0 0
Dms = 0

Gpend=ss(Ams,Bms,Cms,Dms)

Gpend =

A =
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12
x1 0 0 0 1 0 0 0 0 0 0 0 0
x2 76.88 -1.624 -105.6 0 0 0 0 0 0 0 0 0
x3 0 1 0 0 0 0 0 0 0 0 0 0
x4 -73.71 1.177 55.56 0 0 0 0 0 0 0 0 0
x5 0 0 0 0 0 0 0 0 0 0 0 1
x6 0 0 0 0 0 0 0 1 0 0 0 0
x7 0 0 0 0 0 0 0 0 1 0 0 0
x8 0 0 0 0 0 0 124 -1.581 0 0 0 0
x9 0 0 0 0 0 0 -111.6 0.7268 0 0 0 0
x10 0 0 0 0 124 0 0 0 0 -1.581 0 0
x11 0 0 0 0 0 0 0 0 0 1 0 0
x12 0 0 0 0 -111.6 0 0 0 0 0.7268 0 0

B =
u1
x1 0
x2 64.78
x3 0
x4 -16.1
x5 0
x6 0
x7 0
x8 0
x9 0
x10 0
x11 0
x12 0

C =
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12
y1 1 0 0 0 0 0 0 0 0 0 0 0

D =
u1
y1 0

Continuous-time state-space model.

impulse(Gpend)

7
8

También podría gustarte