Vous êtes sur la page 1sur 9

Introduccin a Matlab, un enfoque a la simulacin y visualizacin dinmica.

136

10.3 Creacin de Sub-Sistemas Cuando los diagramas de bloques en SIMULINK aumentan en complejidad o es necesario crear un bloque diferente a los existentes, es necesario a una simplificacin por medio de sub-sistemas. Para crear un sub-sistema, es necesario agrupar elementos ya existentes o editar directamente sobre la venta de dicho ambiente. 10.3.1 Ejemplo lineal Para crear un sistema, abordemos la solucin de la siguiente ecuacin diferencial lineal con parmetros tiempo variantes: dx (t ) = a (t ) x (t ) + u (t ) dt donde a(t)>0 es el parmetro tiempo variante, x=x(t) es la variable de estado y u=u(t) la excitacin. Lo anterior posee el siguiente diagrama SIMULINK:
1

Dibuje el diagrama y grabe su diseo en un


archivo.mdl

Selecciones agrupando mediante el mouse, el sub-sistema deseado.

El resultado es:

Para crear el subsistema, seleccione el tem sealado en el men Edit.

Escuela de Ingeniera Civil, Universidad del Bio-Bio, Septiembre del 2000

Introduccin a Matlab, un enfoque a la simulacin y visualizacin dinmica.

137

Para simular este diagrama realicemos las siguientes asignaciones:

En el generador de seales escoja una onda cuadrada de frecuencia 0.1Hz. Para el parmetros tiempo variante a(t)=1+0.2sin(t). La variable temporal es establecida mediante el bloque clock. Ahora corresponde editar directamente el subsistema y asignar propiedades.

Al hacer doble click sobre subsystems, aparece un diagrama, donde In1,In2, son las puertas de entrada y Out1 es la puerta de salida. Usted puede modificar sus nombres a variables de mayor interpretacin.

As, el diagrama final queda representado por:

Con respecto a las propiedades de este bloque destaca la prioridad de ejecucin (priority) y la funcin a ejecutar (open function). La primera es con respecto a los dems bloques y la segunda ejecuta la funcin invocada al hacer doble click sobre el sub-sistema.

Escuela de Ingeniera Civil, Universidad del Bio-Bio, Septiembre del 2000

Introduccin a Matlab, un enfoque a la simulacin y visualizacin dinmica.

138

10.4 S-Function En algunas ocasiones, los diagramas de bloques en SIMULINK no pueden implementar funciones requeridas por el usuario de manera simple o directa. Para lo anterior, SIMULINK dispone de la denominada S-Function, que incorpora un programa de archivo.m como un bloque al diagrama. 10.4.1 Descripcin de S-Function El bloque S-Function permite manejar eventos continuos, discretos o hbridos, todos simultneamente debido a su particular estructura de programacin. La S-Function, se ubica en la librera Function & Tables y se edita como sigue:

Luego el formato cabecera del archivo.m que ejecuta la S-Function es el siguiente:


function [sys, o1,..,om]=nombre(t,x,u,flag,p1,...,pn)

donde:
sys o1,...om nombre x u flag p1,...pn

Variable reservada para cada estado. Salidas de cada estado o flag. Nombre de la funcin que invoca el bloque. Estados continuos y discretos en ese orden. Excitacin o entrada al bloque Variable que identifica el estado de simulacin. Parmetros de entrada opcionales.

De tales variables, la forma de utilizar la variables flag, hace que del archivo.m posea caracterstica de S-Function. Los valores permitidos para esta variable son: Valor flag
flag=0 flag=1 flag=2 flag=3 flag=4 flag=9

Estado de Simulacin Condiciones iniciales y tamao de los parmetros. Clculo de derivadas. Actualizacin estados discretos. Clculo de salidas. Clculo del prximo intervalo de muestreo. Fin de la tarea de simulacin.

Escuela de Ingeniera Civil, Universidad del Bio-Bio, Septiembre del 2000

Introduccin a Matlab, un enfoque a la simulacin y visualizacin dinmica.

139

El orden de ejecucin de SIMULINK sobre una S-Function es el siguiente: 1 Inicializacin, 2 Clculo del prximo intervalo, 3 Clculo de las salidas, 4 Actualizacin de estados discretos e 5 Integracin. La variable sys debe ser especificada cuando la simulacin esta en el estado flag=0. Esta es un vector con la siguiente descripcin:
sys(1) sys(2) sys(3) sys(4) sys(5) sys(6)

Nmero de estados continuos. Nmero de estados discretos. Nmero de salidas. Nmero de entradas. Nmero de races discontinuas. Flag de lazos algebraicos.

10.4.2 Ejemplo no lineal Considere el oscilador de Van der Poll modificado, correspondiente a la siguiente ecuacin diferencial: d2y dy + a y2 1 +b y = u 2 dt dt x1 = y

1 = x2 x 2 = ax 2 1 x1 2 bx1 + u x

Para conocer la solucin dinmica de tal ecuacin, implementemos una S-Function, que posea como entrada un escaln ( u=u(t) ). Adems, que sea posible ingresar desde la lnea de comandos las condiciones iniciales ci (por ejemplo x0=[0.02 0] ) y las ganancias a y b (por ejemplo a=3, b=1).
1

Dibujemos el diagrama de bloques en SIMULINK como sigue:

Escuela de Ingeniera Civil, Universidad del Bio-Bio, Septiembre del 2000

Introduccin a Matlab, un enfoque a la simulacin y visualizacin dinmica.

140

2 De acuerdo al diagrama SIMULINK, se crea un archivo.m con el nombre vdp_mod.m, con una entrada u=u(t), dos salidas x1 y x2, dependiente de ci, a y b. El nmero de estados continuos es 2, estados discretos: 0, salidas: 2, entradas: 1, races y lazos: 0.

%S-Function para el oscilador de %Van der Pool modificado. function [sys,x0]=vdp_mod(t,x,u,flag,ci,a,b) switch flag case 1 sys(1)=x(2); sys(2)=a*x(2)*(1-x(1)^2) - b*x(1) + u; case 3 sys(1)=x(1); sys(2)=x(2); case 0 sys=[2,0,2,1,0,0]; x0=ci; case {2,4,9} sys=[ ]; otherwise error(['Flag desconocido=', num2str(flag)]); end; 3

Los resultados son los siguientes:

Ahora asignemos los valores de los parmetros de la S-Function.


ci=[0.02; 0]; a=1; b=1;

para u(t)=0,

La simulacin tiene los siguientes parmetros. En el algoritmo de integracin, AbsTol=1e-6, RelTol=1e-6, tspan=100. La seal escaln es de amplitud 1 en el tiempo
5.

Escuela de Ingeniera Civil, Universidad del Bio-Bio, Septiembre del 2000

Introduccin a Matlab, un enfoque a la simulacin y visualizacin dinmica.

141

10.5 Mascaras Las S-Functions o los sub-sistemas, generalmente dependen de parmetros que se asignan por la lnea de comandos de MATLAB. Esto incomoda bastante a la hora de ejecutar mltiples evaluaciones. Las mscaras proveen de una interfaz, que permite modificar directamente tales parmetros, como una propiedad del bloque enmascarado. 10.5.1 Ejemplo Para conocer como funciona la herramienta de mscara de un sub-sistema o S-Function, enmascaremos la S-function vdp_mod del ejemplo anterior. Seleccione el bloque y edite sus mascara.

La mascara, se constituye de 3 elementos: la parte visual o icono, la entrada de parmetros y la ayuda.

Antes de editar ejecute. Cada parmetro se agrega o elimina aqu.


icon=[y(:,2), y(:,3)]; save icon.mat icon

Aqu se especifica el texto y la variable que almacenar cada parmetro.

Instrucciones ejecutadas al abrir el diagrama de bloques.

Tipo de variable que almacena el parmetro.

Escuela de Ingeniera Civil, Universidad del Bio-Bio, Septiembre del 2000

Introduccin a Matlab, un enfoque a la simulacin y visualizacin dinmica.

142

Se escribe el cdigo necesario para dibujar la cara de la mscara. Por ejemplo texto, lneas, polgonos, etc.

Aqu se comenta de qu se trata este bloque, como por ejemplo la funcin que implementa. Adems alguna ayuda en el ingreso de parmetros.

Finalmente despus de agregar un poco de color, texto y cambio de parmetros el diagrama queda dibujado por.

De esta manera, podemos modificar cada uno de los parmetros en forma directa y obtener en forma simple muchas evaluaciones sin recurrir a la lnea de comandos.

Escuela de Ingeniera Civil, Universidad del Bio-Bio, Septiembre del 2000

Introduccin a Matlab, un enfoque a la simulacin y visualizacin dinmica.

143

10.6 Ejemplo de animacin Corresponde ahora simular una ecuacin diferencial ordinaria de segundo orden, equivalente a una estructura ideal de nico grado de libertad, como la de la figura: y d y dy 2 + 2 n + n y = u 2 dt dt x1 = y
2

1 = x2 x 2 = 2 n x 2 n 2 x1 u x u

El diagrama SIMULINK equivalente es:

En este diagrama de bloques, los parmetros a ingresar son T, , mag. Tales parmetros son inicializados por un bloque, que consiste en un sub-sistema que ejecuta en su opcin open function mag=1; T=0.5; chi=0.02. Adems, ste tiene una mscara con la opcin Drawing commands en
disp('Inicializacion: mag, chi, T').

Para la simulacin se carga el archivo sismo.mat, que en su primera columna posee el tiempo y en la segunda la magnitud normalizada del sismo (recuerde que siempre la primera fila debe ser el tiempo). El diagrama de bloques establece apropiadamente la ecuacin diferencial de segundo orden, donde cada Scope permite observar las variables de inters. Adems, la simulacin ejecuta la S-Function columna enmascarada como animacin, que tiene como seal de entrada la deformacin x y como parmetro el tiempo de muestreo ts. A continuacin se describe la S-Function que permite animar la deformacin de la columna.

Escuela de Ingeniera Civil, Universidad del Bio-Bio, Septiembre del 2000

Introduccin a Matlab, un enfoque a la simulacin y visualizacin dinmica.

144

function [sys,x0]=columna(t,x,u,flag,ts); L=2; global canim switch flag case 0 animinit('Animacion'); [flag,canim] = figflag('Animacion'); axis([-2 2 -0.5*L 1.5*L]); x=[0 0]; y=[0 L]; hp(1)=line('Xdata',x, 'Ydata', y, ... 'LineStyle','-', 'LineWidth', 2, ... 'EraseMode','background','Color', [0 0 1]); hp(2)=line('Xdata',0,'Ydata',L,'Marker', .',... 'MarkerSize',40,'EraseMode','back',... 'Color', [1 0 0]); hp(3)=line('Xdata',[-0.5 0.5],'Ydata', [0 0], ... 'LineStyle','-', 'LineWidth', 2,... 'Color', [0 0 0]); set(gca,'DataAspectRatio',[1 1 1]); set(gca,'UserData',hp); sys=[0 0 0 2 0 0]; x0=[ ]; case 2 if any(get(0,'Children')==canim), if strcmp(get(canim,'Name'),'Animacion'), set(0,'currentfigure',canim); hp=get(gca,'UserData'); x=[0 u(1)]; y=[0 L*cos(asin(u(1)/L))]; set(hp(1),'XData',x,'YData',y); set(hp(2),'XData',x(2),'YData',y(2)); drawnow; end end sys=[ ];

case 4 ns = t/ts; sys = (1 + floor(ns + 1e-13*(1+ns)))*ts; case {1,3,9} sys=[ ]; otherwise error(['Flag desconocido=', num2str(flag)]); end;

Deformacin:

Escuela de Ingeniera Civil, Universidad del Bio-Bio, Septiembre del 2000

Vous aimerez peut-être aussi