Notas sobre SIMULINK 1 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Notas sobre SIMULINK Estas notas han sido originalmente escritas para MATLAB Versión 5. Consideramos que no requerirá un excesivo esfuerzo para el lector adaptar los conceptos a la versión que utilice. SIMULINK es una importantísima herramienta de MATLAB para la simulación de sistemas dinámicos. Es un programa gráfico, manejado mediante mouse, que permite modelizar un sistema dibujando en pantalla un diagrama de bloques que son manipulables dinámicamente. Trabaja con sistemas lineales, nolineales, continuos o discretos. Daremos a continuación una breve descripción de su uso. En la Ventana de Comandos de MATLAB invocamos simulink o activamos el icono New SIMULINK Model con lo que aparece la imagen Comenzamos estudiando la Biblioteca de Bloques de SIMULINK. Accionando Linear obtenemos Notas sobre SIMULINK 2 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Pasamos ahora a Sources (fuentes de señal = funciones de excitación) y Sinks (dispositivos de representación de señales), de las que sólo mostramos las más importantes para nuestro Curso. Queda a cargo de los interesados el análisis de los elementos que no hemos traducido. Vemos a continuación los principales elementos no-lineales De los bloques de "conexión", resultan de nuestro interés el multiplexor y el demultiplexor Notas sobre SIMULINK 3 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Finalmente los bloques discretos que más nos interesan, son los siguientes: Trabajando con Simulink Para comprender el trabajo con Simulink, es necesario que nos detengamos un minuto a considerar el funcionamiento de los modelos simbólicos. Un modelo simbólico representa el modelo matemático de un fenómeno mediante componentes elementales, que llamaremos bloques operacionales. Cada bloque operacional implementa una operación matemática (simple o compleja) y posee variables de entrada, variables de salida y parámetros internos ajustables. Así, en un multiplicador, tendremos dos variables de entrada (x e y) y una variable de salida (z), cuyo valor es igual al producto de las variables de entrada x y Multiplic z=x.y En un integrador habrá una variable de entrada (dx/dt), una variable de salida (x=∫(dx/dt).dt) y por lo menos un parámetro interno para la condición inicial (x(0)=xt=0). x(0) x' Integrador x(t) De la misma manera podemos concebir bloques operacionales que efectúen la multiplicación por un coeficiente, la generación de una función del tiempo, la suma algebraica de variables o cualquier otra función matemática. La conexión de dos bloques operacionales, indicará -simbólicamente- que la variable de salida del primero ha de considerarse como variable de entrada del segundo y así sucesivamente. Notas sobre SIMULINK 4 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Capítulo aparte merece la consideración de cómo se realizan los bloques operacionales. Antiguamente dichos bloques se implementaban mediante circuitos electrónicos que materializaban físicamente tales elementos en las computadoras analógicas; en la actualidad los bloques operacionales se implementan como algoritmos integrados en un entorno gráfico-numérico como el que nos brinda Simulink. Pasemos ahora a resolver un modelo sencillo, como lo es la ecuación logística de un ecosistema de una sola especie: x = k (1 − x2 )x = k(x − ) x max x max x para x 0 = 10; k = 0.1 x max = 1000 Observando la ecuación diferencial constatamos que necesitamos los siguientes bloques operacionales: Un integrador para obtener x a partir de dx/dt Un bloque de coeficiente para implementar k Otro bloque de coeficiente para 1/xmax Un multiplicador de variables para generar x2 Un sumador para implementar la suma algebraica del paréntesis El razonamiento es el siguiente: si tenemos x'=dx/dt a la entrada de un integrador, a su salida tendremos x si el integrador proporciona la condición inicial correcta (10); a x la hacemos pasar a través de un bloque de coeficiente que la multiplique por 1/1000, a la salida tendremos x/1000, la cual multiplicada por x en el bloque producto nos da x2/1000. Restada de x en el bloque sumador y multiplicando el resultado por k en el siguiente bloque de coeficiente, nos reproduce el valor de x' a la entrada del integrador. Para interpretar la secuencia de cálculo, debemos tener en cuenta que, para tiempo cero (0), la salida del integrador es igual al valor proporcionado por la condición inicial. A partir de este valor se hacen todos los cálculos en los restantes bloques y el tiempo se incrementa en ∆t (paso de integración), repitiéndose la secuencia de cálculos para el nuevo valor del tiempo y así sucesivamente, con lo cual la variable x tomará instante por instante el valor correspondiente a la solución de la ecuación diferencial propuesta. Notas sobre SIMULINK 5 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Pasemos ahora a operar con Simulink: en la Ventana de Comandos de MATLAB invocamos simulink. Se abren la biblioteca principal de Simulink y una Ventana de Modelo (que es nuestra pantalla de trabajo) con el nombre Untitled. Abrimos la biblioteca Linear y arrastramos mediante el mouse, los bloques Sum, Integrator y Gain a la pantalla de trabajo. De la biblioteca Nonlinear arrastramos el bloque Product. Como necesitamos dos bloques de coeficientes (Gain), copiamos mediante Ctrl-C y Ctrl-V el bloque correspondiente, con lo que nos aparece el elemento Gain1. A esta altura de los acontecimientos, la apariencia de nuestra pantalla de trabajo es la siguiente: Si ahora modificamos la distribución de los bloques, y los orientamos convenientemente mediante la opción Flip Block o el par de teclas Ctrl-F llegamos a la situación Clickeando con el mouse sobre las salidas de cada bloque y arrastrando la línea hasta la entrada del bloque pertinente producimos el conexionado de los elementos operacionales. Notas sobre SIMULINK 6 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Corresponde ahora que asignemos los signos correctos al boque Sum, los valores pertinentes a Gain y Gain1 y el valor inicial al bloque Integrator Para que los valores sean asumidos, en cada caso debemos oprimir el botón Apply antes de hacer Close. Como somos sumamente prolijos y, además, hablamos castellano, haciendo doble clic en cualquier lugar de la pantalla y -en especial- sobre los nombres de los bloques, podemos introducir leyendas aclaratorias. Si deseamos hacer desaparecer el nombre de un bloque, utilizamos la opción Hide Name del menú Format. Notas sobre SIMULINK 7 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Todo precioso y muy bonito, pero nos hemos olvidado de algo... Necesitamos agregar a nuestro diagrama un dispositivo para visualizar la variable de nuestro interés, es decir, la evolución de la población x. Para ello, desde la biblioteca Sinks arrastramos a la ventana de trabajo el bloque Scope y lo conectamos a la variable x. Ya que estamos, cambiamos nombre al bloque y lo llamamos "Visualiza Población". Para que el programa calcule la simulación del modelo, debemos elegir Start Simulation en el menú Simulation. Después de algunas pruebas, descubrimos que el valor Stop Time de Set Parameters debe ajustarse a 150. Por otra parte, Y-max del visualizador ha de ajustarse a 1000 con Y-min en 0. Notas sobre SIMULINK 8 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 A fin de disponer de este modelo para ulteriores simulaciones, con diversos valores de k y de xmax mediante la opción Save as del menú Files lo archivamos en nuestro directorio como sim_pobl_logistico y Simulink agrega el sufijo .mdl en forma automática, para indicar que se trata de un archivo correspondiente a un modelo. Otro Ejemplo Aplicativo. Como ejemplo adicional del método general a seguir para resolver un modelo con Simulink, y utilizar diferentes modos de graficación para visualizar los resultados, proponemos un sistema caracterizado por una ecuación diferencial de segundo orden a coeficientes variables, x + 2[1 − 4sen(16t )] x + 4 x = 0 con las condiciones iniciales x(0) = 0 ; x (0) = 1 para el cual queremos visualizar en pantalla (Scope) simultáneamente la variable solución y su derivada. Asimismo deseamos obtener una representación que muestre x(t) en abscisas y su derivada en ordenadas. Para realizar el modelo simbólico, despejamos la derivada de mayor orden de la ecuación diferencial, obteniendo x = −2[1 − 4sen(16t )] x − 4 x = 0 dibujamos el diagrama simbólico en borrador y constatamos que son necesarios para la simulación los elementos siguientes: 2 integradores Linear, Integrator 1 multiplicador Nonlinear, Product 1 bloque de constante (para generar 1) Sources, Constant 2 sumadores Linear, Sum 1 generador de función senoidal Sources, Sine Wave 1 graficador x-y Sinks, XY Graph 1 pantalla de visualización Sinks, Scope 1 multiplexor para combinar señales Connections, Mux En la segunda columna del listado, hemos consignado los nombres de los bloques Simulink, como así también la designación de las bibliotecas correspondientes. Orientando convenientemente los bloques e interconectándolos mediante el mouse, obtenemos en la pantalla de trabajos de Simulink el modelo simbólico siguiente, al que hemos agregado leyendas aclaratorias para facilitar su interpretación. Notas sobre SIMULINK 9 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Asignando a cada bloque operacional los parámetros internos correspondientes y luego de algunos intentos, adoptamos los siguientes valores para la opción Set Parameters del menú Simulation y los ajustes de los bloques XY-Graph y Scope Notas sobre SIMULINK 10 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Con lo que obtenemos las representaciones gráficas: Notas sobre SIMULINK 11 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Reconocemos x(t) y x'(t) por las condiciones iniciales de las curvas. Los valores graficados por el dispositivo Scope pueden almacenarse en una matriz mediante la opción Settings de Scope. Notas sobre SIMULINK 12 UTN Fac. Reg. La Rioja - Cátedra de Control Aplicado - Año Académico 2006 Con los comandos » plot(Datos(:,1),Datos(:,2)) » hold on » grid on » plot(Datos(:,1),Datos(:,3),'LineWidth',2) » title('Ecuación Diferencial de 2o. Orden a Coeficientes Variables') » xlabel('Tiempo (t)') » ylabel('Funciones') » text(0.3,1.2,'dx/dt') » text(1.2,0.3,'x(t)') se puede generar el gráfico: Ecuación Diferencial de 2o. O rden a Coeficientes Variables 2 1.5 dx/dt F unciones 1 0.5 x(t) 0 -0.5 -1 0 1 2 3 4 T iempo (t) Y así, cerramos este breve instructivo sobre el empleo de Simulink. ♦ 5 6 7