Introducción a Matlab, un enfoque a la simulación y visualización dinámica. 130 10 Simulink SIMULINK es un programa para modelar, simular, y analizar sistemas dinámicos. Esta herramienta soporta sistemas lineales, no lineales, continuos, discretos y combinaciones particulares de éstos. SIMULINK provee de una interfaz gráfica (GUI, por lo cual está en constante interacción entrada/salida), que permite definir el flujo de información entre diferentes bloques o sistemas. Luego la interconexión de tales bloques (diagrama de bloques), define la dinámica del problema. Existe una gran variedad de dichos bloques, todos disponibles en una librería gráfica. Además es posible, crear funciones especiales según la necesidad del usuario. 10.1 Introducción 10.1.1 Ejemplo Lineal Para comenzar con el uso de la herramienta SIMULINK, analicemos el comportamiento del siguiente sistema dinámico frente una entrada escalón: dy(t ) y (t ) u (t ) dt Para lo anterior, realice los siguientes pasos: 1 Y(s) U(s). s 1 4º 1º Pulse aquí, y cree un nuevo diagrama SIMULINK, con el nombre que desee. Por ejemplo: eje_01.mdl Luego de ingresar los parámetros, simule el diagrama pulsando aquí. 3º 2º Mueva los bloques que necesite, desde la librería a el diagrama. Conecte, por medio del mouse, entradas y salidas, según el flujo deseado. Escuela de Ingeniería Civil, Universidad del Bio-Bio, Septiembre del 2000 Introducción a Matlab, un enfoque a la simulación y visualización dinámica. 131 Para el ejemplo, Step se obtiene del grupo Sources, Transfer Fcn del grupo Continuos, la conexión en negro o Mux del grupo Signal & Systems y el gráfico Scope del grupo Sinks. Observaciones: 1º. En cada simulación, no olvide ajustar los parámetros que involucran el método de simulación, es decir, el algoritmo de integración. Entre ellos el tiempo de simulación, el paso de integración, etc. Lo anterior se realiza en la opción de menú Simulation. 2º. Durante la simulación, obtenga sus resultados mediante cualquiera de los elementos de librería agrupados en Sinks, dependiendo si requiere despliegue o almacenar datos. De la simulación se obtiene: Para este ejemplo, modifique el tiempo de la señal escalón, de acuerdo con lo siguiente. Vemos como las dos señales se dibujan el un mismo eje gracia a Mux, lo que permite conocer la acción del filtro de primer orden descrito. Escuela de Ingeniería Civil, Universidad del Bio-Bio, Septiembre del 2000 Introducción a Matlab, un enfoque a la simulación y visualización dinámica. 132 10.1.2 Ejemplo No lineal Ahora abordemos la simulación de un problema no lineal, como lo es el oscilador de Van der Poll: d2y dy y2 1 y0 2 dt dt x1 y 2 x 2 x 2 1 x1 x1 El correspondiente diagrama de bloque en SIMULINK es: Tspan=[0 20], RelTol=1e-5, AbsTol=1e-7. x1 x 2 Fcn esta en el grupo Function & Tables. product, Gain y Sun en el grupo Math. Integrator en el grupo Continuos. Ambos integradores, condición inicial 0.02 De la simulación obtenemos un ciclo límite. Modifique el valor de Gain y de las condiciones iniciales, para ver otros efectos. Escuela de Ingeniería Civil, Universidad del Bio-Bio, Septiembre del 2000 Introducción a Matlab, un enfoque a la simulación y visualización dinámica. 133 10.2 Simulink desde archivos .m Cualquier diagrama de bloques creado en SIMULINK puede ser ejecutado desde un archivo .m, para luego ser analizado en lo que respecta a los datos entrada / salida. Para lo anterior, debemos conocer la sentencia primitiva de simulación. 10.2.1 Comando de simulación Los comandos de simulación pueden referirse al algoritmo de integración (sim) o a la interrupción de ejecución de dicha simulación (set_param). SIMULACIÓN La sintaxis es la siguiente: [t,x, y1, ..., yn]= sim(model, tspan, options, u1,...um), donde: t x Retorna el vector de tiempo de simulación Es la matriz de estados continuos y discretos establecidos en la simulación. Son cada una de las denominadas salidas de bajo nivel o puertas de salida y1,..., yn establecidas en el diagrama de bloques. model Es el nombre del archivo .mdl a ejecutar, donde se dibujo el diagrama SIMULINK. Vector de tiempos ( [tinicial : tpo : tfinal] ) donde se requiere la integración de la tspan dinámica o solución. Parámetros opcionales de simulación relacionadas directamente con el algoritmo de options integración. Tales opciones son ingresadas mediante el comando simset. Son cada una de las entradas de bajo nivel o puertas de entrada, establecidas en el u1,...,um diagrama de bloques. En lo que respecta al comando simset, este posee la siguiente sintaxis: options=simset(p1, v1, ...... , pn , vn) donde pj y vj son una determinada propiedad y su valor respectivamente. Dentro de las propiedades podemos destacar: Solver RelTol AbsTol Refine MaxStep MinStep FixedStep SrcWorkspace DtsWorkspace Outputvariables Algoritmo de integración. De paso variable: ode45, ode23, ode113, ode15s, ode23s. De paso fijo: ode5, ode4, ode3, ode2, ode1. Tolerancia del error relativo Tolerancia al error absoluto. Factor para suavizar la solución. Válido sólo en algoritmos de paso variable. Máximo intervalo de solución. Válido sólo en algoritmos de paso variable. Mínimo intervalo de solución. Válido sólo en algoritmos de paso variable. Paso fijo de integración. Dónde se evalúa el diagrama de bloques: base, parent, current. Dirección para asignar las variables del diagrama: base, parent, current. Define las variables de salida: txy, tx, ty, xy, t, x, y. Escuela de Ingeniería Civil, Universidad del Bio-Bio, Septiembre del 2000 Introducción a Matlab, un enfoque a la simulación y visualización dinámica. 134 INTERRUPCIÓN Se define como interrupción, iniciar, dar pausa, continuar, o finalizar una simulación. Para ejecutar lo anterior la sintaxis es la siguiente: set_param(‘sys’, ‘SimulationCommand’, ‘cmd’), donde: sys cmd Nombre del sistema o archivo .mdl Comando a ejecutar: start, pause, continue, stop. 10.2.2 Ejemplo: Simulación EDO 1º orden Simular la siguiente ecuación diferencial ordinaria: dy(t ) y(t ) u (t ) dt 1 Y(s) U(s), s 1 desde un archivo .m El primer paso el dibujar el diagrama de bloques equivalente a tal dinámica: Nombre del diagrama para invocar desde el archivo .m Dos puertas de salida, enumeradas correlativamente. Una puerta de entrada, donde la segunda columna es la excitación u1. y1,....yn Escuela de Ingeniería Civil, Universidad del Bio-Bio, Septiembre del 2000 Introducción a Matlab, un enfoque a la simulación y visualización dinámica. 135 %Simulink desde la línea de comandos clear all; close all; %Tiempos pf=2.5; tspan=(0:pf:20)'; %Señal de entrada escalon lt=length(tspan); lp=round(lt*0.4); esc=[zeros(1,lp), ones(1,lt-lp)]'; u1=[tspan,esc]; %Parámetros de Simulación options= simset('solver','ode5',... 'FixedStep', pf, ... 'RelTol', 1e-4, ... 'AbsTol', 1e-7, ... 'SrcWorkspace','Current'); %Simulación [t,x,y1,y2] = sim('eje_02',tspan,options,u1); %gráficas plot(t,y1,'bo-',t,y2,'r-'); axis([0 20 -0.5 1.5]); grid on; Para simular la ecuación diferencial de primer orden frente a una entrada escalón, se escribe el código anterior con los siguientes aspectos. Primero se define el tiempo de simulación tspan y en este caso un paso fijo de integración pf. Luego se crea una señal de entrada u1, compuesta del tiempo señalado y de la señal escalón esc. Debe quedar claro que siempre la primera entrada contiene el tiempo y otra señal. Para simular se definen las opciones por medio de simset y simplemente se ejecuta por medio de sim. Los resultados pueden ser mas cómodamente vistos por plot. Escuela de Ingeniería Civil, Universidad del Bio-Bio, Septiembre del 2000