You are on page 1of 16

## Dinmica y control de procesos Coln Daniel Balbuena Eduardo

T abla de contenido
1. 2. 3. INTRODUCCIN ......................................................................................................................... 3 FUNCIONES MATEMTICAS COMUNES ............................................................................ 4 CARACTERSTICAS DE LA VENTANA DE COMANDOS ................................................... 5

3.1. CMOUTILIZARELWORKSPACE........................................................................................................ 5 3.2. FORMATOSDENMEROS .................................................................................................................. 5 4. 5. M-FILES ........................................................................................................................................ 5 OPERACIONES CON VECTORES ........................................................................................... 6

5.1. DEFINICINDEMATRICESY VECTORES ................................................................................................ 6 5.2. FUNCIONESPARACLCULOSCONPOLINOMIOS.................................................................................... 8 6. REPRESENTACIONES GRFICAS ........................................................................................ 9 6.1. LAFUNCINPLOT............................................................................................................................ 9 6.2. ESTILOSDELNEA,MARCASYCOLORES .............................................................................................. 10 6.3. FIJARREJILLAS,EJES,YETIQUETAS....................................................................................................... 10 7. 8. 9. 9.1. 9.2. 9.3. 9.4. 9.5. 10. TOOLBOX DE CONTROL ........................................................................................................ 10 AYUDA ......................................................................................................................................... 11 SIMULINK .................................................................................................................................. 12 INTRODUCCIN............................................................................................................................. 12 LIBRERADEBLOQUES..................................................................................................................... 12 CONSTRUCCINDEUNMODELO...................................................................................................... 13 PARMETROSDESIMULACIN......................................................................................................... 14 INICIOYFINALIZACINDELASIMULACIN ........................................................................................ 15 OBSERVACIONES ................................................................................................................. 15 7.1. REPRESENTACINDEUNSISTEMA..................................................................................................... 10 8.1. ELCOMANDOHELP........................................................................................................................ 12

1. Introduccin
4*2 [Pulsamos enter] ans = 8

## A su vez, podemos usar variables para realizar nuestros clculos:

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 maysculas de minsculas, 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 borrara esta variable, pero si escribimos slo clear, borrar todo lo que hay en memoria; por desgracia, una vez eliminadas, las variables no se pueden recuperar.

Podemos recuperar cualquier instruccin escrita previamente pulsando la tecla del cursor . Para detener la ejecucin de cualquier instruccin, hay que pulsar la combinacin de teclas Ctrl+C.

## 2. Funciones matemticas comunes

Matlab incluye ciertas funciones que nos permiten realizar muchos clculos ms 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 operacin que incluya una raz cuadrada escribimos:
x = 3 - sqrt (5/6) * 2 x = 1.1743

## A continuacin se muestra una breve lista de las funciones esenciales de MATLAB:

abs(x) acos(x)1 asin (x) atan (x) atan2(x,y) cos (x) sin (x) tan (x) exp (x) expm(x) log(x) log10 (x) roots(x) fzero('f(x)',n) Valor absoluto de x. Si x es un nmero complejo, abs(x) nos da su mdulo Arco coseno de x Arco seno de x Arco tangente de x. Devuelve un ngulo entre pi/2 y pi/2 Arco tangente de x entre y. Devuelve un ngulo entre 0 y 2*p coseno de x seno de x tangente de x exponencial ex exponencial de una matriz x logaritmo neperiano de x logaritmo en base 10 de x Halla las races del polinomio x (ej.- f(x)= 'x^2+x+3' ) encuentra la solucin de la ecuacin f(x)=0; n es el valor por donde empieza a iterar para hallar la solucin. Ej X0=fzero('x^2+x3',1) raz cuadrada de x ngulo de x parte real de x Determinante de x parte imaginaria de x 1 Matlab trabaja solo en radianes

## sqrt(x) angle (x) real(x) Det(x) imag(x)

Es recomendable trabajar con atan2 en vez de atan, pues si la parte real del nmero 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

Para la funcin atan los nmeros 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 nmero 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. Caractersticas de la ventana de comandos

3.1. Cmo utilizar el Workspace
Todas las variables que se han definido hasta ahora, se guardan en el Workspace, que no es ms 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 sesin debemos teclear
>>diary <nombre del fichero>

Para que deje de grabar la sesin teclearamos diary off. Tambin se puede guardar nicamente el valor de algunas variables:
save c:\dinamica\datos x y

Aqu no es necesario aadir la extensin, y MATLAB crear el fichero con extensin .mat. Las variables x e y han de estar previamente definidas. Para recuperar las variables guardadas teclearemos:

## 3.2. Formatos de nmeros

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

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

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 slo para los nmeros A1 y A2. Para ello, bastar con borrar las dos primeras lneas 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

## Tambin se puede hacer que el programa pida los nmeros A1 y A2 al usuario:

A1=input('Introduzca el comp2=input('Introduzca A=A1+A2; if(A==20) disp(el producto else disp(el producto end primer nmero -> '); el segundo nmero -> ');

es 20) no es 20)

## 5. Operaciones con vectores

5.1. Definicin de matrices y vectores
Como en casi todos los lenguajes de programacin, en MATLAB las matrices y vectores son variables que tienen nombres. Se sugiere que se utilicen letras maysculas para matrices y minsculas para vectores y escalares Para definir una matriz no es necesario definir con anterioridad su tamao (es mas, se puede definir un tamao y cambiarlo posteriormente)

Las matrices se definen por filas; los elementos de una misma fila estn separados por blancos o comas, mientras que las filas estn separadas por pulsaciones intro o por caracteres punto y coma (;). Por ejemplo, el siguiente comando define una matriz A de dimensin (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 funcin coseno(t), necesitaramos bastantes ms de 5 elementos para obtener una grfica aceptable. Escribir 200 elementos resultara bastante tedioso. Como era de suponer, existe una forma automtica de crear un vector. La instruccin 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 instruccin 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
7

## T = primero : ultimo T =primero:incremento:ultimo T=linspace(primero, ultimo,n) T =logspace(primero, ultimo,n)

Crea un vector empezando en primero, incrementando una unidad en cada elemento, acabando en el elemento ultimo En este caso, el incremento no es 1 sino que es fijado por nosotros Crea un vector empezando en primero, acabando en ultimo, con n elementos Crea un vector logartmico

De igual manera, se pueden crear matrices, escribiendo un "; " para indicar que es una fila distinta:
x 2 2 x= [2 3;2 5] = 3 5

Cuando definimos la matriz A est quedo disponible para hacer con ella cualquier tipo de operacin (adems de valores numricos, en la definicin de una matriz o vector se pueden utilizar expresiones y funciones matemticas). Por ejemplo, una sencilla operacin con A es hallar su matriz transpuesta. En MATLAB el apstrofo (') es el smbolo de transposicin 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 vaca.

## 5.2. Funciones para clculos 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 (funcin polyval()) o calcular las races de dicho polinomio (funcin roots()):
>> pol=[1 0 0 2 -6 8] pol = 1 0 0 >> 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

-6

Si se desea calcular producto entre polinomios se puede utilizar la funcin conv() (de producto de convolucin).
>> polA=[1 -2 3]; >> polB=[3 -5]; >> polC=conv(polA,polB) polC = 3 -11 19 -15

6. Representaciones grficas
6.1. La funcin plot
Para representar grficos en dos dimensiones, es habitual utilizar el comando plot(eje x, eje y). Por ejemplo, si quisisemos representar la funcin coseno:
t=[-2*pi:0.01*pi:2*pi]; y = cos(t); plot (t,y)

Si esto ha sido bien ingresado debera aparecernos una ventana con la figura:

Esta grfica se puede ampliar, reducir, cambiar su color y copiar para utilizarla en otro documento. Si ya tenamos abierta una ventana Figure, al usar plot, desaparecer la grfica anterior sin previo aviso. Para evitarlo, se debe agregar el comando figure para generar una nueva ventana. Tambin es posible dibujar ms de una grfica en una ventana, escribiendo plot(eje x1, eje y1, eje x2, eje y2,...);

Tambin 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 pequeas 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 lnea, marcas y colores

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

## 6.3. Fijar rejillas, ejes, y etiquetas

Para fijar una cuadrcula 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 grfica:
title('Representacin de las funciones seno y coseno'), xlabel ('variable independiente'), ylabel ('variables dependientes')

Se puede tomar valores de una grfica con la instruccin ginput. Una vez tecleado ginput, nos aparecer la ventana Figure, y con el ratn haremos clic en el punto que queramos conocer. Despus pulsaremos enter y el valor de las coordenadas del punto aparecer en la ventana de comandos de MATLAB.

7. Toolbox de control
7.1. Representacin de un sistema
El primer problema que se nos plantea es la definicin de un sistema. Los sistemas se suelen expresar en forma de funcin de transferencia. sta se puede expresar como cociente de polinomios, con la

10

instruccin 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 representacin, 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 esttica, sino la que se obtiene al expresar la funcin de transferencia en forma de polos y ceros. Tambin se puede obtener la descomposicin 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 trmino independiente, que valdr 0 siempre que el orden del numerador sea inferior al del denominador. Es decir, F(s) tambin 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.

11

## 8.1. El comando help

Para recurrir a la ayuda, basta con teclear help nombre_de_funcin. Si escribimos help a secas, nos aparecer una lista de categoras 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 pequea descripcin de la funcin que estamos ingresando, y tambin puede mostrar una serie de comandos relacionados Aunque en la ayuda aparezca la funcin en maysculas, al usarla hemos de escribirla en minscula, ya que sino Matlab no la reconocer y nos dar error Si no conocemos en concreto el nombre de la funcin, podemos usar el comando lookfor:
lookfor complex

Este nos mostrar todas las funciones relacionadas con nmeros complejos. Tambin es til el comando demo, que nos mostrar una pantalla con demostraciones de todas las posibilidades que ofrece MATLAB.

9.1. Introduccin
Simulink es una extensin de MATLAB para la simulacin de sistemas dinmicos. Al ser un entorno grfico, 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 aparecern una ventana con las libreras de Simulink, y de all se puede crear un nuevo modelo yendo archivo/nuevo.

## 9.2. Librera de Bloques

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

12

## 9.3. Construccin de un modelo

Una vez abierta la librera de bloques, se debe crear un nuevo modelo en blanco. En el cual se podrn ver los siguientes componentes:

Para agregar componentes a nuestro modelo esto se deben arrastrar desde la librera 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 seal, y se refieren respectivamente al argumento y resultado de la funcin. En consecuencia para armar un sistema se debern conectar salidas con entradas usando lneas. Para unir bloques, se deber

13

presionar el botn izquierdo del mouse sobre la salida de un bloque, y manteniendo el botn presionado, arrastrarlo hasta la entrada de otro bloque. Para sacar una derivacin de una lnea ya existente se debe colocar el puntero sobre la lnea y cuando el puntero se transforme en una cruz y presionando el botn derecho del ratn, y mantenindolo presionado, arrastrarlo hasta el destino final o intermedio. No es necesario finalizar la lnea inmediatamente. Se puede trazar un segmento, soltar el botn del ratn, y continuar ms adelante (una vez iniciada la derivacin, el siguiente segmento se deber continuar usando el botn izquierdo). Una vez que se ha agregado un bloque al modelo, se puede usar el men Format para cambiar su aspecto. A continuacin se muestra una tabla con una breve descripcin 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 Font... Flip name Hide name Flip block Rotate block Show drop shadow Background color Foreground color Wide vector lines Signal dimension Descripcin Para cambiar la tipografa y tamao de las leyendas. Cambia la posicin de la leyenda del bloque. Oculta la leyenda del bloque. Voltea (horizontalmente) el bloque. Se puede ejecutar ste comando con la combinacin de teclas Ctrl+I. Rota el bloque. Se puede ejecutar ste comando con la combinacin de teclas Ctrl+R. Agrega sombra al bloque. Cambia el color de fondo del bloque. Cambia el color de las lneas, texto y figuras del bloque. Muestra las lneas vectoriales con mayor grosor que los escalares. (El nombre de este comando cambia entre la versin 5.3 y 6) Muestra la dimensin de las lneas. Uno si es escalar y la dimensin del vector si es vectorial.

## 9.4. Parmetros de simulacin

Una vez creado un modelo se deben ajustar los parmetros de simulacin, que se pueden acceder desde el men "Simulation"->"Simulation parameters...", con lo cual aparece el siguiente cuadro de dilogo:

14

## Max step size

Descripcin Tiempo inicial de la simulacin en segundos Tiempo final de la simulacin en segundos (este es por ejemplo el que mostrar el osciloscopio por defecto) Aqu se selecciona el mtodo numrico a usar para resolver las ecuaciones diferenciales. Pueden ser de paso fijo o paso variable. Y se pueden seleccionar varios mtodos para cada opcin anterior. Si no se sabe que seleccionar use las opciones por defecto. Para mayores detalles, leer la ayuda correspondiente. Puede ser "auto" o un valor en segundos. Este valor limita el mayor paso de integracin usado por el mtodo numrico. Debe ser menor que la menor constante de tiempo del sistema simulado.

## 9.5. Inicio y finalizacin de la simulacin

Una vez creado un modelo y ajustados los parmetros de simulacin, para iniciar la simulacin se puede hacer desde "Simulation"->"Start", Una vez finalizada la simulacin se puede abrir el bloque "Scope" del modelo y ver el resultado de la simulacin.

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 profundizacin de los temas utilizar manuales ms avanzados y no olvidar la potencialidad de la muy buen help de matlab.

15