Ataurima-Arellano, M. (2014) Introducción Al Modelamiento de Sistemas Dinámicos Con Simulink
Ataurima-Arellano, M. (2014) Introducción Al Modelamiento de Sistemas Dinámicos Con Simulink
Ataurima-Arellano, M. (2014) Introducción Al Modelamiento de Sistemas Dinámicos Con Simulink
24 de febrero de 2014
ndice
1. Simulink 1.1. Diseo basado en modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Caractersticas Principales de Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Principios de Operacin y Gestin de Simulink 2.1. Construccin de un Diagrama de Bloques Simulink . . . . . . . . . . 2.2. Parametrizacin de los Bloques Simulink y de la Simulacin . . . . . 2.2.1. Parametrizacin de los Bloques . . . . . . . . . . . . . . . . 2.2.2. Parametrizacin de Simulacin (Parmetros Generales) . . . 3. Solucin de Ecuaciones Diferenciales con Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 6 7 13 25 25 41 54
1.
Simulink
Es un entorno de diagramas de bloque para la simulacin multidominio y el diseo basado en modelos . Admite el diseo y la simulacin a nivel de sistema, la generacin automtica de cdigo y la prueba y vericacin continuas de los sistemas embebidos. Simulink ofrece un editor grco, bibliotecas de bloques personalizables y un conjunto de solvers, para modelar y simular sistemas dinmicos. Se integra con MATLAB; sin embargo, su cdigo fuente no es abierto.
1.1.
Los sistemas dinmicos continuos se describen por ecuaciones diferenciales; por lo tanto, cuando se describe el sistema con un diagrama de bloques y se simula la reaccin del sistema a una seal de entrada, se est buscando la solucin numrica de la ecuacin diferencial en la que se basa el sistema. Toda ecuacin diferencial que se desee resolver numricamente con Simulink, deber ser convertida en un diagrama de bloques. OBSERVACIN: En este nivel introductorio nos limitaremos a un tema central, la solucin numrica de simples ecuaciones diferenciales.
1.2.
2.
1. Desde la Ventana de Comandos, digitamos el comando >> simulink aperturndose a continuacin el Simulink Library Browser.
El Simulink Library Brower (SLB) visualiza las bibliotecas de bloques disponibles (segn la instalacin) organizadas en grupos funcionales, los cuales a su vez pueden contener subgrupos.
Por defecto, el SLB se posiciona en la biblioteca Simulink, la cual contiene: La biblioteca Sources, conteniendo bloques para la produccin de seales (funciones):
La biblioteca Continuous, conteniendo bloques bsicos para el tratamiendo de Seales en tiempo contnuo.
10
2. Si contamos con un archivo modelo, por ejemplo lowpass_filter.mdl, usaremos el comando >> open_system(lowpass_filter.mdl) cargndose en memoria y visualizndose grcamente el modelo Simulink del sistema dinmico que representa.
11
3. Si se desea solo trabajar con la biblioteca Simulink, usaremos el comando >> open_system(simulink.mdl) apareciendo una ventana en la cual los smbolos para las diferentes clases de bloques de funciones son solo visulizadas en forma de conos.
12
2.1.
13
Inmediatamente se visualizar el entorno de trabajo para la creacin del modelo Simulink (*.mdl)
Los modelos (diagramas de bloques) ya existentes pueden ser abiertos bajo sus nombres de archivo seleccionando la opcin File | Open. OBSERVACIN: Es recomendable que una ventana vaca sea guardada inmediatamente con algn nombre de archivo adecuado como un archio mdl (mdl=model) usando la opcin File|Save As.
EXPOSITOR: Miguel Ataurima Arellano 14 [email protected]
EJEMPLO: Crear un modelo con los bloques que permitan gracar una seal senoidal y obtenga su integral. Para esto realizaremos los siguientes pasos: 1. Iniciamos Simulink 2. Creamos un Nuevo Modelo 3. Guardamos el nuevo modelo con el nombre de archivo s_test1.mdl 4. Aadir el bloque Sine Wave que permitir simular la seal senoidal Para esto, a partir del SLB abrimos la biblioteca de bloques Simulink (visualizada por defecto), nos dirigimos a la subbiblioteca Sources y nalmente con el mouse arrastramos el bloque Sine Wave hacia el modelo s_test1. (OPCIONAL) Si no se desea usar el nombre sine wave, entonces se puede dar clic con el mouse en la lnea de texto sine wave y editar el nombre con el teclado. De esta manera renombramos el bloque como Fuente.
15
16
5. Aadir el bloque Integrator que permita integrar la seal de salida del bloque Fuente Para esto, a partir del SLB abrimos la biblioteca de funciones Continous. Arrastramos el bloque Integrator a partir de esta biblioteca a la ventana de s_test1 y usando el mouse conectamos la salida del bloque Fuente a la entrada del bloque Integrator . Al inicio la habilidad para hacer la conexin toma algo de prctica.
17
NOTA: Es siempre mejor dibujar la lnea de conexin en sentido opuesto a la direccin de propagacin de la seal desde la entrada del bloque objetivo haca la salida del bloque fuente; esto es, desde el Integrador hacia la Seal Fuente en este ejemplo. en el bloque Integrator, esta relacionada con la transformada NOTA: Obseve que la entrada 1 s de Laplace de la integracin. Muchos de los bloques de funciones lineales estn caracterizados por la transformada de Laplace o la Transformada Z (la contraparte discreta de la transformada de Laplace).
18
6. Extender el sistema de prueba s_test1 de tal manera que la seal senoidal y su integral puedan ser vistas en una nica ventana. Para hacer esto: a) Elegimos el bloque Simulink|Signal Routing|Mux y lo aadimos al sistema. b ) Elegimos el bloque Simulink|Sinks|Scope y lo aadimos al sistema.
19
c ) Luego, realizamos las siguientes interconexiones: 1) La salida del bloque Seal Fuente con la entrada del bloque Integrator, 2) La salida del bloque Integrator con la primera entrada del bloque Mux, y 3) La salida del bloque Mux con la entrada del bloque Scope.
20
NOTA: Conexin entre bloques (Interconexin: Bloque-Bloque) El puntero del mouse posee el aspecto cotidiando de una echa (seleccin normal). Cuando se desea hacer una interconexin de bloques, el puntero del mouse debe ser dirigido hacia alguno de los puertos de entrada o salida de algun bloque Simulink y slo cuando cambia su aspecto al de una cruz (seleccin precisa), es que cualquier evento (clic izquierdo, clic derecho, doble clic, etc.) que se d en ese instante estar asociado a dicho puerto de entrada o salida. Para realizar una conexin en Simulink lo que se debe hacer es dirigir el mouse haca algn puerto (de entrada o salida) de algn bloque de inters, constantar que el puntero del mouse adopte la forma de una cruz, y en se instante dar clic izquierdo del mouse y sin dejar de presionar el botn izquierdo dirigir el puntero hacia el puerto (de entrada o salida) o alguna seal (lnea de interconexin), con quien deseamos establecer una nueva interconexin, durante este proceso la lnea de interconexin (incompleta an) se mostrar con guiones rojos (lo cual indica que la conexin aun no esta terminada o no es reconocida) y slo cuando se muestre como una lnea negra continua es que la conexin ya es reconocida y recin podemos soltar el botn izquierdo del mouse para denir la nueva interconexin.
21
Tomando en cuenta la nota anterior, procedemos a realizar las tres interconexiones solicitadas
22
d ) Finalmente, pasamos la seal de salida del bloque Fuente a la segunda entrada del bloque Mux. NOTA: Paso de una seal a un bloque (Interconexin: Seal-Bloque) Slo cuando se desea que una seal de salida transmitida por medio de una lnea de inerconexin hacia otro bloque destino, sea pasada (sin que se deje de seguir enviando la misma seal hacia el bloque al que originalmente llega la seal) a un nuevo bloque destino, es que tenemos que desarrollar la conexin a partir del puerto de entrada del nuevo bloque destino hacia algn punto de la lnea de interconexin de donde queremos obtener la seal.
23
Tomando en cuenta la nota anterior, procedemos a realizar las la interconexin del segundo puerto de entrada del bloque Mux con algn punto sobre la lnea (portadora de la seal) que conecta los bloques Seal Fuente e Integrator
24
2.2.
2.2.1.
Para asignar valores a los parmetros de cada bloque, deberemos de abrir la lista de parmetros del bloque dndo doble clic en el correspondiente smbolo del bloque.
25
EJEMPLO: Crear un modelo con los bloques que permitan gracar una seal senoidal y obtenga su integral. Para esto realizaremos los siguientes pasos: 1. Abra la lista de parmetros del bloque Mux y constante que: a) El parmetro Number of inputs esta predenido en el valor 2. b ) El parmetro Display Options esta predenido en la opcin bar.
26
y put)
2. Abra la lista de parmetros del bloque Fuente (Sine Wave) e identique sus valores por defecto
TIPO: Basado en el tiempo TIPO: Basado en la muestra
y(t )
A sin( t
y(t )
A sin(2 (k
o) / p)
A b
A b p o
27
Luego, modique los valores de los siguientes parmetros Sine type: Time based Amplitude: 2 Frequency (rad/sec): 2*pi Phase (rad): pi/4 Los valores de los restantes parmetros quedan inalterados.
28
3. Abra la lista de parmetros del bloque Integrator e identique sus valores por defecto.
Smbolo del Bloque Integrator
y(t )
1 s
y(t0 )
y(t )
dy
y( )d y( )d
y(t )
y(t0 )
y(t )
y(t0 )
t t0
y( )d
donde
29
utilizando la notacin de los manuales de Simulink, hacemos u (t) = y (t), quedando como ecuacin del bloque
t
y (t) =
t0
u ( ) d + y (t0 )
En este caso, dejaremos todos los parmetros con sus valores por defecto. Ntese que por defecto la condicin inicial es y (t0 ) = 0.
30
4. Abra la lista de parmetros del bloque Scope e identique sus valores por defecto. Para acceder a los parmetros del bloque Scope deberemos en primer lugar, dar doble clic en el bloque Scope y luego dar clic en el botn Parameters. Los parmetros se visualizarn a continuacin distribuidos en tres paneles General, History y Style. En la siguiente gura mostramos solo dos paneles.
31
32
En la pestaa General, se presentan dos paneles Axes, en donde se puede especicar en la propiedad Number of axes el nmero de entradas (ejes) que tendr el bloque Scope (por defecto, 1), el rango de tiempo en la propiedad Time Range, y otras propiedades mas que sern detalladas en su momento. Sampling, ser detallada ms adelante. En la pestaa History, se presentan dos casillas de vericacin: Limit data points to last (por defecto activada) restringe la cantidad de puntos (observaciones de la muestra total) que se han de gracar en el bloque Scope a un valor determinado (5000 por defecto). En caso nuestra simulacin exceda del lmite solo se gracar la ltima parte tal que no exceda del maximo. En caso no deseemos esta restriccin simplemente desactivamos la casilla. Save data to workspace (por defecto desactivada) nos brinda la posibilidad de que la seal de lectura del bloque Scope sea almacenada directamente como una variable de MATLAB. Para lo cual se deber de activar e ingresar un nombre para la variable en la propiedad Variable name y especicar uno de los posibles formatos de escritura: Estructura con tiempo (por defecto), Estructura y Arreglo.
33
NOTA: La visualizacin de la seal en el bloque Scope es congurable solo despus de la simulacin a travs de los botones de la barra de herramientas. Como el Scope no se abre automticamente despus de la simulacin, ste debe ser abierto manualmente (despus de la simulacin). Ahora, modique los valores de los parmetros de la pestaa History: Limit data points to last: Desactivado Save data to workspace: Activado Variable Name: S_test1_signals Format: Array
34
5. Aadir anotaciones al modelo Consiste en aadir texto de manera libre en el modelo de tal forma que podamos describirlo, esto es, colocar un ttulo, sus detalles de su creacin (autor, ltima fecha de modicacin, etc.), etc. Es el equivalente a aadir comentarios (documentar) a un cdigo fuente. Para lograr esto bastar con dar doble clic en la parte libre del modelo donde sea necesario insertar texto, y proceder a redactarlo. Por ejemplo, aadamos en el centro de la parte superior el ttulo Ejemplo de un simple sistema Simulink, y en el centro de la parte inferior datos de la fecha de creacin y el autor.
35
Ambos textos son editables, se puede arrastar con el mouse hacia alguna nueva posicin deseada, pueden ser editados dndoles doble clic, y se le pueden especicar propiedades dndoles clic derecho y eligiendo la opcin Properties.
EXPOSITOR: Miguel Ataurima Arellano 36 [email protected]
6. Etiquetar las seales Para ello bastar con dar doble clic sobre las echas portadoras de seal y de inmediato digitar la etiqueta deseada. Estas etiquetas se desplazarn junto con las echas portadoras de seal asociadas de manera automtica. En nuestro ejemplo, asignemos la etiqueta Fuente a seal de salida del bloque Fuente y la etiqueta Integral a la seal de salida del bloque Integrator. En caso sea necesario desplace con el mouse el nodo que pasa la seal de la Fuente al bloque Mux.
37
38
Luego, cambiamos el parmetro Display Options del bloque Mux al valor signals, redimensionamos el bloque y nalmente observamos que las etiquetas de las seales son visualizadas en las entradas del bloque Mux.
39
7. Guardar los cambios realizados en el sistema (parametrizacin y anotaciones) Para ello eligiremos File|Save.
40
2.2.2.
Nos permitir establecer valores para la duracin de la simulacin, los procedimientos de solucin numricos, etc. Esto lo lograremos eligiendo Simulation|Model Conguration Parameters.
41
EJEMPLO: Establecer los siguientes parmetros de simulacin al sistema creado en el ejemplo anterior. Tiempo de Simulacin [t0 , T ] (en segundos) Inicio de Simulacin (t0 , Start Time) : 0 Finalizacin de Symulacin (T , Stop Time): 20 Opciones del Solver Tipo (Type) Paso Fijo (Fixed-step) Solver (Mtodo de ntegracin numrica) ode3 (Bogacki-Shampine1 ) Tamao del paso jo 0.01
El mtodo Bogacki-Shampine es un mtodo para la solucin numrica de ecuaciones diferenciales ordinarias , que fue propuesta por Przemyslaw Bogacki y Lawrence F. Shampine en 1989 ( Bogacki y Shampine 1989 ). El mtodo BogackiShampine es un mtodo de Runge-Kutta de orden tres con cuatro etapas con la propiedad First Same As Last (FSAL), de modo que se utiliza aproximadamente tres evaluaciones de la funcin por paso. Tiene un mtodo de segundo orden interno que puede ser utilizado para implementar un tamao de paso adaptativo.
1
42
Para esto realizaremos los siguientes pasos: 1. Abrir la ventana de conguracin de los parmetros del modelo Para ello elegimos Simulation|Model Conguration Parameters. Visualice los valores de los parmetros por defecto, grupo de parmetros Solver
43
44
Aqu es relevante distinguir lo siguiente: En el panel izquierdo se presentan la vista de rbol Select:, que organiza la totalidad de parmetros requeridos para llevar a cabo la simulacin del modelo. Por defecto, se tiene seleccionada la opcin Solver. En el panel derecho se visualizarn sub-paneles que agrupan, por categoras, a los parmetros pertenecientes a la opcin seleccionada en el Panel Izquierdo. Por defecto, al tener seleccionada la opcin Solver, se visualizarn los parmetros vinculados a dicha opcin. Luego, elegir el grupo de parmetros Data Import/Export en el Panel Izquierdo y visualice los parmetros asociados
45
46
2. En el grupo de parmetros Solver: Realizar las modicaciones solicitadas en el enunciado del ejemplo; y Desactive la restriccin que limita el amacenamiento de las variables tiempo, estados y salida conformada por una cantidad ja de ultimos puntos (observaciones); para ello desactivamos la casilla de vericacin Limits data points to last del grupo de parmetros Data Import/Export. 3. Iniciar la simulacin y visualizar las seales de salida resultantes de la simulacin Para iniciar la simulacin del modelo, elegimos Simulation|Run o damos clic en Luego, para visualizar los resultados damos doble clic al bloque Scope.
47
48
4. Visualizamos las variables de salida resultantes de la simulacin Estas variables son las que hemos congurado para que sean almacenadas en el workspace al nalizar la simulacin. Para ello, desde la ventana de comando digitamos el comando whos vericando la presencia de las variables S_test1_signals y tout >> whos Name Size Bytes Class Attributes S_test1_signals 1x1 49066 struct tout 2001x1 16008 double
5. Analicemos los campos que componen la estructura S_test1_signals >> S_test1_signals S_test1_signals = time: [2001x1 double] signals: [1x1 struct] blockName: s_test1/Scope
observamos que: La variable time contiene valores de simulacin desde 0 (start time) hasta 20 (stop time) con un paso jo de 0.01 (xed-step), razon por la cual ste vector contiene 2001 elementos (observaciones);
EXPOSITOR: Miguel Ataurima Arellano 49 [email protected]
La variable blockName es una cadena de texto que contiene el nombre del modelo seguido del bloque en el que se haya la salida; y,
>> S_test1_signals.signals ans = values: [2001x2 double] dimensions: 2 label: title: plotStyle: [0 0]
6. Observamos que la variable values, contiene las dos seales de salida, una por columna. Por lo tanto, podemos tambin visualizar la grca resultando digitando desde la ventana de comandos
50
51
Ejercicios
1. Pruebe el sistema s_test1 con diferentes tamaos paso de simulacin y usando el parmetro step size. Compare, en particular, el clculo del tiempo (nmero de observaciones) para un tamao de paso de 0.00001, usando ode3 (paso jo) directamente con step size; y luego, con la respuesta usando ode23 (paso variable). Interpretar los resultados. Son muy diferentes las grcas de las salidas resultantes? 2. Porqu el resultado de la simulacin del sistema de prueba s_test1 muestra la solucin de la ecuacin diferencial con valor inicial y (t) = x(t), y (0) = 0 ? Cul de las seales es x(t) y cual y (t)? 3. Disee el sistema de prueba Simulink s_soldiff para el bloque Derivative. Para esto es mejor modicar el sistema s_test1. Luego realice los mismos experimentos que en el problema 1. 4. Piense en como uno podria resolver el problema de valor inicial u (t) = 2u(t), u(0) = 1
EXPOSITOR: Miguel Ataurima Arellano 52 [email protected]
utilizando Simulink y con la ayuda del bloque Integrator y establecer un sistema de Simulink para este problema. Compare la solucin numrica resultante con la solucin exacta.
53
3.
1. Resolver
(0) = 0 y
y(t )
y(0) = 1
54
Salida
55
2. Resolver la Ecuacin Diferencial Logstica p (t) = p(t) p2 (t) con = 0,05, = 0,0000025,p(0) = 1000 Sistema Simulink
p(t )
(t ) p
p(t )
p 2 (t )
p 2 (t )
56
Salida
57
3. Crear un sistema el modelo de oscilaciones mecnica mx (t) + b sign(x (t)) x 2 (t) + cx(t) = 0 N con m = 0,5 kg, b = 0,00411 kg (0) = 0 m m , c = 155,2 m , x(0) = 1 m, y x s Sistema Simulink
c /m
(t ) x
b /m
(t ) x
x (t )
(t )) sgn(x
(t ))x 2 (t ) sgn(x
2 (t ) x
58
Salida
59
Ejercicios
1. Estamos interesados en la solucin de la ecuacin diferencial llamada del pndulo matemtico (t) = g sen((t)), l g = 9,81 m s2
donde (t) es el angulo que el pndulo (de longitud l) forma en el tiempo relativo a su posicin de equilibrio
60
(t) = 0, disee y pruebe un sistema Simulink para la solucin de considerando l = 10, (0) = , 4 la ecuacin diferencial del pndulo matemtico. 2. Disee y pruebe un sistema Simulink para resolver el problema de valor inicial y (t) + y (t) = 0, y (0) = 1, y (0) = 0
Compara este resultado con la solucin exacta. Luego, incorpore la capacidad de simular una perturbacin (esto es, una no homogeneidad, introducioendo en el lado derecho de la ecuacin diferencial una funcin u(t) = 0, denominada funcin de peturbacin) en el sistema Simulink. Obtenga la solucin considerando la siguiente funcin de perturbacin u(t) = et . 3. Resuelva el problema de valor inicial ty (t) + 2y (t) + 4y (t) = 4, y (1) = 1, y (1) = 1 mediante un sistema Simulink. 4. Resolver el sistema de ecuaciones diferenciales de primer orden y 1 (t) = 3y1 (t) 2y2 (t), y 2 (t) = 4y1 (t) + 2y2 (t), y1 (0) = 1 y2 (0) = 1
mediante un modelo Simulink. Compare la solucin numrica obtenida con la solucin exacta, la cual puede ser calculada a mano o con la ayuda del Symbolic Math Toolbox.
EXPOSITOR: Miguel Ataurima Arellano 61 [email protected]
5. El pndulo matemtico doble est conformado por dos pndulos matemticos simples de longitudes l1 y l2 acoplados, de los que cuelgan las masas m1 y m2 respectivamente. Dado un instante de tiempo t, los hilos inextensibles forman ngulos 1 y 2 con la vertical. El sistema de ecuaciones diferenciales de segundo orden para este sistema es m2 2 = 0 1 (t) + g1 + l2 l1 m1 + m2 1 (t) + g2 + 1 = 0 l2 l1
62