Está en la página 1de 13

Pr actica 2

Simulaci on de sistemas no lineales en MATLABTM& SimulinkTM


2.1. Objetivo

Esta pr actica permitir a que el estudiante se familiarice con el empleo de las herramientas de c omputo disponibles en MATLAB y Simulink, para la simulaci on de sistemas de mayor orden.

2.2.

Introducci on

Para la realizaci on de esta pr actica es necesario que tenga cierto conocimiento del paquete MATLABTM y SimulinkTM , en particular a lo referente a la 1. Creaci on de variables y asignaci on de valores, 2. Empleo de variables simb olicas, 3. Empleo de SimulinkTM para simulaci on de sistemas lineales.

2.3.

Cuestionario previo

Conteste las preguntas indicadas, previo a realizar la pr actica

2.

SIMULACION DE SISTEMAS NO LINEALES EN MATLABTM & SIMULINKTM

1. Reporte el modelo del p endulo el astico mostrado en la Fig. ??. 2. Reporte qu e funci on llevan a cabo los comandos de Matlab[ a ) sim (Emplee help sim.) b ) plot (Emplee help plot.) c ) subplot (Emplee help subplot.) d ) getframe (Emplee help getframe) e ) movie (Emplee help movie) f ) ode45 (Emplee help ode45.)

2.4.

Desarrollo de la pr actica

Matlab y Simulink cuentan con varias formas de simular tanto sistemas lineales como no lineales. En esta pr actica nos centraremos en simular un sistema no lineal m as complejo: el p endulo con resorte, mostrado en la Fig. ??.

Figura 2.1: P endulo exible

10

2.4

Desarrollo de la pr actica

2.4.1.

Ecuaci on del p endulo exible con entrada nula

A partir de las ecuaciones de Euler-Lagrange, y al emplear como entrada la fuerza 0 (t) u(t) = con las coordenadas generalizadas de posici on q (t) = = F (t) l(t) q1 , obtenemos el modelo q2

2 mq2 0 0 m

q +

mq2 q 2 mq2 q 1 mq2 q 1 0

q +

mgq2 sin q1 mg cos q1 + k (q2 l0 )

0 F

(2.1)

donde m es la masa del p endulo, l la distancia del p endulo al eje, el angulo entre el p endulo y la vertical, g la aceleraci on de la gravedad. El objetivo en esta primer parte es determinar el modelo en variables de estado del sistema indicado en forma simb olica dentro de MatlabTM para emplearlo m as adelante. N otese que este es un sistema subactuado, ya que el n umero de entradas es menor al n umero de variables generalizadas. Ejercicio 2.1. Dentro de Matlab, ejecute el comando para declarar variables simb olicas y determinar el modelo en variables de estado en la forma = x f1 (x, u) f2 (x, u) f3 (x, u) f4 (x, u) x1 x2 x3 x4 = q q (2.2)

, x =

Para ello, es necesario crear las variables simb olicas de las constantes y variables del sistema. Teclee los siguientes comandos, para crear las variables simb olicas de m, k , l, l0 , g , x1 , x2 , x3 , x4 y F :
>> syms m k l l0 g x1 x2 x3 x4 b1 b2 u F

A continuaci on, escribimos las funciones correspondientes al modelo en ecuaciones de Euler-Lagrange denidiendo las matrices correspondientes M (q ), C (q, q ), D (q ), G(q ) del modelo M (q ) q + C (q, q ) + D (q ) + G(q ) = u que para el caso particular analizado son: (2.3)

11

2.

SIMULACION DE SISTEMAS NO LINEALES EN MATLABTM & SIMULINKTM

M (q ) = C (q, q ) = G( q ) = D(q ) =

2 mq2 0 0 m

mq2 q 2 mq2 q 1 mq2 q 1 0 mgq2 sin q1 mg cos q2 + k (q2 l0 ) b1 q 1 b2 q 2 x1 x2 y

El objetivo nal es obtener el modelo en variables de estado con q = q =


>> >> >> >> >>

x3 x4

, por lo que reemplazamos y capturamos las matrices en MatlabTM :

M=[m*x2^2 , 0;0 , m]; C=[m*x2*x4, m*x2*x3; -m*x2*x3, 0]; G=[m*g*x2*sin(x1); m*g*cos(x1)+k*(x2-l0)]; %Note que es l0 (ele-cero), no 10 (diez) D=[b1*x3;b2*x4]; u=[0;F];

Calculamos el modelo en variables de estado = x q q = x3 x4 = M 1 (q )(C (q, q )q D (q ) G(q ) + u) f1 (x, u) f2 (x, u) f3 (x, u) f4 (x, u) (2.4)

Para ello empleamos el c odigo


>> >> >> >> >> >> f1=x3 f2=x4 f34=inv(M)*(-C*[x3;x4]-D-G+u) %Calcula d2/dt(q) como f3 y f4 en conjunto f3=f34(1) %Separa cada c alculo f4=f34(2) f=[f1;f2;f3;f4] %Une todas las funciones en una sola funci on para dx/dt=f(x,u)

lo cual dene las funciones empleadas del sistema (note que para obtener el resultado se omite el punto y coma (;) del nal del comando). Para visualizar f acilmente las funciones, emplee el comando collect para que agrupe los t erminos comunes, y a continuaci on el comando pretty para visualizarlos m as c omodamente:
>> pretty(f)

12

2.4

Desarrollo de la pr actica

Para simular directamente la soluci on de un sistema no lineal en Matlab emplearemos la funci on ode45, la cual permite no solo simular sistemas lineales, sino adem as simular sistemas no lineales donde la entrada sea conocida. Sin embargo, para emplearla se requiere del manejo de funciones y archivos tipo .m para emplearlos. Para ello, consideraremos los par ametros siguientes: m l0 g k F b1 b2 = = = = = = = 0.5 0.1 9.81 10 0; 0.1; 0.5;

Por favor siga con cuidado las siguientes instrucciones. En primer lugar, ejecute Simulink desde la ventana de comandos de Matlab:
>> simulink

Figura 2.2: Ventana de Simulink

Abra un nuevo modelo de Simulink al hacer clic en el cono New model. Para realizar la simulaci on del sistema no lineal en Simulink, elija el bloque Matlab function, situada en User-Defined Functions. Arrastre el bloque al nuevo modelo y haga doble clic en el cono, el cual abre la ventana del editor de la funci on (se muestra la versi on 2013 de Matlab).

13

2.

SIMULACION DE SISTEMAS NO LINEALES EN MATLABTM & SIMULINKTM

Este tipo de funciones permite que el usuario dena la entrada y salida del bloque de simulaci on. Para solucionar el sistema x = f (x, u) realizaremos la programaci on de la dx funci on f (x, u) cuya salida sea dt , cuya integral ser a realimentada a la propia funci on. Dentro de la ventana, teclee el siguiente c odigo, el cual crear a la funci on que podr a resolver num ericamente mediante ode45 en Matlab. Para las funciones f1 a la f4 puede auxiliarse copiando y pegando el c odigo que resulte de teclear f para cada rengl on. Tenga cuidado en que esta funci on est e dentro de un directorio del path o directorios de b usqueda de Matlab:
function dx=TACprac2PendElast(x,u) x1=x(1); %Posici on angular del p endulo x2=x(2); %Longitud del p endulo x3=x(3); %Velocidad angular x4=x(4); %Velocidad longitudinal de la masa %Par ametros m=0.5; l0=0.1; g=9.8; k=10; b1=0.01;b2=0.5; %Funciones de dx/dt=f(x,u) f1=x3; f2=x4; f3=-(2*m*x2*x3*x4 + g*m*x2*sin(x1)+b1*x3)/(m*x2^2); f4=(m*x2*x3^2 + u + k*(l0 - x2)-b2*x4)/m; dx=[f1;f2;f3;f4]; end

Este c odigo dene las ecuaciones diferenciales que describen el comportamiento del p endulo el astico. A continuaci on, arrastre el bloque de integraci on (Integrator, en Continuous) como se indica en la gura. Haga doble clic en el integrador para denir una condici on inicial que se asigne desde el espacio de trabajo de Matlab, al escribir x0 en la casilla Initial condition.

14

2.4

Desarrollo de la pr actica

Dena una entrada constante nula u(t) = 0, mediante el bloque Constant, situada en Sources. Dena su valor en 0, haciendo doble clic en este bloque y deniendo el valor de la constante en 0 en el campo Constant Value.

Figura 2.3: Simulaci on del p endulo exible en Simulink

Para visualizar el resultado de la simulaci on, emplee el bloque Scope del campo Sinks. Para visualizar por separado cada uno de los estados, arrastre el bloque demux del campo Signal Routing. Haga doble clic en el mismo y en el campo Number of Outputs escriba 4, para separar las se nales generadas del simulador y gracarlas en el visor. Para visualizarlas por separado en el visor, haga doble clic en el visor, presione

15

2.

SIMULACION DE SISTEMAS NO LINEALES EN MATLABTM & SIMULINKTM

el bot on Parameters y cambie el n umero de ejes en Number of Axes a 4.

Establezca la condici on inicial en el espacio de trabajo en


T

x= mediante el c odigo

q1 (0) q2 (0) q 1 (0) q 2 (0)

20 0,15 0 0

>> x0=[20*pi/180, 0.15, 0, 0] x0 = 0.3491 0.1500 0 0

(Note que la operaci on 20*pi/180 convierte grados a radianes.) Inicie la simulaci on. Deber a obtener un gr aco similar al de la gura siguiente, y guarde el archivo con el nombre TACPrac2.: Ejercicio 2.2. Para gracar en Matlab los resultados de simulaci on, emplee el bloque To Workspace en el modelo de Simulink anterior. Arrastre dos bloques al modelo de Simulink y cambie el nombre de cada uno a q1 y q2 al hacer doble clic en cada bloque. Igualmente, modique el campo Sample Time (tiempo de muestreo) por Ts en cada bloque y el campo Save Format a Array. Este valor ser a asignado en el espacio de trabajo de Matlab. Para poder gracar la respuesta del sistema es necesario obtener el vector de tiempo de la simulaci on. Para ello, arrastre el bloque Clock, situada en Sources. As como en el caso anterior, arrastre un nuevo bloque de To Workspace, cambie el nombre a

16

2.4

Desarrollo de la pr actica

Figura 2.4: Ventana de Simulink

Figura 2.5: Ventana de Simulink

17

2.

SIMULACION DE SISTEMAS NO LINEALES EN MATLABTM & SIMULINKTM

tsim y el campo de tiempo de muestreo (Sample Time) a Ts. Conecte los bloques en el archivo de simulaci on como se muestra en la Figura 2.6.

Figura 2.6: Obtenci on de datos de simulaci on

Con el n de generar diversos gr acos para el sistema, genere un archivo .m donde pueda modicar los diversos valores de simulaci on. Para ello, en el espacio de trabajo teclee
>> edit

Esto abrir a una ventana del editor. Teclee el siguiente c odigo:


Ts=0.1; %Definici on del tiempo de muestreo para graficar x0=[20*pi/180,0.15,0,0]; %Condici on inicial sim(TACPrac2); %Simulaci on del arcihvo de Simulink %Gr aficos subplot(2,1,1); plot(tsim,q1);ylabel(q_1);grid on; subplot(2,1,2); plot(tsim,q2);ylabel(q_2);grid on; xlabel(t[s]);

Guarde el archivo con el nombre TACPrac2M.m y ejec utelo. Obtendr a un gr aco como el mostrado en la Figura 2.7. Ejercicio 2.3. En esta u ltima parte de la pr actica generar a una animaci on del sistema del p endulo, indicando la posici on de la masa m en el espacio cartesiano en Matlab,

18

2.4

Desarrollo de la pr actica

Figura 2.7: Simulaci on de q1 y q2

como se muestra en la Figura 2.8. De donde, la posici on de la masa est a descrita por x = r sin = q2 sin(q1 ), y = r cos = q2 cos(q1 ). Abra una nueva ventana del editor y teclee el siguiente c odigo:
%Simulaci on clear all; Ts=0.01; %Definici on del tiempo de muestreo para graficar x0=[20*pi/180,0.15,0,0]; %Condici on inicial sim(TACPrac2); %Simulaci on del arcihvo de Simulink %C alculo de la posici on x=q2.*sin(q1); y=-q2.*cos(q1); %Gr afico h=figure; plot(x,y);grid on;xlabel(x);ylabel(y); axis([-0.06 0.06 -0.15 0.05]); hold on; %Animaci on for i=1:length(tsim) plot(x(i),y(i),or); line([0 x(i)],[0 y(i)]); anim(i)=getframe; end

19

2.

SIMULACION DE SISTEMAS NO LINEALES EN MATLABTM & SIMULINKTM

Deje que se ejecute hasta que termine la animaci on. Para repetir la animaci on, teclee en la ventana de comandos:
>> movie(anim);

2.4.2.

Ejercicios

Los ejercicios de esta secci on deber a entregarlos a manera de reporte, indicando el c odigo empleado y las capturas de pantalla que haya obtenido de cada punto, cuando as sea el caso. Ejercicio 2.4. Repita los ejercicio de la pr actica y obtenga el gr aco para q1 y q2 para un tiempo de simulaci on t [0, 100] emplando los par ametros m = 5 l0 = 0.5 g = 9.81 k = 20 F = 0; b1 = 3; b2 = 1; 2 (0) = 0 m y la condici on inicial q1 (0) = 0 , q2 (0) = 0,6 m, q 1 (0) = 5 rad s , q s. Modique el tiempo de muestreo de la simulaci on en el gr aco Ts = 0,1 s. Ejercicio 2.5. Obtenga el modelo del p endulo doble indicado en la Figura. Emplee como coordenadas generalizadas q1 = 1 y q2 = 2 como se indican. Considere que cada uni on presenta una fricci on viscosa rotacional b1 y b2 respectivamente y que el sistema es actuado en cada articulaci on . 1. Reporte las matrices M (q ), C (q, q ), D(q ), G(q ). 2. Emplee Matlab para obtener las funciones del sistema en variables de estado x = f (x, u).

20

2.4

Desarrollo de la pr actica

Figura 2.8: Coordenadas cartesianas del p endulo exible

Figura 2.9: P endulo doble. Imagen obtenida de http://www.maths.surrey.ac.uk/ explore/michaelspages/Double.htm

21