control con matlab

30
  Instituto Tecnológico de la Laguna | Juan Manuel Jiménez Israel Montoya Ricardo Vargas Araceli Alvarado Naranjo Omar Adolfo Carrillo Yair Amilcar Luna Castro ------ MANUAL DE CONTROL EN MATLAB

Upload: juan-manuel-jimenez-covarrubias

Post on 21-Jul-2015

452 views

Category:

Documents


0 download

TRANSCRIPT

------

MANUAL DE CONTROL EN MATLAB

Instituto Tecnolgico de la Laguna | Juan Manuel Jimnez Israel Montoya Ricardo Vargas Araceli Alvarado Naranjo Omar Adolfo Carrillo Yair Amilcar Luna Castro

ContenidoIntroduccin ........................................................................................................................................ 3 Interfaz de MATLAB............................................................................................................................. 4 Manejo elemental de MATLAB en ventana de comandos .................................................................. 8 Funciones y operaciones bsicas ........................................................................................................ 9 Operaciones matemticas elementales .......................................................................................... 9 Funciones ms comunes ................................................................................................................. 9 Symbolic Math Toolbox..................................................................................................................... 10 Simplificacin y sustitucin ............................................................................................................... 10 collect(f) .................................................................................................................................... 11 expand(f) ................................................................................................................................... 11 factor(f) ..................................................................................................................................... 12 simplify(f)................................................................................................................................... 13 pretty(f) ..................................................................................................................................... 14 subs(S,new,old) ......................................................................................................................... 14 Algebra de bloques con Simulink ...................................................................................................... 15 Sistemas elctricos ........................................................................................................................ 15 Sistemas mecnicos ...................................................................................................................... 15 Comportamiento de los sistemas en el dominio del tiempo ............................................................ 15 Funcin de transferencia................................................................................................................... 16 Anlisis de estabilidad ....................................................................................................................... 17 Criterio de Routh-Hurwitz ............................................................................................................. 17 Lugar Geomtrico de las Races .................................................................................................... 22

IntroduccinEn la actualidad, el manejo de los distintos programas computacionales para la solucin de problemas de ingeniera ha pasado de ser un lujo a una necesidad. El trabajo presentado a continuacin constituye una gua de aprendizaje de MATLAB bsico con aplicaciones de clculo diferencial e integral, y se pretende sirva como apoyo a los alumnos de Ingeniera mecatrnica en el Instituto Tecnolgico de la Laguna. MATLAB, es un software ampliamente difundido en el campo de la docencia y la investigacin ya que es un lenguaje de alto nivel para clculo cientfico con gran potencial y fcil de manejar, ya que cuenta con distintos paquetes toolbox, las cuales le permiten al usuario resolver problemas utilizando algoritmos especficos predefinidos, de los cuales, para este curso, se tratara bsicamente el paquete Symbolic Matlab Toolbox. Este paquete nos permite realizar clculos de manera simblica, es decir, sin necesidad de asignar un nmero a una variable y tratarla como una constante genrica, lo cual, nos permite realizar operaciones de integracin simblica, derivacin, calculo de reas, volmenes, etc. Adems, en este curso se tratan temas bsicos acerca de graficacin en dos y tres dimensiones, los cuales servirn de apoyo para la comprensin de los resultados obtenidos. Con este curso, se pretende que el alumno adquiera los conocimientos bsicos necesarios para resolver problemas de clculo diferencial e integral, adems de sus aplicaciones, dndole la oportunidad de comprender de una manera ms clara las aplicaciones de sta extensa rea, adems de las facilidades que nos brinda MATLAB para realizar este tipo de procedimientos.

Interfaz de MATLABEl primer paso antes de comenzar a trabajar con MATLAB, consiste en conocer la ventana principal y sus componentes, los cuales se muestran a continuacin:

Figura 1.-Ventana principal de MATLAB, en ella se sealan algunos de los campos mas importantes como son: a)Current folder (Izquierda), b)Command Window (centro), c)Workspace (derecha superior), d)Command History (derecha inferior). Current folder: Este campo nos muestra el directorio en el cual MATLAB busca los archivos M-files y los archivos de Workspace (.mat) los cuales pueden ser guardados para cargarse en otra sesin. La importancia de esta carpeta radica en que en ella deben de encontrarse todos los archivos que requerimos al momento de realizar cualquier proyecto, es por eso que se recomienda tener una carpeta para cada proyecto en la cual se encuentren los archivos que usaremos, y esta carpeta, debe estar activa al trabajar con este proyecto.

Para cambiar la carpeta seleccionada, podemos escribir o buscar utilizando la barra de direccin en la parte superior o haciendo clic en el lado aun lado de sta, como se muestra en la Figura 2.

Figura 2.- Barra de direccin para seleccionar la carpeta actual (Current Folder).

Command Window: Las expresiones y declaraciones de MATLAB son evaluadas conforme se van tecleando en la Command Window o ventana de comandos, y los resultados, son mostrados en la misma seccin.

Figura 3.- En este ejemplo, se muestra como en la ventana de comandos se ingresa a la variable t el valor de 5, para despus evaluar la funcin y=sin(t) para dicho valor. Como podemos apreciar, el resultado se muestra inmediatamente debajo de la instruccin tecleada por el usuario.

Workspace Window: La ventana de trabajo, Workspace Window muestra todas las variables asignadas durante una sesin de MATLAB. Existen muchos tipos de datos o clases fundamentales en MATLAB y, cada uno de estos est formado por un arreglo multidimensional.

Figura 4.- En el Workspace, podemos apreciar las variables almacenadas durante una sesin, las cuales pueden tener distintos valores o ser de distintas clases. En esta imagen se pueden apreciar 4 variables de distintos tipos: a) Variable a: Esta variable contiene el arreglo tipo double [1,2,3,4]. b) Variable t: Esta variable contiene almacenado un nmero tipo double. c) Variable x: esta variable se defini como un arreglo de 1x1 tipo simblico. d) Variable y: Contiene un nmero decimal tipo double.

Al escribir el comando whos en el Command Window, como resultado obtendremos una lista de todas las variables guardadas en el Workspace, permitindonos visualizar claramente el tamao del arreglo de cada variable, adems de su clase o tipo y su peso en Bytes.

Figura 5.- Uso del comando whos para visualizar un anlisis detallado de las variables almacenadas en el Workspace.

Command History: El historial de comandos, nos permite visualizar todos los comandos utilizados recientemente, los cuales son almacenados para facilitarle al usuario el uso de comandos repetidamente, adems de poder visualizar todos los procedimientos realizados. Estos comandos, conforme pasa el tiempo, se van ordenando por fecha y hora de ejecucin, lo cual nos permite verificar los comandos usados en casi cualquier momento en el pasado. Una muy til opcin que nos brinda la Command Window de Matlab, es que, al presionar las teclas de las flechas, podemos ir desplazndonos a travs de los comandos del Command History, lo cual nos absuelve de tener que escribir los mismos comandos repetidas veces.

Figura 6.- Vista de comandos archivados en el Command History, para insertarlos en la ventana de comandos, basta con hacer doble clic sobre el en el Command History o navegar a travs de ellos con las flechas del teclado.

Manejo elemental de MATLAB en ventana de comandosEn MATLAB, los comandos deben introducirse uno a uno enseguida del prompt (>>), que aparece en la ventana de comandos. Para familiarizarnos con el manejo de la ventana de comandos de MATLAB, comenzaremos realizando algunas operaciones matemticas bsicas que nos permitan entender el funcionamiento de la consola o ventana de comandos. Para sumar dos nmeros, es necesario introducir lo siguiente en la ventana de comandos: >>3+2 Ans = 5

En el ejemplo, se presentan los comandos ingresados por el usuario en un fondo color naranja, mientras que el resultado obtenido al presionar la tecla ENTER se muestra remaraca con un fondo en color verde. Como podemos apreciar, en el resultado se guardo automticamente en una variable llamada Ans, de la forma Ans=4. Esto sucede ya que, siempre que realicemos una operacin sin asignarla a una variable, esta por default se guardara en la variable ANS, sobrescribiendo el resultado anterior. Pero, Qu pasara si queremos conservar los valores de distintas operaciones?, en este caso es necesario asignar la operacin a una variable como se muestra en el ejemplo siguiente: >>x=3*5 Ans = 15

Una vez realizadas las operacin de suma y multiplicacin anteriores, nuestro Workspace debe lucir de la siguiente manera:

Figura 7.- Apariencia del Workspace despus de realizar las operaciones anteriores. Se pueden apreciar en el los valores resultantes de dichas operaciones.

De esta manera, MATLAB nos permite realizar en la operacin matemtica tan sencilla como los ejemplos hasta ahora mostrados, y a su vez, realizar clculos matemticos con niveles de complejidad increblemente elevados, convirtindose en una poderosa herramienta en ingeniera. En los siguientes captulos, trataremos acerca de distintos temas, principalmente enfocados al manejo de MATLAB para resolver problemas de clculo diferencial e integral, tanto de forma simblica como numrica, y se busca ir pasando de problemas sencillos hasta problemas con un nivel de complejidad un poco mas elevado, siempre buscando que el alumno entienda el funcionamiento y la aplicacin de MATLAB para resolver problemas que, como estudiantes de ingeniera, se convertirn en parte de la vida diaria.

Funciones y operaciones bsicasA continuacin, se presentan algunos tablas informticas con los operadores matemticos, comandos funciones que sern utilizadas durante el curso.

Operaciones matemticas elementalesSuma Resta Divisin Exponenciacin Multiplicacin Raz cuadrada + / ^ * Sqrt()

Funciones ms comunessin( ) cos( ) tan( ) sinh( ) cosh( ) tanh( ) asin( ) acos( ) atan( ) exp( ) log( ) log10( ) abs( ) Seno Coseno Tangente Seno hiperblico Coseno hiperblico Tangente hiperblico Arcoseno Arcocoseno Arcotangente Exponencial Logaritmo neperiano Logaritmo decimal Valor absoluto

Symbolic Math ToolboxCon Symbolic Math Toolbox, el usuario cuenta con una serie de comandos que le permitirn realizar clculos simblicos. Este toolbox, nos brinda las herramientas necesarias para resolver y manipular expresiones matemticas simblicas generando resultados aritmticos de gran precisin. Se cuenta con cientos de funciones simblicas que nos permitirn realizar tareas como: Diferenciar Integrar Operaciones algebraicas lineales Simplificacin Transformacin Aritmtica de precisin variable Solucin de ecuaciones

Simplificacin y sustitucinAlgunas de los comandos bsicos que nos sern de gran ayuda al resolver problemas de matemticas simblicas, y uno de los problemas con los que nos encontramos, es con la necesidad de expresar una misma ecuacin de distintas maneras, en el ejemplo siguiente, podemos apreciar la misma ecuacin expresada de tres formas distintas. En el ejemplo siguiente, podemos apreciar la primera instruccin llamada syms seguida por la letra x, lo cual nos indica que estamos asignando x como una variable simblica en el Workspace, lo cual nos permitir trabajar con ella utilizando funciones del Symbolic Math Toolbox. Otra dato importante es que, en la consola de MATLAB, podemos agregar comentarios, los cuales son ignorados al ejecutar las instrucciones, es decir, solo tienen funcin informativa para el usuario. En este ejemplo, podemos apreciar que al escribir el signo %, automticamente el texto que lo sigue aparece en color verde, lo cual quiere decir que es un comentario, y que ser ignorado al momento de realizar las operaciones. >> syms x %Declara x como una variable simblica >> f = x^3 - 6*x^2 + 11*x - 6; %Guarda en f, g y h la misma funcin >> g = (x - 1)*(x - 2)*(x - 3); %Expresada de distinta forma >> h = -6 + (11 + (-6 + x)*x)*x;

Una vez ingresadas estas funciones a la consola de MATLAB, podemos apreciar que las variables f,g y h, aparecern en el Workspace, lo que quiere decir que las funciones han sido guardadas correctamente y que podemos realizar con ellas una gran cantidad de operaciones, sin tener que volver a escribirlas cada vez que las necesitamos.

Figura 8.- Apariencia del Workspace despus de insertar las funciones f, g y h del ejemplo anterior. Existen algunos comandos que dentro del Symbolic Math Toolbox que nos permiten visualizar una de distintas formas. En el ejemplo anterior, vimos un ejemplo de tres ecuaciones iguales expresadas en un modo distinto, pero, al fin de cuentas, no son ms que la misma ecuacin. A continuacin se menciona una breve descripcin y ejemplo sobre el uso de algunos comandos para simplificar una ecuacin.

collect(f) El comando collect(f) muestra junta todos los coeficientes con la misma potencia de la variable simblica, por ejemplo x. Un segundo argumento puede indicar la variable que se quiere afectar, en el caso de tener varias variables. Ejemplo: >> syms x >> f = (x-1)*(x-2)*(x-3); >> collect(f)Ans = x^3-6*x^2+11*x-7

%Declaramos x como variable simblica %ingresamos la funcin f%Aplicamos el comando collect

Podemos observar en el resultado, que se efectuaron todas las multiplicaciones y los trminos se agruparon de mayor a menor grado.

expand(f) El comando expand(f) tiene la funcin de distribuir los productos de una ecuacin y aplicar las identidades correspondientes generndonos ecuaciones de sumas, como se muestra en el ejemplo.

Ejemplo1: >> syms a x y >> f = a*(x+y); >> expand(f)Ans = a*x+a*y

%Declaramos a,x,y como variables simblicas %ingresamos la funcin f%Aplicamos el comando expand( )

En este ejemplo, podemos apreciar que al aplicar el comando expand( ) a la funcin f, obtuvimos como resultado que esta se expanda en trminos suma. Ejemplo 2: >> syms a b >> f = exp(a+b); >> expand(f)Ans = exp(a)*exp(b)

%Declaramos a,x,y como variables simblicas %ingresamos la funcin f%Aplicamos el comando collect

En este ejemplo podemos apreciar que al aplicar el comando expand a la funcin f, el resultado consiste en evaluar la funcin conociendo la identidad que nos dice que . Es decir, se aplico la identidad correspondiente a la ecuacin. Ejemplo 3: >> syms x y >> f = cos(x+y); >> expand(f)Ans = Cos(x)*cos(y)-sin(x)*sin(y)

%Declaramos a,x,y como variables simblicas %ingresamos la funcin f%Aplicamos el comando expand

En el tercer y ltimo ejemplo de la funcin expand, tambin podemos apreciar la ( ) ( ) ( ) aplicacin de una identidad trigonomtrica, la cual nos dice que ( ) ( ). Con lo cual, comprobamos el funcionamiento de el comando expand para distintos casos.

factor(f) Siendo f un polinomio con coeficientes racionales, el comando factor(f) expresa la funcin f como un producto de polinomios de menor grado con coeficientes racionales. En caso de que el polinomio f no pueda ser factorizado, el resultado ser el mismo polinomio f en su forma original.

Ejemplo: >> syms x >> f = x^3-6*x^2+11*x-6; >> factor(f)ans = (x-3)*(x-1)*(x-2)

%Declaramos x como variables simblicas %ingresamos la funcin f%Aplicamos el comando factor

Podemos apreciar que el resultado al ejecutar el comando factor nos entrega la ecuacin factorizada, contrario a la funcin expand.

simplify(f) La funcin simplify(f) es un poderoso comando de propsito general el cual aplica a una ecuacin identidades algebraicas, potencias, races cuadradas, potencias fraccionales, as como una gran cantidad de identidades trigonomtricas, exponenciales, logartmicas, entre otras, generndonos excelentes resultados. Para dejar en claro el funcionamiento del comando simplify(f) se presentan los siguientes ejemplos:

Ejemplo 1: >> syms x >> f = (1-x^2)/(1-x); >> simplify(f)ans = x+1

En este ejemplo podemos apreciar como el comando simplify nos llev de una funcin compleja a una expresin notablemente ms sencilla.

Ejemplo 2: >> syms x y >> f = exp(x)*exp(y); >> simplify(f)ans = exp(x+y)

En este ejemplo el comando simplify nos genero una ecuacin mas sencilla utilizando la identidad que nos dice que Ejemplo 3: >> syms x >> f = cos(x)^2+sin(x)^2 >> simplify(f)ans = 1

pretty(f) El comando pretty(f) muestra la funcin f en un formato similar a la escritura natural matemtica. Ejemplo 1: >> syms x >> f = 3*x^2-6*x^2+11*x-6; >> pretty(f)ans = 3 2 x - 6 x + 11 x - 6

Ejemplo 2: >> syms x >> pretty([x^3,x^2,x; 1,2,3])ans = +-+ | 3 2 | | x , x , x | | | | 1, 2, 3 | +-+

subs(S,new,old) El comando subs(), reemplaza en la funcin S, la variable old por el valor de new, que puede ser una variable, una funcin o un nmero. Existen distintas variantes en los parmetros que se asignan al comando, mas sin embargo, para este curso bsico solo usaremos la forma ms genrica del mismo.

Ejemplo 1: >> syms x y>> f=x^3+3*x+2; >> g=y; >> subs(f,g,x) ans = y^3 + 3*y + 2 %guardamos una funcin en la variable f %guardamos otra funcin en la variable g %Sustituimos en la funcin f el valor de la funcin g, %en lugar de la variable x

Teniendo la funcin f=x^3+3*x+2 se pretende sustituir todas las letras x de la ecuacin por la funcin almacenada en g (es decir, y). Una vez efectuado el comando pretty(), podemos apreciar que el resultado es la ecuacin f, pero, todas las x fueron sustituidas por y.

Ejemplo 2: >> syms x y >> f=1/x^2; >> subs(f,1/y,x)ans = y^2

En este ejemplo, podemos apreciar como sustituir en una funcin f, otra funcin (1/y) escrita directamente como parmetro de la funcin subs(), es decir, sin tener que asignarlo antes a una variable, como se hiso en el ejemplo 1, logrando as que todas las x se sustituyan por 1/y, simplificndose y dando como resultado y^2.

Algebra de bloques con SimulinkSistemas elctricos Sistemas mecnicos

Comportamiento de los sistemas en el dominio del tiempo

Funcin de transferenciaPara definir una funcin de transferencia en MATLAB, utilizaremos el comando tf(num,den). Donde num es el numerador y den es el denominador de nuestra funcin de transferencia. Este comando tiene como propsito crear una funcin de transferencia real o compleja. Sys= tf(num,den) crea una funcin de transferencia continua en el tiempo con numerador y denominador especificados por num y den. La Salida Sys es un objeto que almacena la informacin de la funcin de transferencia.

Ejemplo 1: Ingrese la funcin de transferencia ( ) >> ts=tf([1 1],[1 3 2 1 1]) Transfer function: s+1 --------------------------s^4 + 3 s^3 + 2 s^2 + s + 1 en MATLAB:

Ejemplo 2: Ingrese la funcin de transferencia ( ) >> ts=tf([1],[1 4 3 2 1]) Transfer function: 1 ----------------------------s^4 + 4 s^3 + 3 s^2 + 2 s + 1 en MATLAB:

Anlisis de estabilidadSabemos que un sistema es estable cuando la respuesta transitoria se va haciendo cero con el tiempo.

Criterio de Routh-HurwitzPara realizar anlisis de estabilidad de un sistema, utilizaremos una pequea aplicacin desarrollada en MATLAB llamada, propiamente Routh_Horwitz, la cual nos permitir realizar anlisis de estabilidad de un sistema. Esta aplicacin se puede descargar de forma gratuita desde la pagina web de Mathsoft.

Figura 20.- Ventana principal de la aplicacin Routh_Horwitz

En la figura anterior podemos apreciar la ventana principal de la aplicacin Routh_Horwitz, en la cual ingresaremos una matriz de coeficientes del polinomio caracterstico. A continuacin se muestran algunos ejemplos:

Ejemplo 1: Determinar si el sistema con la funcin de transferencia es estable:

1. Ingresamos en el cuadro de texto Input ecuation el polinomio caracterstico de nuestra ecuacin de la siguiente manera: [5 3 12 20 100 150 200] y al presionar enter, obtendremos lo siguiente:

Figura 21.- Tabla de Routh-Horwitz resultante.

Como podemos apreciar, en la seccin de Input Equation, la ecuacin se transformo en la forma como visualizamos normalmente el polinomio caracterstica. Tambin podemos apreciar la tabla de Routh-Hurwitz obtenida, en la cual, como podemos apreciar hay nmeros negativos, lo cual nos indica que nuestro sistema es inestable. Adems de esto, podemos apreciar un recuadro que nos muestra el nmero de races y de qu tipo son, pudiendo ser: Repeat jw: Nmero de races repetidas en el eje jw. LHP: Nmero de races en el lado izquierdo del plano. Jw: Nmero de races en el eje jw. RHP: Nmero de races en el lado derecho del plano. Center: Nmero de races s=0. Repeated center: Nmero de races repetidas s=0.

Para este caso, podemos apreciar que contamos con cuatro races en el lado izquierdo del plano y dos races en el lado derecho, lo cual podemos observar al dar clic en el men tolos>diagrams>Root Locus

Figura 22.- Men tools>Diagram>Root Locus

Con esto, obtendremos la siguiente grfica:

Figura 23.- Grfica del LGR de la funcin de transferencia

Ejemplo 2: Determinar los valores de k para los que el sistema es estable, teniendo la funcin de transferencia Para resolver este problema, utilizaremos una herramienta de la GUI Routh_Hurwitz llamada Gain_Finder.

1. Seleccionamos la herramienta Gain_Finder en el men tools. Lo cual llamara a la siguiente ventana.

Figura 24.- Ventana Gain_Finder.

Lugar Geomtrico de las Races

>>syms s

1. Obtenemos el polinomio caracterstico de nuestra funcin de transferencia utilizando el comando expand(). >> pol=(s+1)*(s+3+j)*(s+3-j)*(s+4); >> pol=expand(pol) pol = s^4 + 11*s^3 + 44*s^2 + 74*s + 40 %Guardamos el denominador en la variable pol %Obtenemos el polinomio caracterstico

2. Una vez obtenido el polinomio caracterstico, podemos ingresar nuestra funcin caracterstica ingresando los coeficientes de nuestros polinomios. >> trans=tf([1 1],[1 11 44 74 40]) Transfer function: s+1 --------------------------------s^4 + 11 s^3 + 44 s^2 + 74 s + 40 %Ingresamos los coeficientes de la funcin de transferencia

3. Una vez realizado este procedimiento, ya podemos ingresar nuestra funcin de transferencia en el comando rlocus(tf) como se muestra a continuacin: >> rlocus(trans) %Calculamos el lugar geomtrico de la recta de nuestra ft

4. El resultado del comando anterior, ser la siguiente grfica:

Figura 9.- LGR de la funcin de funcin de transferencia

5. Como podemos ver, hasta este punto, ya tenemos la grfica del lugar geomtrico de la recta, lo cual nos es muy til, pero, una pregunta interesante sera cmo saber los distintos valores de k, para lo cual, usaremos el siguiente comando;

>> rltool

Este comando llamar a una GUI llamada SISO design for SISO design task, la cual, entre otras cosas, nos permite visualizar el valor de la ganancia k en los distintos puntos.

Figura 10.- Ventana del SISO design for SISO design task

Figura 11.- Ventana Control and estimation tools managment, la cual se abre tambin al ejecutar el comando rltool

6. Una vez abiertas estas dos ventanas con el comando rltool tendremos que importan la funcin de transferencia que analizamos a el SISO design system for SISO design task, seleccionando la opcin Import en el men File.

Figura 12.- Importar una funcin de transferencia a la GUI.

Esto nos abrir la siguiente ventana:

Figura 13.- Ventana para importar una funcin de transferencia El siguiente paso, ser dar clic en el botn Browse para buscar las funciones de transferencia que se encuentren guardadas en el Workspace.

Figura 14.- Importando modelo desde el Workspace de MATLAB

Como podemos apreciar, en los modelos disponibles, encontramos el llamado trans, el cual habamos declarado previamente. Seleccionamos el modelo trans y damos clic en Import, despus cerramos la ventana Model Import y la ventana System Data. 7. Una vez importado el modelo, obtendremos la grfica del LGR en la ventana SISO design for SISO task, como se muestra en la siguiente figura:

Figura 15.- Visualizacin de la grfica del LGR, en la barra de estado (inferior) podemos apreciar la ganancia k para los puntos seleccionados en la grfica en color rosa.

Para conocer el valor de la ganancia k en distintos puntos, solo hay que hacer clic en la parte de la recta donde queramos conocer dicha ganancia.