Guia Laboratorio - Matlab

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ -------------------------------------------------------------------------------

Views 117 Downloads 0 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

LABORATORIO No1 INTRODUCCIÓN AL MATLAB Y SU USO EN EL ANÁLISIS Y DISEÑO DE SISTEMAS DE CONTROL OBJETIVOS Al finalizar el laboratorio, el alumno estará familiarizado con el uso del MATLAB realizando simulaciones orientadas al análisis y/o diseño de sistemas de control automático. Para esto se usará el toolbox de diseño y análisis de sistemas de control del MATLAB. INTRODUCCIÓN AL MATLAB MATLAB es un software interactivo orientado para el cálculo científico y de ingeniería, que facilita la exploración iterativa, diseño y resolución de problemas. MATLAB integra análisis numérico, visualización, y programación en un entorno amigable, en el que los problemas y soluciones se pueden expresar en notación matemática. MATLAB es un sistema interactivo cuyo elemento básico de datos es un arreglo que no requiere dimensionamiento. Esto nos permite resolver muchos problemas técnicos de cálculo, especialmente aquellos que usan composición de matrices y vectores, en una fracción de tiempo de lo que tomaría escribir un programa en un lenguaje no interactivo como C o Fortran.

1. Usos del Matlab.

Funcionalidades básicas: - Cálculo matemático. - Cálculo matricial. - Programación y desarrollo de algoritmos. - Desarrollo e implementación de aplicaciones. - Gráficos científicos y de ingeniería. - Modelamiento, simulación y diseño de prototipos. - Análisis de datos, exploración y visualización.



Librerías específicas: toolboxes. A lo largo del curso se utilizarán las siguientes: - Control System Design and Analysis: análisis de sistemas y diseño de controladores. - Simulink: simulación de sistema dinámicos y diseño basado en modelos.



Otros toolboxes: - Math, Statistics and Optimization. - Signal Processing and Communications. - Image Processing and Computer Vision. - Computational Finance. - Parallel Computing, otros.

2 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

2. El aspecto de Matlab 8 (R2012a).Matlab 8 ofrece un aspecto configurable en función de la información que se desee mostrar en la pantalla. En la Figura 1.1 se muestra un posible aspecto.

Figura 1.1 Escritorio del Matlab Existen cuatro elementos fundamentales, tal y como puede apreciarse en la imagen: • Ventana de comandos (Command window): es un interfaz en modo texto sobre la que se introducen por teclado instrucciones de Matlab. Será el elemento fundamental a utilizar en esta práctica. • Ventana de variables (Workspace): en ella aparece un listado de todas las variables que se han empleado durante la sesión, también pueden visualizarse sus tamaños y tipos. • Historial de comandos (Command history): ofrece un listado de todas las instrucciones tecleadas durante la sesión. • Navegador o (Current folder): indica los contenidos del directorio actual y permite navegar por la estructura de directorios del PC.

3. Cómo encontrar ayuda en Matlab.Existen distintas formas de localizar ayuda en el entorno de Matlab:  Ayuda en línea.- Se accede a través de la ventana de comandos tecleando help ‘nombre de función’. La ayuda se obtiene en modo texto. Como ejemplo, se visualizará la ayuda de la función que permite invertir matrices tecleando: >> help inv 3 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------



Navegador de funciones.- Se accede desde el menú Help, seleccionando la opción Function Browser, o seleccionando el icono fx a la izquierda de la línea de comandos. Constituye una manera más ordenada de localizar la misma información: las funciones aparecen agrupadas en bloques y se proporciona un interfaz para navegar. Además ofrece información adicional como ejemplos e instrucciones de uso.



Navegador de ayuda.- Se accede desde el menú Help, seleccionando la opción Product Help, o dando click en el botón con signo de interrogación en la barra de herramientas. Constituye una manera más sencilla de localizar la información anterior, en adición a presentar documentación adicional (guías, etc.). Presenta dos ventanas, una para navegar y otro para visualizar, lo cual facilita su uso. También se puede accesar a la información de una función en el navegador de ayuda tecleando en la ventana de comandos doc ‘nombre de función’.



Comando lookfor (búsqueda de palabras clave).- Aunque más complicado de utilizar, proporciona en ocasiones información extra. El comando lookfor permite buscar entre las descripciones de todas las funciones de Matlab, aquellas que contienen la palabra clave que indiquemos. Como ejemplo, buscaremos todas las funciones de Matlab relacionadas con la transformada de Fourier tecleando: >> lookfor Fourier

4. Variables y matrices en Matlab.Matlab soporta nombres de variable de hasta 19 caracteres, y distingue entre mayúsculas y minúsculas. El tipo de la variable es asignado automáticamente y puede ser:    

Entero Real Complejo Carácter

Una sentencia de creación de variable es, por ejemplo: >> pepe = 7 pepe = 7 Esta sentencia crea la variable entera pepe y le asigna el valor 7. Matlab muestra en pantalla el resultado de cada operación. Si no se quiere visualizar el resultado, basta poner un punto y coma después de cada sentencia: >> pepe = 7;

4 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Todas las variables en Matlab son consideradas matrices. Las posibilidades que utilizaremos son:   

Matriz n x m: matriz bidimensional Matriz n x 1 ó 1 x n: vector (se maneja exactamente igual que una matriz) Matriz 1 x 1: escalar (también se maneja exactamente igual que una matriz).

Empecemos ingresando una matriz como una lista de sus elementos. Se sigue las siguientes reglas:   

Separar los elementos de una fila con espacios o comas. Usar un punto y coma “;” para indicar el final de cada fila. Encerrar la lista de elementos con corchetes, [ ].

>> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 Como puede apreciarse en el ejemplo, los distintos elementos de una fila se separan mediante espacios (o comas) y las distintas filas se separan mediante puntos y coma. Algunas posibilidades de manejo de variables que ofrece Matlab: 

Comprobar el contenido de alguna variable: basta con teclear su nombre en la ventana de comandos: >> pepe pepe = 7



Listar todas las variables existentes en un determinado momento: comando who. >> who Your variables are: A pepe

Nota: la versión 8 de Matlab permite visualizar las variables existentes en la ventana Workspace. 

Eliminar alguna variable de memoria: comando clear. » clear pepe » who Your variables are: A Podemos observar cómo la variable pepe ha desaparecido de la memoria.

5 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

5. Gestión de una sesión de trabajo.La Tabla 1 resume los comandos y símbolos especiales para gestionar una sesión de trabajo. Tabla 1 Comandos para gestionar una sesión de trabajo Comando clc close all clear clear var1 var2 exist(‘name’) quit who whos : , ; …

Descripción Limpia la ventana de comandos Cierra todas las ventanas que muestren gráficos. Remueve todas las variables de memoria Remueve las variables var1 y var2 de memoria Determina si existe una variable con el nombre name Detiene la ejecución del Matlab Lista las variables en memoria Lista las variables y tamaños e indica si tienen parte imaginaria Dos puntos, genera un arreglo con elementos igualmente especiados Coma, separa elementos de un arreglo Punto y coma, suprime la impresión en pantalla; también denota una nueva fila en un arreglo Tres puntos, permite continuar una línea

Si se necesita escribir una línea larga, se pueden usar tres puntos, por ejemplo: >>NumerodeManzanas = 10; NumerodeNaranjas = 25; >>NumerodePeras = 12; >>FrutasCompradas = NumerodeManzanas + NumerodeNaranjas ... +NumberodePeras FrutasCompradas = 47 Usar las teclas de desplazamiento (flechas), teclas Tab y Ctrl para rellamar, editar y reusar funciones y variables tipeadas previamente. Por ejemplo, si se escribe la siguiente línea erróneamente: >>volumen = 1+sqr(5) Matlab responde con un mensaje de error porque se escribió mal sqrt. En lugar de teclear toda la línea, presionar la tecla de desplazamiento hacia arriba (↑) una vez para mostrar la línea tecleada previamente. Presionar la tecla de desplazamiento hacia la izquierda (←) varias veces para mover el cursor y agregar la letra t faltante, luego presionar Enter. El uso repetido de la tecla de desplazamiento hacia arriba permite visualizar las líneas tecleadas con anterioridad.

6 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

6. Manejo de matrices.Matlab ofrece bastantes facilidades para el manejo de matrices. Volviendo al ejemplo anterior: >> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9  Podemos acceder a cualquier elemento de la matriz especificando fila y columna: » A (1,3) ans = 3 Nota: ans es la variable por defecto donde Matlab guarda cualquier resultado; si hubiéramos deseado utilizar otra variable deberíamos haberlo especificado: » k = A(1,3) k = 3 

También se puede acceder a toda una fila o toda una columna, utilizando el operador dos puntos. Este primer comando muestra todos los elementos de la fila 2: » A(2,:) ans = 4 5 6 Este segundo comando muestra todos los elementos de la columna 3: » A (:,3) ans = 3 6 9



O bien a grupos de filas y/o columnas: Este comando muestra los elementos de las filas 1 hasta la 2 y de las columnas 2 hasta la 3: » A(1:2,2:3) ans = 2 3 5 6



También es posible modificar cualquier elemento de una matriz: » A(1,1) = 9 A = 9 2 3 4 5 6 7 8 9

7 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------



E incluso añadir elementos a una matriz dada: » A(4,4) = 1 A = 9 2 3 0 4 5 6 0 7 8 9 0 0 0 0 1 Podemos ver cómo los elementos no especificados se rellenan con ceros.

7. Principales operadores aritméticos.Matlab ofrece una serie de operadores aritméticos válidos tanto para cálculo matricial como para cálculo escalar:      

Suma: Resta: Producto: División: Transpuesta: Potencia:

+ * / ‘ ^

En algunas ocasiones podrán presentarse ambigüedades. Por ejemplo, al multiplicar dos matrices caben dos posibilidades: producto matricial o producto elemento a elemento. » A = A = 1 2 3 4 » B = B = 2 4 6 8 » C = C = 14 20 30 44 » D = D = 2 8 18 32

[1 2; 3 4]

[2 4; 6 8]

A*B % producto matricial

A.*B % el punto indica operación elemento a elemento

La información sobre operadores puede ser encontrada en la ayuda de Matlab 8, dentro de: Product Help -> Getting started -> Language Fundamentals -> Expressions -> Matrix/Array Operators. Además de los operadores comentados, existen una serie de funciones muy útiles en cálculo y generación de matrices: 8 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Generación de matrices: eye zeros ones diag rand randn

matriz identidad. matriz de ceros. matriz de unos. matriz diagonal. matriz uniformemente distribuida generada aleatoriamente. matriz normalmente distribuida generada aleatoriamente.

Manejo de matrices: rank eig inv expm poly det size length

rango de una matriz. autovalores y autovectores. inversa de una matriz. matriz exponencial. polinomio característico. determinante. tamaño. longitud de un vector.

Ejemplos.

Obtención de la matriz inversa: función inv:

» A = [1 2; 3 4] A = 1 2 3 4 » B = inv(A) B = -2.0000 1.0000 1.5000 -0.5000  » A 0 » B 1 1

A = 0 B = 1 1

Creación de una matriz de ceros o unos: funciones zeros y ones: = zeros(1,4) 0 0 = ones(2,3) 1 1

La información sobre operaciones matriciales puede ser encontrada en la ayuda de Matlab 8 en: Product Help -> Getting started ->Language Fundamentals -> Matrices and Magic Squares -> About Matrices

9 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

8. Operaciones con vectores.Podemos crear cualquier vector creciente o decreciente que deseemos. Esta operación será bastante útil para formar bases de tiempo sobre las que se evaluará el valor de funciones. Los dos puntos “:” es un carácter importante en Matlab. La declaración: >>x =1:5 genera un vector línea conteniendo los números del 1 al 5 con incremento unitario. Resultando: x = 1 2 3 4 5 Otros incrementos, diferentes de uno, pueden ser usados. >>y=0:pi/4:pi que resulta en: y= 0.0000 0.7854 1.5708 2.3562 3.1416 Incrementos negativos también son posibles. >>z=6:-1:1 z= 6 5 4 3 2 1 También se puede generar vectores utilizando la función linspace. Por ejemplo: >>k=linspace(0,1,6) k= 0 0.2000 0.4000 0.6000 0.8000 1.0000 genera un vector linealmente espaciado de 0 a 1, conteniendo 6 elementos.

9. Manejo de polinomios.Matlab puede manejar muy bien los polinomios al representarlos mediante vectores. Los coeficientes de un polinomio son los elementos del vector, en orden descendente de potencias. Si queremos calcular las raíces del polinomio a continuación:

simplemente ingresamos: >>p=[3 0 5 3 2 10]; >>roots(p) Similarmente, si queremos evaluar el mismo polinomio en s =π, ingresamos: >>polyval(p,pi) Si queremos multiplicar dos polinomios, la función conv lo puede hacer. La convolución es una operación matemática que opera sobre sucesiones hechas a base de polinomios ordenados por orden de potencias, la sucesión resultante representa los 10 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

coeficientes del polinomio que se obtienen cuando se multiplican los polinomios originales; por eso el nombre “conv”. Ejecute los siguientes comandos: >>roots(p) >>q=[ 1 6 11 6]; >>roots(q) >>pq=conv(p,q) >>roots(pq)

10. Funciones incorporadas del Matlab Muchas funciones que hasta ahora se han usado, tales como sqrt y sin son funciones incorporadas del Matlab. La Tabla 2 lista algunas de las funciones más usadas. La creaciones funciones definidas por el usuario es vista al detalle en el ítem 16. Tabla 2 Funciones matemáticas comúnmente usadas en el Matlab Función Sintaxis del Matlab x exp(x) e sqrt(x) √x log(x) ln x log10(x) log10 x cos(x) cos x sin(x) sin x tan(x) tan x acos(x) cos-1 x asin(x) sin -1 x atan(x) tan-1 x

11. Guardando y recuperando las variables del workspace.Si se desea guardar una sesión de Matlab para uso posterior, se deben usar los comandos save y load. Teclear save hace que el Matlab guarde las variables de la ventana de variables, esto es los nombres de las variables, sus tamaños, y sus valores, en un archivo binario llamado matlab.mat, que el Matlab puede leer. Para recuperar las variables de la ventana de variables, teclear load. Luego se puede continuar la sesión como anteriormente. Para guardar las variables de la ventana de variables con otro nombre, teclear save ‘nombre de archivo’. Si el archivo guardado contiene las variables A, B y C, luego cargando el archivo con load ‘nombre de archivo’ se posicionan dichas variables en la ventana de comandos, y de existir algunas variables con nombres similares, éstas son reemplazadas. Para guardar solo unas cuantas variables, digamos var1 y var2, teclear save ‘nombre de archivo’ var1 var2. Para recuperar var1 y var2 solo es necesario teclear load ‘nombre de archivo’.

11 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

12. Modos de trabajo.Matlab permite trabajar de dos maneras distintas:  Mediante la introducción directa de comandos.- Tecleando comandos desde la ventana principal de Matlab podemos realizar operaciones paso a paso. Será el método de trabajo a emplear para hacer pruebas o bien para operaciones sencillas no repetitivas.  Mediante la creación de programas (*.m) guardados en un archivo script.- La misma secuencia de comandos que podríamos introducir desde la ventana principal puede escribirse en un archivo, que debe tener terminación ‘.m’ y debe ser ejecutado posteriormente desde la ventana de comandos sencillamente tecleando el nombre del archivo. Matlab usa dos tipos de archivos *.m; archivos script o archivos función.

13. Creando y usando un script.El símbolo % designa un comentario, que no es ejecutado en Matlab. Los comentarios son usados con el propósito de documentar el archivo. Matlab ignora todo lo que está a la derecha del símbolo %. Por ejemplo: >>%Este es un comentario >>x=2+3 % Luego es x=5 Nótese que la porción de la línea antes del % es ejecutada. A continuación se muestra un ejemplo simple de cómo crear, guardar y correr un archivo script usando el Editor/Depurador del Matlab. Con la opción File->New->Script o bien con el icono New script (Ctrl+N) abrir el Editor/Depurador de código Matlab, ver Figura 2. Tipear en el archivo abierto lo siguiente: % % % x y

Program Example_1.m This program computes the cosine of the square root and displays the result. = sqrt(13:3:25); = cos(x)

Una vez concluida la edición, seleccionar File->Save. Reemplazar el nombre por defecto (Untitled) con el nombre Example_1, y dar click en Save. El archivo será guardado con la extensión *.m en la carpeta actual del navegador de Matlab. Una vez guardado el archivo teclear Example_1 en la ventana de comandos para ejecutar el programa. >>Example_1 La Figura 2 muestra una pantalla que contiene el resultado de lo que se muestra en la ventana de comandos y el editor/depurador de Matlab abierto para el script del ejemplo. 12 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Figura 2. La ventana de comandos del Matlab con el Editor/Depurador del script abierto Recordar que un script (o variable) no puede tener el mismo nombre de un comando o función de Matlab. Usar el comando exist para verificar que el nombre que se le quiere dar al script o variable no existe ya como función, comando o archivo; por ejemplo al teclear exist(‘example_1’), el resultado será 1 de existir la variable, 2 de existir el script y 5 de existir la función de Matlab, y 0 de no existir. Teclear help exist para más información. Recordar también que un script no puede tener un nombre con espacios ni guiones medios. Ejemplo: El siguiente ejemplo muestra un archivo script para el cálculo de la velocidad de un objeto en caída libre, con velocidad inicial igual a cero. % % % % % % % %

Programa Velocidad_CaidaLibre.m: grafica la velocidad de un objeto en caida libre. Creado el 01/03/2009 por W. Palm III Variables de entrada: tfinal = tiempo final (en segundos) Variables de salida:

13 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ -------------------------------------------------------------------------------------------------------------------% t = arreglo de tiempos en los que la velocidad es % calculada (segundos) % v = arreglo de velocidades (metros/segundo) % % Valor del parámetro: g = 9.81; % Aceleración in SI units % % Sección de entrada: tfinal = input(‘Introducir el tiempo final en segundos:’); % % Calculation section: dt = tfinal/500; t = 0:dt:tfinal; % Crea un arreglo de 501 valores de tiempo. v = g*t; % % Sección de salida: disp(‘La velocidad final es:’) disp(v(lenght(t)) plot(t,v),xlabel(‘Tiempo (segundos)’),ylabel(‘Velocidad … metros/segundo)’

Después de crear el script, se guarda con el nombre Velocidad_CaidaLibre.m. Para ejecutarlo, escribir Velocidad_CaidaLibre en la línea de comandos. A continuación se pedirá introducir el valor de tfinal. Una vez introducido el valor presionar Enter, el resultado es la velocidad final mostrada en la línea de comandos y el gráfico de la velocidad vs tiempo mostrado en una nueva ventana. Si analizamos al detalle el programa Velocidad_CaidaLibre, encontraremos la estructura sugerida para un script, como es:    

Sección de comentarios (nombre del programa, fecha de creación, nombre de los creadores, definiciones de nombres de variables, etc.). Sección de entrada: en esta sección se colocan los datos de entradas o las funciones de entrada que facilitan el ingreso de datos. Incluir comentarios como sea necesario. Sección de cálculos: poner los cálculos en esta sección. Incluir comentarios de ser necesario. Sección de salida: en esta sección poner las funciones necesarias para entregar las salidas en la forma requerida.

La creación de una función de Matlab se verá con detalle en el ítem 16, Creación de funciones definidas por el usuario.

14 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

14. Facilidades para la programación en Matlab.En comparación con otros lenguajes de programación, Matlab ofrece muchas facilidades para el usuario. Básicamente, cabe destacar:     

Elección automática del tipo de las variables Dimensionamiento automático de las matrices Posibilidad de manejar números complejos de modo intuitivo Posibilidad de funcionamiento en modo interpretado (chequeo de sentencias) Entorno de depuración integrado

15. Sentencias de control en Matlab.Se muestra a continuación la sintaxis de las principales sentencias de control de Matlab: 

Bucles: for variable = expresion sentencias end while expresión sentencias end



Sentencia condicional if/else/elseif: if expresión sentencias elseif expresión sentencias elseif expresión sentencias else sentencias end Nota: las claúsulas else y elseif no son necesarias.

16. Creación de funciones definidas por el usuario.Deseamos crear una función de Matlab que, a partir de una matriz dada, genere una matriz cuadrada añadiendo filas o columnas de ceros, según sea necesario. La función se llamará cuadra y se guardará en el archivo cuadra.m (mismo nombre que el nombre de la función creada). Con la opción File->New->Function se abre el editor/depurador de código Matlab, similar a la Figura 2, pero que ya trae embebida la notación correspondiente, con las palabras claves: function y end. 15 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

El código de nuestra función será el siguiente: %convierte una matriz en cuadrada añadiendo ceros function b=cuadra(a) b=a; %copia matriz entrada [x,y]=size(b); if x>y b(:,y+1:x)=0; elseif y>x b(x+1:y,:) =0; end

%añade columnas %añade filas

Si analizamos un poco en detalle este código, encontraremos elementos que necesariamente deberemos incluir en cualquier función que deseemos crear:  

Línea de comentario: es importante que la primera línea de una función contenga un texto explicativo, será la línea que se muestre al solicitar ayuda. Debe comenzar con el símbolo %. Declaración de la función: es obligatoria en cualquier función, especifica los parámetros de entrada y salida. En el ejemplo: function b = inversa(a) Palabra clave

Parámetros de salida

Nombre de la función

Parámetros de entrada

o Si hubiera habido más de un parámetro de entrada, se habrían separado por comas en la declaración; por ejemplo: function b = inversa (a1, a2) o Y si hubiera habido más de un parámetro de salida, se habrían introducido entre corchetes en la declaración; por ejemplo: function [b1, b2] = inversa (a1, a2) 

Cuerpo de la función: contiene todas las operaciones que deseemos realizar.

Si hemos incluido la primera línea de comentario en nuestra función, al solicitar la ayuda de la función que acabamos de crear debemos obtener un resultado como el siguiente: >> help cuadra convierte una matriz en cuadrada añadiendo ceros

16 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

A continuación probaremos la función con una matriz cualquiera: » a = [1 2; 3 4; 5 6] a = 1 2 3 4 5 6 » b = cuadra(a) b = 1 2 0 3 4 0 5 6 0 Vemos cómo se obtiene el resultado que esperábamos.

17. Representación gráfica de curvas.La construcción de gráficos en MATLAB es una más de las facilidades del sistema. A través de comandos simples se puede obtener gráficos bidimensionales o tridimensionales con cualquier tipo de escala y coordenada. Existe en MATLAB una vasta biblioteca de comandos gráficos. Algunos de los comandos para dibujar gráficos bidimensionales son los siguientes: Dibujo de gráficas: plot Dibujo lineal. loglog Dibujar en escala loglog. semilogx Dibujar en semilog. semilogy Dibujar en semilog. fill Diseñar polígono 2D. polar Dibujar en coordenadas polares. bar Gráfico de barras. stem Secuencia discreta. stairs Dibujar en grados. hist Dibujar un histograma. rose Dibujar un histograma en ángulos. compass Dibujar en forma de flechas. feather Dibujar en forma de pluma fplot Dibujar una función. comet Plotear con trayectoria de cometa. ezplot Plotear una curva paramétrica hold on/off Mantener los objetos existentes

Por ejemplo, escriba el siguiente archivo de instrucciones y muestre el gráfico resultante: close all

17 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ -------------------------------------------------------------------------------------------------------------------clear all clc %Definiendo los vectores de tiempo y las %funciones de seno y coseno. t=0:0.05:10; y=sin(t); z=cos(t); %Graficando en una sola grafica ambas %curvas figure(1) plot(t,y,'o',t,z,'x') grid title('Graficas del seno y coseno') xlabel('Seg') legend('y=seno(t)','z=coseno(t)') %Graficando en una sola ventana las 2 %curvas pero en diferentes graficas figure(2) subplot(211) plot(t,y) title('Grafica del seno') xlabel('seg') ylabel('y=sin(t)')

Observe que el vector t es una partición del dominio 0≤ t ≤ 10 con paso 0.05, mientras que y, z son vectores que dan los valores del seno y coseno en los puntos de partición. El programa anterior nos manda a graficar dos funciones trigonométricas, las cuales podemos verlas en las gráficas de la Figura 3. La Tabla 3 resume los comandos de representación gráfica. Tabla 3 Algunos comandos para ploteo en Matlab Comando Descripción [x,y]=ginput(n) Facilita que usando el mouse se obtengan n puntos de una gráfica, y luego retorna las coordenadas x y y en el vector x y y, que tienen longitud n grid Pone mallado en el gráfico gtext(‘texto’) Facilita la ubicación de texto con el mouse plot(x,y) Genera una gráfico del arreglo y versus el arreglo x en ejes rectilíneos title(‘texto’) Pone texto en el título ubicado en la parte superior central del gráfico xlabel(‘texto’) Adiciona una etiqueta de texto al eje horizontal (abscisa) ylabel(‘texto’) Adiciona una etiqueta de texto al eje vertical (ordenada)

18 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Figura 3. Graficas del seno y coseno 19 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Ploteando Gráficos Tridimensionales y Contornos Estos son algunos comandos para realizar gráficos tridimensionales y contornos. plot3 fill3 comet3 contour contour3 clabel quiver mesh meshc surf surfc surfil slice cylinder sphere

Dibujar en espacio 3D. Diseñar polígono 3D. Dibujar en 3D con trayectoria de cometa. Dibujar contorno 2D. Dibujar contorno 3D. Dibujar contorno con valores. Dibujar gradiente. Dibujar malla 3D. Combinación mesh/contour. Dibujar una superficie 3D. Combinación surf/contour. Dibujar una superficie 3D con iluminación. Dibujar visualización volumétrica. Generar cilindro. Generar esfera.

Si escribimos las siguientes instrucciones podremos ver el siguiente gráfico resultante: close all clear all clc [X,Y] = meshgrid(-2:.1:2, -2:.1:2); Z = X.* exp(-X.^2 - Y.^2); mesh(X, Y, Z)

Figura 4. Grafica usando función meshgrid 20 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Respuesta en frecuencia pasa-baja y pasa-alta A continuación se muestra un ejemplo que da como resultado la Figura 5. En este caso muestra la respuesta en frecuencia de un filtro pasa-baja y un filtro pasa-alta, ambos de primer orden. La variable de Laplace s en el dominio de la frecuencia es . La frecuencia de corte en cada caso es 1/T = 20 rad s-1 = 3.18 Hz.

El script correspondiente se presenta a continuación. close all clear all clc T = 0.05; %constante de tiempo [s] omega = logspace(0,8,100); %vector de frecuencias [rad/s] H_LP = (T*j*omega+1).^(-1); %filtro pasa-baja H_HP = 1-H_LP; %filtro pasa-alta figure(1) % nombre de la figura clf %limpia la figura actual subplot(121) % subplot: Amplitud loglog(omega,abs(H_LP),'-') %Amplitud, filtro pasa-baja hold on loglog(omega,abs(H_HP),'--') %Amplitud, filtro pasa-alta loglog([1 1]/T, [0.01 10], ':') %línea constante de tiempo text(1.1/T,0.02,'Constante de tiempo') %texto constante de %tiempo title('Respuesta en frecuencia') %título del subplot xlabel('\omega [rad s^-1]') % etiqueta del eje-x ylabel ('Amplitude [dB]') %etiqueta del eje-y legend ('Pasa-baja', 'Pasa-alta') %leyenda en posición %estándar axis ([1 1e3 0.01 10]) %área visible escala = -40:20:40; set(gca,'ytick',10.^(escala/20)) %establecer set(gca,'yticklabel',escala) %establecer subplot(122) %subplot: Fase semilogx(omega,angle(H_LP)*180/pi,'-') %Fase, filtro pasa%baja hold on semilogx(omega,angle(H_HP)*180/pi,'--') %Fase, filtro pasa%alta grid on xlabel('\omega [rad s^-1]') % etiqueta del eje-x ylabel ('Fase [Grad]') % etiqueta del eje-y axis ([1 1e3 -90 90]) %área visible escala = -90:30:90; set(gca,'ytick',escala) %establecer set(gca,'yticklabel',escala) %establecer

21 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Figura 5. Respuesta en frecuencia, filtros pasa-baja y pasa-alta Usando la función bode también se puede graficar respuestas en frecuencia. El script a continuación muestra el uso de la función bode. pasa_baja=tf([1],[0.05 1]); pasa_alta=1-pasa_baja; bode(pasa_baja,'b-',pasa_alta,'r--'); grid on;

Figura 6. Respuesta en frecuencia usando la función bode, filtros pasa-baja y pasa-alta 22 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

LOS PROCESOS DE DISEÑO DE INGENIERÍA Y RESOLUCIÓN DE PROBLEMAS, Y SU RELACIÓN CON MATLAB El proceso de diseño de ingeniería es el proceso creativo de identificar necesidades y concebir una solución para satisfacer esas necesidades. Esta solución puede ser un producto, una técnica, una estructura, un proyecto, un método, o alguna otra cosa dependiendo del problema. La resolución de problemas es el proceso de determinar la mejor acción posible a seguir en una situación dada. La naturaleza de los problemas que los ingenieros deben resolver varía dependiendo de las ramas de la ingeniería. Debido a la diversidad de problemas, no hay una lista de procedimientos universal que pueda servir para todos los problemas. Sin embargo, la Tabla 4 resume de manera simple la mayoría de los pasos del método de diseño que los ingenieros usan. Cabe destacar también que el proceso de diseño es un proceso iterativo.

23 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Tabla 4. Pasos para resolver problemas y su relación con el proceso de diseño de ingeniería PROCESO DE DISEÑO DE INGENIERÌA FORMULACIÓN DEL PROBLEMA

DISEÑO CONCEPTUAL

DISEÑO PRELIMINAR

DISEÑO DETALLADO

RESOLUCIÓN DE PROBLEMAS

1. Identificar el problema claramente y en términos generales. 2. Colectar la información necesaria y datos necesarios para resolver el problema. 3. Buscar soluciones creativas. 4. Elegir un criterio para evaluar alternativas. 5. Moverse de ideas a diseños preliminares (incluyendo modelado). 6. Descartar las soluciones (diseños) menos prometedores usando evaluaciones simples.

7. Descartar progresivamente, usando evaluaciones detalladas.

DESCRIPCION

Superar obstáculos para pensamiento creativo. Incluir aspectos financieros. Los diseños preliminares evolucionan a través del análisis y síntesis. Los modelos facilitan el proceso de diseño. Un modelo simplifica un sistema o proceso tal que pueda ser mejor estudiado, entendido, y usado en un diseño. Modelos matemáticos: Una o más ecuaciones que describen un sistema físico. Modelos de simulación por computadora: Permiten a los ingenieros examinar sistemas complejos. Tales modelos pueden incorporar modelos matemáticos. Tales modelos pueden estar sujetos a diferentes condiciones de operación. Modelos físicos: Representan el método más antiguo de diseño. Tienen la ventaja que permiten a l ingeniero estudiar un sistema con poca o casi nada de conocimiento previo de su comportamiento. Usualmente son hechos a escala. Se pueden modelar sistemas existentes o propuestos.

8. Evaluar y seleccionar la opción preferida luego de una evaluación detallada de la lista corta. 9. Preparar reportes, planes y especificaciones (planificación de proyectos). IMPLEMENTACIÓN

10. Implementar el diseño (implementación de proyectos).

Uso de prototipos para probar la operación del diseño. Modelos escala pueden también ser usados. Modelos matemáticos y simulaciones por computadora no son exactos para entender las complejidades inherentes. Dibujos de ingeniería (planos). Comunicaciones escritas (memorándums). Comunicación oral. Programación y planificaciones de un proyecto de diseño. Proceso de producir o construir un dispositivo físico, producto o sistema.

24 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

En el caso del diseño de sistemas de control automático basados en modelos, se pueden usar los pasos del proceso de diseño en ingeniería antes destacados en la Tabla 4. Siendo que este diseño depende estrictamente del modelamiento del sistema a controlar, la Tabla 5 muestra un resumen del proceso de modelado. Tabla 5. Pasos para el proceso de modelado 1. Formular el modelo. 2. Construir las ecuaciones.

3. Simplificar las ecuaciones. 4. Resolver las ecuaciones

¿Qué preguntas se desean responder? Dibujar un bosquejo (DCL) y etiquetar las variables necesarias. Determinar qué principios fundamentales son aplicables Lo suficiente como para obtener la información requerida. Enunciar las suposiciones hechas. Simulación computacional vía cálculo numérico – uso de Matlab (u otros) Si se resuelve el problema con un programa, chequear a mano los primero resultados de una versión simple del problema. Verificar las dimensiones y unidades e imprimir los resultados de pasos intermedios.

5. Evaluar e interpretar

Verificación del modelo (análisis) – uso de Matlab (u otros) Llevar a cabo una “verificación de la realidad” de la respuesta obtenida. ¿Tiene sentido? Estimar los rangos del resultado esperado y compararlo con la respuesta. No enunciar la respuesta con gran precisión a menos que se justifique por lo siguiente: • La precisión de la información dada. • Las supuestos simplificadores• Los requerimientos del problema. Interpretar la matemática. Si la matemática produce múltiples respuestas, no descarte algunas sin considerar lo que significan. Las matemáticas tratan de decir algo, y muchas veces se pierde la oportunidad de descubrir más sobre el problema.

6. Si la validación del modelo no

llega a resultados esperados, retornar al paso 3. 7. Diseñar el controlador

Uso de Matlab (u otros)

25 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

HERRAMIENTAS DE MATLAB PARA ANÁLISIS Y DISEÑO DE SISTEMAS DE CONTROL Matlab cuenta con un amplio grupo de funciones que resultan muy útiles tanto para el análisis de sistemas lineales (y no lineales) como para el diseño de sistemas de control. Muchas de las tareas de análisis y diseño asociadas a dichos sistemas implican operaciones de matrices, aritmética de números complejos, determinación de raíces, conversiones de modelos y ploteo de funciones complicadas. Matlab fue diseñado para facilitar la realización de muchas de estas operaciones. Esta parte del laboratorio se ha de dividir en dos partes:  fundamentos: que comprende el modelado de sistemas lineales y representación de modelos en Matlab, y  procedimiento: que comprende la creación/conversión/operaciones de modelos en Matlab, herramientas de análisis de modelos en Matlab (funciones para análisis y para simulaciones de respuesta en el tiempo y la frecuencia), y otras herramientas de análisis y diseño (ltiview y sisotool). 1. Fundamentos.1.1. Modelado de Sistemas.El diseño de sistemas de control empieza con el modelamiento de sistemas reales. Estos modelos, que son representaciones matemáticas de cosas tales como procesos químicos, maquinaria y circuitos eléctricos, entre otros, sirven para estudiar la respuesta dinámica de los sistemas reales. Algunas técnicas matemáticas empleadas por Matlab para analizar estos sistemas suponen, procesos que son físicamente realizables, lineales e invariantes en el tiempo (LTI, linear time invariant). Así los modelos que los representan están sujetos a restricciones similares. En algunos casos los sistemas no lineales pueden bien aproximarse con funciones LTI; ya en los casos de gran no linealidad, Matlab también brinda funciones apropiadas. En el desarrollo de los laboratorios nos restringiremos a trabajar con sistemas LTI. Dado que los sistemas LTI pueden ser representados usando modelos en la forma de funciones de transferencia o ecuaciones de espacio de estados, Matlab trabaja con dichos modelos, haciendo posible el empleo de técnicas tanto clásicas como modernas en el análisis y diseño de sistemas de control. Cualquiera de estas formas de modelos se puede expresar en forma de tiempo continuo (analógicas) o de tiempo discreto (digitales). Las funciones de transferencia se pueden expresar como un cociente de polinomios o una de sus dos formas factorizadas: cero-polo-ganancia o fracciones parciales. Los modelos de sistemas de la forma espacio estados son idóneos para Matlab porque son una expresión basada en matrices. Para ilustrar las diversas formas en las que podemos formular modelos, usaremos el ejemplo clásico de un sistema resorte-masa-amortiguador, el cual se muestra en la Figura 7. En este sistema tres fuerzas actúan sobre una masa m: una fuerza de entrada que depende del tiempo u(t), un resorte con constante de rigidez k y un amortiguador viscoso con constante de amortiguación b. La posición de la masa en función del tiempo 26 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

está representada por x(t). Conectamos a la masa un potenciómetro de medición que proporciona un voltaje de salida y(t) proporcional a x(t), con constante de proporcionalidad p. La ecuación de movimiento de la masa m está dada por la ecuación diferencial de segundo orden: y la ecuación para el potenciómetro es:

La ecuación para el potenciómetro es un ejemplo de situación en la que la variable que representa la dinámica del sistema (x en este caso) no es variable de salida (y en este caso). Juntas estas dos ecuaciones proporcionan un modelo matemático del comportamiento dinámico del sistema. Si integramos la ecuación de movimiento podremos determinar el movimiento de la masa en función del tiempo. Es por ello que un análisis así se denomina análisis en el dominio del tiempo.

Figura 7. Sistema resorte-masa-amortiguador

1.2. Representación de Modelos usando Funciones de Transferencia.El análisis de los sistemas LTI con frecuencia implica determinar ciertas propiedades dinámicas como estabilidad y respuesta en frecuencia, que no son fáciles de determinar usando análisis en el dominio del tiempo. Para estos análisis, muchas veces hacemos uso de la transformada de Laplace, así se aplica la transformada de Laplace a la ecuación en el dominio de tiempo para luego poder analizar el sistema en el dominio de la frecuencia. La transformada de Laplace de nuestra ecuación diferencial del resorte-masaamortiguador anterior es: donde s es un variable compleja (σ + jω ) llamada variable de Laplace. Esta ecuación se debe reacomodar para dar una función de transferencia H(s), que relaciona el movimiento de salida del sistema X(s) con la fuerza de entrada U(s):

la función de transferencia del potenciómetro es simplemente: 27 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Con frecuencia se usan diagramas de bloques para mostrar la relación entre las funciones de transferencia y las variables de entrada y salida de un sistema. Suponiendo para nuestro ejemplo de resorte-masa-amortiguador que m=1, b=4, k=3 y p=10, el diagrama de bloques de la Figura 8 representa el sistema. El primer bloque representa el modelo de la planta, que es parte del sistema que se controla, y el segundo bloque representa el modelo de medición.

Figura 8. Diagrama de bloques: modelo de la planta y modelo de medición También podemos combinar los bloques en un solo bloque de modelo del sistema como se muestra en la Figura 9.

Figura 9. Diagrama de bloques Esta función de transferencia se expresa como un cociente de dos polinomios, donde el polinomio del numerador es simplemente un escalar. En el caso de sistemas que tienen una sola entrada y una sola salida (SISO, single-input single-output), la forma de escribir funciones de transferencia es:

1.3. Representación de Modelos usando la Forma Cero-Polo-Ganancia.Muchas veces el numerador y el denominador de una función de transferencia se factorizan para obtener la forma cero-polo-ganancia, que es:

Por ejemplo, la forma cero-polo-ganancia de la función de transferencia:

28 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

es:

Esta forma es de especial utilidad, pues muestra directamente las raíces de los polinomios del numerador y del denominador (los ceros y los polos de sistema respectivamente). Por último, las funciones de transferencia también pueden escribirse en la forma de expansión de fracciones parciales, o residuo, que es:

Esta forma es útil para determinar la transformada inversa de Laplace y para diseñar ciertos tipos de filtros.

1.4. Representación de Modelos usando la Forma Espacio de Estados.Básicamente consiste en expresar una ecuación diferencial de orden superior como un conjunto de ecuaciones diferenciales de primer orden acopladas. Usando nuestro ejemplo anterior de resorte- masa-amortiguador cuya ecuación de movimiento era:

Podemos definir:

A continuación rescribimos la ecuación diferencial de segundo orden como un conjunto de ecuaciones diferenciales acopladas:

y la ecuación de medición como:

Usando notación de matrices, este modelo de sistema puede escribirse como un modelo de espacio de estados:

donde representa el vector de estados, el vector de entradas y el vector de salidas. Las matrices y son definidas apropiadamente. Para el ejemplo resulta:

29 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

2. Procedimiento.2.1. Creación de Modelos en Matlab 2.1.1. Funciones de Transferencia en Tiempo Continuo.La función tf crea funciones de transferencia. La función tf necesita dos vectores, uno conteniendo los coeficientes del polinomio numerador tomados en orden descendente y otro conteniendo similar información para el polinomio denominador. Como ejemplo creemos la siguiente función de transferencia.

En el script: K0=2; T0=4; num0=[K0 0]; den0=[T0 1]; H0=tf(num0,den0);

En la línea de comandos, para mostrar : >>H0 H0 = 2s ----4s + 1 Continuous-time transfer function. Un modelo LTI puede contener un retardo de tiempo, como en el siguiente modelo:

Este sistema es creado por: K0=2; T0=4; num0=[K0 0]; den0=[T0 1]; H0=tf(num0,den0); Td=1; Hd=tf(num0,den0,'InputDelay',Td)

Excepto por el término de retardo de tiempo, Hd es igual a H0 definido anteriormente. En la línea de comandos, para mostrar : >>Hd Hd = 2s exp(-s) * ----4s + 1 Continuous-time transfer function.

30 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Supongamos que se ha creado una función de transferencia y se desea obtener información detallada acerca del modelo. La función tfdata muestra la información, que está almacenada en los arreglos. Como ejemplo, las siguientes expresiones muestran los polinomios conteniendo los coeficientes correspondientes al numerador y el denominador de la función de transferencia Hd(s) creada anteriormente: En el script: [numHd,denHd,Ts]=tfdata(Hd,'v')

Aqui, Ts es el periodo de muestreo, el cual es cero para modelos en tiempo continuo pero diferente de cero para modelos en tiempo discreto. >> [numHd,denHd,Ts]=tfdata(Hd,'v') numHd = 0 1 denHd = 1 1 Ts = 0 Otra forma de crear funciones de transferencia es definiendo la variable s usando la función tf, y escribiendo la función de transferencia directamente como un cociente de polinomios de s; así en el script: s = tf('s'); H = exp(-s)*(2*s)/(4*s+1);

En la línea de comandos, para mostrar

:

>> H H = 2 s exp(-1*s) * ------4 s + 1 Continuous-time transfer function. Para más información sobre funciones de transferencia, en la línea de comandos, teclear: >> help tf

2.1.2. Forma Cero-Polo-Ganancia en Tiempo Continuo.La función zpk crea modelos cero-polo-ganancia, se deben dar como entradas el vector de ceros, polos y la ganancia. En el script: H=zpk([-6 1 1],[-5 1],3);

31 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

>> H H = 3 (s+6) (s-1)^2 --------------(s+5) (s-1) Continuous-time zero/pole/gain model. También se puede usar la variable s para definir el modelo como una función racional en s. En el script: s=zpk('s') H=2*1/(s-1)*(s+2)

>> s = s Continuous-time zero/pole/gain model. H = 2 (s+2) ------(s-1) Continuous-time zero/pole/gain model.

2.1.3. Modelo en Espacio Estado Continuo.La función ss crea modelos en espacio estado lineal de la forma:

como se ilustra en el siguiente ejemplo. Dado el siguiente modelo en espacio estado lineal:

Este modelo es creado por: A=[0,1;-4,-2]; B=[0;2]; C=[1,0]; D=[0]; ss1=ss(A,B,C,D);

En la línea de comandos, para mostrar >> ss1

:

ss1 = 32 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

a = x1 x2

x1 0 -4

x2 1 -2

b = x1 x2

u1 0 2

c = y1

x1 1

x2 0

d = u1 y1 0 Continuous-time state-space model. a, b, c, y d, son nombres por defecto, son usados únicamente con el objetivo de mostrar los datos, ellos no existen en el workspace de Matlab. Para obtener los parámetros del sistema y darles nombres específicos, en el script: [A1,B1,C1,D1,Ts]=ssdata(ss1)

La respuesta de Matlab será: >> [A1,B1,C1,D1,Ts]=ssdata(ss1) A1 = 0 -4

1 -2

B1 = 0 2 C1 = 1

0

D1 = 0 Ts = 0

33 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

2.2. Conversiones entre Modelos en Matlab 2.2.1. Conversión de Modelos de Espacio Estados a Función de Transferencia.La función tf también convierte modelos en espacio estado a la correspondiente función de transferencia de acuerdo a la fórmula:

En el siguiente ejemplo un modelo continuo en espacio estado es transformado en la correspondiente función de transferencia continua: A=-1; B=2; C=3; D=4; sscont1=ss(A,B,C,D); Hcont1=tf(sscont1)

La respuesta de Matlab es: Hcont1 = 4 s + 10 -------s + 1 Continuous-time transfer function. Ver también ss2tf.

2.2.2. Conversión de Función de Transferencia a Modelo de Espacio Estados.La función ss convierte una función de transferencia a un modelo en espacio estado. Pero esta conversión no es única, dado que hay un infinito número de modelos en espacio estado, los cuales tienen la misma función de transferencia. Entonces, ss escoge una de esas realizaciones, llamada forma canónica controlable. Ver también tf2ss.

2.2.3. Conversión de la Función de Transferencia Polinómica a Fracciones Parciales. La función residue determina los valores de los vectores r, p, k que contienen los valores de residuo, los polos y los términos directos de la expansión de fracciones parciales. Las entradas son los coeficientes de los polinomios B, A del numerador y denominador de la función de transferencia, respectivamente. Como ejemplo realicemos la expansión de fracciones parciales de esta función de transferencia de sistema:

34 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

se puede calcular con estas instrucciones: B=[10]; A=[1,4,3]; [r,p,k]=residue(B,A);

La respuesta de Matlab estará dada por: >> [r,p,k]=residue(B,A) r = -5 5 p = -3 -1 k = [] Por tanto, la expansión en fracciones parciales de nuestra función de transferencia del sistema es:

2.2.4. Conversión de la Función de Transferencia Polinómica a Función de Transferencia Cero-Polo-Ganancia.La función tf2zp determina los ceros(z), polos (p) y la ganancia correspondiente (k) de la función de transferencia cero-polo-ganancia usando los coeficientes en orden descendente de potencias de s, del numerador y denominador de la función de transferencia polinómica que se va a convertir. La función de transferencia polinómica:

puede convertirse en una función de transferencia cero-polo-ganancia usando estas instrucciones: num=[10]; den=[1,4,3]; [z,p,k]=tf2zp(num,den);

La respuesta de Matlab estará dada por: z = Empty matrix: 0-by-1 p = -3 35 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

-1 k = 10 Por tanto, la función de transferencia cero-polo-ganancia es: sistema es:

2.2.5. Conversión de la Función de Transferencia Cero-Polo-Ganancia a Función de Transferencia Polinómica.La función zp2tf determina los vectores num y den que contienen los coeficientes, en orden descendente de potencias de s, del numerador y denominador de la función de transferencia polinómica, p es un vector columna que contiene las posiciones de polos de la función de transferencia cero-polo-ganancia, z es una matriz que contiene las posiciones de ceros correspondientes, con una columna para cada salida de un sistema de múltiples salida, k es la ganancia de la función de transferencia cero-polo-ganancia. La función de transferencia cero-polo-ganancia:

puede convertirse en una función de transferencia polinómica usando estas instrucciones: z=[] p=[-3 -1]’; k=10; [num,den]=zp2tf(z,p,k);

La respuesta de Matlab estará dada por: num = 0 den = 1

0

10

4

3

Por tanto, la función de transferencia polinómica del sistema es:

En resumen Matlab ofrece las siguientes funciones de conversión: TF → TF:[num,den]= ZPK:[z,p,k]= SS:[A,B,C,D]=

tf2zp(num,den) tf2ss(num,den)

ZPK → zp2tf(z,p,k)

SS → ss2tf(A,B,C,D,iu) ss2zp(A,B,C,D,iu)

zp2ss(z,p,k)

36 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

2.3. Operaciones con Modelos (en serie, paralelo o realimentados).Un modelo puede ser representado por un bloque con entradas y salidas ya sea conteniendo una función de transferencia o un modelo en espacio estado dentro de él. Las funciones series, parallel, y feedback pueden ser usadas para realizar manipulaciones básicas de bloques como se mostrara a continuación. Como ejemplo asuma dadas las siguientes funciones de transferencia:

Primero creemos los dos sistemas anteriores: k1=1; k2=2; k3=3; k4=4; Ha=tf(k1,[1,k2]); Hb=tf(k3,[1,k4]);

a. Conexión en Serie (Producto).-

Conectemos Ha(s) y Hb(s) en serie, eso significa que Hser(s) es Ha(s)*Hb(s): Hser=series(Ha,Hb)

La respuesta de Matlab: Hser = 3 ------------s^2 + 6 s + 8 Continuous-time transfer function. b. Conexión en Paralelo (Suma).-

37 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

A continuación, Ha(s) y Hb(s) son conectados en paralelo, lo cual significa que Hpar(s) es Ha(s) + Hb(s): Hpar=parallel(Ha,Hb)

La respuesta en Matlab es: Hpar= 4 s + 10 ------------s^2 + 6 s + 8

c. Conexión usando Lazo de realimentación.-

Finalmente, Ha(s) y Hb(s) son conectados en un lazo realimentado negativo con Ha(s) en el lazo directo y Hb(s) en el lazo de realimentación: feedbsign=-1; Hfeedb=feedback(Ha,Hb,feedbsign)

Feedbsign es el signo de la realimentación, y lo establecemos como -1 o 1. La función de transferencia Hfeedb(s) está dada por:

La respuesta de Matlab está dada por: Hfeedb = s + 4 -------------s^2 + 6 s + 11 Continuous-time transfer function.

38 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

2.4. Herramientas de Análisis de Modelos LTI.Como punto de partida de esta sección definamos una función de transferencia continua, H1c(s). Tomaremos H1c(s) como:

Y creamos H1c(s) con: n1=[1,0.5]; d1=[1,2,4]; H1c=tf(n1,d1);

La respuesta de Matlab es: >> H1c H1c = s + 0.5 ------------s^2 + 2 s + 4 Continuous-time transfer function. 2.4.1. Análisis de la dinámica del modelo. – Aún sin conocer las respuestas a diversas señales de prueba es posible analizar diversas propiedades de un sistema dinámico, tales como estabilidad, frecuencias de resonancia, y características del estado estacionario y transitorio. a. Amplificación del estado estacionario.El comando dcgain permite determinar la ganancia de un sistema cuando s=0. Los sistemas con comportamiento integral dominante tienen una ganancia infinita. ganancia_dc=dcgain(H1c);

La respuesta de Matlab es: >> ganancia_dc ganancia_dc = 0.1250 b. Ancho de banda.Otro valor interesante de un sistema dinámico es su ancho de banda, que se define como la primera frecuencia (en rad/s) en la que la ganancia cae por debajo del 70.79% (-3 dB) de su valor en estado estacionario (ganancia DC). El comando en Matlab es bandwidth. ancho_banda=bandwidth(H1c);

39 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

La respuesta de Matlab es: >> ancho_banda ancho_banda = 11.4812 c. Polos, Autovalores y Ceros.Podemos calcular los polos de un modelo LTI con el siguiente comando: p=pole(H1c)

La respuesta Matlab es: p= -1.0000 + 1.7321i -1.0000 - 1.7321i Para un modelo en espacio estado análogamente podemos calcular los autovalores con eig. [A,B,C,D]=ssdata(H1c); p0=eig(A);

La respuesta Matlab es: p0 = -1.0000 + 1.7321i -1.0000 - 1.7321i tzero calcula ceros. Aquí se muestra un ejemplo basado en H1c(s): z=tzero(H1c)

La respuesta de Matlab es: z= -0.5000 d. Distribución de polos y ceros.Con pzmap podemos calcular y graficar tanto los polos y los ceros. Omitiendo los parámetros de retorno solamente grafica los polos y los ceros en el plano complejo: [pol,zer]=pzmap(H1c); %retorna los polos y ceros de H1c figure(1) pzmap(H1c); %grafica los polos y ceros de H1c

40 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Figura 10. Grafica de ubicación de polos y ceros en el plano complejo generada usando la función pzmap Los polos y autovalores siempre son números reales y/o complejos conjugados. e. Frecuencias naturales y amortiguamiento.El comando damp calcula el factor de amortiguamiento relativo ζ, y la frecuencia natural no amortiguada, ω0, para los polos del sistema. Se sabe que dichos polos están dados por las raíces de la ecuación característica (sistema de 2do orden). α(s)=s2 + 2ζω0s + ω02 Aquí tenemos un ejemplo: damp(H1c)

La respuesta de Matlab es: Eigenvalue Damping Freq. (rad/s) -1.00e+000 + 1.73e+000i 5.00e-001 2.00e+000 -1.00e+000 - 1.73e+000i 5.00e-001 2.00e+000

2.4.2. Respuesta en el dominio del tiempo.Como regla general estamos particularmente interesados en las respuestas a ciertas señales de entrada, tales como impulso unitario o escalón unitario. El toolbox de diseño y análisis de sistemas de control del Matlab ofrece, entre otras, las siguientes funciones: respuesta a las condiciones iniciales (initial), respuesta impulsiva (impulse), respuesta al escalón unitario (step). Ciertas señales de entrada se pueden generar con gensig, y lsim es una función más general que calcula la respuesta en el tiempo para señales arbitrarias. 41 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

a. Respuesta a las condiciones iniciales.La respuesta a las condiciones iniciales describe el comportamiento del sistema para determinados valores iniciales del vector de estados xo y se conoce como respuesta libre. Se calcula usando el comando initial: H1c_ss=ss(H1c); Xo=[0 1]; figure(1) initial(H1c_ss,Xo); %grafica la respuesta en el tiempo a las %condiciones iniciales Xo [y,t,x]= initial(H1c_ss,Xo); %permite obtener los vectores %correspondientes a la respuesta libre del sistema

Figura 11. Grafica de la respuesta a las condiciones iniciales usando la función initial

b. Respuesta al impulso unitario.La respuesta al impulso de un sistema se define como la respuesta a la excitación del sistema con una entrada Dirac δ(t ). El comando impulse simula la respuesta al mpulso unitario en Matlab: Tf=10; figure(1) impulse(H1c,Tf); %grafica la respuesta al impulso unitario [y,t,x]= impulse(H1c); %permite obtener los vectores %correspondientes a la respuesta impulsiva del sistema

42 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Figura 12. Grafica de la respuesta al impulso unitario usando la función impulse

c. Respuesta al escalón unitario.Podemos simular la respuesta escalón de uno o varios modelos LTI con step. La entrada escalón es entonces unitaria (la altura del escalón es uno). Simulemos H1c desde t=0 hasta Tf=10 segundos: Tf=10; step(H1c,Tf)

Figura 13. Grafica de la respuesta al escalón unitario usando la función step También podemos almacenar la respuesta simulada, y, i el vector de tiempo, t, mediante el uso de argumentos de retorno (izquierda): 43 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ -------------------------------------------------------------------------------------------------------------------Tf=10; [y,t]=step(H1d,Tf);

En este caso no se muestra ningún grafico en pantalla. d. Respuesta a cualquier señal de entrada.lsim es una función mas general de simulación ya que acepta una señal de entrada cualquiera, no necesariamente un salto o un impulso. Para generar la señal de entrada podemos usar gensig, que produce una onda senoidal, o una onda cuadrada, o pulsos periódicos. Como ejemplo simulemos H1c con una entrada sinusoidal, u, con un periodo Tp=0.5, tiempo final Tf=10, y un paso Tstep=0.01: Tp=0.5; Tf=10; Tstep=0.01; [u,t]=gensig('sin',Tp,Tf,Tstep); figure(1) lsim(H1c,u,t);

Figura 14. Grafica de la respuesta a una entrada sinusoidal usando las funciones gensig y lsim Otros generadores de señal son square, sawtooth, and stepfun. En resumen Matlab ofrece los siguientes comandos para simular la respuesta de un sistema en el dominio del tiempo: initial(sys,xo,t) impulse(sys,t) step(sys,t) lsim(sys,u,t,xo) gensig(typ,tau)

Respuesta Respuesta Respuesta Respuesta Generador

a las condiciones iniciales al impulso unitario al escalón unitario a una entrada arbitraria de señales

44 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

2.4.3. Respuesta en el dominio de la frecuencia.Es importante para el ingeniero de control entender el comportamiento del sistema en el dominio de la frecuencia: a menudo las señales de testeo son sinusoidales o se desconocen los parámetros del sistema. Analizando la respuesta en frecuencia se puede determinar diversas propiedades del sistema dependientes de la frecuencia: condiciones estacionarias, ancho de banda, márgenes de amplitud y fase, estabilidad en lazo cerrado. a. Cálculo de la respuesta en frecuencia.Para cálculo rápido de las respuestas en frecuencias se pueden usar los comandos evalfr y freqresp. Para calcular la respuesta en frecuencia de un sistema para una única frecuencia se usa evalfr. El comando freqresp permite calcular la respuesta en frecuencia para varias frecuencias. Del siguiente script: sys=tf([3,-1],[-2 1 1]) w=[-j, -2-j,-2+j] H1=[evalfr(sys,w(1));evalfr(sys,w(2));evalfr(sys,w(3))] H2=freqresp(sys,w)

En Matlab se obtiene: >> sys = -3 s + 1 ------------2 s^2 - s - 1 Continuous-time transfer function. w = 0 - 1.0000i

-2.0000 - 1.0000i

-2.0000 + 1.0000i

H1 = 0 - 1.0000i 0.5846 - 0.3231i 0.5846 + 0.3231i H2(:,:,1) = 0 - 1.0000i H2(:,:,2) = 0.5846 - 0.3231i H2(:,:,3) = 0.5846.3231i

45 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

b. Diagrama de Bode.El diagrama de Bode presenta la respuesta en frecuencia de un sistema . Esta respuesta consta de dos gráficas, una la ganancia (dB=20 ) y otra la fase (grados decimales) de . El eje horizontal presenta las frecuencias en escala logarítmica. En siguiente script muestra el uso de la función bode: sys=tf([3,-1],[-2 1 1]) figure(1) bode(sys); %grafica diagrama de Bode grid on; [mag, fase, w]=bode(sys); %no grafica, solo entrega los %datos de magnitude, fase y frecuencia

Figura 15. Grafica de la respuesta en frecuencia usando las función bode

c. Diagrama de Nyquist.Otra forma de representar la respuesta en frecuencia es el diagrama de Nyquist. Se calculan las partes real e imaginaria de la función de transferencia en lazo abierto para valores de y y se grafican los puntos en el plano complejo. La curva resultante es el diagram de Nyquist. sys=zpk([],[-1 -1 -1],4); figure(1) nyquist(sys,'r-');

46 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Figura 16. Grafica de la respuesta en frecuencia en el plano complejo (diagrama de Nyquist), curva obtenida usando la función nyquist También podemos almacenar los valores reales e imaginarios, dado un vector de frecuencias, y valores reales e imaginarios (y frecuencias usadas por Matlab en el cálculo), mediante el uso de argumentos de retorno (izquierda): [re,im]=nyquist(sys,w) [re,im,w]=nyquist(sys)

d. Gráficos de respuesta en frecuencia.A continuación se presenta una lista de funciones de Matlab que permiten generar/calcular respuestas en frecuencia. bode, bodeplot

Gráfico Bode de respuesta en frecuencia, magnitud y fase de la respuesta en frecuencia

nichols, nicholsplot

Nichols chart de la respuesta en frecuencia

nyquist, nyquistplot

Nyquist plot de la respuesta en frecuencia

Sigma, sigmaplot

Gráfico de los valores singulares de un sistema dinámico

evalfr

Evalúa la respuesta en frecuencia en una frecuencia dada

freqresp

Calcula la respuesta en frecuencia dado un vector de frecuencias

47 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

2.4.4. Análisis interactivo de modelos usando el Visor LTI.El visor LTI (LTI-viewer) hace muy simple realizar simulaciones, graficas de respuesta en el tiempo y en la frecuencia, para uno o muchos modelos LTI que existan en el directorio de trabajo. El visor LTI es fácil de ejecutar, por ejemplo: [num,den]=ord2(10,0.2); sys=tf(num,den); h=ltiview({'step';'pzmap'},sys); ltiview('current',tf(dcgain(sys),[0.3 1]),h)

Figura 17. Ventana que permite visualizar diversas respuestas (tiempo y frecuencia) de un sistema, función ltiview

2.5. Herramienta para diseño de controladores SISO: SISO Tool.Matlab cuenta con un GUI para diseño interactivo de compensadores para el caso de plantas SISO. Este GUI permite diseñar compensadores SISO usando el lugar geométrico de las raíces, diagrama de Bode, técnicas de Nyquist y Nichols. Para usar esta herramiento de diseño de compensadores, basta escribir sisotool en el script, por ejemplo: [num,den]=ord2(10,0.2); sys=tf(num,den); sisotool(sys);

48 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Figura 18. Ventanas que permiten (a) modificar parámetros para diseño de compensadores, y (b) visualizar diversas respuestas (tiempo y frecuencia) del sistema en lazo abierto y lazo cerrado

49 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

EJEMPLO 1 Sea el sistema descrito por la siguiente función de transferencia, simular la respuesta en el tiempo ante diversas entradas.

Respuesta a las condiciones iniciales usando la función initial: clc clear all close all s=tf('s'); G=1/(s^2+4*s+9); Gss=ss(G); Xo=[0 1]; [y,t,x]=initial(Gss,Xo); %respuesta libre figure(1) subplot(223) plot(t,x(:,1),'r-',t,x(:,2),'g--'); title('Estados x(t)'); xlabel('t'); ylabel('x(t)'); legend('x_1(t)','x_2(t)'); subplot(221) plot(t,y); title('Salida y(t)'); xlabel('t'); ylabel('y(t)') subplot(122) plot(x(:,1),x(:,2)); title('Phase Potrait'); xlabel('x_1(t)'); ylabel('x_2(t)')

50 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Figura 19. Respuesta a las condiciones iniciales Respuesta al escalón unitario y al impulso unitario usando las funciones step e impulse: figure(2) subplot(121) step(G); subplot(122) impulse(G);

Figura 20. Respuesta al escalón e impulso unitario 51 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Respuesta a una entrada arbitraria usando las funciones gensig y lsim: [u,t]=gensig('square',3,10,0.01); [y,t]=lsim(G,u,t); figure(3) plot(t,y,'r-',t,u,'b--'); legend('y(t)','u(t)') title('Respuesta a una entrada arbitraria'); xlabel('t');

Figura 21. Respuesta a una entrada arbitraria EJEMPLO 2 Sea el sistema descrito por la siguiente función de transferencia, presentar la respuesta en frecuencia.

Sea el sistema descrito por la siguiente función de transferencia, presentar la respuesta en la frecuencia para diversos factores de amortiguamiento.

52 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ --------------------------------------------------------------------------------------------------------------------

Respuesta en frecuencia usando la función bode: clc clear all close all sysPT1=tf(1,[0.05 1]); figure(1) subplot(121) bode(sysPT1,'r-'); sysPT2=tf(10,[1 0.05 10]); d=[sqrt(2)/2 1.6 3]; for n=1:1:length(d) sysPT2=[sysPT2; tf(10,[1 d(n) 10])]; grid on; end; subplot(122) hold on stil={'r-' 'b-' 'k-' 'g--'}; for n=1:1:length(d)+1 bode(sysPT2(n),stil{n}); grid on; end

Figura 22. Respuesta en frecuencia

53 ---------------------------------------------------------------------------------------------------------LABORATORIO DE CONTROL AUTOMÁTICO