Está en la página 1de 69

Introduccion a Matlab y su aplicacion al Analisis y Control de Sistemas

Laboratorio de Control Automtico a

3o Ingeniero Telecomunicacin o
Manuel Vargas, Manuel Berenguel Escuela Superior de Ingenieros

Universidad de Sevilla

20 de Diciembre de 2004

Contenido

1 INTRODUCCION A MATLAB 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instalacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Primeros pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y s mbolos relacionados con el entorno . . . . . . . . . . Introduccion de datos. Uso de la ventana de comandos . . . . . . . Variables de entorno y variables especiales . . . . . . . . . . . . . . Elementos de las matrices . . . . . . . . . . . . . . . . . . . . . . . . . . Operaciones con matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones orientadas al analisis de datos . . . . . . . . . . . . . . . .

1 1 2 4 4 6 7 8 9 10 10 11 12 14 14 14

1.10 Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.11 Otras funciones de interes . . . . . . . . . . . . . . . . . . . . . . . . . . 1.12 Graficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13 Programando en matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.1 Operadores lgicos y relacionales . . . . . . . . . . . . . . . . . . . . . o 1.13.2 Bucles y estructuras condicionales . . . . . . . . . . . . . . . . . . . . i

ii

CONTENIDO 1.13.3 Ficheros .m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.14 Resumen de los comandos de matlab . . . . . . . . . . . . . . . . . . . . 16 18

2 ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB 2.1 2.2 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tratamiento mediante funciones de transferencia. Sistemas continuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 2.2.2 2.2.3 2.2.4 2.3 Dominio Temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dominio Frecuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comandos relacionados con operaciones de bloques . . . . . . . . . . . Lugar de las ra ces . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25 25

25 26 29 33 34

Estudio temporal y frecuencial de sistemas de primer y segundo orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 2.3.2 2.3.3 Sistemas de primer orden . . . . . . . . . . . . . . . . . . . . . . . . . Sistemas de segundo orden . . . . . . . . . . . . . . . . . . . . . . . . Anlisis del efecto de un cero en la respuesta temporal de un sistema a de segundo orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inuencia de polos adicionales. Polos dominantes . . . . . . . . . . . .

36 36 39

47 50

2.3.4 2.4

Tratamiento mediante funciones de transferencia. Sistemas discretos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tratamiento mediante descripcion en el espacio de estados . . . . 2.5.1 Diseo de reguladores en el espacio de estados n . . . . . . . . . . . . .

52 54 56 57

2.5

2.6 2.7

Manipulacion mediante objetos . . . . . . . . . . . . . . . . . . . . . . . Resumen de los comandos mas importantes del Control System Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

Cap tulo 1

INTRODUCCION A MATLAB
1.1 Introduccion

En estas notas se pretende realizar una introduccin muy bsica a matlab, orientndola o a a en el siguiente cap tulo al estudio de sistemas de control. En l neas generales, matlab es una herramienta interactiva basada en matrices para clculos cient a cos y de ingenier (de a hecho, el trmino matlab procede de matrix laboratory). Desde el punto de vista del control, e matlab se puede considerar un entorno matemtico de simulacin que puede utilizarse para a o modelar y analizar sistemas. Permitir el estudio de sistemas continuos, discretos, lineales y a no lineales, mediante descripcin interna y externa, en el dominio temporal y frecuencial. o matlab constituye un entorno abierto, para el cual numerosas paquetes espec cos adicionales (toolboxes) han sido desarrollados. En el caso que nos ocupa se utilizar fundamentalmente a el Control System Toolbox. Estos paquetes espec cos adicionales estn constituidos por un a conjunto de funciones que pueden ser llamadas desde el programa y mediante las cuales se pueden realizar multitud de operaciones. Las referencias al Control System Toolbox se realizarn directamente en los ejemplos que a acompaan a estas notas. n Las notas se centrarn fundamentalmente en aquellos aspectos y funciones que ms inters a a e tengan desde el punto de vista de control, instando al lector a que busque en el manual de usuario cualquier informacin adicional que desee ([5], [4], [3]). Para el desarrollo de las o mismas se ha utilizado asimismo, una serie de referencias bsicas en control: [1], [6], [7], [8], a etc. 1

Instalacion

1.2

Instalacion

La forma normal en la que se encuentra el sistema una vez instalado es la siguiente (versin o 3.5.1):

\matlabr11\bin \extern \help \notebook \simulink \sys \toolbox \control \local \matlab \simulink \work

El ncleo fundamental de matlab se encuentra en los subdirectorios BIN y MATLAB. u En BIN se encuentran los programas ejecutables. El subdirectorio MATLAB contiene los cheros .m (aunque sern explicados posteriormente, comentamos brevemente que consisten a en cheros escritos a base de comandos de matlab y que realizan una funcin determinada), o que contienen las funciones bsicas para el funcionamiento de matlab. En este sentido, es a necesario comentar que matlab cuenta con dos tipos bsicos de funciones: a

Funciones denominadas built-in functions: Son funciones que matlab tiene incorporadas internamente y por tanto no son accesibles al usuario.

Funciones llamadas m functions: Son funciones cuyo cdigo es accesible. Las que se eno cuentran en el subdirectorio MATLAB son las bsicas para el funcionamiento del a sistema.

Como se desprende del arbol de directorios, los toolboxes se suelen instalar en forma de sub directorios en el disco duro, colgando del subdirectorio TOOLBOX. En ellos se encuentran tambin funciones .m orientadas al control de sistemas. Adems, se pueden incorporar otros e a toolboxes (signal processing, image processing, robust control, non-linear control, system identification, etc), e incluso funciones propias del usuario.

INTRODUCCION A MATLAB

matlab\general matlab\ops matlab\lang matlab\elmat matlab\elfun matlab\specfun matlab\matfun matlab\datafun matlab\polyfun matlab\funfun matlab\sparfun matlab\graph2d matlab\graph3d matlab\specgraph matlab\graphics matlab\uitools matlab\strfun matlab\iofun matlab\timefun matlab\datatypes matlab\winfun matlab\demos simulink\simulink simulink\blocks simulink\simdemos toolbox\control toolbox\local

Comandos de propsito general o Operadores y caracteres especiales Constructores del lenguaje de programacin o Matrices elementales y manipulacin matricial o Funciones matemticas elementales a Funciones matemticas especiales a Funciones matriciales - algebra lineal numrica e Anlisis de datos y transformada de Fourier a Interpolacin y polinomios o Funciones de funciones y mtodos para ODE e Funciones para matrices dispersas Grcos en dos dimensiones a Grcos en tres dimensiones a Grcos especializados a Manipulacin de grcos o a Herramientas de interfaz grca de usuario (GUI) a Cadenas de caracteres Funciones para entrada/salida de cheros Hora y fecha Tipos de datos y estructuras Ficheros de interfaz con Windows (DDE/ActiveX) Ejemplos y demostraciones Simulink Librer de bloques de Simulink a Ejemplos y demostraciones de Simulink Paquete de Control de Sistemas Librer de funciones locales a Tabla 1.1: Listado del comando help

Primeros pasos

1.3

Primeros pasos

Una vez arrancado matlab , se abre la ventana de comandos en la que aparece el prompt o l nea de comandos (representado con el s mbolo ). Este es el momento de comentar la existencia del comando ms famoso de cualquier aplicacin: help. Introduciendo este coa o mando aparecern todas las citadas built-in functions, tanto las contenidas en el subdirectorio a MATLAB, como otras contenidas en subdirectorios eventualmente aadidos por el usuario n (ver Tabla 1.1). Para obtener informacin sobre cualquiera de las funciones se introduce help nombre-funcin. o o Ejemplo: help impulse (impulse es una funcin que calcula la respuesta impulsional de un o sistema y que se encuentra en el control system toolbox). Una cuestin importante a tener en cuenta es que matlab distingue entre maysculas y o u minsculas. En este sentido, los nombres de funcin se introducirn en minsculas. u o a u El comando demo permite obtener una demostracin de las posibilidades de matlab. o

1.4

Funciones y s mbolos relacionados con el entorno

Con el comando path puede comprobarse cules son las localizaciones de los cheros y a programas con los que va a trabajar matlab, pudiendo aadirse nuevos subdirectorios n (incluso personales) a conveniencia. La forma ms cmoda de interactuar con dichas a o localizaciones es mediante la opcin File/Set-Path... en el men de la ventana de coo u mandos. Para poder usar cualquier funcin .m, como por ejemplo las contenidas en el o paquete de control, bastar con que el camino \matlabr11\toolbox\control est ina e cluido en el path de matlab (cosa que ocurrir si el paquete se instal adecuadamente). a o Por otro lado, matlab comienza trabajando, por defecto, en el subdirectorio matlabr11\work. Si queremos cambiar de directorio de trabajo en cualquier momento, podemos hacerlo con el comando cd camino. Puede utilizarse en nombre completo del comando si se desea: chdir. Cabe decir que todas las funciones .m que existan en el directorio de trabajo sern localizadas sin necesidad de tener que incluir dicho directorio en el path a de matlab. El comando pwd nos indica cul es el directorio de trabajo actual. a Para mostrar el contenido del directorio de trabajo, se pueden emplear los comandos dir o ls. El comando delete nombre-chero puede emplearse para eliminar un archivo del directorio de trabajo. Asimismo, se pueden realizar operaciones t picas de l nea de comandos del sistema operativo DOS, introduciendo el comando correspondiente precedido por el s mbolo !.

INTRODUCCION A MATLAB

Resulta interesante tener en cuenta que la l nea de comandos de matlab posee memoria y podemos recuperar comandos introducidos previamente, haciendo uso de las teclas de movimiento de cursor arriba y abajo. Para una localizacin ms ecaz de algn o a u comando introducido previamente, podemos teclear los primeros caracteres del mismo antes de usar el cursor arriba y slo buscar entre los comandos ya introducidos aqullos o a e cuyos primeros caracteres coincidan con los introducidos. Otra posibilidad que se ofrece es la de introducir varios comandos en una misma l nea de la ventana de comandos, separados por coma o punto y coma. Puede limpiarse el contenido de la ventana de comandos mediante la instruccin clc. o El s mbolo % sirve para introducir comentarios. Todo lo escrito desde ese s mbolo hasta el nal de la l nea ser ignorado por el intrprete de matlab. El uso de comentarios puede a e no resultar demasiado interesante en la l nea de comandos, aunque s lo ser cuando se a estn escribiendo programas, como se ver ms adelante. e a a Si se quiere guardar toda la sesin en un archivo, basta usar el comando diary nombreo archivo. Dicho archivo contendr los comandos introducidos y los correspondientes a resultados. Cuando no se quiera seguir almacenando la informacin se introducir o a diary off. Si se desean almacenar todas las variables de memoria en un chero, junto con sus valores actuales, se usa el comando save nombre-chero. Esto crea un chero binario en el directorio de trabajo actual con el nombre introducido y con extensin .mat. Si no o se da el nombre del chero, se crea uno llamado matlab.mat. En caso que se desee guardar en un chero con formato ascii, se introducir en el comando un modicador: a save -ascii nombre chero. Si slo se quieren guardar una serie de variables, se o introducir save nombre-chero nombre-variables separadas por espacios. a Para recuperar los cheros generados con el comando save se utilizar load nombre-chero. a El formato de visualizacin en la ventana de comandos puede modicarse usando format: o format long: Presentar mayor nmero de decimales en pantalla al presentar los a u resultados en punto otante. format short: Es el modo por defecto, presenta un nmero de decimales menor. u Este formato no afecta para nada a la precisin de los clculos, es sencillamente o a una cuestin de visualizacin. o o format compact: Deja menor nmero de l u neas en blanco en la visualizacin de o los resultados, permitiendo dar cabida a ms informacin previa en la ventana de a o comandos sin necesidad de hacer scroll. format loose: Es el modo por defecto, se dejan ms l a neas de separacin durante o la visualizacin. o Tambin puede modicarse el formato de visualizacin a travs de las opciones de men: e o e u File/Preferences/General Para detener la ejecucin de un comando, se usa Ctrl-C. o La salida del sistema se efecta al introducir quit o exit, o simplemente cerrando la u ventana de comandos.

Introduccion de datos. Uso de la ventana de comandos

1.5

Introduccion de datos. Uso de la ventana de comandos

El elemento bsico en matlab es la matriz compleja de doble precisin, estructura que a o abarca realmente todo tipo de datos, desde escalares tales como nmeros reales o complejos, u hasta vectores o matrices de tamaos arbitrarios. Impl n citamente se usa la notacin matricial o para introducir polinomios y funciones de transferencia, de la forma que se explicar ms a a adelante. Por otro lado, si se dispone de una representacin de un sistema lineal en el espacio o de estados de la forma: x = Ax + Bu y = Cx + Du

bastar con introducir los valores de los elementos de las matrices A, B, C y D, para tener a descrito al sistema. Estos elementos se podr introducir de la siguiente forma: an

A=[1 0 2;2 2 0;0 0 1] B=[1, 0,0] C=[1 1 sqrt(2)] D=0;

A la vista de esta serie de comandos se pueden comentar varias cosas:

Si al nal de la introduccin de un comando cualquiera no se pone punto y coma (;), o aparecer expl a citamente en pantalla el resultado de dicho comando. En caso contrario, el comando se ejecutar pero no se mostrar su resultado. Dicho resultado se habr a a a almacenado en la variable a la que se asigna o, si no se realiza asignacin, se guardar o a en una variable de entorno llamada ans. En caso de que se asigne a una variable, sta e se crear automticamente, sin necesidad de una declaracin previa. a a o Los elementos de cada la de una matriz se pueden introducir separados por espacios o por comas, indistintamente. Para separar las de una matriz se usa ; o un simple retorno de carro. Esta ultima opcin o puede facilitar muchas veces la visualizacin de la matriz que se est introduciendo. o a Para transponer matrices se usa el apstrofe. o Los elementos de vectores y matrices pueden ser reales, complejos e incluso expresiones, como vemos en el caso del ultimo elemento del vector C. Si se est introduciendo un comando o conjunto de ellos cuya sintaxis sea muy larga, se a puede continuar en la siguiente l nea introduciendo al nal de la actual tres puntos seguidos (...). Las variables a las que se asignan resultados, as como las variables de entorno, se alma cenan en lo que se denomina el espacio de trabajo de matlab (workspace).

INTRODUCCION A MATLAB

En este caso, se han creado una serie de variables (en particular, matrices) mediante la introduccin expl o cita de sus elementos en l nea de comandos. Otras formas de producir variables podr ser: generndolas mediante funciones y declaraciones, crendolas en un an a a archivo .m, cargndolas desde un archivo de datos externo mediante el comando load (bien a se trate de cheros de datos ASCII o bien de cheros binarios con formato de datos de matlab .mat). Adems de variables numricas, escalares o matriciales, en matlab pueden usarse cadenas a e de caracteres. Para ello se delimita una secuencia de caracteres mediante apstrofes: o cadena = ejemplo de cadena de caracteres Para hacer referencia a cualquiera de los caracteres que componen una cadena, podemos hacerlo como si de un vector se tratara (la forma de indexar vectores y matrices se ver ms a a adelante).

1.6

Variables de entorno y variables especiales

Existen una serie de variables predenidas en matlab, son las siguientes:

ans: Contiene la respuesta (answer) del ultimo comando ejecutado, cuando el resultado de dicho comando no se asigna expl citamente a ninguna variable. eps: Da el valor de la precisin con la que la mquina realiza las operaciones en punto o a otante. T picamente, esta precisin es del orden de 1017 . o pi: . i, j: 1. Constante imaginaria. inf: . Se trata de un valor excesivamente grande para ser almacenado. NaN: Not a number. Es el resultado que se proporciona si durante una operacin se produce o 0 una indeterminacin, del tipo 0 , , o , etc. 0 clock: Reloj. date: Fecha. flops: Nmero de operaciones en punto otante realizadas hasta el momento. u

El comando who muestra las variables existentes en el espacio de trabajo generadas por el usuario, pero no las variables especiales.

Elementos de las matrices

Para borrar alguna variable de memoria se utiliza clear nombre-variables separadas por espacios. Pueden borrarse todas las variables a la vez si no se especica ningn nombre a u continuacin del nombre del comando. o

1.7

Elementos de las matrices

En este punto es importante comentar uno de los elementos ms potentes de matlab, que es a el s mbolo :, que permite generar una secuencia, y en particular permitir referenciar varios a elementos de una matriz. Veamos algunos ejemplos en los que se usa este operador: 1:0.1:10 Generar una secuencia comenzando por 1 hasta 10, cada elemento de la secuencia a estar separado del anterior en 0.1. a 1:10 Si se obvia el valor central, la separacin entre cada dos elementos de la secuencia ser o a 1. [1:0.1:10] Si lo ponemos entre corchetes, estaremos generando un vector con los elementos de la secuencia. En la forma ms directa, los elementos de una matriz se referencian mediante A(i, j), donde a i y j son los ndices del elemento correspondiente. Podemos usar una secuencia que facilitar la indexacin de mltiples elementos, como en los siguientes ejemplos: o u A(1,2:3) dar como resultado los elementos de las columnas 2 y 3 pertenecientes a la a primera la. A(:,2) dar como resultado todos los elementos pertenecientes a la segunda columna. a Lgicamente, en estos casos, los elementos especicados como inicio, nal e incremento para o producir la secuencia deben ser enteros. Otra forma de generar datos secuencialmente es usando los comandos linspace y logspace, su formato es: t = linspace(n1,n2,n); w = logspace(n1,n2,n); El comando linspace genera un vector desde n1 a n2 de longitud n, cuyos componentes poseen valores espaciados linealmente. Por su parte, logspace produce tambin un vector e de n elementos, pero sus valores estn espaciados logar a tmicamente desde 10 n1 a 10n2 . Este ultimo comando resultar util para la generacin de escalas frecuenciales para el anlisis de a o a sistemas mediante diagramas de Bode, Nyquist, etc.

INTRODUCCION A MATLAB

1.8

Operaciones con matrices

Las operaciones comunes con matrices son:

Suma: + Resta: Multiplicacin: * o Divisin derecha / (x = b/A es la solucin del sistema de ecuaciones x A = b. Es decir o o calcula la inversa de la matriz A y multiplica b por la derecha por dicha inversa) Divisin izquierda \ (x = A \ b es la solucin de A x = b. Es decir, igual que en el caso o o anterior, pero realiza la multiplicacin de la inversa con b por la izquierda) o Potenciacin ^. Este operador permite, en particular, implementar otra forma de realizar o la inversin de una matriz: A^(-1). o Conjugada traspuesta

Cabe mencionar la potencia de los operadores /, \, y ^, puesto que si la matriz A no es cuadrada, automticamente se realiza el clculo de su pseudoinversa, lo que equivaldr a a a a resolver el sistema de ecuaciones correspondiente por m nimos cuadrados. Las mismas operaciones que se han enumerado se pueden realizar elemento a elemento, anteponiendo un punto a cualquiera de los operandos anteriores. Como ejemplo, el siguiente comando realizar el producto de cada elemento de la matriz A con su correspondiente de la a matriz B (para que dicho producto sea realizable, obviamente, dichas matrices deben tener las mismas dimensiones): A .* B Adems de los operadores anteriores, existen funciones tales como: a

Trigonomtricas estndar: sin, cos, tan, asin, acos, atan, atan2 e a Trigonomtricas hiperblicas: sinh, cosh, tanh, asinh, acosh, atanh e o Trascendentales: log, log10, exp, sqrt Manipulacin de nmeros complejos: o u real: parte real de un escalar o de los elementos de una matriz.

conj: proporciona el conjugado de un escalar o la matriz conjugada a una dada.

imag: parte imaginaria.

10

Funciones orientadas al analisis de datos

Clculo del mdulo: abs permite calcular tanto el valor absoluto de un escalar real como a o el mdulo de un escalar complejo o el mdulo de un vector. o o Funciones t picas de matrices: det: determinante de una matriz eig: obtencin de autovalores o rank: rango de la matriz

inv, pinv: inversa y pseudoinversa

norm: norma de una matriz (norma 2, norma 1, norma innito, norma de Frobenius) diag: produce un vector conteniendo los elementos de la diagonal de una matriz, o si recibe un vector como parmetro, genera una matriz diagonal. a triu: devuelve la matriz triangular superior de una matriz dada funciones para generar matrices: eye(n): produce una matriz identidad de dimensin n n o tril: devuelve la matriz triangular inferior de una matriz dada trace: traza de la matriz

zeros(n,m): genera una matriz de ceros de dimensin n m o ones(n,m): genera una matriz de unos de dimensin n m o rand(n,m): permite generar una matriz de valores aleatorios, entre 0 y 1, de dimensin n m o

A = [A11,A12;A21,A22]: podemos producir una nueva matriz por bloques, mediante su composicin a partir de submatrices ya existentes. o

1.9

Funciones orientadas al analisis de datos

Se trata de funciones que operan con vectores. Si se aplican a matrices operan columna a columna. Permiten realizar anlisis sobre el conjunto de datos contenido en los vectores a correspondientes, tales como calcular su valor m nimo, mximo, media, mediana, desviacin a o t pica, suma de los elementos de dicho vector, etc. min, max, mean, median, std, sum, prod, etc.

1.10

Polinomios

Esta es una seccin importante, dado que las funciones de transferencia de los sistemas se o introducirn habitualmente en la forma numerador-denominador, los cuales sern tratados a a

INTRODUCCION A MATLAB

11

como polinomios por matlab. En las demos que acompaan a estas notas se podrn analizar n a numerosos ejemplos. Los polinomios se representan por vectores, cuyos elementos son los coecientes del polinomio en orden descendente. Por ejemplo, el polinomio s3 + 2s2 + 3s + 4 se representa: p=[1 2 3 4]; que muy bien podr ser el denominador de una funcin de transferencia. a o Mediante la funcin roots se pueden encontrar las ra o ces de esa ecuacin: o roots(p) De modo complementario, se puede calcular un polinomio a partir de sus ra ces usando la funcin poly: o p2=poly([-1 -2]); Si el argumento de entrada a poly es una matriz, devuelve el polinomio caracter stico de la matriz (det(I A)) como un vector la. Un polinomio puede ser evaluado en un punto determinado usando polyval(p,s), donde p es el polinomio y s es el punto donde va a ser evaluado. Por ejemplo: p2=[1 3 2]; a=[1 2; 3 4]; polyval(p2,a) si se introduce, como en este caso, un vector o una matriz, en lugar de un valor individual, la evaluacin se hace elemento a elemento. o Podemos realizar cmodamente operaciones de multiplicacin y divisin de polinomios meo o o diante las funciones conv y deconv, respectivamente: conv([1,2],[2,0])

1.11

Otras funciones de interes

En esta seccin simplemente comentaremos, de forma rpida, la existencia de una serie de funo a ciones muy utiles en problemas de integracin numrica (quad, quad8), solucin de ecuaciones o e o diferenciales (ode23, ode45 y muchos otros), importantes cuando se estudian los sistemas dinmicos, ecuaciones no lineales (fmin, fsolve, etc.), interpolacin (spline, etc.)... a o

12

Graficos

1.12

Graficos

matlab es muy potente a la hora de generar grcos (sobre todo en sus ultimas versiones), a no slo por la variedad de comandos que ofrece para ello, sino tambin por la versatilidad de o e dichos comandos. En las demostraciones aparecern varios tipos de grcos. De momento, a a comentaremos los comandos fundamentales para la realizacin de los mismos. En primer o lugar, comandos genricos y comandos orientados a grcos bidimensionales: e a

figure(n): Las representaciones de grcos en matlab se realizan en ventanas grcas. a a En un momento dado puede haber varias ventanas grcas abiertas. La funcin figure a o se utiliza para abrir una nueva ventana grca que ser numerada de acuerdo con el a a parmetro, o bien, si ya existe una ventana con ese nmero, se convertir en la ventana a u a grca activa, donde se realizar la prxima representacin grca. a a o o a clf: Limpia la ventana grca activa. a close(n): Para cerrar una ventana grca. close all cierra todas las ventanas grcas. a a plot: es la funcin bsica de representacin grca de datos en dos dimensiones. La o a o a representacin se realiza en la ventana grca que est activa en un momento dado. En o a e caso de no haber ninguna, se crea una ventana grca nueva. Ejemplos de uso: a plot(v): representa en el eje vertical los valores contenidos en el vector v, frente a los valores del ndice en el eje horizontal. plot(t,A), plot(t,[v1,v2]): presentar varias grcas, puesto que cada columna a a de la matriz A es considerada como un vector a representar frente al vector t. En la segunda variante indicada, se consigue lo mismo mediante la agrupacin de los o vectores v1, v2 en una matriz. plot(t1,v1,t2,v2): En este caso tambin se obtendrn dos grcas, pero cada e a a una de ellas tiene un conjunto de valores diferente para el eje horizontal. loglog: representacin en escala logar o tmica en ambos ejes. semilogx: representacin en escala semilogar o tmica, el eje vertical aparecer en escala a lineal. semilogy: representacin en escala semilogar o tmica, el eje horizontal aparecer en escala a lineal. polar: representacin de datos dados en forma polar, es decir en lugar de dar un par de o vectores de componentes horizontales y verticales, se dan los vectores conteniendo el vector de angulo y mdulo. o plot(t,v): representa los valores del vector v frente a los del vector t.

Cuando se representan varias curvas simultneamente en una misma ventana grca, se utiliza a a una secuencia predenida de colores para aplicar uno diferente a cada una de ellas. Se puede

INTRODUCCION A MATLAB

13

cambiar manualmente el color que por defecto tendr una determinada curva con la adicin a o de un parmetro: plot(t,y,r). En este ejemplo, en lugar de representarse la curva con a el color por defecto (azul), aparecer en color rojo. Para ver los cdigos de colores, puede a o consultarse la ayuda del comando plot. Tambin pueden realizarse grcos en tres dimensiones: e a

plot3(x,y,z): comando anlogo a plot para dibujar curvas, pero en tres dimensiones. a mesh(x,y,Z): para dibujar supercies, Z debe ser una matriz con tantas las como longitud del vector x y tantas columnas como la longitud del vector y. Los puntos que se representan son: (x(i), y(j), Z(i, j)). contour: representa en un plano horizontal las curvas de nivel de una supercie tridimensional.

Por otro lado, existen comandos que permiten aadir determinados complementos a estos n grcos: a

title: permite aadir un t n tulo a la grca a xlabel: aadir una etiqueta al eje horizontal de la grca n a ylabel: aadir etiqueta al eje vertical n grid: aadir una rejilla n axis: permite modicar los l mites de los ejes horizontal y vertical text: aadir un texto en una posicin cualquiera de la grca n o a gtext: igual que text pero permite seleccionar la ubicacin del texto mediante el ratn. o o

Por otra parte, muchos de los elementos grcos pueden manipularse como objetos que tienen a una serie de propiedades asociadas. Por ejemplo: handlePlot = plot(x,y); con este comando estamos asignando el objeto de tipo plot a una variable. Podemos ver las propiedades asociadas a un objeto mediante la funcin get(handlePlot), o bien especicar o alguna de ellas: get(handlePlot,LineStyle). Cualquiera de las propiedades de un objeto pueden ser alteradas mediante la funcin set(handlePlot,Color,g). o Por otra parte, tambin se dispone de cierta capacidad de modicacin de las grcas medie o a ante opciones de la propia ventana grca, en lugar de usar instrucciones desde la ventana a de comandos.

14

Programando en matlab

1.13

Programando en matlab

matlab permite a la hora de programar una serie de elementos t picos para la modicacin o del ujo de una secuencia de instrucciones. La sintaxis es muy parecida a la de cualquier lenguaje de programacin. Todos estos operadores se pueden usar en la ventana de comandos, o en l nea, o en un chero .m.

1.13.1

Operadores lgicos y relacionales o

Permiten la comparacin de escalares (o de matrices elemento a elemento). Si el resultado o de la comparacin es verdadero, devuelven un 1, en caso contrario devuelven un 0. o Los operadores elementales son: < > menor que mayor que <= >= menor o igual mayor o igual == = igual no igual

Es importante no dejar espacios entre los operadores formados por dos s mbolos. Si los datos a comparar son matrices, la comparacin se hace elemento a elemento, devolviendo una matriz o binaria.

1.13.2

Bucles y estructuras condicionales

En esta seccin se explica una serie de comandos importantes a la hora de hacer un programa o en matlab: for, while, if-else.

for La sintaxis de este comando es la siguiente: for variable = expresion hacer algo; end La expresion es un vector, una matriz o cualquier comando de matlab que produzca como salida un vector o una matriz. La ejecucin se realiza una vez por cada eleo mento del vector o de una columna de la matriz. Tanto los bucles como las estructuras condicionales se terminan con end. Presentamos un primer ejemplo en el que la variable i toma los valores 10, 9, ..., 1:

INTRODUCCION A MATLAB for i=10:-1:1 kk(11-i)=i; end A continuacin otro ejemplo en el que aparecen dos bucles anidados: o x = [0:0.1:pi]; y = x; for f=1:length(x) for c=1:length(y) Z(f,c) = sin(x(f)).^2 + cos(y(c)).^2; end end mesh(x,y,Z);

15

Es importante evitar en lo posible el uso de bucles en matlab, ya que consumen mucho tiempo, pudindose en muchos casos realizar las mismas operaciones de una forma ms e a eciente y compacta. Los siguientes ejemplos calculan logaritmos de nmeros desde 1 a 10.000. Se har de u a diferentes maneras para comparar. Se utilizan los comandos clock (que devuelve la hora actual) y etime (que devuelve el tiempo en segundos que ha transcurrido entre dos instantes) para calcular el tiempo consumido en las operaciones. t1=clock; for i=1:10000, a(i)=log(i); end; e1=etime(clock,t1); t1=clock; ind=[1:10000]; for i=ind, a(i)=log(i); end;... e2=etime(clock,t1); t1=clock; a=zeros(1,10000); ind=[1:10000];... for i=ind, a(i)=log(i); end; e3=etime(clock,t1); t1=clock; ind=[1:10000]; a=log(ind); e4=etime(clock,t1); t1=clock; ind=[1:10000]; a=zeros(1,10000); a=log(ind); ... e5=etime(clock,t1); Los tiempos de computacin para los diferentes mtodos son: o e 86.17 86.56 2.42 0.27 0.28

Las causas de la disminucin importante de tiempos es que en los primeros mtodos, o e matlab tiene que recalcular la dimensin del vector cada pasada por el bucle (imo portancia de las inicializaciones), y adems usa bucles for, que como se ha indicado, a consumen mucho tiempo. Esto por supuesto no quiere decir que no deban usarse, pues habr ocasiones en que no haya ms remedio, pero siempre que haya una forma a a alternativa de hacerlo, sta ser preferible al uso de bucles. e a

16 while

Programando en matlab

Permite implementar bucles condicionales. Su sintaxis es: while expresion hacer algo; end

La expresin es de la forma X operador Y, donde X e Y son escalares o expresiones que o devuelven escalares y los operadores suelen ser operadores relacionales. En el siguiente ejemplo se busca una matriz aleatoria estable (parte real de autovalores negativa): A = randn(2); % Genera numeros aleatorios con distribucion normal while max(real(eig(A))) >= 0 A=randn(2); end; eig(A) Se puede usar el comando break para salir de un bucle en funcin de una determinada o condicin. o if, else, elseif

La sintaxis es la siguiente: if expresion 1 hace algo elseif expresion 2 hace algo else hace algo end

else y elseif son opcionales.

1.13.3

Ficheros .m

matlab puede ejecutar programas que se encuentren almacenados en cheros ASCII que pueden encuentrarse en alguno de los subdirectorios indicados en el camino de bsqueda o u bien en el subdirectorio de trabajo actual y tengan adems extensin .m. Hay dos tipos de a o cheros .m: script les y function les Scripts Son cheros .m en los que se ponen secuencialmente comandos de matlab que se ejecutan en ese orden al introducir el nombre del chero .m (sin extensin). Operan globalmente con o

INTRODUCCION A MATLAB

17

los datos que se encuentran en la memoria. Los ejemplos que ilustran estas notas son en s script-les, pues llevan un conjunto de comandos matlab y comentarios. funciones Son tambin cheros .m, pero a diferencia de los anteriores, se le pueden pasar argumentos e y pueden devolver resultados. Por tanto utilizan variables globales que se pasan por valor. La mayor de los cheros contenidos en los toolboxes son funciones. La sintaxis de todas las a funciones almacenadas en cheros .m es la siguiente:

function [out1,out2,...] = nombre_fichero (in1,in2,...) % Comentarios adicionales para el help comandos de MATLAB return;

Una funcin puede tener mltiples parmetros de entrada y salida. Numerosos ejemplos de o u a funciones sern utilizados en las demostraciones. a Para nalizar, comentar que existen una serie de utilidades a la hora de programar en matlab. Las ms comunes son: a

pause: Para la ejecucin hasta que se pulsa una tecla. Puede usarse para pausar la o ejecucin durante un nmero de segundos determinado, en lugar de esperar a que se o u pulse una tecla: pause(n).

disp: Muestra una cadena de caracteres por pantalla.

input: Muestra una cadena de caracteres por pantalla y espera a que el usuario introduzca un valor, que generalmente ser asignado a una variable. a

18

Resumen de los comandos de matlab

1.14

Resumen de los comandos de matlab

= [ ] ( ) . ... , ; % : !

Caracteres especiales Instruccin de asignacin o o Usado para formar vectores y matrices Ver [ Precedencia aritmtica e Ver ( Punto decimal La instruccin contina en la siguiente l o u nea Separa ndices y argumentos de funcin o Acaba las, suprime la impresin o Comentarios Indexacin, generacin de vectores o o Ejecuta instruccin del sistema operativo o Valores Especiales Respuesta cuando no se asigna la expresin o Precisin o 1 No Nmero (Not-a -Number) u Reloj Fecha Nmero de operaciones u Nmero de argumentos de entrada de una funcin u o Nmero de argumentos de salida de una funcin u o Archivos de disco Cambiar de directorio Borrar archivo Diario de la sesin o Directorio de archivos en el disco Cargar variables de un archivo Guardar variables en un archivo Mostrar funcin o archivo o Mostrar archivos .m en el disco Escribir en un archivo Compactar memoria v save a

ans eps pi i,j inf NaN clock date flops nargin narout

chdir delete diary dir load save type what fprintf pack

INTRODUCCION A MATLAB Matrices especiales Compaera n Diagonal Identidad Esotrica e Hadamard Hankel Hilbert Inversa de Hilbert Vectores igualmente espaciados Vectores logar tmicamente espaciados Mgica cuadrada a Dominio para puntos de malla Matriz constante de unos Pascal Elementos aleatorios Toeplitz Vandermonde Matriz de ceros

19

compan diag eye gallery hadamard hankel hilb invhilb linspace logspace magic meshdom ones pascal rand toeplitz vander zeros

rot90 fliplr flipud diag tril triu reshape :

Manipulacion de matrices Rotacin o Invierte el orden de las columnas Invierte el orden de las las Diagonal Parte triangular inferior Parte triangular superior Reordena una matriz en otra Traspuesta Convierte una matriz en una columna simple Funciones logicas y relacionales Condiciones lgicas o Condiciones lgicas o Encuentra ndices de valores lgicos o Detecta NaNs Detecta innitos Detecta matrices vac as Detecta variables de cadena Compara variables de cadena

any all find isnan finite isempty isstr strcomp

20

Resumen de los comandos de matlab Control de flujo Ejecuta instrucciones condicionalmente Usado con if Usado con if Termina if, for, while Repite instrucciones un nmero de veces u Repite instrucciones mientras una sentencia lgica sea verdadera o Sale de los bucles for y while Salida desde funciones Pausa hasta que se pulse una tecla Texto y cadenas Convierte cadena en valores ASCII Evala texto como instrucciones u Convierte nmeros en cadenas u Convierte enteros en cadenas Indicador de cadenas Convierte nmeros en cadenas u Detecta variables de cadena Compara variables de cadena Convierte cadenas hexadecimales en nmeros u Programacion y archivos .m Obtiene nmeros desde el teclado u Llamada al teclado como si fuera un archivo .m Muestra mensaje de error Dene funcin o Evala texto en variables u Evala funcin dada por una cadena u o Permite mostrar las instrucciones en pantalla Comprueba si las variables existen Sensibilidad a las maysculas u Dene variables globales Archivo de inicializacin o Accede a una variable de entorno Genera un men u Tiempo gastado Ventana alfanumerica Limpia pantalla Mueve cursor al comienzo Establece el formato de salida Muestra matriz o texto Imprime nmero formateado u Permite la muestra de las instrucciones

if elseif else end for while break return pause

abs eval num2str int2str setstr sprintf isstr strcomp hex2num

input keyboard error function eval feval echo exist casesen global startup getenv menu etime

clc home format disp fprintf echo

INTRODUCCION A MATLAB Graficos Grco lineal en el plano XY a Grco logar a tmico en el plano XY Grco semilogar a tmico Grco semilogar a tmico Grco polar a Supercie de malla tridimensional Plano de contornos Dominio para grcos de supercie a Grcos de barras a Grcos de escaleras a Aade barras de errores n Anotacion Grafica T tulo Anotacin en eje x o Anotacin en eje y o Dibuja cuadriculado Posiciona un texto arbitrariamente Posiciona un texto con el ratn o input grco a Control de la ventana grafica Escalado manual de ejes Mantiene grco en pantalla a Muestra la pantalla grca a Limpia la pantalla grca a Divide la pantalla grca a Funciones elementales Mdulo complejo o Argumento complejo Ra cuadrada z Parte real Parte imaginaria Conjugado complejo Redondeo al entero ms cercano a Redondeo hacia cero Redondeo hacia Redondeo hacia Funcin signo o Resto Exponencial base e Logaritmo natural Logaritmo base 10

21

plot loglog semilogx semilogy polar mesh contour meshdom bar stairs errorbar

title xlabel ylabel grid text gtext ginput

axis hold shg clf subplot

abs angle sqrt real imag conj round fix floor ceil sign rem exp log log10

22

Resumen de los comandos de matlab Funciones Trigonometricas Seno Coseno Tangente Arcoseno Arcocoseno Arcotangente Arcotangente de x/y Seno hiperblico o Coseno hiperblico o Tangente hiperblica o Arcoseno hiperblico o Arcocoseno hiperblico o Arcotangente hiperblica o

sin cos tan asin acos atan atan2 sinh cosh tanh asinh acosh atanh

bessel gamma rat erf inverf ellipk ellipj

Funciones especiales Funcin de Bessel o Funcin gamma o Aproximacin racional o Funcin de error o Inversa de la funcin de error o Integral completa el ptica de primera especie Integral el ptica de Jacobi

balance backsub cdf2rdf chol eig hess inv lu nnls null orth pinv qr qz rref schur svd

Descomposiciones y factorizaciones Forma equilibrada Sustitucin regresiva o Convierte diagonales complejas en diagonales reales Factorizacin de Cholesky o Autovalores y autovectores Forma de Hessenberg Inversa Factores de la eliminacin gaussiana o M nimos cuadrados con restricciones Base ortonormal del ncleo u Base ortonormal de la imagen Pseudoinversa Factorizacin QR o Algoritmo QZ Forma escalonada reducida por las Descomposicin de Schur o Descomposicin en valores singulares o

INTRODUCCION A MATLAB Condicionamiento de matrices Nmero de condicin en la norma 2 u o Norma 1, norma 2, norma de Frobenius, norma Rango Estimacin de la condicin (inverso) o o Funciones matriciales elementales Matriz exponencial Matriz logaritmo Matriz ra cuadrada z Funcin arbitraria de matriz o Polinomio caracter stico Determinante Traza Producto tensorial de Kronecker

23

cond norm rank rcond

expm logm sqrtm funm poly det trace kron

poly roots roots1 polyval polyvalm conv deconv residue polyfit

Polinomios Polinomio caracter stico Ra ces de polinomios - mtodo de la matriz compaera e n Ra ces de polinomios - mtodo de Laguerre e Evaluacin de polinomios o Evaluacin de polinomio matricial o Multiplicacin o Divisin o Desarrollo en fracciones parciales Ajuste por un polinomio Analisis de datos por columnas Valor mximo a Valor m nimo Valor medio Mediana Desviacin t o pica Ordenacin o Suma de elementos Producto de elementos Suma acumulativa de elementos Producto acumulativo de elementos Derivadas aproximadas Histogramas Coecientes de correlacin o Matriz de covarianza Reordena en pares complejos

max min mean median std sort sum prod cumsum cumprod diff hist corrcoef cov cplxpair

24

Resumen de los comandos de matlab Tratamiento de senales Mdulo complejo o Argumento complejo Convolucin o Coecientes de correlacin o Covarianza Deconvolucin o Transformada rpida de Fourier a FFT 2-dimensional FFT inversa FFT inversa 2-dimensional Cambia las dos mitades de un vector Integracion numerica Funcin de integracin numrica o o e Funcin de integracin numrica o o e

abs angle conv corrcoef cov deconv fft fft2 ifft ifft2 fftshift

quad quad8

ode23 ode45

Solucion de ecuaciones diferenciales Mtodo Runge-Kutta de orden 2/3 e Mtodo Runge-Kutta-Fehlberg de orden 4/5 e Ecuaciones no lineales y optimizacion M nimo de una funcin de una variable o M nimo de una funcin de varias variables o Solucin de un sistema de ecuaciones no lineales o (ceros de una funcin de varias variables) o Cero de una funcin de una variable o Interpolacion Spline cbico u Genera tablas 1-D Genera tablas 2-D

fmin fmins fsolve fzero

spline table1 table2

Cap tulo 2

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB


2.1 Introduccion

En lo que sigue, se va a realizar una introduccin a los comandos de matlab relacionados con o la teor de control de sistemas. Casi todas las funciones que se describen pertenecen al Cona trol System Toolbox. Las funciones principales se van a explicar sobre ejemplos demostrativos, con el n de que su uso y comprensin sean lo ms sencillos posible. Se realizarn ejempo a a los tanto en el dominio temporal, continuo y discreto, como en el frecuencial. Tambin se e mostrar la forma de dar la descripcin de un sistema lineal mediante funcin de transfera o o encia, conjunto de polos y ceros, o variables de estado. Asimismo se comentar la forma de a manipular una funcin de transferencia como un objeto. o

2.2

Tratamiento mediante funciones de transferencia. Sistemas continuos

Este apartado muestra el uso de algunas de las herramientas con las que cuenta matlab para el diseo y anlisis de sistemas de control. Para el ejemplo se va a partir de una descripcin n a o de la planta en forma de funcin de transferencia: o H(s) = .2s2 + .3s + 1 (s2 + .4s + 1)(s + .5)

En matlab las funciones de transferencia se introducen dando el par de polinomios numeradordenominador: 25

26

Tratamiento mediante funciones de transferencia. Sistemas continuos num = [.2 .3 1]; den1 = [1 .4 1]; den2 = [1 .5];

El polinomio del denominador es el producto de dos trminos. Para obtener el polinomio e resultante se usa el producto de convolucin (o de polinomios). o

den = conv(den1,den2)

Para ver los polos (o los ceros) de la funcin de transferencia, podemos usar: roots(den) o (roots(num)). Una forma ms completa de convertir una funcin de transferencia dada por a o dos polinomios numerador y denominador, en un conjunto de factores de grado 1, correspondientes a los polos (z1 , z2 , z3 ) y ceros (c1 , c2 ), de la forma: H(s) = es mediante el comando tf2zp: K (1
s s c1 ) (1 c2 ) s s s z1 ) (1 z2 ) (1 z3 )

(1

[ceros,polos,gan] = tf2zp (N,D);

que devuelve un vector conteniendo los ceros de la funcin de transferencia, un vector cono teniendo los polos, y un escalar correspondiente a la ganancia esttica. La funcin complea o mentaria a sta tambin existe: e e

[N,D] = zp2tf (ceros,polos,gan);

Como curiosidad, cabe mencionar que el nombre de estas funciones es bastante descriptivo: tf-two-zp procede de transfer-function to zero-pole form.

2.2.1

Dominio Temporal

La respuesta ante un escaln a la entrada se puede analizar en sistemas que tengan una o descripcin en forma de funcin de transferencia o una representacin en el espacio de estados, o o o generando un vector de tiempos y usando la funcin step: o

t = [0:.3:15]; y = step(num,den,t); plot (t,y);

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB title (Respuesta a un escalon unitario); xlabel (tiempo(seg)); grid;

27

La respuesta al escaln unitario puede verse en la Fig. 2.1. Seleccionando con el ratn en la o o curva, pueden modicarse algunos atributos de la misma. Tambin pueden modicarse las e propiedades de los ejes de forma anloga. Las guras guardarse en cheros .g propios de a matlab, o exportarse en diferentes formatos grcos estndar. a a
2.5 Respuesta a un escaln unitario

1.5

0.5

0 0

tiempo(seg)

10

15

Figura 2.1: Respuesta a escaln unitario o

No es necesario recuperar el resultado de la simulacin ante escaln que realiza step para deo o spus representarlo con plot, sino que el propio comando step, si lo utilizamos sin parmetros e a de salida, realiza la representacin. Es ms, en este segundo caso, la representacin grca o a o a es algo ms interactiva, puesto que si pinchamos con el botn izquierdo en algn punto de a o u la grca, nos dice los valores correspondientes al tiempo y al valor de la salida en ese punto. a La respuesta impulsional se puede obtener del mismo modo, pero usando en este caso la funcin impulse, que tiene una sintaxis similar al comando step. Ntese que el vector de o o tiempos ya ha sido denido con anterioridad.

impulse (num,den,t);

La respuesta al impulso puede verse en la Fig. 2.2. La respuesta del sistema a cualquier tipo de entrada tambin puede obtenerse. Para ello es e necesario tener la seal de entrada en un vector u, que lgicamente deber tener la misma din o a mensin que el vector de tiempos. En sistemas multivariables, en vez de un vector de entradas o tendremos una matriz. A estos efectos se usa la funcin lsim. Un ejemplo caracter o stico es la respuesta a una entrada en rampa:

28

Tratamiento mediante funciones de transferencia. Sistemas continuos


Respuesta a un impulso

0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0.1 0.2 0 5

tiempo(seg)

10

15

Figura 2.2: Respuesta al impulso ramp = t; y = lsim (num,den,ramp,t); plot (t,y,t,ramp); title (Respuesta a una rampa); xlabel (tiempo(seg)); La respuesta a la rampa puede verse en la Fig. 2.3.
30 Respuesta a una rampa

25

20

15

10

0 0

tiempo(seg)

10

15

Figura 2.3: Respuesta a la rampa

Otro ejemplo caracter stico es la respuesta a un ruido uniforme aleatorio. Recordamos que rand(m,n) genera una matriz m n de nmeros aleatorios uniformemente distribuidos entre u 0 y 1. Es importante darse cuenta del ltrado que se produce en la seal cuando pasa por el n sistema (hace de ltro paso bajas). noise = rand (size(t));

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB y = lsim (num,den,noise,t); plot (t,y,t,noise); title (Respuesta a un ruido aleatorio); xlabel (tiempo(seg));

29

La respuesta al ruido puede verse en la Fig. 2.4.


1.4 Respuesta a un ruido aleatorio

1.2

0.8

0.6

0.4

0.2

0 0

tiempo(seg)

10

15

Figura 2.4: Respuesta a ruido aleatorio

2.2.2

Dominio Frecuencial

Respuesta en frecuencia La respuesta en frecuencia de los sistemas se puede obtener usando las funciones bode, nyquist y nichols. Si no se le ponen argumentos a la izquierda, estas funciones generan las grcas por s solas. En caso contrario, vuelcan los datos en los vectores de salida oportunos. a A continuacin se presentan ejemplos de las tres posibles sintaxis de la funcin bode: o o

1.- bode(num,den) 2.- [mag,phase,w] = bode (num,den) 3.- [mag,phase] = bode (num,den,w)

La primera de ellas produce un grco con la magnitud en decibelios (dB) y la fase en grados. a En las otras dos la magnitud se devuelve en el vector mag y est expresada en unidades a absolutas, no en dB. Por su parte, la fase, devuelta en el vector phase, sigue siendo en grados. En esta forma, la representacin es ms interactiva, en el sentido de que pinchando con o a

30

Tratamiento mediante funciones de transferencia. Sistemas continuos

el ratn en un punto de la curva, podemos ver los valores correspondientes. La segunda o forma automticamente genera los puntos de frecuencia en el vector w. En la tercera forma a es el usuario el que escoge los rangos de frecuencia, y resulta muy adecuado cuando se quieren representar varias grcas conjuntamente, que habrn de compartir una misma escala a a frecuencial. El resultado de los dos ultimos comandos se puede representar usando funciones conocidas: subplot(211), loglog(w,mag), title(Magnitud), xlabel(rad/s); subplot(212), semilogx(w,phase), title(Fase), xlabel(rad/s); El resultado para la funcin de transferencia del ejemplo anterior puede verse en la Fig. o 2.5. Cabe comentar que el comando subplot(n,m,i) permite dividir una ventana grca a en una matriz de n m sub-grcas, seleccionando como activa la nmero i (numeradas a u consecutivamente de izquierda a derecha y de arriba abajo).
10
1

Modulo

10

10

10

10

10 Rad/s Fase

10

100

200 1 10

10 Rad/s

10

Figura 2.5: Diagrama de Bode

El comando nyquist tiene la misma sintaxis: nyquist (num,den,w); [re,im] = nyquist (num,den,w); Computa las partes real e imaginaria de G(jw) y realiza la representacin si no se le ponen o parmetros de salida. Para obtener la representacin grca por nosotros mismos, slo hay a o a o que dibujar la parte real frente a la imaginaria. El resultado obtenido mediante el ejemplo anterior puede verse en la Fig. 2.6. El comando nichols computa el diagrama de Nichols de un sistema a partir de la funcin o de transferencia en bucle abierto. Para verlo basta dibujar la magnitud del bucle abierto en

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB


Nyquist Diagrams
2.5 From: U(1)

31

1.5

Imaginary Axis

0.5
To: Y(1)

0.5

1.5

2.5 1.5

0.5

0.5

1.5

Real Axis

Figura 2.6: Diagrama de Nyquist dB (en el eje de ordenadas) frente a fase del bucle abierto en grados (en eje de abcisas), o llamar a la funcin sin argumento de salida. Si se quiere en forma de abaco, se puede usar el o comando ngrid. nichols (num,den,w), ngrid; [mag,phase] = nichols (num,den,w);
40 30 20 10 0 10 20 30 40 360 40 db 0 Diagrama de Nichols 0 db 0.25 db 0.5 db
ganancia del bucle abierto (dB)

1 db 3 db 6 db

1 db

3 db 6 db 12 db 20 db

270

180 fase del bucle abierto (grados)

90

Figura 2.7: Diagrama de Nichols

Mrgenes de estabilidad a Como es bien sabido en la teor clsica del control, los mrgenes de estabilidad son el margen a a a de fase y el margen de ganancia. Estos mrgenes se calculan usando el comando margin. a margin (num,den);

32

Tratamiento mediante funciones de transferencia. Sistemas continuos [mg,mf,wmg,wmf] = margin (num,den);

Como tercer parmetro de entrada se le puede pasar el rango de frecuencias deseado. En a el primer caso indicado, en el que no se le especican parmetros de salida, se realiza la a representacin del diagrama de Bode, junto con una indicacin, mediante l o o neas verticales de los puntos donde se mide cada uno de los mrgenes y los valores de los mismos. En a la segunda variante, como salidas se obtienen los valores de los mrgenes de ganancia (no a en dB), el margen de fase (en grados) y sus correspondientes frecuencias. Si existen varias frecuencias de corte marca los ms desfavorables (ver Fig. 2.8). a
50 Gm=3.448 dB, (w= 1.287) Pm=11.64 deg. (w=1.182)

Gain dB

50 2 10

10

Frequency (rad/sec)

10

10

0 90
Phase deg

180 270 360 2 10

10

Frequency (rad/sec)

10

10

Figura 2.8: Mrgenes de fase y ganancia a

Efectos de los retardos Los retardos existen en numerosas aplicaciones de control automtico. En sistemas lineales a continuos invariantes en el tiempo, el retardo viene representado por e sT . La forma ms a sencilla de manipular los retardos en matlab es en el dominio de la frecuencia. Ntese que o ejwT = 1|wT . Por tanto los retardos dejan la magnitud invariable y afectan al desfase, tendiendo a inestabilizar al sistema controlado. Para propsitos de representacin mediante o o el comando bode, todo lo que habr que hacer es restar la fase del retardo a la de la funcin a o de transferencia. Por ejemplo: num = [0.2 0.3 1]; den = [1 0.9 1.2 0.5]; T = 1; % Tiempo de retardo puro w = logspace (-2,1,100); [mag,fase] = bode (num,den,w); faseDelay = fase - (T*w*180/pi); % Sustrae la fase tras convertirla a grados subplot(211); semilogx (w, 20*log10(mag)); grid; subplot(212); semilogx (w, [fase, faseDelay]); grid;

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB

33

2.2.3

Comandos relacionados con operaciones de bloques

Existen una serie de comandos relacionados con las operaciones t picas en diagramas de bloques: [N12,D12] = series (N1,D1,N2,D2): Devuelve la resultante de colocar en serie dos funciones de transferencia (Fig. 2.9). El mismo resultado podr obtenerse llamando a dos veces al comando conv, que recurdese permit multiplicar dos polinomios. e a

u1

s1

y1

u2

s2

y2

Figura 2.9: Conexin en serie o [N12,D12] = parallel (N1,D1,N2,D2): Devuelve la resultante de colocar en paralelo dos funciones de transferencia (Fig. 2.10).

u1

S1

y1

u u2 S2

y2

Figura 2.10: Conexin en paralelo o [Nbc,Dbc] = feedback (N1,D1,N2,D2,-1): A partir de un sistema en bucle abierto, dado por el numerador y denominador N 1,D1, proporciona el correspondiente en bucle cerrado, considerando que en la cadena de realimentacin hay otra funcin de transo o ferencia, dada por N 2, D2 (Fig. 2.11). El ultimo parmetro indica el signo de la a realimentacin (1 para realimentacin negativa y 1 para positiva). o o [Nbc,Dbc] = cloop (N1,D1,-1): En el caso en que se pretenda obtener la funcin de o transferencia en bucle cerrado con realimentacin unitaria, puede emplearse este coo mando ms compacto, en el que se evita tener que especicar una segunda funcin de a o transferencia. Conviene tener claro que para todos estos comandos relacionados con operaciones por bloques, se podr perfectamente estar trabajando con funciones de transferencia discretas, sin ninguna a diferencia.

34

Tratamiento mediante funciones de transferencia. Sistemas continuos

u S1

S2

Figura 2.11: Conexin en realimentacin o o Para operaciones de bloques ms complejas, resulta ms adecuado usar la herramienta simulink a a que tambin se explicar en estas notas. e a

2.2.4

Lugar de las ra ces

El anlisis mediante el lugar de las ra se puede obtener deniendo un vector de ganancias a ces deseadas (que es el parmetro usado habitualmente para ver la evolucin de los polos en bucle a o cerrado). La sintaxis es:

r = rlocus (N,D,K); rlocus (N,D); En la primera forma, calcula el lugar de las ra de 1 + K N (s) = 0, para un vector de ganances D(s) cias especicado, K. rlocus devuelve una matriz r con length(K) las y length(den) columnas, conteniendo la localizacin de las ra o ces complejas. Cada la de la matriz corresponde a una ganancia del vector K. El lugar de las ra ces puede ser dibujado con plot(r,x). En la segunda forma, que es la usada habitualmente, la funcin directamente dibuja el lugar o de las ra ces. Adems, como vemos, no es imprescindible indicar un vector de ganancias. a Para la funcin de transferencia que ven o amos utilizando en los ejemplos, se obtendr el a lugar de las ra ces mostrado en la Fig. 2.12 Un comando muy util como complemento a rlocus es rlocfind, cuya sintaxis general es:

[K,polos] = rlocfind (num,den)

Antes de introducir dicho comando es necesario haber dibujado el lugar de las ra ces. Al introducir rlocfind, se pide que se seleccione con el ratn un punto determinado del lugar, o

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB


4 3 2 1 0 1 2 3 4 4

35

Eje imaginario

0 Eje real

Figura 2.12: Lugar de las ra ces

proporcionando como resultado la ganancia K en dicho punto y la localizacin de los polos o correspondientes a esa ganancia. Para mejorar la precisin, puede realizarse un zoom en torno a una zona de inters en la o e grca, antes de ejecutar rlocfin. Otra utilidad para ver la sobreoscilacin que correspona o der a un par de polos complejos conjugados situados en el lugar, ser dibujar los lugares a a geomtricos de factor de amortiguamiento () y frecuencia natural ( n ) constantes, mediante e el comando sgrid. Ejemplo: Los siguientes comandos dibujan el lugar de las ra ces de una funcin de transo ferencia, realizando una conveniente ampliacin y resaltando las l o neas de factor de amortiguamiento 0.5, 0.6 , 0.7 y de frecuencia natural 0.5 rad/s (Fig. 2.13).

N = 1; D = [1 3 2 0]; rlocus(N,D); sgrid ([0.5:0.1:0.7],0.5); axis([-2.5,1,-3,3]);

Las nuevas versiones de matlab van ms all y ofrecen una herramienta interactiva para ir a a viendo en vivo las variaciones que sufre el lugar de las ra ces, conforme se aaden, eliminan y n mueven los polos y ceros de bucle abierto. A esta herramienta se accede mediante el comando rltool. Merece la pena que el alumno dedique unos minutos a esta herramienta de gran valor didctico. a

36

Estudio temporal y frecuencial de sistemas de primer y segundo orden


3

Imag Axis

3 2.5

1.5

0.5 Real Axis

0.5

Figura 2.13: Lugar de las ra ces con rejilla

2.3

Estudio temporal y frecuencial de sistemas de primer y segundo orden


Sistemas de primer orden

2.3.1

La representacin en forma de funcin de transferencia viene dada por: o o G(s) = que en notacin matlab se introduce: o K = tau num den 1; = 1; = K; = [tau 1]; K 1 + s

La respuesta a un escaln unitario de entrada se obtiene con la funcin step. El resultado o o puede verse en la Fig. 2.14 t = [0:0.1:10]; ye = step(num,den,t); plot(t,ye); title (Respuesta a un escalon unitario); xlabel (tiempo(seg)); grid;

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB


Respuesta a un escaln unitario

37

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 1 2 3

5 6 tiempo(seg)

10

Figura 2.14: Respuesta a escaln unitario del sistema de primer orden o Las dos caracter sticas fundamentales de un sistema de primer orden son su ganancia esttica a K y su constante de tiempo . La constante de tiempo es el tiempo que tarda en alcanzar el 63% de la salida. La ganancia esttica es el cociente entre la amplitud de salida y la de a entrada en el rgimen permanente. Estos valores se pueden comprobar directamente en la e grca o analizando el vector de datos resultante: a yRP = ye(length(ye)); % Valor en regimen permanente n = 1; while ye(n) < 0.63*yRP n=n+1; end % Constante de tiempo (0.1 es el intervalo transcurrido entre dos medidas, % se le resta 1, porque los indices empiezan en 1): tauEstim = 0.1*(n-1); La respuesta a una rampa unitaria de entrada para nuestro sistema de primer orden se puede simular mediante: ramp = t; yr = lsim (num,den,ramp,t); plot (t,yr,t,ramp); title (Respuesta a una rampa); xlabel (tiempo(seg)); grid; El resultado se muestra en la Fig. 2.15, en la que aparecen, tanto la rampa de entrada como la salida. El error de seguimiento en posicin en rgimen permanente puede obtenerse, al o e igual que se ha hecho anteriormente, midiendo directamente en la grca o bien a partir del a vector de datos resultante.

38

Estudio temporal y frecuencial de sistemas de primer y segundo orden


Respuesta a una rampa

10 9 8 7 6 5 4 3 2 1 0 0 1 2 3

5 6 tiempo(seg)

10

Figura 2.15: Respuesta a rampa unitaria del sistema de primer orden La respuesta impulsional se puede obtener del mismo modo, pero usando en este caso la funcin impulse (Fig. 2.16), que tiene una sintaxis similar al comando step. o

yi = impulse (num,den,t); plot (t,yi); title (Respuesta a un impulso); xlabel (tiempo(seg));


1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 1 2 3 4 5 6 tiempo(seg) 7 8 9 10 Respuesta a un impulso

Figura 2.16: Respuesta a impulso del sistema de primer orden Para nalizar con la seccin de sistemas de primer orden, se va a comprobar que los resultados o coinciden con los esperados en la teor Como es bien sabido, los sistemas lineales de primer a. orden de ganancia unidad invariantes en el tiempo tienen las siguientes caracter sticas (nos remitimos a la bibliograf a): Respuesta a escaln unitario: ye2 (t) = 1 e(t/ ) , (t 0) o

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB Respuesta a rampa unitaria: yr2 (t) = t + e(t/ ) , (t 0) Respuesta a impulso: yi2 (t) = (1/ )e(t/ ) , (t 0)

39

Si se dibujan estas funciones con el vector de tiempos denido anteriormente, y se superponen con las grcas vistas anteriormente, puede apreciarse que coinciden perfectamente (Fig. a 2.17). ye2 = 1 - exp(-t/tau); yr2 = t - tau + tau * exp(-t/tau); yi2 = (1/tau) * exp(-t/tau); plot (t,ye,t,ye2,o); title(Respuesta teorica a escalon unitario); grid; pause; plot (t,yr,t,ramp,t,yr2,o); title(Respuesta teorica a rampa unitaria); grid; pause; plot (t,yi,t,yi2,o); title (Respuesta teorica a impulso); grid;

2.3.2

Sistemas de segundo orden

La representacin normal de un sistema de segundo orden en forma de funcin de transferencia o o viene dada por: 2 Kwn G(s) = 2 2 s + 2wn s + wn donde: K: ganancia esttica del sistema. Se va a suponer en el anlisis siguiente, sin prdida de a a e generalidad, que K = 1. : Coeciente de amortiguamiento. wn : Frecuencia natural no amortiguada del sistema. Del polinomio caracter stico se tiene que las dos ra son s1,2 = wn wn 2 1, pudiendo ces distinguirse los siguientes casos: Caso 1: Si > 1 2 ra ces reales distintas en SPI (sobreamortiguado).

40

Estudio temporal y frecuencial de sistemas de primer y segundo orden

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 10 9 8 7 6 5 4 3 2 1 0 0 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 1 2 1 2 1 2

Respuesta terica a escaln unitario

10

Respuesta terica a rampa unitaria

10

Respuesta terica a impulso

10

Figura 2.17: Respuesta a escaln, rampa e impulso del sistema de primer orden o

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB

41

Caso 2: Si = 1 2 ra ces reales iguales en SPI (l mite sobre-sub), sistema cr ticamente amortiguado. Caso 3: Si 0 < < 1 ra ces complejas conjugadas en SPI (subamortiguado) Caso 4: Si = 0 Respuesta oscilatoria. Sistema cr ticamente estable. Ra ces en eje imaginario. Caso 5: Si < 0 Sistema inestable, ra ces en SPD. Se va a analizar el comportamiento para el conjunto de valores de en la respuesta a un escaln unitario. Se supone wn = 1. Dado que el caso 3 se ver con ms detalle, dado su o a a mayor inters, se presentar en ultimo lugar. e a Primer caso: 2 ra ces reales distintas (Fig. 2.18).

t = [0:0.2:20]; wn = 1; d = 2; num = [wn^2]; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (Respuesta a un escalon unitario); xlabel (tiempo(seg)); grid;
Respuesta a un escaln unitario

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 2 4 6

10 12 tiempo(seg)

14

16

18

20

Figura 2.18: Respuesta a escaln del sistema de segundo orden con dos ra reales distintas o ces Segundo caso: 2 ra ces reales iguales (cr ticamente amortiguado) (Fig. 2.19). El sistema, en este caso el lo ms rpido posible, antes de hacerse subamortiguado. a a

42

Estudio temporal y frecuencial de sistemas de primer y segundo orden d = 1; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (Respuesta a un escalon unitario); xlabel (tiempo(seg)); grid;
Respuesta a un escaln unitario

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 2 4 6

10 12 tiempo(seg)

14

16

18

20

Figura 2.19: Respuesta a escaln de un sistema segundo orden con dos ra o ces reales iguales Cuarto caso: Sistema en punto cr tico de oscilacin (Fig. 2.20). o

d = 0; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (Respuesta a un escalon unitario); xlabel (tiempo(seg)); grid;

Quinto caso: Sistema inestable (Fig. 2.21).

d = -0.1; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot(t,ye); title (Respuesta a un escalon unitario); xlabel (tiempo(seg)); grid;

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB

43

2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 2 4 6

Respuesta a un escaln unitario

10 12 tiempo(seg)

14

16

18

20

Figura 2.20: Respuesta a escaln de un sistema de segundo orden cr o ticamente estable

Respuesta a un escaln unitario

6 0

10 12 tiempo(seg)

14

16

18

20

Figura 2.21: Respuesta a escaln de un sistema de segundo orden inestable o

44

Estudio temporal y frecuencial de sistemas de primer y segundo orden

Tercer caso: Dos ra ces complejas conjugadas (Fig. 2.22). d = 0.5; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (Respuesta a un escalon unitario); xlabel (tiempo(seg)); grid;
Respuesta a un escaln unitario

1.2

0.8

0.6

0.4

0.2

0 0

10 12 tiempo(seg)

14

16

18

20

Figura 2.22: Respuesta a escaln de un sistema segundo orden subamortiguado o Se puede tambin analizar para este tercer caso de dos ra complejas el efecto de modicar e ces el factor de amortiguamiento. Se muestra para valores = {0.1, 0.2, ...0.9} (Fig. 2.23). t = [0:0.2:20]; wn = 1; vectDelta = [0.1:0.1:0.9]; num = wn^2; Y = []; for ind = 1:length(vectDelta) d = vectDelta(ind); den = [1,2*d*wn,wn^2]; y = step (num,den,t); Y = [Y, y]; end plot (t,Y); title (Respuesta a un escalon unitario); xlabel (tiempo(seg)); grid; Se mantiene el valor de = 0.2 para el siguiente anlisis: a

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB


Respuesta a un escalon unitario

45

1.8

1.6

1.4

1.2

0.8

0.6

0.4

0.2

10 tiempo(seg)

12

14

16

18

20

Figura 2.23: Familia de respuestas escaln de un sistema segundo orden subamortiguado o d = 0.2; den = [1,2*d*wn,wn^2]; ye = step (num,den,t);

La salida del sistema viene dada por la ecuacin: o ye (t) = 1 e(wn t) sen(wd t + ) (1 2 ) , con : = arctg (1 2 )

y donde wd = wn (1 2 ), siendo wd la frecuencia natural amortiguada. Las envolventes de la respuesta anterior vendrn dadas por: a 1+ e(wn t) (1 2 ) y 1 e(wn t) (1 2 )

ev1 = 1 + ((exp(-d*wn*t)/(sqrt(1-d^2)))); ev2 = 1 - ((exp(-d*wn*t)/(sqrt(1-d^2)))); plot (t,ye,t,ev1,t,ev2); title (Respuesta de sist. segundo orden) xlabel (tiempo (s)); ylabel (salida); grid;

Los parmetros caracter a sticos del transitorio vienen dados por:


wd

Tiempo de pico: tp =

wn

(1 2 )

46

Estudio temporal y frecuencial de sistemas de primer y segundo orden


2 1.8 1.6 1.4 1.2
salida

Respuesta de sist. segundo orden

1 0.8 0.6 0.4 0.2 0

10 tiempo (s)

12

14

16

18

20

Figura 2.24: Envolventes de la respuesta de un sistema de segundo orden subamortiguado Tiempo de subida: ts =
wd
(1 2 )

Sobreoscilacin (%): S0 = e o

Estos valores se pueden calcular anal ticamente y compararlos con los obtenidos directamente de la grca o analizando el vector de resultados. a

% Valor de la salida en reg. perm: yeRP = 1; % Calculo SO teorica: SOana = exp (-(d*pi)/(sqrt(1-d^2))); % A partir de la respuesta obtenida: SO = max(ye) - yeRP; % Tiempo de pico teorico: Tpana = pi/(Wn*sqrt(1-d^2)); % A partir de la respuesta. Aunque existen muchas formas de calcularlo, % una trivial es la siguiente (la precision viene determinada por la % primera cifra decimal, debido al modo de definir el vector de tiempos): for i = 1:length(ye) if ye(i) == max(ye) Tp = t(i); break; end end % Tiempo de subida teorico: fi = atan (sqrt(1-d^2)/d); Tsana = (pi-fi) / (wn*sqrt(1-d^2));

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB

47

% A partir de la respuesta. Por definicion, el tiempo de subida es aquel % para el cual la salida iguala por primera vez al valor en reg. perm. for i = 1:length(t) if (ye(i) <= yeRP & ye(i+1) >= yeRP) Ts = t(i); break; end end disp Sobreoscilaciones; [SOana SO] disp Tiempos de pico; [Tpana Tp] disp Tiempos de subida; [Tsana Ts]

2.3.3

Anlisis del efecto de un cero en la respuesta temporal de un sistema a de segundo orden

Los ceros afectan al valor de la ganancia y a la forma de respuesta transitoria, pero no a la estabilidad. Supongamos la funcin de transferencia siguiente: o K wn (s + z) z G(s) = 2 2 s + 2wn s + wn Segn la posicin de los polos y los ceros se tendrn comportamientos diferentes. u o a Si el valor absoluto del cero es mucho mayor que el valor absoluto de la parte real de los polos, apenas var la forma de la respuesta t a pica (polos dominantes). Ver Fig. 2.25. t = [0:0.2:20]; K = 1; wn = 1; d = 0.5; c = 10; % Numeradores sin cero y con cero: num = K * wn^2; num2 = K * (wn^2/c) * [1 c]; den = [1 2*d*wn wn^2]; % Comparamos la salida con la correspondiente al mismo sistema sin cero: y = step (num,den,t); y2 = step (num2,den,t); plot (t,y2,t,y,o); title (Influencia de un cero lejos del eje imaginario); polos = roots(den); disp Magnitud de la parte real polos:; abs(real(polos(1)))
2

48

Estudio temporal y frecuencial de sistemas de primer y segundo orden


Influencia de un cero lejos del eje imaginario

1.2

0.8

0.6

0.4

0.2

0 0

10

12

14

16

18

20

Figura 2.25: Inuencia de un cero lejano en la respuesta temporal de un sistema de segundo orden Si el cero est entre dos ra reales no var la forma de la respuesta, pero var su rapidez a ces a a (Fig. 2.26), pues se introduce accin derivativa. o

t = [0:0.2:20]; K=1; wn=1; d=2; c=0.5; num = K*wn^2; num2 = K*(wn^2/c)*[1 c]; den = [1 2*d*wn wn^2]; y = step (num,den,t); y2 = step (num2,den,t); plot (t,y2,t,y,o); title(Influencia del cero entre polos reales); disp Magnitud de los polos:; abs(roots(den))

Si el cero est ms cerca del eje imaginario que los polos reales, aumenta la rapidez de la a a respuesta (Fig. 2.27), pudiendo la salida rebasar ampliamente su valor de rgimen permae nente. Como el efecto derivativo es muy grande, aunque el sistema sin el cero no sobrepasara el valor de rgimen permanente, el efecto del cero hace que s sobrepase dicho valor. e

t = [0:0.2:20]; K=1; wn=1; d=2; c=0.05; num = K*wn^2; num2 = K*(wn^2/c)*[1 c]; den = [1 2*d*wn wn^2]; y = step (num,den,t);

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB


Influencia del cero entre polos reales

49

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 2 4

10

12

14

16

18

20

Figura 2.26: Inuencia de un cero dominante en la respuesta temporal de un sistema de segundo orden y2 = step (num2,den,t); plot (t,y2,t,y,o); title(Influencia del cero cercano al eje imag.); disp Magnitud de los polos:; abs(roots(den))
5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 0 2 4 6 8 10 12 14 16 18 20 Influencia de un cero cercano al eje imaginario

Figura 2.27: Inuencia de un cero muy dominante en la respuesta temporal de un sistema de segundo orden Si el cero pasa al semiplano derecho (sistema de fase no m nima) modica sensiblemente la oscilacin (t o pico por ejemplo en arranque de turbinas). Ver Fig. 2.28. En este caso, la accin o derivativa inicial va en sentido contrario a la salida del sistema, por lo que si dicha accin o derivativa es grande (cero cercano al eje imaginario), la salida ir inicialmente en sentido a contrario a la de rgimen permanente. e t = [0:0.2:20];

50

Estudio temporal y frecuencial de sistemas de primer y segundo orden K=1; wn=1; d=2; c=-0.5; num = K*wn^2; num2 = K*(wn^2/c)*[1 c]; den = [1 2*d*wn wn^2]; y = step (num,den,t); y2 = step (num2,den,t); plot (t,y2,t,y,o); title(Influencia de un cero positivo);
1 Influencia de un cero positivo

0.8

0.6

0.4

0.2

0.2

0.4 0

10

12

14

16

18

20

Figura 2.28: Inuencia de un cero en el semiplano derecho en la respuesta temporal de un sistema de segundo orden

2.3.4

Inuencia de polos adicionales. Polos dominantes

Al rgimen transitorio afectan fundamentalmente los polos y ceros cercanos al eje imaginario. e El efecto de un cero adicional se ha visto anteriormente. Analizamos ahora el de un polo adicional. Supongamos la funcin de transferencia siguiente: o G(s) =
2 p K wn 2 (s2 + 2wn s + wn )(s + p)

Se va a tomar para el estudio el caso de comportamiento subamortiguado analizado en las secciones anteriores. En dicho caso, la funcin de transferencia correspondiente ten los polos o a con su parte real en 0.5. Si la distancia entre esos polos y el resto es del orden de 5w n (con cercano a 1) todos los polos y ceros a partir de esa distancia no afectan al transitorio. De hecho, en el anlisis de sistemas, normalmente cuando un sistema tiene un nmero grande a u de polos, se trata de simplicar para obtener un sistema aproximado de segundo orden con sus polos localizados en los polos dominantes citados. La inuencia de un polo lejano y uno cercano puede verse en las Fig. 2.29 y 2.30. En ambas guras se muestra la salida del sistema con y sin el polo p adicional comparadas ante una entrada en escaln. o

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB t = [0:0.2:20]; K=1; wn=1; d=0.5; p=10; num = K*wn^2; num2 = wn^2*K*p; den = [1 2*d*wn wn^2]; den2 = conv (den,[1 p]); y = step (num,den,t); y2 = step (num2,den2,t); plot (t,y2,t,y,o); title (Influencia de un polo lejano); disp Situacion de los polos:; roots(den2)

51

Como se observa en la Fig. 2.29 la inuencia es muy pequea o casi inexistente en este caso. n
1.2 Influencia de un polo lejano

0.8

0.6

0.4

0.2

0 0

10

12

14

16

18

20

Figura 2.29: Inuencia de un polo lejano en la respuesta temporal Si se analiza el caso de un polo cercano al eje imaginario:

t = [0:0.2:20]; K=1; wn=1; d=0.5; p=0.2; num = K*wn^2; num2 = wn^2*K*p; den = [1 2*d*wn wn^2]; den2 = conv (den,[1 p]); y = step (num,den,t); y2 = step (num2,den2,t); plot (t,y2,t,y,o); title (Influencia de un polo lejano); disp Situacion de los polos:; roots(den2)

52

Tratamiento mediante funciones de transferencia. Sistemas discretos


Influencia de un polo cercano

1.2

0.8

0.6

0.4

0.2

0 0

10

12

14

16

18

20

Figura 2.30: Inuencia de un polo cercano al eje imaginario

2.4

Tratamiento mediante funciones de transferencia. Sistemas discretos

Se incluyen en esta seccin algunas aclaraciones sobre comandos para tiempo discreto, cuya o sintaxis suele ser similar, en su caso, a su equivalente continuo, aadiendo una d delante. Se n van a exponer slo unas pocas, dejando al lector el anlisis por su cuenta del resto. o a [Nz,Dz] = c2dm (N,D,Ts,metodo): Discretizacin de un modelo en tiempo cono tinuo, cuya funcin de transferencia viene dada por los polinomios numerador y deo nominador. Como tercer parmetro se especica el periodo de muestreo. El ultimo a parmetro proporciona una cadena de caracteres que indica el mtodo con el que se va a e a hacer la discretizacin, las posibilidades son: o zoh: Discretizacin utilizando mantenedor de orden cero (ZOH). Es la opcin o o por defecto. foh: Discretizacin utilizando mantenedor de orden uno (FOH). o tustin: Discretizacin mediante aproximacin trapezoidal. o o prewarp: Discretizacin trapezoidal con prewarping. o matched: Discretizacin mediante emparejamiento de polos y ceros (ver [2], pag. o 147). Se echa de menos en esta funcin la posibilidad de usar otros mtodos de discretizacin o e o como son el rectangular hacia delante o hacia atrs. Tambin da numerosos problemas a e cuando se intenta discretizar una funcin no propia (como pueda ser la funcin de o o transferencia de un controlador PID). No es el unico comando de matlab que tiene esta limitacin. o [N,D] = d2cm(Nz,Dz,Ts,metodo): Se trata de la funcin contraria a la anterior. o Transforma un sistema discreto en uno continuo, mediante alguno de los mtodos citae dos.

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB

53

dstep(Nz,Dz): Calcula la respuesta temporal de un sistema discreto a una secuencia escaln. Esta funcin dibuja directamente la respuesta. Esta representacin no tendr o o o a en el eje horizontal valores temporales absolutos, sino que aparecern mltiplos del a u periodo de muestreo. Por otro lado, si indicamos un parmetro de salida en la llamada a al comando, y = dstep (Nz,Dz);, no se realiza la representacin, deberemos hacerlo o nosotros mismos. En este caso, ser conveniente pintar la curva con puntos, en lugar a de con un trazo continuo (como por defecto hace el comando plot). Vemoslo con el a siguiente ejemplo, que dar como resultado la gura que aparece a la izquierda en Fig. a 2.31: N = [0.2 0.3 1]; D = [1 0.9 1.2 0.5]; [Nz,Dz] = c2dm (N,D,1,zoh); y = dstep (Nz,Dz); plot (y,.); title (Respuesta escal{\o}n de un sistema discreto); xlabel (Periodo de muestreo); ylabel (Salida); grid;

2.5

Respuesta escaln de un sistema discreto

2.5

Respuesta escaln de un sistema discreto

1.5
Salida Salida

1.5

0.5

0.5

10

15 20 Periodo de muestreo

25

30

35

10

15 20 Periodo de muestreo

25

30

35

Figura 2.31: Respuesta ante escaln de un sistema discreto, mostrando slo valores en ino o stantes de muestreo (izq); mostrando salida continua, mantenida entre periodos de muestreo (der) stairs(y): Para obtener una respuesta como la de que aparece a la derecha en Fig. 2.31, con la forma escalonada t pica de sistemas digitales, simulando que la salida se mantiene constante entre dos periodos de muestreo, bastar con reemplazar la ina struccin plot(y,.) del ejemplo anterior por stairs(y). o dimpulse(Nz,Dz): Versin discreta de impulse. o dlsim(Nz,Dz): Versin discreto de lsim. o

54

Tratamiento mediante descripcion en el espacio de estados [mag,phase] = dbode(Nz,Dz,Ts,w): Calcula el diagrama de bode de un sistema en tiempo discreto. Siendo w un vector con las frecuencias donde queremos que se evalen u magnitud y fase de la funcin de transferencia. o Existen tambin los correspondientes dnyquist y dnichols. e El lugar de las ra ces se calcula igual que en dominio s, usando rlocus. Sin embargo, se usa una rejilla distinta para que la representacin tenga en cuenta el c o rculo de radio unidad. Por ejemplo, para el sistema discretizado anterior, si hacemos: rlocus (Nz,Dz); zgrid;

podremos obtener analizar el lugar de las ra en relacin con los lugares geomtricos ces o e de constante y wn Ts constante, en el plano z (Fig. 2.32).
1.5

0.5

Imag Axis

0.5

1.5 2

1.5

0.5 Real Axis

0.5

Figura 2.32: Lugar de las ra ces del sistema discreto, mostrando rejilla plano Z

2.5

Tratamiento mediante descripcion en el espacio de estados

Se va a utilizar para el anlisis la misma funcin de transferencia que ya apareci anteriora o o mente: 0.2s2 + 0.3s + 1 H(s) = 2 (s + 0.4s + 1)(s + 0.5) El sistema se puede representar en el espacio de estados x = Ax + Bu y = Cx + Du

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB

55

Existen comandos que permiten obtener una descripcin de un sistema en espacio de estados o (ss) a partir de una funcin de transferencia, venga esta dada mediante polinomios numeradoro denominador (tf) o mediante polos-ceros (zp), y viceversa: [A,B,C,D] [A,B,C,D] [num,den] [z,p,k] = = tf2ss(num,den) = zp2ss(z,p,k) = ss2tf(A,B,C,D) ss2zp(A,B,C,D) Paso Paso Paso Paso de de de de funcin de transferencia a espacio de estados o descripcin polo-cero a espacio de estados o espacio de estados a funcin de transferencia o espacio de estados a descripcin polo-cero o

Supongamos que disponemos de nuestra funcin de transferencia dada mediante: o

num = [.2 .3 1]; den = conv([1 .4 1],[1 .5]);

con el comando tf2ss, podemos obtener las matrices correspondientes a su descripcin en o espacio de estados: [A,B,C,D] = tf2ss (num,den). La mayor de las funciones que se han comentado en secciones anteriores para la manipua lacin y simulacin de sistemas lineales dados por un par numerador-denominador, tienen su o o correspondencia para espacio de estados. Valgan los ejemplos siguientes:

step (A,B,C,D,1,t); impulse (A,B,C,D,1,t); [Abc,Bbc,Cbc,Dbc] = cloop (A,B,C,D,-1); [A12,B12,C12,D12] = series (A1,B1,C1,D1,A2,B2,C2,D2); [Ad,Bd] = c2dm (A,B,Ts,metodo)};

y muchas otras. Como es bien sabido, una propiedad fundamental de los sistemas es el concepto de estabilidad. Si se considera la ecuacin no forzada x = Ax, x(0) = x0 , se dice que el sistema es o asintticamente estable si el estado alcanza el valor cero asintticamente con el tiempo, es o o decir, x(t) 0 con t . Se puede demostrar que esto ocurre cuando los autovalores de la matriz A tienen partes reales negativas. Por tanto, se puede analizar la estabilidad encontrando los autovalores de la matriz A, usando el comando:

evalues = eig (A)

56

Tratamiento mediante descripcion en el espacio de estados

2.5.1

Dise o de reguladores en el espacio de estados n

Se analizan en esta seccin una serie de comandos de matlab de gran utilidad para el diseo o n y simulacin de esquemas de control por realimentacin lineal del vector de estados: o o

K = place(A,B,P): Calcula la matriz o vector K de tal forma que los autovalores de A B K (matriz de transicin de estados del sistema en bucle cerrado) sean los o especicados en el vector P . K = acker(A,B,P): Calcula la matriz o vector de ganancias K tal que el sistema de una sola entrada x = Ax + Bu, con una ley de control u = Kx, tenga los polos en bucle cerrado en los valores especicados en el vector P . Es una implementacin de la frmula o o de Ackerman). [y,x,t] = initial(A,B,C,D,x0): Proporciona la respuesta que describe el comportamiento de un sistema lineal continuo de la forma: x = Ax + Bu y = Cx + Du ante una cierta condicin inicial x0 de los estados. Devuelve la evolucin temporal de o o la salida y de los estados Existe la correspondiente versin discreta de este comando o dinitial. Co = ctrb(A,B): Devuelve la matriz de controlabilidad del sistema Ob = obsv(A,C): Devuelve la matriz de observabilidad. [Ac,Bc,Cc,T,K] = ctrbf(A,B,C): Devuelve una descripcin en espacio de estados en o forma cannica de control, separando los subespacios controlables y no controlables. o [Ao,Bo,Co,T,K] = obsvf(A,B,C): Devuelve una descripcin en espacio de estados en o forma cannica de observacin, separando los subespacios observables y no observables. o o

Ejemplo de dise o: Mostramos a continuacin un breve ejemplo de un diseo de un conn o n trolador por realimentacin lineal del vector de estados con un observador de orden completo: o

% Se obtiene una descripcion continua en espacio de estados: [A,B,C,D] = tf2ss (num,den); % Se calcula, por ejemplo, la forma canonica de observacion: [Ao,Bo,Co,T,J] = obsvf (A,B,C); % Se calcula la dinamica deseada para el bucle cerrado (3 polos en s=-2): Pd = poly ([-2,-2,-2]); % Se calcula el vector de ganancias para realimentacion del vector de estados: K = acker (Ao,Bo,[-2,-2,-2]); % O bien se realiza manualmente:

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB

57

K_ = [0 0 1] * inv([Bo, Ao*Bo, Ao^2*Bo]) * polyvalm(Pd,Ao); % Se calcula un observador de orden completo, con una din{\a}mica deseada: L = place (Ao,Co,[-5,-5+j,-5-j]); L = L; % Formamos el sistema en bucle cerrado: Abc = [Ao-Bo*K, -Bo*K; zeros(size(Ao)), Ao-L*Co]; Bbc = 0 * [Bo;Bo]; Cbc = [Co Co]; Dbc = 0; x0 = [1;1;1;-1;-1;-1]; [y,x,t] = initial (Abc,Bbc,Cbc,Dbc,x0); plot (t, [y, x]); title (Control por realim. vector estados con observador); xlabel (tiempo (s)); ylabel (Salida y estados); El resultado del programa indicado aparece en la Fig. 2.33, donde se muestran tanto la evolucin temporal de los estados reales partiendo de condiciones iniciales no nulas como los o errores de estimacin (suponiendo tambin un valor no nulo inicialmente en dicho error de o e estimacin). o
8 Control por realim. vector estados con observador

Salida y estados

3 tiempo (s)

Figura 2.33: Simulacin de la evolucin de la salida y los estados reales o o

2.6

Manipulacion mediante objetos

En las nuevas versiones del paquete de control (en consonancia con la nueva losof de mata lab), se ofrece la posibilidad de manipular los sistemas mediante unas estructuras de datos espec cas para modelos de sistemas lineales. Estos objetos harn ms fcil la manipua a a lacin de los sistemas, pudiendo ser tratados de forma ms abstracta, independientemente o a de que vinieran descritos mediante funciones de transferencia, conjuntos de polos y ceros o matrices correspondientes a una descripcin en espacio de estados. o

58

Manipulacion mediante objetos

Para empezar, veamos justamente las tres formas de crear un objeto de tipo sistema, en funcin de cmo proporcionemos la descripcin de dicho sistema: o o o

sys = tf(num,den) sys = zpk(ceros,polos,k) sys = ss(A,B,C,D)

En cualquiera de los casos, se puede aadir un parmetro adicional que ser indicativo de n a a un periodo de muestreo, y por tanto, el sistema ser discreto. a Para cada una de las tres posibilidades el objeto que se crea tiene una estructura diferente, puesto que tiene que almacenar datos de distinto tipo. Supongamos que creamos dos sistemas mediante sendas funciones de transferencia:

sys1 = tf (1,[1 3 1]); sys2 = tf ([1,2],1); sys1 Transfer function: 1 ------------s^2 + 3 s + 1

Como vemos, al pedirle el valor de sys1 nos lo da de una forma monol tica, que har muy a cmoda su manipulacin. Por ejemplo, podr o o amos sumar o poner en serie ambos sistemas sin ms que: a

sys1+sys2 Transfer function: s^3 + 5 s^2 + 7 s + 3 --------------------s^2 + 3 s + 1 sys12 = sys1*sys2 Transfer function: s + 2 ------------s^2 + 3 s + 1

Por otra parte, las propiedades que estn asociadas a estos objetos pueden verse mediante: a

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB get(sys1) num: den: Variable: Ts: InputDelay: OutputDelay: ioDelayMatrix: InputName: OutputName: InputGroup: OutputGroup: Notes: UserData: {[0 0 1]} {[1 3 1]} s 0 0 0 0 {} {} {0x2 cell} {0x2 cell} {} []

59

Nos informa del numerador y denominador de la funcin de transferencia en s. Al ser continua, o su periodo de muestreo es Ts = 0. Se pueden asociar retardos a las entradas o salidas, asociar nombres a entradas o salidas, etc. Si en un momento dado, quisiramos cambiar alguna e propiedad podr amos hacerlo mediante el operador .: sys1.Ts = 1; sys1.num{1} = [0 0 2]; sys1 Transfer function: 2 ------------z^2 + 3 z + 1 el nuevo sistema es discreto, con periodo de muestreo Ts = 1 y con un polinomio ganancia 2 en el numerador (no confundir esta manipulacin con una discretizacin, en este caso el o o sistema continuo original y el discreto no tienen porqu guardar ninguna relacin). e o Estos objetos tambin estn pensados para poder manipular cmodamente sistemas de mltiples e a o u entradas y mltiples salidas. De hecho, podr u amos haber creado un sistema de la siguiente forma: num1 = 0.5; num2 = [1 1]; den1 = [1 2 1]; den2 = [1 0]; sys = tf ({num1,num2},{den1,den2}) Transfer function from input 1 to output: 0.5 ------------s^2 + 2 s + 1

60

Resumen de los comandos mas importantes del Control System Toolbox

Transfer function from input 2 to output: s + 1 ----s % O lo que hubiera sido igual: sys1 = tf (num1,den1); sys2 = tf (num2,den2); sys = [sys1, sys2];

2.7

Resumen de los comandos mas importantes del Control System Toolbox

Normalmente, en la nomenclatura usada en este paquete de control, los comandos referentes a tiempo discreto que posean un equivalente para tiempo continuo, se denominan igual que stos, pero precedidos de una d. Por ejemplo: step y dstep. e

append blkbuild cloop connect feedback ord2 pade parallel series

Construccion de modelos Agrupa dinmica de varios sistemas a Construye un sistema en representacin en espacio o de estados a partir del diagrama de bloques Calcula el bucle cerrado de un sistema Modelado con diagrama de bloques Conexin de sistemas realimentados o Genera las matrices A, B, C y D para un sistema de segundo orden Aproximacin de Pad a un retardo o e Conexin de sistemas en paralelo o Conexin de sistemas en serie o

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB Conversion de modelos Conversin de sistema continuo a tiempo discreto o Conversin de sistema continuo a tiempo discreto o por varios mtodos e Conversin de sistema continuo a discreto con retardo o Conversin de sistema en tiempo discreto a continuo o Conversin de sistema en tiempo discreto a continuo o Paso de representacin en espacio de estados a o funcin de transferencia o Conversin de espacio de estados a representacin polo-cero o o Paso de representacin externa (funcin de transferencia) o o a interna (espacio de estados) Conversin de funcin de transferencia a representacin o o o polo-cero Paso de representacin polo-cero a funcin de transferencia o o Paso de representacin polo-cero a espacio de estados o Reduccion de modelos Realizacin m o nima y cancelacin polo-cero o Reduccin del orden del modelo o Realizacion de modelos Conversin de un sistema a forma cannica o o Matriz de controlabilidad en escalera Matriz de observabilidad en escalera

61

c2d c2dm c2dt d2c d2cm ss2tf ss2zp tf2ss tf2zp zp2tf zp2ss

minreal modred

canon ctrbf obsvf

ctrb damp dcgain ddamp ddcgain eig esort obsv roots

Propiedades de los modelos Matriz de controlabilidad Factores de amortiguamiento y frecuencias naturales Ganancia en rgimen permanente e Factores de amortiguamiento y frecuencias naturales discretas Ganancia discreta en rgimen permanente e Autovalores del sistema Clasica los autovalores segn su parte real u Matriz de observabilidad Ra ces del polinomio Solucion de ecuaciones Solucin algebraica de la ecuacin de Riccati o o Solucin de la ecuacin de Lyapunov discreta o o Solucin de la ecuacin de Lyapunov continua o o

are dlyap lyap

62

Resumen de los comandos mas importantes del Control System Toolbox Respuesta temporal Respuesta a impulso unitario en tiempo discreto Condiciones iniciales para la respuesta en tiempo discreto Simulacin para entradas arbitrarias en tiempo discreto o Respuesta a escaln unitario en tiempo discreto o Simulacin de un sistema SISO en tiempo discreto o Respuesta impulsional continua Condiciones iniciales para la respuesta temporal Simulacin continua para entradas arbitrarias o Respuesta continua a escaln unitario o Respuesta frecuencial Diagrama de Bode Diagrama de Bode para tiempo discreto Abaco de Nichols para tiempo discreto Diagrama de Nyquist para tiempo discreto Transformada de Laplace Transformada Z Mrgenes de fase y ganancia a Abaco de Nichols L neas de relleno para el abaco de Nichols Diagrama de Nyquist

dimpulse dinitial dlsim dstep filter impulse initial lsim step

bode dbode dnichols dnyquist freqs freqz margin nichols ngrid nyquist

pzmap rlocfind rlocus sgrid zgrid

Lugar de las ra ces Mapeo polo-cero Determinacin interactiva de la ganancia en el lugar de las ra o ces Lugar de las ra ces Relleno del lugar con l neas que indican wn , constantes Relleno del lugar para tiempo discreto con l neas de wn y constantes

ANALISIS Y CONTROL DE SISTEMAS USANDO MATLAB Seleccion de la ganancia Situacin de los polos del bucle cerrado o en sistemas SISO Diseo de un estimador lineal-cuadrtico n a para tiempo discreto Diseo de un estimador general lineal-cuadrtico n a para tiempo discreto Diseo de un regulador lineal-cuadrtico para n a tiempo discreto Diseo de un regulador lineal-cuadrtico para n a tiempo discreto con pesos en las salidas Estimador lineal-cuadrtico a Diseo de un estimador para tiempo discreto partiendo n de una funcin de coste continua o Estimador lineal-cuadrtico general a Regulador lineal-cuadrtico a Diseo de un regulador en tiempo discreto a partir de n una funcin de coste continua o Regulador con pesos en las salidas Situacin de los polos dominantes o Utilidades Analiza la consistencia del grupo (A, B, C, D) Selector automtico de rango para diagramas de a en tiempo discreto Selector automtico de rango para diagramas de a en tiempo discreto Selector automtico de rango para diagramas de a Selector automtico de rango para diagramas de a

63

acker dlqe dlqew dlqr dlqry lqe lqed lqew lqr lqrd lqry place

abcdchk dfrqint dfrqint2 freqint freqint2

Bode Nyquist Bode Nyquist

64

Resumen de los comandos mas importantes del Control System Toolbox

Bibliograf a
[1] R.H. Bishop. Modern Control Systems Analysis and Design Using matlab. AddisonWesley, 1993. [2] G.F. Franklin and J.D. Powell. Digital Control of Dynamic Systems. Addison-Wesley, 1980. [3] The MathWorks Inc. Control System Toolbox Users Guide. 1999. [4] The MathWorks Inc. simulink Users Guide, version 3. 1999. [5] The MathWorks Inc. Using matlab, version 5.3.1. 1999. [6] K. Ogata. Solving Control Engineering Problems with matlab, year=1994, publisher=Prentice Hall International Editions. [7] B. Shahian and M. Hassul. Control System Design using matlab, year=1993, publisher=Prentice Hall. [8] K. Sigmon. Introduccin a matlab, Segunda Edicin. Department of Mathematics, U. o o Florida. Traducido del ingls por Celestino Montes, Dep. Matemtica Aplicada II, U. e a Sevilla, 1992.

65

También podría gustarte