MATLAB es un programa que integra matemáticas computacionales y visualización para resolver problemas numéricos basándose en arreglos de matrices y vectores. Esta herramienta posee infinidad de aplicaciones, pero existen funciones que involucran la resolución de problemas específicos de control de procesos como la definición y estudio de funciones transferencia, realización de gráficos del lugar de las raíces, de Bode y de Nyquist. A continuación se presenta una lista de las funciones de MATLAB más utilizadas, todas estas funciones deben ser ejecutadas desde la Ventana Principal de (MATLAB Command Window). 1) Como declarar una matriz o un vector. Para crear una matriz o un vector se le da nombre al mismo y se escriben los elementos de las filas y/o columnas entre corchetes. Las columnas se separan con un espacio y las filas con punto y coma (;). De esta forma para definir un vector se debe escribir: X = [a b c d] Y = [a;b;c;d] y se obtendrá el vector: X = (a b c d ) obteniendo el vector: a b Y = c d Y para definir una matriz se utilizará: A = [a b; c d] resultando la matriz: a b A = c d Ejemplo: 1 − 2 3 Definir la matriz A = 4 5 6 7 8 − 9 En la ventana principal de matlab, se debe colocar la siguiente línea: X = [1 -2 3; 4 5 6; 7 8 -9] y presionar la tecla “enter”. 2) Como definir una función de transferencia. Una función de transferencia se representa distinguiendo el numerador y el denominador como vectores formados por los coeficientes de los polinomios que forman cada término y usando el comando “tf”. Entonces para crear una función de transferencia dada: G(s) = s+a a 2 .s + a1 .s + a 0 2 Se definen los vectores: Num = [ 1 a] Den = [ a2 a1 a0] Y posteriormente se utiliza el comando: obteniendo G (s ) = G = tf(Num,Den) Num Den Ejemplo: Definir la función de transferencia de primer orden G (s ) = 1 0.5s + 1 Para esto, se definen los vectores: Num = [ 1] ó Num = 1 Den = [0.5 1] Posteriormente se coloca: G = tf(Num,Den) y se presiona la tecla “enter”. La función se mostrará inmediatamente en la pantalla. 3) Función de transferencia a lazo cerrado En el caso de que se tenga la función de transferencia a lazo abierto y se desee cerrar el lazo, se puede obtener la nueva función de transferencia usando el comando “feedback” De esta forma se escribe en la ventana principal: (Nombre de la función) = feedback(Nombre función LA, Valor retroalimentación) Ejemplo: Obtener la función a lazo cerrado de la función de transferencia a lazo abierto: G (s) = 1 0.5s + 1 Con una retroalimentación unitaria. De esta forma se define la función a lazo abierto: G = tf(Num,Den) Y posteriormente, H = feedback(G,1) Inmediatamente se muestra en pantalla la nueva función: G (s) = 1 0.5 s + 2 En el caso de que la retroalimentación sea a su vez una función de transferencia esta debe ser definida (por ejemplo como M) y se coloca: H = feedback(G,M) 4) Respuesta de una función de transferencia ante diferentes entradas. Mediante el uso de los comandos “step” e “impulse” se puede obtener la respuesta temporal de una función de transferencia dada ante una entrada escalón o impulso unitario. Para esto se debe colocar en la ventana de comandos: Step(Num,Den) ó Step(nombre de la FT) La entrada ante un impulso se encuentra de igual forma colocando el comando “impulse” Ejemplo: Encontrar la respuesta temporal ante una entrada escalón de la función de transferencia de segundo orden: G (s) = 1 s + 0.5s + 2 2 Inicialmente se debe definir la función de transferencia como se explicó en el paso 2. Una vez hecho esto se coloca el comando: step(FT1) ó step(Num,Den) y se obtiene inmediatamente la figura 1. Para obtener una mejor precisión en la lectura de la grafica se escribe el comando “grid” en la ventana principal lo que hace que aparezcan las líneas de división en la figura. Si se desea graficar las respuestas de diversas funciones de transferencia en una misma figura se puede escribir: step(FT1,FT2,…,FTN) Si se desea la respuesta hasta un tiempo determinado T se utiliza: step(FT1,T) 5) Representación en espacio de estado. Teniendo una función de transferencia dada se pueden encontrar las matrices que conforman su espacio de estado y viceversa. Se utilizan los comandos TF2SS y SS2TF De esta forma teniendo la función de transferencia: G (s) = Num Den y habiendo definido anteriormente a Num y Den. Se utiliza el comando: [A,B,C,D] = tf2ss(Num,Den) De esta forma se encuentras las matrices que representan: x = Ax + Bu y = Cx+Du de forma inversa si tienen las matrices se pueden encontrar Num y Den, mediante: [Num,Den] = ss2tf(A,B,C,D,U) Ejemplo: Encontrar las matrices que conforman el espacio de estado de la función de transferencia de segundo orden dada anteriormente. Después de definir Num y Den, se coloca el comando: [A,B,C,D] = tf2ss(Num,Den) Inmediatamente el programa arroja el valor de las siguientes matrices: − 0.5 − 2 A = 0 1 6) B = (1 0 ) 1 C = 0 D=0 Representación del lugar de las raíces. Para obtener la grafica del lugar geométrico de las raíces de una función de transferencia dada se usan los comandos “rlocus” y “rlocfind”. Después de definir el numerador y denominador de la función de transferencia se escribe en la ventana principal: rlocus(Num,Den) inmediatamente aparecerá la figura con el calculo de las raíces de la función de transferencia abierto. Al hacer clic en cualquier parte del grafico, se podrá obtener el valor del polo y ganancia en ese punto. Igualmente se puede arrastrar el cursor a través del grafico. Al colocar la sintaxis: rlocus(Num,Dem,K) Se obtendrá el grafico del lugar de las raíces para un valor determinado de ganancia K. Al usar el comando: Rlocfind(Num,Den) Se puede obtener el valor de los polos y ganancia en un punto seleccionado sobre el grafico del lugar de las raíces. Este comando debe usarse después de ejecutar rlocus. Ejemplo: Encontrar el lugar geométrico de las raíces de la función de transferencia: G (s) = s +1 s + s 2 + 2s + 1 3 Después de definir los vectores Num = [1 1] y Den = [1 1 2 1], se escribe: rlocus(Num,Den) y se obtiene el grafico: Al hacer clic en cualquier punto del lugar geométrico, se puede obtener su información. 7) Diseño del lugar geométrico de las raíces y compensadores. Al usar la herramienta “rltool”, podemos diseñar el lugar geométrico de las raíces o compensadores. Para abrir esta herramienta se define anteriormente la función de transferencia y se coloca en la ventana principal: rltool(nombre de la función) al hacer esto se abrirá una nueva ventana de trabajo donde aparecerá el lugar geométrico de las raíces de la función dada y se podrán colocar polos o ceros a conveniencia observando, en el momento, la influencia de los mismos. Si se desea diseñar una función de transferencia a partir de su lugar geométrico de las raíces se puede colocar: rltool(1) De esta forma al abrirse la ventana tendremos una función sin ceros ni polos. Ejemplo: Observar el cambio en el lugar de las raíces del a función anterior, al añadir un cero en s = -1.5 Se define la función anterior y se coloca: rltool(FT1) inmediatamente aparecerá la figura: Al seleccionar en el menú la opción “añadir cero”, y hacer clic con el botón izquierdo en -1.5 (sobre el grafico), el lugar cambiará a: 8) Graficar funciones. El comando “plot” permite graficar vectores de variables contra otras. Normalmente una de estas variables es el tiempo. Para hacer esto se debe definir los vectores a graficar y posteriormente usar el comando: plot(x,y) la primera variable será el eje de las abscisas y la segunda el de las ordenadas. En el caso de que se quieran graficar a la vez diversas variables sobre una misma figura se puede usar: plot(t,[x;y;…;n] separando las variables a graficar vs. t, con punto y coma (;). Si se desea un color, trazo o signo específico sobre cada punto se pueden usar el comando de la siguiente forma: plot(x,y,'r+:') donde la información que se encuentra entre las tildes hace que la grafica obtenida sea de color roja (r), con signos + en cada punto y un trazo punteado (:). Se tiene la opción de colocar múltiples colore, trazos y punteados. Igualmente si se grafica una función y se desea graficar otra encima de esta se puede usar el comando “hold”. Para usar este comando, se grafica una primera función con el comando plot, posteriormente se ejecuta: hold y a continuación se grafica la segunda función con el comando plot. El resultado será una figura con ambas graficas. Para liberar la superposición se ejecuta nuevamente el comando hold. Cualquier grafica que se realice a continuación saldrá en otra figura. Ejemplo: Dada la siguiente tabla de datos, graficar X vs. Tiempo. Tiempo. Tiempo 0 1 2 3 4 X 1 2 3 4 5 Graficar también X,Y vs. Y -2 -1 0 1 2 Inicialmente se definen los vectores: t=[0 1 2 3 4] x=[1 2 3 4 5] A continuación se usa el comando plot: plot(t,x,’g*-.’) y se obtiene la grafica: y=[-2 -1 0 1 2] En el segundo caso se debe escribir: plot(t,[x,y]) y se obtendrá: Si se desea colocar líneas de división en el grafico se puede usar el comando grid. Las leyendas, títulos, colores o cualquier otro detalle del grafico pueden ser colocados usando las opciones mostradas en la ventana de la figura o en su menú de propiedades. 9) Menú de ayuda HELP. Matlab posee un menú de ayuda que permite resolver problemas referentes a definición o uso de comandos. Para obtener cualquier información sobre un comando deseado o en particular para cualquiera de los explicados en esta guía se debe escribir en la ventana principal: help (nombre de la función o comando) Por ejemplo: Help plot Help rlocus Help ft