Práctica

INTRODUCCIÓN A MATLAB-SIMULINK

Ingeniería de Sistemas y Automática

Ángel M. Cuenca Lacruz Julián J. Salt Llobregat

1

1. Objetivo. El objetivo de esta práctica es familiarizarse con una herramienta científica de grandes prestaciones como es MATLAB/SIMULINK, que es preciso conocer pues se trata de un estándar en el cálculo científico actual. El alumno podrá utilizarla opcionalmente a lo largo del curso para analizar y simular diversos sistemas continuos y discretos. La sintaxis de los comandos escritos en este entorno se ha transmitido hasta las aplicaciones de simulación interactiva que será muy utilizada durante este curso, por lo que conviene conocerla. Para llevar a cabo el objetivo se propondrán sencillos ejercicios que ayudarán al alumno a adquirir destreza ante dicha aplicación científica. 2. MATLAB. MATLAB está integrada por funciones aritméticas, comandos, librerías de funciones, gráficos y macros/funciones de usuario. Una de sus características más relevantes es que está orientada a matrices (MATrix LABoraty), es decir, todas las variables se definen como matrices en las que los tipos no es necesario que se especifiquen. Se trata de un lenguaje interpretado. En concreto, MATLAB es capaz de trabajar con enteros, reales, complejos y cadenas de caracteres. Además dispone de variables predefinidas (como la variable pi, entre otras) y de una serie de comandos específicos que se irán viendo progresivamente a lo largo de la práctica y durante el curso. Para entrar en el programa hemos de hacer los siguientes pasos: Inicio – UPVNet – Aplicaciones Científicas – Matlab – Matlab 6.5.1. Una vez dentro de la aplicación vamos a empezar introduciendo una serie de datos (el símbolo >> es el prompt de la aplicación): >> A=[1 2 3; 4 5 6; 7 8 9] >> B=[1 2 3 456 7 8 9] >> C=[13; 14; 15; 16]; Fijarse como la matriz A y la B son iguales, ya que la forma de definirlas es equivalente. Fijarse también en el efecto del ; al final de toda la introducción de la variable C. Combinemos ahora las variables anteriores: >> A=[A; [10 11 12]] >> D=[A C] Comprobemos el resultado de las siguientes instrucciones, las cuales nos sirven para acceder a diferentes elementos de la matriz D: >> D(2,3) >> D(2,:) >> D(:,2) >> D(1:2, 3:4)
2

Trabajemos ahora con diferentes comandos relativos a variables y veamos sus consecuencias: >> who >> whos >> save prueba.mat A >> clear A >> whos >> load prueba.mat >> whos Para saber más de cada comando presentado (y de otros cualesquiera) utiliza la orden help seguida del nombre del comando a consultar. La orden help es de gran utilidad puesto que hace un breve resumen del uso del comando, así como informa de la sintaxis a utilizar. El símbolo ? de la barra de menú también conduce a un help, el cual es más interactivo y útil cuando se busca la existencia o no de cierto comando. Informarse de cuáles son los operadores aritméticos y de relación que usa MATLAB. Para ello teclea help ops. Después comprobar el efecto de estas instrucciones: >> A+B >> A*B >> C’ >> A<5 >> A>5 Hágase lo mismo con help lang en el que se encuentran los constructores que usa MATLAB.

• Ejercicio 1: En base a dichos constructores impleméntese una sencilla macro de

ejemplo que realice el factorial de un número pedido al usuario. Para realizarla es necesario un editor ascii. MATLAB cuenta con uno, el cual se habilita al teclear la orden edit. Por tanto, implementar la macro dentro del editor y después guardarla con el nombre factorial.m. Seguidamente teclear en el prompt el nombre factorial para habilitar dicha macro. Observar que el resultado es correcto.

Además de la macros, MATLAB permite implementar funciones. Tanto las macros como las funciones sirven para automatizar la ejecución sucesiva de varios comandos, pero se diferencian en que las funciones permiten parámetros de entrada y salida (cosa que no hacen las macros). Por tanto, dependiendo del uso que se les quiera dar, se utilizarán unas u otras.

• Ejercicio 2: Se propone pasar a función la macro anterior, de tal forma que tenga un
parámetro de entrada (número a calcular su factorial) y otro de salida (resultado del factorial). Guardarla como factorial2.m y llamarla desde el prompt. Observar que el resultado es correcto.

3

3. SIMULINK. SIMULINK es un paquete gráfico para el diseño asistido por ordenador de sistemas físicos (CACSD). Para entrar en él se debe teclear el comando simulink en el prompt de MATLAB o bien pinchar en el botón que lo representa en la barra de menú. Al entrar en SIMULINK se abre una ventana. Se trata de la librería de SIMULINK, la cual está compuesta por diferentes elementos enmarcados bajo diversas categorías. Así, en la categoría Simulink se encuentra, entre otras, las subcategorías siguientes: sources (fuentes), sinks (sumideros), discrete (sistemas discretos lineales), continuous (sistemas continuos lineales), nonlinear (sistemas continuos no lineales) y math (elementos matemáticos). Para empezar a diseñar un esquema SIMULINK se ha de abrir una ventana nueva (icono superior izquierda de la librería SIMULINK). Para realizar dicho diseño uniremos diferentes elementos de la librería, tras ser arrastrados con el ratón hacia la ventana del modelo. En dicha ventana del modelo es interesante mencionar la opción Simulation de la barra de menú, ya que dentro de ésta está la opción Parameters, la cual nos servirá para definir los parámetros de simulación de nuestro modelo. En concreto, en la pestaña Solver tenemos los siguientes parámetros de relevancia: Start time y Stop time: parámetros de inicio y fin de simulación. Type: indica el tipo de sistema a simular (variable-step para sistemas continuos y fixed-step para sistemas discretos). En el caso de variable-step se habilita los cuadros max step size e initial step size (por defecto a auto) que marcan el periodo de muestreo máximo e inicial (respectivamente) a utilizar para la simulación, y los cuadros relative tolerance y absolute tolerance que fijan la tolerancia elegida para la ejecución de los algoritmos de simulación utilizados (cuadro que está a la derecha de Type). En el caso de fixed step se habilita el cuadro de fixed step size que define el periodo de muestreo del sistema discreto (por defecto a auto).

Para una información más detallada de estos parámetros hacer uso del help de la ventana Simulation parameters.

• Ejercicio 3:
a) Montar un esquema SIMULINK que conste de un generador de señales (signal generator) y un visualizador de señal (scope). Define los parámetros de ambos elementos, de tal forma que el generador de señal genere una onda senoidal de amplitud la unidad y de frecuencia 2 Hertz, y el visualizador mantenga sus parámetros por defecto. Ejecutar la simulación indicando un max step size e initial step size a 0.01 y observar la salida en el visualizador. b) Añade a ese esquema otro enlace compuesto por una ganancia (gain) y otro visualizador (este se puede obtener pinchando el ratón con el botón derecho sobre el scope que ya tenemos y, tras ello, arrastrar al lugar que queramos). Simula el esquema dándole diferentes valores (negativos, positivos y nulo) a la ganancia. Observa los resultados que presentan los visualizadores.

4

c) Implementa ahora un esquema en el que la salida que proviene directamente del generador y la proveniente del amplificador salgan por el mismo visualizador. Para ello ayúdate de un multiplexador de señal (mux). Obtén también la salida en una variable llamada yout, a través de un bloque to workspace. Simula el sistema y observa que la salida del visualizador y la correspondiente a plotear la variable yout desde el prompt de MATLAB (comando plot(yout)) son idénticas. Comprueba las características de la variable yout desde el entorno MATLAB. Haz uso de los comandos grid y zoom para la visualización de la variable ploteada. 4. MATLAB-SIMULINK PARA EL CONTROL DE PROCESOS CONTINUOS Y DISCRETOS. La herramienta Matlab junto con Simulink nos permite simular de manera sencilla sistemas de control de diversa naturaleza. En esta parte de la práctica se va a mostrar cómo hacerlo posible. Para ello se van a considerar sistemas continuos y discretos, presentándolos en diferentes configuraciones (bucle abierto (ba) y bucle cerrado (bc)). • Ejercicio 4: Sistemas Continuos en ba.

En este ejercicio el objetivo es simular la respuesta en ba del modelo de primer orden continuo de una red RC (visto en clase de teoría) ante varias entradas diferentes (impulso, escalón y rampa). Para ello tendrás que formar en primer lugar un esquema Simulink como el que se muestra a continuación:

1 0.1s+1 Pulse Generator3 RC=0.1 ba

1 0.1s+1 Step1 RC=0.1 ba1

1 0.1s+1 Ramp RC=0.1 ba2

Recuerda que las entradas al sistema puedes encontrarlas en la librería Sources. Configura correctamente cada una para hacer posible su funcionalidad, según las definiciones vistas en teoría. Si lo necesitas, haz uso del botón de ayuda (Help), el cual se encuentra en la ventana que surge tras dar doble click sobre el bloque seleccionado. Por otro lado, el bloque que define al modelo lo podrás obtener en la librería Continuous y las respuestas las podrás ver con el bloque Scope de la librería Sinks.
5

En segundo lugar, para hacer esto con órdenes de Matlab debes recurrir a la orden impulse (para el impulso) y step (para escalón). Para rampa no existe una orden asociada en Matlab. Introduce los valores del modelo en estos casos de la siguiente manera: impulse(1,[0.1 1]). Comprueba que las respuestas obtenidas ahora coinciden con las obtenidas anteriormente con Simulink. • Ejercicio 5: Sistemas Continuos en bc. En este ejercicio el objetivo es simular la respuesta en bc del modelo de primer orden continuo de la red RC del ejercicio anterior para una referencia escalón unitario. Se va a considerar el modelo en bc y en bc con ganancia de realimentación. Para ello tendrás que formar en primer lugar un esquema Simulink como el que se muestra a continuación:

1 0.1s+1 Step3 Transfer Fcn3 bc1

5 Step2 Gain1

1 0.1s+1 Transfer Fcn2 bc

Recuerda que los bloques Sum (nudo sumador) y Gain (ganancia) los puedes encontrar en la librería Math. En segundo lugar, para hacer esto con órdenes de Matlab debes recurrir fundamentalmente a la orden feedback. Si haces un help de feedback verás que esta orden trata con modelos definidos como funciones de transferencia (fdt). Por tanto, lo primero es definir el modelo de la red RC como una fdt por medio de la orden tf (consúltala con help). Después ya, recurre a feedback para definir el modelo en bc e introdúcele un escalón unitario. En definitiva, debes seguir estos pasos desde el prompt de Matlab: sys1 = tf(1,[0.1 1]) sys = feedback(sys1,1) step(sys) Repítelo ahora para el caso de tener una ganancia de realimentación de valor 5. • Ejercicio 6: Sistemas Discretos en ba y bc.

El objetivo en este ejercicio es discretizar la fdt continua considerada en los ejercicios anteriores y simular el comportamiento en ba y bc del sistema discreto resultante. Para ello has de seguir los mismos pasos que en los ejercicios precedentes teniendo en cuenta que:
6

a) En Simlink: el bloque que define al modelo ahora lo podrás obtener en la librería Discrete. Para utilizarlo correctamente, primero tienes que discretizar el sistema continuo. Utiliza la orden c2d desde Matlab, la cual te devolverá el sistema discreto a introducir en el bloque de Simulink.. Si le haces un help verás que hay diferentes métodos de discretización y que debes elegir un periodo de muestreo (T). Considera el método de ZOH (Zero Order Hold) y un T=0.01 seg. Recuerda que la fdt continua ya la tienes definida del ejercicio anterior (sys1). b) En Matlab: en vez de utilizar impulse y step utiliza dimpulse y dstep, que son las órdenes especificas para sistemas discretos. Para finalizar, comprueba que si en los diagramas de bloques de Simulink hechos en los ejercicios 4 y 5 (de sistemas continuos) antepones un bloque ZOH al modelo del sistema (definido al periodo T considerado), las respuestas coinciden con las de este ejercicio 6.

7