Matlab y Simulink

16
MATLAB Y SIMULINK Introducción y conceptos básicos Guía rápida de uso

Transcript of Matlab y Simulink

Page 1: Matlab y Simulink

MATLAB Y SIMULINK Introducción y conceptos básicos

Guía rápida de uso

Page 2: Matlab y Simulink

i

I N T R O D U C C I Ó N Y C O N C E P T O S B A S I C O S

Matlab y Simulink

© Dinámica y control de procesos Colón Daniel

Balbuena Eduardo

Page 3: Matlab y Simulink

2

Tabla de contenido 1. INTRODUCCIÓN ......................................................................................................................... 3 2. FUNCIONES MATEMÁTICAS COMUNES............................................................................ 4 3. CARACTERÍSTICAS DE LA VENTANA DE COMANDOS ................................................... 5

3.1. CÓMO UTILIZAR EL WORKSPACE........................................................................................................ 5 3.2. FORMATOS DE NÚMEROS .................................................................................................................. 5

4. M-FILES........................................................................................................................................ 5 5. OPERACIONES CON VECTORES........................................................................................... 6

5.1. DEFINICIÓN DE MATRICES Y VECTORES ................................................................................................ 6 5.2. FUNCIONES PARA CÁLCULOS CON POLINOMIOS.................................................................................... 8

6. REPRESENTACIONES GRÁFICAS ........................................................................................ 9 6.1. LA FUNCIÓN PLOT............................................................................................................................ 9 6.2. ESTILOS DE LÍNEA, MARCAS Y COLORES .............................................................................................. 10 6.3. FIJAR REJILLAS, EJES, Y ETIQUETAS....................................................................................................... 10

7. TOOLBOX DE CONTROL ........................................................................................................ 10 7.1. REPRESENTACIÓN DE UN SISTEMA..................................................................................................... 10

8. AYUDA ......................................................................................................................................... 11 8.1. EL COMANDO HELP........................................................................................................................ 12

9. SIMULINK .................................................................................................................................. 12 9.1. INTRODUCCIÓN............................................................................................................................. 12 9.2. LIBRERÍA DE BLOQUES..................................................................................................................... 12 9.3. CONSTRUCCIÓN DE UN MODELO...................................................................................................... 13 9.4. PARÁMETROS DE SIMULACIÓN......................................................................................................... 14 9.5. INICIO Y FINALIZACIÓN DE LA SIMULACIÓN ........................................................................................ 15

10. OBSERVACIONES ................................................................................................................. 15

Page 4: Matlab y Simulink

3

1. Introducción

MATLAB es el nombre abreviado de “MATrix LABoratory”. MATLAB es un programa para realizar cálculos numéricos con vectores y matrices. Como caso particular puede también trabajar con números escalares -tanto reales como complejos. Una de las capacidades más atractivas es la de realizar una amplia variedad de gráficos en dos y tres dimensiones. MATLAB tiene también un lenguaje de programación propio. Este es un gran programa de cálculo técnico y científico. Para ciertas operaciones es muy rápido. En otras aplicaciones resulta bastante más lento que el código equivalente desarrollado en C/C++ o Fortran. Sin embargo, siempre es una magnífica herramienta de alto nivel para desarrollar aplicaciones técnicas, fácil de utilizar. Podemos decir así que Matlab es una aplicación destinada a cálculos matemáticos, si bien dispone de ciertas funciones destinadas a temas más específicos. MATLAB dispone de un conjunto básico de herramientas y de varias librerías especializadas (toolboxes) como por ejemplo los Toolboxes de comunicaciones, estadística, control (este, facilita el estudio de sistemas dinámicos y su regulación) entre otros. Además, existe un complemento de MATLAB llamado SIMULINK, que permite al usuario un enfoque más gráfico de los sistemas de control. La parte más importante de la ventana inicial es la Command Window, que aparece en la parte derecha. En esta sub-ventana es donde se ejecutan los comandos de MATLAB, la forma de trabajar con MATLAB es al estilo de cualquier calculador:

» 4*2 [Pulsamos enter] ans = 8

A su vez, podemos usar variables para realizar nuestros cálculos:

» precio = 100; » iva =0.21; » precio_total =precio * (1+iva) precio_total = 121

Acabamos de crear tres variables, cuyo valor se guardará en memoria. En las dos primeras sentencias se incluye un punto y coma al final, con lo que el resultado no aparecerá por pantalla. El nombre que elijamos para nuestras variables tiene algunas restricciones: no pueden tener un espacio intermedio, se distinguen mayúsculas de minúsculas, y deben empezar por una letra. Si queremos ver las variables que tenemos definidas, teclearemos el comando who:

» who Your variables are: iva precio precio_total

Por supuesto, se puede sobrescribir el nombre de una variable:

» iva =0.19; (el programa no nos avisará de que esa variable ya existe) . Para borrar todas las variables, existe el comando clear: Tecleando clear iva borraría esta variable, pero si escribimos sólo clear, borrará todo lo que hay en memoria; por desgracia, una vez eliminadas, las variables no se pueden recuperar.

Page 5: Matlab y Simulink

4

Podemos recuperar cualquier instrucción escrita previamente pulsando la tecla del cursor ↑. Para detener la ejecución de cualquier instrucción, hay que pulsar la combinación de teclas Ctrl+C.

2. Funciones matemáticas comunes

Matlab incluye ciertas funciones que nos permiten realizar muchos cálculos más complejos que solo sumar y restar. Para usar estas funciones, se procede de igual manera que en una calculadora programable; por ejemplo, para realizar una operación que incluya una raíz cuadrada escribimos:

» x = 3 - sqrt (5/6) * 2 x = 1.1743

A continuación se muestra una breve lista de las funciones esenciales de MATLAB:

abs(x) Valor absoluto de x. Si x es un número complejo, abs(x) nos da su módulo acos(x)1 Arco coseno de x asin (x) Arco seno de x atan (x) Arco tangente de x. Devuelve un ángulo entre –pi/2 y pi/2 atan2(x,y) Arco tangente de x entre y. Devuelve un ángulo entre 0º y 2*pì cos (x) coseno de x sin (x) seno de x tan (x) tangente de x exp (x) exponencial ex expm(x) exponencial de una matriz x log(x) logaritmo neperiano de x log10 (x) logaritmo en base 10 de x roots(x) Halla las raíces del polinomio x fzero('f(x)',n)

(ej.- f(x)= 'x^2+x+3' ) encuentra la solución de la ecuación f(x)=0; n es el valor por donde empieza a iterar para hallar la solución. Ej X0=fzero('x^2+x-3',1)

sqrt(x) raíz cuadrada de x angle (x) ángulo de x real(x) parte real de x Det(x) Determinante de x imag(x) parte imaginaria de x

1 Matlab trabaja solo en radianes Es recomendable trabajar con atan2 en vez de atan, pues si la parte real del número complejo es negativa, el ángulo quedará en el segundo o tercer cuadrante. Por ejemplo:

» 180/pi*atan(-2/3) ans = -33.6901 » 180/pi*atan(2/-3) ans = -33.6901 » 180/pi*atan2(-2,3) ans = -33.6901 » 180/pi*atan2(2,-3) ans = 146.3099

Page 6: Matlab y Simulink

5

Para la función atan los números complejos -2+3j y 2-3j tienen la misma fase; atan2, sin embargo, nos da el ángulo correcto. Se ha multiplicado por 180/pi para obtener el resultado en grados (La constante pi viene definida por defecto en MATLAB Para definir un número complejo, se puede usar i o j como unidad imaginaria indistintamente:

» c1=-1+2j c1 = -1.0000 + 2.0000i » c1=-1+2i c1 = -1.0000 + 2.0000i

3. Características de la ventana de

comandos

3.1. Cómo utilizar el Workspace

Todas las variables que se han definido hasta ahora, se guardan en el Workspace, que no es más que el espacio de trabajo que utiliza MATLAB. Aparte de crear y borrar variables, resulta útil guardar sesiones de trabajo, es decir, todas las instrucciones que hemos tecleado en la ventana de instrucciones, para ello, al comenzar la sesión debemos teclear

>>diary <nombre del fichero> Para que deje de grabar la sesión teclearíamos diary off. También se puede guardar únicamente el valor de algunas variables:

» save c:\dinamica\datos x y

Aquí no es necesario añadir la extensión, y MATLAB creará el fichero con extensión .mat. Las variables x e y han de estar previamente definidas. Para recuperar las variables guardadas teclearemos:

» load datos

3.2. Formatos de números

Por defecto todos los números son mostrados con cuatro decimales de precisión. Se puede cambiar el formato de salida seleccionando el menú File\Preferences. Esto es importante ya que, un resultado mostrado podría se 0.0000 (con el formato por defecto), pero realmente no ser 0 (sino 0.00000001, por ejemplo).

4. M-files

Cuando realizamos cálculos simples, es habitual escribir las instrucciones en la ventana de comandos. Sin embargo, cuando se van a realizar una serie de operaciones más complicadas y de forma repetitiva, se utilizan los llamados M-Files, estos son ficheros de texto donde tecleamos las instrucciones de MATLAB.

Page 7: Matlab y Simulink

6

Para crear un nuevo archivo M, hacemos clic en File\New\M-File; nos aparecerá una ventana en blanco para editar el archivo.

Por ejemplo: % Mi primer programa en MATLAB A1=2; A2=10; A=A1*A2; if(A==20)

disp(‘el producto es 20’) else

disp(‘el producto no es 20’) end

Una vez guardado el archivo (con el nombre primer.m, por ejemplo), nos bastará teclear su nombre en MATLAB, y se ejecutará directamente:

» primer el producto es 20

Supongamos que queremos que este programa sirva no sólo para los números A1 y A2. Para ello, bastará con borrar las dos primeras líneas del programa anterior. Ahora tendremos que definir antes el valor de A1 y A2 (si no, MATLAB nos dará un mensaje de error diciendo que las variables A1 y A2 no existen):

» A1=2; » A2=10; » primer el producto es 20

También se puede hacer que el programa pida los números A1 y A2 al usuario:

A1=input('Introduzca el primer número -> '); comp2=input('Introduzca el segundo número -> '); A=A1+A2; if(A==20)

disp(‘el producto es 20’) else

disp(‘el producto no es 20’) end

5. Operaciones con vectores

5.1. Definición de matrices y vectores

Como en casi todos los lenguajes de programación, en MATLAB las matrices y vectores son variables que tienen nombres. Se sugiere que se utilicen letras mayúsculas para matrices y minúsculas para vectores y escalares Para definir una matriz no es necesario definir con anterioridad su tamaño (es mas, se puede definir un tamaño y cambiarlo posteriormente)

Page 8: Matlab y Simulink

7

Las matrices se definen por filas; los elementos de una misma fila están separados por blancos o comas, mientras que las filas están separadas por pulsaciones intro o por caracteres punto y coma (;). Por ejemplo, el siguiente comando define una matriz A de dimensión (3x3):

>> A=[1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9

Para definir vectores, por ejemplo, si se quiere hallar el valor de cos (t) para 0 < t <0.5pi. Como es imposible hallar todos los valores (hay infinitos puntos), debemos definir una serie de valores de x. Si tomamos 6 puntos, definiremos t de la forma:

» t=[0 0.1*pi 0.2*pi 0.3*pi 0.4*pi 0.5*pi] t = 0 0.3142 0.6283 0.9425 1.2566 1.5708

Tal como hemos visto, para crear un vector fila es necesario escribir entre corchetes los elementos, separados por un espacio o una coma Si ahora escribimos cos (t), hallaremos el coseno de todos los valores de t:

» y=cos(t) y = 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000

Para manejar un único elemento del vector, por ejemplo coseno(0.4*pi), nos referiremos a él como el elemento 5 del vector y:

» y(5) ans = 0.3090

Si queremos utilizar los 3 primeros elementos, escribiremos y(1:3), o para tomar del elemento 2 al último teclearemos y(2:end). En caso de querer representar la función coseno(t), necesitaríamos bastantes más de 5 elementos para obtener una gráfica aceptable. Escribir 200 elementos resultaría bastante tedioso. Como era de suponer, existe una forma “automática” de crear un vector. La instrucción es: x= (valor_inicial:incremento:valor_final). Por ejemplo:

>> t=[-2*pi:0.01*pi:2*pi]; >> y=cos(t); >> plot(t,y) % la primer instrucción crea un vector t con valor inicial t=-2*pi y valor % final 2*pi, y la diferencia entre elementos consecutivos es 0.01*pi.

Es muy recomendable escribir el "; " al final de la sentencia, para que no aparezca cada uno de los elementos del vector en la pantalla. Las diferentes formas de crear un vector aparecen resumidas en la siguiente tabla: T = [2 2*pi sqrt(2) -3j] Crea un vector con los elementos espeficados

Page 9: Matlab y Simulink

8

T = primero : ultimo Crea un vector empezando en primero, incrementando una unidad en cada elemento, acabando en el elemento ultimo

T =primero:incremento:ultimo

En este caso, el incremento no es 1 sino que es fijado por nosotros

T=linspace(primero, ultimo,n) Crea un vector empezando en primero, acabando en ultimo, con n elementos

T =logspace(primero, ultimo,n) Crea un vector logarítmico De igual manera, se pueden crear matrices, escribiendo un "; " para indicar que es una fila distinta:

» x= [2 3;2 5] x = 2 3 2 5

Cuando definimos la matriz A está quedo disponible para hacer con ella cualquier tipo de operación (además de valores numéricos, en la definición de una matriz o vector se pueden utilizar expresiones y funciones matemáticas). Por ejemplo, una sencilla operación con A es hallar su matriz transpuesta. En MATLAB el apóstrofo (') es el símbolo de transposición matricial. Para calcular A' (transpuesta de A) se teclea lo siguiente:

>> B=A' B = 1 4 7 2 5 8 3 6 9

Las funciones exist() e isempty() permiten chequear si una variable existe y si está vacía.

5.2. Funciones para cálculos con polinomios

Con MATLAB un polinomio puede ser definido como un vector de coeficientes. Para el siguiente ejemplo, el polinomio:

P(x)=x5+2x2-6x+8 puede representarse mediante el vector [1,0, 0, 2,-6,8]. Luego se pueden realizar diversas operaciones sobre este vector, como por ejemplo evaluarlo en un valor de x especifico (función polyval()) o calcular las raíces de dicho polinomio (función roots()):

>> pol=[1 0 0 2 -6 8] pol = 1 0 0 2 -6 8 >> roots(pol) ans = -1.9345 -0.1045 + 1.6089i -0.1045 - 1.6089i 1.0718 + 0.6650i 1.0718 - 0.6650i >> polyval(pol,2) ans = 36

Page 10: Matlab y Simulink

9

Si se desea calcular producto entre polinomios se puede utilizar la función conv() (de producto de convolución).

>> polA=[1 -2 3]; >> polB=[3 -5]; >> polC=conv(polA,polB) polC = 3 -11 19 -15

6. Representaciones gráficas

6.1. La función plot

Para representar gráficos en dos dimensiones, es habitual utilizar el comando plot(eje x, eje y). Por ejemplo, si quisiésemos representar la función coseno:

» t=[-2*pi:0.01*pi:2*pi]; » y = cos(t); » plot (t,y)

Si esto ha sido bien ingresado debería aparecernos una ventana con la figura:

Esta gráfica se puede ampliar, reducir, cambiar su color y copiar para utilizarla en otro documento. Si ya teníamos abierta una ventana Figure, al usar plot, desaparecerá la gráfica anterior sin previo aviso. Para evitarlo, se debe agregar el comando figure para generar una nueva ventana. También es posible dibujar más de una gráfica en una ventana, escribiendo plot(eje x1, eje y1, eje x2, eje y2,...);

Page 11: Matlab y Simulink

10

También podemos dividir la ventana en varias partes con el comando subplot (m,n,i). La ventana Figure se dividirá en una matriz de m por n pequeñas ventanas, y se seleccionará la ventana i-ésima. Por ejemplo:

>> t=[-2*pi:0.01*pi:2*pi]; >> y=cos(t); >> z=sin(t); >> subplot(2,1,1),plot(t,y),subplot(2,1,2),plot(t,z)

6.2. Estilos de línea, marcas y colores

Es posible modificar el color y estilo de las gráficas. Para ello, existen ciertos parámetros que admite la función plot, y han de introducirse como un tercer argumento, después de cada par de variables. b blue . point - solid g green o circle : dotted r red x x-mark -. dashdot c cyan + plus -- dashed m magenta * star y yellow s square k black d diamond v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram

6.3. Fijar rejillas, ejes, y etiquetas

Para fijar una cuadrícula en la ventana Figure, basta con teclear grid on. Para quitarla, escribimos grid off. Se puede escribir los nombres de los ejes y de la gráfica:

» title('Representación de las funciones seno y coseno’'), xlabel ('variable independiente'), ylabel ('variables dependientes')

Se puede tomar valores de una gráfica con la instrucción ginput. Una vez tecleado ginput, nos aparecerá la ventana Figure, y con el ratón haremos clic en el punto que queramos conocer. Después pulsaremos enter y el valor de las coordenadas del punto aparecerá en la ventana de comandos de MATLAB.

7. Toolbox de control

7.1. Representación de un sistema

El primer problema que se nos plantea es la definición de un sistema. Los sistemas se suelen expresar en forma de función de transferencia. Ésta se puede expresar como cociente de polinomios, con la

Page 12: Matlab y Simulink

11

instrucción tf: escribiremos entre corchetes los coeficientes de numerador y denominador (en sentido descendente de las potencias de la variable s).

>> n=[1 2]; >> d=[1 5 2]; >> G=tf(n,d) Transfer function: s + 2 ------------- s^2 + 5 s + 2

De esta representación, podemos quedarnos únicamente con el numerador y/o denominador

>> [num,den] = tfdata(G,'v') num = 0 1 2 den = 1 5 2

Otra forma de obtener los polos y ceros del sistema:

>> [z,p,k] = tf2zp(num,den) z = -2 p = -4.5616 -0.4384 k = 1

Donde k no es la ganancia estática, sino la que se obtiene al expresar la función de transferencia en forma de polos y ceros. También se puede obtener la descomposición en fracciones simples:

>> [r, p, k] = residue (num,den) r = 0.6213 0.3787 p = -4.5616 -0.4384 k = []

El coeficiente k representa el término independiente, que valdrá 0 siempre que el orden del numerador sea inferior al del denominador. Es decir, F(s) también se puede expresar como:

0.6213 0.3787 F(s) = ------------ + ------------ s + 4.5616 s + 0.4384

8. Ayuda

Existen demasiados comandos en MATLAB para poder recordarlos a todos. Para facilitarnos el trabajo, se ha creado un archivo de ayuda al cual podemos recurrir en todo momento.

Page 13: Matlab y Simulink

12

8.1. El comando help

Para recurrir a la ayuda, basta con teclear help nombre_de_función. Si escribimos help a secas, nos aparecerá una lista de categorías de las funciones disponibles. Por ejemplo:

» help cos COS Cosine. COS(X) is the cosine of the elements of X. Overloaded methods help sym/cos.m

Así el comando help nos da una pequeña descripción de la función que estamos ingresando, y también puede mostrar una serie de comandos relacionados Aunque en la ayuda aparezca la función en mayúsculas, al usarla hemos de escribirla en minúscula, ya que sino Matlab no la reconocerá y nos dará error Si no conocemos en concreto el nombre de la función, podemos usar el comando lookfor:

»lookfor complex

Este nos mostrará todas las funciones relacionadas con números complejos. También es útil el comando demo, que nos mostrará una pantalla con demostraciones de todas las posibilidades que ofrece MATLAB.

9. Simulink

9.1. Introducción

Simulink es una extensión de MATLAB para la simulación de sistemas dinámicos. Al ser un entorno gráfico, resulta bastante sencillo de utilizar. Para ejecutar Simulink, podemos teclear “simulink” desde MATLAB, o bien hacer clic en el icono correspondiente, en la barra de herramientas de MATLAB. Una vez que hemos realizado el paso anterior aparecerán una ventana con las librerías de Simulink, y de allí se puede crear un nuevo modelo yendo archivo/nuevo.

9.2. Librería de Bloques

En la siguiente figura se puede ver la ventana que se abre al ejecutar simulink:

Page 14: Matlab y Simulink

13

9.3. Construcción de un modelo

Una vez abierta la librería de bloques, se debe crear un nuevo modelo “en blanco”. En el cual se podrán ver los siguientes componentes:

Para agregar componentes a nuestro modelo esto se deben arrastrar desde la librería de bloques hacia el nuestra ventana del modelo. Se debe notar que los bloques que se van agregando a nuestro modelo tienen entradas y/o salidas de señal, y se refieren respectivamente al argumento y resultado de la función. En consecuencia para armar un sistema se deberán conectar salidas con entradas usando líneas. Para unir bloques, se deberá

Page 15: Matlab y Simulink

14

presionar el botón izquierdo del mouse sobre la salida de un bloque, y manteniendo el botón presionado, arrastrarlo hasta la entrada de otro bloque. Para sacar una derivación de una línea ya existente se debe colocar el puntero sobre la línea y cuando el puntero se transforme en una cruz y presionando el botón derecho del ratón, y manteniéndolo presionado, arrastrarlo hasta el destino final o intermedio. No es necesario finalizar la línea inmediatamente. Se puede trazar un segmento, soltar el botón del ratón, y continuar más adelante (una vez iniciada la derivación, el siguiente segmento se deberá continuar usando el botón izquierdo). Una vez que se ha agregado un bloque al modelo, se puede usar el menú “Format” para cambiar su aspecto. A continuación se muestra una tabla con una breve descripción de algunos elementos del menú “Format” (Algunos comandos de éste menú se aplican a el o los bloques seleccionados mientras que otros se aplican a todo el modelo): Comando Descripción Font... Para cambiar la tipografía y tamaño de las leyendas. Flip name Cambia la posición de la leyenda del bloque. Hide name Oculta la leyenda del bloque. Flip block Voltea (horizontalmente) el bloque. Se puede ejecutar éste comando con la

combinación de teclas Ctrl+I. Rotate block Rota el bloque. Se puede ejecutar éste comando con la combinación de teclas

Ctrl+R. Show drop shadow Agrega sombra al bloque. Background color Cambia el color de fondo del bloque. Foreground color Cambia el color de las líneas, texto y figuras del bloque. Wide vector lines Muestra las líneas vectoriales con mayor grosor que los escalares. (El nombre

de este comando cambia entre la versión 5.3 y 6) Signal dimension Muestra la dimensión de las líneas. Uno si es escalar y la dimensión del vector

si es vectorial.

9.4. Parámetros de simulación

Una vez creado un modelo se deben ajustar los parámetros de simulación, que se pueden acceder desde el menú "Simulation"->"Simulation parameters...", con lo cual aparece el siguiente cuadro de diálogo:

Page 16: Matlab y Simulink

15

Variable Descripción Start time Tiempo inicial de la simulación en segundos Stop time Tiempo final de la simulación en segundos (este es por ejemplo el que mostrará el

osciloscopio por defecto) Type Aquí se selecciona el método numérico a usar para resolver las ecuaciones

diferenciales. Pueden ser de paso fijo o paso variable. Y se pueden seleccionar varios métodos para cada opción anterior. Si no se sabe que seleccionar use las opciones por defecto. Para mayores detalles, leer la ayuda correspondiente.

Max step size

Puede ser "auto" o un valor en segundos. Este valor limita el mayor paso de integración usado por el método numérico. Debe ser menor que la menor constante de tiempo del sistema simulado.

9.5. Inicio y finalización de la simulación

Una vez creado un modelo y ajustados los parámetros de simulación, para iniciar la simulación se puede hacer desde "Simulation"->"Start", Una vez finalizada la simulación se puede abrir el bloque "Scope" del modelo y ver el resultado de la simulación.

10. Observaciones

Este trabajo esta basado en diferentes manuales y apuntes sobre el uso de Matlab y simulink, se recomienda en caso de querer una mayor profundización de los temas utilizar manuales más avanzados y no olvidar la potencialidad de la muy buen “help” de matlab.