197
CURSO “Dise˜ no de Sistemas de Control Usando MATLAB-SIMULINK” Emilio Soria Olivas & Gustavo Camps i Valls Departament d’Enginyeria Electr` onica UNIVERSITAT DE VAL ` ENCIA – ESTUDI GENERAL Val` encia – Curs 2002-2003.

CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Embed Size (px)

Citation preview

Page 1: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

CURSO

“Diseno de Sistemas de Control Usando

MATLAB-SIMULINK”

Emilio Soria Olivas & Gustavo Camps i Valls

Departament d’Enginyeria Electronica

UNIVERSITAT DE VALENCIA – ESTUDI GENERAL

Valencia – Curs 2002-2003.

Page 2: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

“Diseno de Sistemas de Control Usando MATLAB-SIMULINK”

Emilio Soria Olivas & Gustavo Camps i Valls, 2002.

e-mail: soriae,[email protected] de Procesado Digital de Se~nales, http://gpds.uv.es

Page 3: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

ii

Page 4: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Indice General

Lista de Figuras. iv

Lista de Tablas. ix

1 Introduccion al Matlab 11.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Establecer el camino de busqueda . . . . . . . . . . . . . . . 41.1.2 Editor de ficheros y depurador de errores. . . . . . . . . . . . 51.1.3 El espacio de trabajo en MATLAB. . . . . . . . . . . . . . . 61.1.4 Control de los formatos de salida y de otras opciones de MAT-

LAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2 Operaciones basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2.1 Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3 Funciones de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.3.1 Calculo de normas de matrices. . . . . . . . . . . . . . . . . . 201.3.2 Calculo de normas de vectores. . . . . . . . . . . . . . . . . . 20

1.4 Datos en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.5 Programacion de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . 281.6 Ficheros *.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301.7 Graficos en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361.8 Otras caracterısticas de Matlab . . . . . . . . . . . . . . . . . . . . . 45

2 Introduccion a los Sistemas Continuos de Control 512.1 Perspectiva historica y definiciones . . . . . . . . . . . . . . . . . . . 51

2.1.1 Objetivos de los Sistemas de Control . . . . . . . . . . . . . . 562.1.2 Clasificacion de los Sistemas de Control . . . . . . . . . . . . 572.1.3 Sistemas y modelos . . . . . . . . . . . . . . . . . . . . . . . . 57

2.2 Modelos dinamicos y respuesta dinamica. . . . . . . . . . . . . . . . 612.2.1 Principios basicos de la realimentacion . . . . . . . . . . . . . 612.2.2 Respuesta dinamica . . . . . . . . . . . . . . . . . . . . . . . 63

Page 5: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

iv INDICE GENERAL

2.2.3 Transformada de Laplace . . . . . . . . . . . . . . . . . . . . 642.2.4 Especificaciones en el dominio del tiempo y Transformada de

Laplace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742.2.5 Sistemas de primer orden, parametros caracterısticos . . . . . 752.2.6 Sistemas de segundo orden, respuesta impulsional/escalon, ... 772.2.7 Especificaciones en el dominio temporal . . . . . . . . . . . . 812.2.8 Efectos de la adicion de ceros y polos . . . . . . . . . . . . . 82

2.3 Principios esenciales de la realimentacion . . . . . . . . . . . . . . . 842.3.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . 842.3.2 Sensibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862.3.3 Precision en regimen estacionario: tipo de sistema . . . . . . 872.3.4 Estabilidad en SLIT. Criterio de Routh. . . . . . . . . . . . . 89

2.4 Metodo de diseno del lugar de las raıces (MLR) . . . . . . . . . . . . 902.4.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . 902.4.2 Trazado del Lugar de las Raıces . . . . . . . . . . . . . . . . 912.4.3 Ejemplos practicos. . . . . . . . . . . . . . . . . . . . . . . . . 942.4.4 Compensacion dinamica . . . . . . . . . . . . . . . . . . . . . 100

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) . . . . . . . . 1092.5.1 Respuesta en frecuencia . . . . . . . . . . . . . . . . . . . . . 1092.5.2 Diagramas de Bode . . . . . . . . . . . . . . . . . . . . . . . 1102.5.3 Margenes de Estabilidad . . . . . . . . . . . . . . . . . . . . . 1122.5.4 Criterio de estabilidad de Nyquist . . . . . . . . . . . . . . . 1162.5.5 Diagrama de Nichols . . . . . . . . . . . . . . . . . . . . . . . 1202.5.6 Compensacion . . . . . . . . . . . . . . . . . . . . . . . . . . 121

3 Toolbox de Control 1313.1 Organizacion del paquete de Control . . . . . . . . . . . . . . . . . . 1313.2 Funciones esenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . 1333.3 Demostraciones ilustrativas . . . . . . . . . . . . . . . . . . . . . . . 1403.4 Herramientas de Control con Matlab en Internet . . . . . . . . . . . 141

4 Introduccion al Entorno Simulink 143

5 Practicas 145

Bibliografıa 173

Page 6: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Indice de Figuras

1.1 Ventana inicial de MATLAB 5.3. . . . . . . . . . . . . . . . . . . . . 21.2 Menu de ayuda de MATLAB 5.3. . . . . . . . . . . . . . . . . . . . . 31.3 Camino de busqueda de MATLAB 5.3. . . . . . . . . . . . . . . . . . 51.4 Variables del espacio de trabajo de MATLAB. . . . . . . . . . . . . . 61.5 Descripcion de la variable x. . . . . . . . . . . . . . . . . . . . . . . . 71.6 Menu de preferencias de MATLAB. . . . . . . . . . . . . . . . . . . . 81.7 Uso de la instruccion meshgrid. . . . . . . . . . . . . . . . . . . . . . 43

2.1 Idealizacion de proceso. . . . . . . . . . . . . . . . . . . . . . . . . . 522.2 Idealizacion del control de procesos. . . . . . . . . . . . . . . . . . . 522.3 Esquema de control mediante redes neuronales. Para controlar una

planta mediante un controlador se ajusta su actuacion mediante lasenal de error que comete la planta. . . . . . . . . . . . . . . . . . . 54

2.4 Esquema de control adaptativo. El regulador se va adaptando a partirde las salidas que proporciona un estimador de la actuacion de la plan-ta cuya actuacion se va controlando mediante el mismo controlador.Se trata de un proceso adaptativo o iterativo. . . . . . . . . . . . . . 55

2.5 (a) Representacion grafica de un sistema con una salida y, una entradau, una perturbacion medida w y una no mensurable v. (b) Ejemplode sistema. Panel solar de una casa: u entrada, I es la perturbacionmedida, y es la salida, v son las perturbaciones no mensurables. . . . 58

2.6 Respuestas de entrada y salida de un determinado sistema. . . . . . 592.7 Respuesta impulsional de un sistema. . . . . . . . . . . . . . . . . . . 602.8 Sistema mecanico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622.9 Sistemas rotores o rotacionales. Satelite . . . . . . . . . . . . . . . . 632.10 Sistemas rotores o rotacionales. Pendulo. . . . . . . . . . . . . . . . 642.11 Sistemas rotores o rotacionales. Pendulo invertido. . . . . . . . . . . 642.12 Sistemas rotores o rotacionales. Avion. . . . . . . . . . . . . . . . . . 652.13 Sistemas electricos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662.14 Sistemas electro-mecanicos. . . . . . . . . . . . . . . . . . . . . . . . 672.15 Sistemas Flujo de calor. . . . . . . . . . . . . . . . . . . . . . . . . . 68

Page 7: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

vi INDICE DE FIGURAS

2.16 Sistemas de compresion de fluidos. . . . . . . . . . . . . . . . . . . . 692.17 Algunas Transformadas estandar de Laplace. . . . . . . . . . . . . . 702.18 Motor DC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742.19 Ecuaciones diferenciales y Transformada de Laplace (funcion de trans-

ferencia) del Sistema del Motor DC. . . . . . . . . . . . . . . . . . . 742.20 Respuesta de un sistema de primer orden a la entrada rampa unitaria. 762.21 Respuesta de un sistema de primer orden a la entrada escalon. . . . 772.22 Respuesta impulsional en funcion de la posicion de los polos en un

sistema de primer orden. . . . . . . . . . . . . . . . . . . . . . . . . . 782.23 Sistema de segundo orden como bloque con realimentacion unitaria. 782.24 Respuesta de un sistema de segundo orden en funcion de la posicion

de los polos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792.25 Respuesta temporal de un sistema de segundo orden en funcion de

distintos valores del coeficiente de amortiguamiento, ξ. . . . . . . . . 802.26 Respuesta temporal transitoria tıpica de un sistema de segundo or-

den. Se indican tambien las caracterısticas que definen la respuesta,a menudo conocidas por especificaciones del sistema ya que son laspropiedades deseadas a conseguir en un controlador. . . . . . . . . . 81

2.27 Sistema de control con realimentacion. Ejemplo 2. . . . . . . . . . . 822.28 Respuesta de los sistemas H1(s) y H2(s). Con la adicion del cero

conseguimos un menor tiempo de subida. . . . . . . . . . . . . . . . 832.29 Estructuras basicas en el control de sistemas: (a) Lazo abierto y (b)

lazo cerrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842.30 Sistema con realimentacion unitaria. . . . . . . . . . . . . . . . . . . 852.31 Posicion de los polos del sistema y respuesta escalon para k = 1, y

k = 100. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862.32 Posicion de los polos del sistema y respuesta escalon para k = 1,

k = 100 y k = 275. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872.33 Sistema controlador proporcional de constanteKa y planta a controlar

KGG en lazo realimentado unitario. . . . . . . . . . . . . . . . . . . 912.34 Algunos ejemplos de polos y ceros sobre el eje real para dibujar el LGR. 922.35 Ejemplos de trazado de asıntotas para el LGR. . . . . . . . . . . . . 932.36 Ejemplo del calculo de los angulos de salida φ y ψ. . . . . . . . . . . 942.37 Este ejemplo ilustra un caso en que dos ramas del LGR se encuentran

en el punto de ruptura (“breakway point”, “saddle point”) y se ale-jan del eje en sentidos contrarios. En este caso, el punto de rupturarepresenta una doble raız de la ecuacion, cuando el valor de K tieneel valor del punto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2.38 Situaciones tıpicas de puntos de ruptura (“breakway point”, “saddlepoint”). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Page 8: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

INDICE DE FIGURAS vii

2.39 Lugar de las raıces para el sistema del Ejemplo 1. . . . . . . . . . . . 972.40 Lugar de las raıces para el sistema del Ejemplo 2. . . . . . . . . . . . 972.41 Mas ejemplos de LGR. . . . . . . . . . . . . . . . . . . . . . . . . . . 982.42 Paso 1: indicamos los polos del sistema y con una flecha roja el lugar

de raıces que queda a la izquierda de un numero impar de ceros +polos reales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

2.43 Resolucion del LGR con MATLAB. . . . . . . . . . . . . . . . . . . . 1002.44 LGR del ejemplo con MATLAB. . . . . . . . . . . . . . . . . . . . . 1012.45 Estructura tıpica de un compensador. . . . . . . . . . . . . . . . . . 1012.46 Lugar de las Raıces para la inclusion de un compensador por adelanto. 1032.47 Lugar de las Raıces para la inclusion de un compensador por adelanto

(s=-2) y un polo (s=-20). . . . . . . . . . . . . . . . . . . . . . . . . 1032.48 Diagrama del coche+barra. . . . . . . . . . . . . . . . . . . . . . . . 1042.49 Lugar de las raıces para (a) el sistema original, (b) compensador 1 y

(c) compensador 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042.50 Control mediante un compensador por adelanto del sistema coche+barra.1052.51 Lugar de las Raıces para la inclusion de un compensador por atraso

con control de velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . 1062.52 Diagrama de Bode de la amplitud para singularidades en el origen. . 1112.53 Diagrama de Bode de (a) amplitud y (b) fase para terminos de primer

orden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112.54 Diagrama de Bode de (a) amplitud y (b) fase para terminos de segundo

orden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122.55 Diagramas de amplitud (a), fase (b) y una aproximacion de la fase (c)

para el sistema G(s) = 20(s+0.5)s(s+10)(s+50) . . . . . . . . . . . . . . . . . . . 113

2.56 Diagramas de amplitud (a), fase (b) para el sistemaG(s) = 20(s+0.5)s(s+10)(s+50)

mediante bode.m de MATLAB. . . . . . . . . . . . . . . . . . . . . . 1142.57 Bloque de control proporcional. . . . . . . . . . . . . . . . . . . . . . 1142.58 Lugar de las raıces para els sistema G(s) = 1

s(s+1)2. Se observa que

para K > 2 el sistema se hace inestable. . . . . . . . . . . . . . . . . 1152.59 Diagramas de Bode para el sistema G(s) = 1

s(s+1)2con K=1. . . . . 116

2.60 Diagramas de Bode para el sistema G(s) = 1s(s+1)2

con K=1 medianteel comando margin de MATLAB. . . . . . . . . . . . . . . . . . . . . 117

2.61 Planta, LGR, Bode y Nyquist del Ejemplo 1: G(s) = 1(s+1)2

. . . . . . 119

2.62 Planta del Ejemplo 2: G(s) = 1s(s+1)2

. . . . . . . . . . . . . . . . . . 120

2.63 Diagrama de Bode del Ejemplo 2: G(s) = 1s(s+1)2

. . . . . . . . . . . . 120

2.64 Diagrama de Nyquist del Ejemplo 2: G(s) = 1s(s+1)2

. . . . . . . . . . 121

2.65 LGR, Bode y Nyquist del Ejemplo 3: G(s) = s+1s( s

10−1)2

. . . . . . . . . 122

Page 9: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

viii INDICE DE FIGURAS

2.66 Definiciones de los margenes de estabilidad (PM y GM) sobre unDiagrama de Nyquist generico. . . . . . . . . . . . . . . . . . . . . . 123

2.67 Diagrama de Nyquist de un sistema complejo y definicion del margende vector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

2.68 Ejemplo de Diagrama de Nichols para el sistema en l.a. G(s) =s+1

s(s+3)(s+5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1252.69 Diagrama de Bode del compensador en adelanto para α = 0.1 Kc = 1. 1252.70 Diagramas de Bode para el sistema sin compensar (trazo continuo) y

compensado (trazo discontinuo) mediante red de adelanto. . . . . . . 1262.71 Diagrama de Bode del Compensador PD. . . . . . . . . . . . . . . . 1272.72 Diagramas de Bode de un compensador de atraso. . . . . . . . . . . 1282.73 Diagrama de Bode de un Compensador Integral (PI). . . . . . . . . . 129

5.1 Respuestas del sistema del ejemplo 01 al impulso, el escalon unitario,rampa unitaria y la funcion ‘sinc’ hasta un tiempo t = 10. . . . . . . 147

5.2 Sistema del ejercicio 07. . . . . . . . . . . . . . . . . . . . . . . . . . 1475.3 Diagrama de polos y ceros del ejemplo 21. . . . . . . . . . . . . . . . 1495.4 Sistema del apartado E. . . . . . . . . . . . . . . . . . . . . . . . . . 152

Page 10: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Indice de Tablas

2.1 Relacion de analogıas entre las variables fısicas ası como algunas im-plementaciones de sistemas de control . . . . . . . . . . . . . . . . . 62

2.2 Expresiones de los errores en regimen estacionario en funcion del tipode entrada. Las constantes representan el tipo de error: Kp es la cons-tante de error de posicion, Kv es la constante del error de velocidady Ka es la constante para el error de aceleracion. . . . . . . . . . . . 88

Page 11: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Capıtulo 1

Introduccion al Matlab

1.1 Introduccion

MATLAB es un paquete informatico cuyo nombre procede de la unificacion de losterminos MATrix LABoratory. Su objetivo inicial fue proporcionar un facil accesoa las librerıas LINPACK y EISPACK que son dos de las librerıas mas importantesen computacion y calculo matricial. Este manual hace referencia a la version 5.3

de este programa, aparecida a comienzos de 1999.MATLAB es un programa para realizar calculos numericos usando vectores y

matrices. Como caso particular de estos elementos evidentemente puede trabajartambien con numeros tanto reales como complejos. MATLAB es un entorno de com-putacion y desarrollo totalmente integrado; esta orientado para llevar a cabo proyec-tos donde se lleven a cabo gran numero de calculos matematicos complementandosedichos calculos con excelentes representaciones graficas.

En los medios universitarios MATLAB se ha convertido en una herramientabasica docente. En el mundo industrial MATLAB esta siendo utilizado como he-rramienta de investigacion para la resolucion de complejos problemas planteados enla realizacion y aplicacion de modelos matematicos en ingenierıa.

Como se ha comentado anteriormente MATLAB dispone de una serie de librerıasespecializadas. Entre las mas destacadas estan:

MATLAB se puede arrancar como cualquier otra aplicacion de Windows 95/

98/ NT . Al arrancar MATLAB se abre una ventana parecida a la de la Figura 1.En la pantalla inicial aparece el prompt caracterıstico de MATLAB (>>). Esto

quiere decir que el programa esta preparado para empezar a trabajar. Si se quiere queaparezca un saludo inicial se puede realizar modificando un fichero de comandos

personal que se ejecuta cada vez que se entra en el programa. Este fichero es elfichero matlabrc.m . Este fichero tambien controla otra serie de parametros defuncionamiento importantes como son los directorios de trabajo, forma/color de las

Page 12: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2 Capıtulo 1. Introduccion al Matlab

Communications Toolbox Control System ToolboxCurve Fitting Toolbox Data Acquisition ToolboxDatabase Toolbox Filter Design ToolboxFinancial Toolbox Financial Time Series ToolboxFuzzy Logic Toolbox Image Processing ToolboxInstrument Control Toolbox Model Predictive Control ToolboxNeural Network Toolbox Optimization ToolboxRobust Control Toolbox Signal Processing ToolboxSpline Toolbox Statistics ToolboxSymbolic/Extended Symbolic Math ToolboxSystem Identification ToolboxWavelet Toolbox Mapping Toolbox

Introducción al MatlabIntroducción al Matlab

3

Figura 1. Ventana inicial de MATLAB 5.3.

En la pantalla inicial aparece el prompt característico de MATLAB (»). Esto quiere decir que el programa está preparado para empezar a trabajar. Si se quiere que aparezca un saludo inicial se puede realizar modificando un fichero de comandos personal que se ejecuta cada vez que se entra en el programa. Este fichero es el fichero matlabrc.m. Este fichero también controla otra serie de parámetros de funcionamiento importantes como son los directorios de trabajo, forma/color de las pantallas de comandos y gráficos, etc. Destacar que las diferentes opciones sobre estos parámetros se pueden variar de forma más sencilla usando los típicos menús de Windows y que MATLAB también nos ofrece. Antes de comentar el programa destacar que nos podemos desplazar sobre la línea de comandos con las teclas ↑ y ↓. Además se puede ir al principio de la línea con la tecla Inicio, al final de la línea con Fin, y borrar toda la línea con Esc. Para borrar todas las salidas anteriores de MATLAB y dejar limpia la ventana principal se puede utilizar las funciones clc. Si se desea salir del programa se tienen como opciones los comandos quit o exit, o bien “Exit MATLAB” en el menú File. Además, al igual que todas las aplicaciones Windows, también se puede utilizar Alt+F4. Si se encuentran dificultades MATLAB 5.3 dispone de un excelente fichero de ayuda que tiene todo lo que uno puede desear.

Figura 1.1: Ventana inicial de MATLAB 5.3.

pantallas de comandos y graficos, etc. Destacar que las diferentes opciones sobreestos parametros se pueden variar de forma mas sencilla usando los tıpicos menusde Windows y que MATLAB tambien nos ofrece.

Antes de comentar el programa destacar que nos podemos desplazar sobre la lıneade comandos con las teclas ↑ y ↓. Ademas se puede ir al principio de la lınea con latecla Inicio, al final de la lınea con Fin , y borrar toda la lınea con Esc. Para borrartodas las salidas anteriores de MATLAB y dejar limpia la ventana principal se puedeutilizar las funciones clc. Si se desea salir del programa se tienen como opciones loscomandos quit o exit, o bien “Exit MATLAB” en el menu File. Ademas, al igualque todas las aplicaciones Windows, tambien se puede utilizar Alt+F4.

Si se encuentran dificultades MATLAB 5.3 dispone de un excelente fichero deayuda que tiene todo lo que uno puede desear.

En la ultima figura se muestran las distintas opciones que aparecen en el menude ayuda:

Page 13: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.1 Introduccion 3Introducción al MatlabIntroducción al Matlab

4

Figura 2. Menú de ayuda de MATLAB 5.3.

En la última figura se muestran las distintas opciones que aparecen en el menú de ayuda:

1. Help Window, Se puede buscar ayuda sobre la función o el concepto que se desee.

2. Help Tips. Ofrece ideas prácticas para utilizar la ayuda.

3. Help Desk. Se abre un buscador que permite acceder a toda la información sobre

MATLAB en formato HTML. Esta información es equivalente a los manuales impresos del programa. Desde la parte inferior de esta página, mediante el enlace Online Manuals (in PDF) se puede acceder a la versión *.pdf de los manuales de MATLAB. Este formato es menos adecuado para consultar que el HTML, pero mucho más adecuado para imprimir y revisar luego sobre papel.

4. Examples and Demos. Llegamos a una ventana que da acceso a un buen

número de ejemplos resueltos con MATLAB. Es bastante interesante recorrer estos ejemplos para hacerse idea de las posibilidades del programa.

Además, se puede también recurrir al Help desde la línea de comandos. La instrucción helpwin seguido de un nombre de comando muestra la información correspondiente a ese comando en la ventana Help Window, incluyendo también comandos similares sobre los que se ofrece ayuda. El comando doc seguido de un nombre de comando muestra la información correspondiente a ese comando a través de Netscape Navigator o Internet Explorer, en formato HTML. El entorno de trabajo de MATLAB ha mejorado mucho desde su versión original haciéndose mucho más gráfico e intuitivo. Los componentes más importantes del entorno de trabajo de MATLAB son el editor de directorios de trabajo (Path Browser), el editor y depurador de errores (Editor & Debugger) y el visualizador del espacio de trabajo (Workspace Browser). A continuación se describen brevemente estos componentes.

Figura 1.2: Menu de ayuda de MATLAB 5.3.

• Help Window, Se puede buscar ayuda sobre la funcion o el concepto que sedesee.

• Help Tips. Ofrece ideas practicas para utilizar la ayuda.

• Help Desk . Se abre un buscador que permite acceder a toda la informacionsobre MATLAB en formato HTML. Esta informacion es equivalente a los ma-nuales impresos del programa. Desde la parte inferior de esta pagina, medianteel enlace Online Manuals (in PDF) se puede acceder a la version *.pdf

de los manuales de MATLAB. Este formato es menos adecuado para consultarque el HTML, pero mucho mas adecuado para imprimir y revisar luego sobrepapel.

• Examples and Demos. Llegamos a una ventana que da acceso a un buennumero de ejemplos resueltos con MATLAB. Es bastante interesante recorrerestos ejemplos para hacerse idea de las posibilidades del programa.

Ademas, se puede tambien recurrir al Help desde la lınea de comandos. Lainstruccion helpwin seguido de un nombre de comando muestra la informacioncorrespondiente a ese comando en la ventana Help Window , incluyendo tambiencomandos similares sobre los que se ofrece ayuda. El comando doc seguido de unnombre de comando muestra la informacion correspondiente a ese comando a travesde Netscape Navigator o Internet Explorer, en formato HTML.

El entorno de trabajo de MATLAB ha mejorado mucho desde su version origi-nal haciendose mucho mas grafico e intuitivo. Los componentes mas importantes

Page 14: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

4 Capıtulo 1. Introduccion al Matlab

del entorno de trabajo de MATLAB son el editor de directorios de trabajo (Path

Browser), el editor y depurador de errores (Editor & Debugger) y el visuali-zador del espacio de trabajo (Workspace Browser). A continuacion se describenbrevemente estos componentes.

1.1.1 Establecer el camino de busqueda

MATLAB puede llamar a una gran variedad de funciones, tanto propias comoprogramadas por los usuarios. Es necesario conocer cuales son las reglas que de-terminan que funcion o que fichero es el que se va a ejecutar cuando su nombreaparezca en una lınea de comandos del programa. Estas reglas quedan determinadaspor el camino de busqueda que el programa utiliza cuando encuentra el nombre deuna funcion. Este camino es una lista de directorios que se puede ver y modificar apartir de la lınea de comandos, o utilizando el Path Browser. El comando path

hace que se escriba el search path de MATLAB (el resultado depende de en quedirectorio esta instalado MATLAB):

Para ver como se utiliza el search path supongase que se utiliza la palabranombre1 en un comando. El proceso que sigue el programa para tratar de conocerque es nombre1 es el siguiente:

1. Comprueba si nombre1 es una variable previamente definida por el usuario.

2. Comprueba si nombre1 es una una funcion privada del usuario.

3. Comprueba si nombre1 es una funcion del usuario.

4. Comprueba si nombre1 es una funcion interna o intrınseca de MATLAB.

5. Comprueba si hay un fichero llamado nombre1.mex, nombre1.dll o nom-

bre1.m en el directorio actua l, cuyo contenido se obtiene con el comandodir .

6. Comprueba si hay ficheros llamados nombre1.mex, nombre1.dll o nom-

bre1.m en los directorios incluidos en el search path de MATLAB.

Estos pasos se realizan en el orden indicado. Cuando se encuentra lo que seesta buscando se detiene la busqueda y se utiliza el fichero que se ha encontrado.Conviene saber que, a igualdad de nombre, los ficheros *.mex se ejecutan antesque los ficheros *.m que estan en el mismo directorio. El concepto de directorio

actual es importante en MATLAB. Para cambiar de directorio actual se utiliza elcomando cd , seguido del nombre del directorio, para el cual se puede utilizar unpath absoluto (por ejemplo cd C:\Matlab\Ejemplos) o relativo (cd Ejemplos).

Page 15: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.1 Introduccion 5

MATLAB permite utilizar tanto la barra normal (/) como la barra invertida (\).Para subir un nivel en la jerarquıa de directorios se utiliza el comando cd .

Path Browser define los directorios donde MATLAB debe buscar los ficherosde comandos y las funciones. Con el comando Set Path del menu File se muestrala lista de directorios en la que MATLAB buscara. En la figura 3 se muestra unejemplo de dicho path.Introducción al MatlabIntroducción al Matlab

6

Figura 3. Camino de búsqueda de MATLAB 5.3.

Para añadir (o quitar) un directorio a esta lista se debe ejecutar el comando Add to Path (o Remove Path) en el menú Path de dicho cuadro de diálogo. El nuevo directorio se puede añadir al comienzo o final de la lista. El orden de la lista es muy importante, porque refleja el orden de la búsqueda: si una función está en dos directorios, se utilizará la que primero se encuentre. Desde la pantalla de comandos del MATLAB también se puede modificar el camino seguido por MATLAB en su búsqueda de la variables o función correspondiente. Así, el comando addpath permite añadir uno o más directorios al search path. Además se puede utilizar el comando rmpath (de remove path), al que se le pasan la lista de directorios a eliminar del search path. Por ejemplo, el comando: »rmpath 'c:\Matlab' 'c:\Temp' borra del search path los dos directorios indicados. Editor de ficheros y depurador de errores. En MATLAB aparecen los ficheros-M (o M-files); son ficheros de texto ASCII, con la extensión *.m, que contienen conjuntos de comandos o definición de funciones. Tras teclear el nombre de estos ficheros en la línea de comandos y pulsar Intro, se ejecutan todos los comandos contenidos en dicho fichero. MATLAB dispone de un editor propio que le permite crear y modificar estos ficheros, así como ejecutarlos paso a paso para ver si contienen errores (proceso de depuración). Este editor muestra con diferentes colores los diferentes tipos o elementos constitutivos de los comandos (en verde los comentarios, en rojo las cadenas de caracteres, etc.). Además supervisa que las comillas o paréntesis que se abren, no se queden sin el correspondiente elemento de cierre. Este editor/depurador es un programa enormemente útil para detectar y corregir errores, que hay que conocer muy bien. Para ello lo mejor es practicar. El espacio de trabajo en MATLAB.

Figura 1.3: Camino de busqueda de MATLAB 5.3.

Para anadir (o quitar) un directorio a esta lista se debe ejecutar el comando Add

to Path (o Remove Path) en el menu Path de dicho cuadro de dialogo. El nuevodirectorio se puede anadir al comienzo o final de la lista. El orden de la lista esmuy importante, porque refleja el orden de la busqueda: si una funcion esta en dosdirectorios, se utilizara la que primero se encuentre.

Desde la pantalla de comandos del MATLAB tambien se puede modificar el cami-no seguido por MATLAB en su busqueda de la variables o funcion correspondiente.Ası, el comando addpath permite anadir uno o mas directorios al search path .Ademas se puede utilizar el comando rmpath (de remove path), al que se le pasanla lista de directorios a eliminar del search path. Por ejemplo, el comando: ”rm-path ’c:\Matlab’ ’c:\Temp’ borra del search path los dos directorios indicados.

1.1.2 Editor de ficheros y depurador de errores.

En MATLAB aparecen los ficheros-M (o M-files); son ficheros de texto ASCII,con la extension *.m, que contienen conjuntos de comandos o definicion de

funciones. Tras teclear el nombre de estos ficheros en la lınea de comandos ypulsar Intro, se ejecutan todos los comandos contenidos en dicho fichero.

MATLAB dispone de un editor propio que le permite crear y modificar estosficheros, ası como ejecutarlos paso a paso para ver si contienen errores (proceso de

Page 16: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

6 Capıtulo 1. Introduccion al Matlab

depuracion). Este editor muestra con diferentes colores los diferentes tipos o ele-mentos constitutivos de los comandos (en verde los comentarios, en rojo las cadenasde caracteres, etc.). Ademas supervisa que las comillas o parentesis que se abren,no se queden sin el correspondiente elemento de cierre. Este editor/depurador es unprograma enormemente util para detectar y corregir errores, que hay que conocermuy bien. Para ello lo mejor es practicar.

1.1.3 El espacio de trabajo en MATLAB.

El espacio de trabajo de MATLAB es el conjunto de variables y de funcionesde usuario que, en un determinado momento, estan definidas en la memoria delprograma. Para obtener informacion sobre dicho espacio de trabajo se pueden utilizarlos comandos who y whos. El segundo proporciona una informacion mas detalladaque el primero ya que ademas de dar las variables del espacio de trabajo en esemomento dice el tamano de dichas variables. Se puede obtener de modo grafico unainformacion analoga con el Workspace Browser, que se activa con el comandoShow Workspace del menu File de MATLAB.

A modo de ejemplo, si se genera un conjunto de variables y se lanza dicha apli-cacion se tendrıa lo que muestra la Fig. 1.4.

Introducción al MatlabIntroducción al Matlab

7

El espacio de trabajo de MATLAB es el conjunto de variables y de funciones de usuario que, en un determinado momento, están definidas en la memoria del programa. Para obtener información sobre dicho espacio de trabajo se pueden utilizar los comandos who y whos. El segundo proporciona una información más detallada que el primero ya que además de dar las variables del espacio de trabajo en ese momento dice el tamaño de dichas variables. Se puede obtener de modo gráfico una información análoga con el Workspace Browser, que se activa con el comando Show Workspace del menú File de MATLAB. A modo de ejemplo, si se genera un conjunto de variables y se lanza dicha aplicación se tendría lo que muestra la siguiente figura:

Figura 4. Variables del espacio de trabajo de MATLAB.

Si se pulsa sobre cualquiera de estas variables, por ejemplo sobre x, se abre una ventana como la que muestra la siguiente figura:

Figura 5. Descripción de la variable x.

Figura 1.4: Variables del espacio de trabajo de MATLAB.

Si se pulsa sobre cualquiera de estas variables, por ejemplo sobre x, se abre unaventana como la que muestra la Fig. 1.5:

1.1.4 Control de los formatos de salida y de otras opciones de MAT-

LAB

Los formatos de salida en la ventana principal de MATLAB se pueden controlarfacilmente a partir del cuadro de dialogo que se abre con el comando Preferences

del menu File .

Page 17: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.1 Introduccion 7

Introducción al MatlabIntroducción al Matlab

7

El espacio de trabajo de MATLAB es el conjunto de variables y de funciones de usuario que, en un determinado momento, están definidas en la memoria del programa. Para obtener información sobre dicho espacio de trabajo se pueden utilizar los comandos who y whos. El segundo proporciona una información más detallada que el primero ya que además de dar las variables del espacio de trabajo en ese momento dice el tamaño de dichas variables. Se puede obtener de modo gráfico una información análoga con el Workspace Browser, que se activa con el comando Show Workspace del menú File de MATLAB. A modo de ejemplo, si se genera un conjunto de variables y se lanza dicha aplicación se tendría lo que muestra la siguiente figura:

Figura 4. Variables del espacio de trabajo de MATLAB.

Si se pulsa sobre cualquiera de estas variables, por ejemplo sobre x, se abre una ventana como la que muestra la siguiente figura:

Figura 5. Descripción de la variable x.

Figura 1.5: Descripcion de la variable x.

En esta figura aparecen los diferentes formatos numericos que puede tener MAT-LAB. Estos formatos son los que usa para mostrar los resultados (siempre calculacon la maxima precision). Los mas importantes son los siguientes:

• format short coma fija con 4 decimales .

• format long coma fija con 15 decimales.

• format hex cifras hexadecimales.

• format bank numeros con dos cifras decimales.

• format short e notacion cientıfica con 4 decimales.

• format short g notacion cientıfica o decimal, dependiendo del valor.

• format long e notacion cientıfica con 15 decimales.

• format loose introduce algunas lıneas en blanco en la salida .

• format compact elimina las lıneas en blanco citadas .

• format rat expresa los numeros racionales como cocientes de enteros

Comentar que estos formatos tambien se pueden activar desde la lınea de coman-dos.

Relacionado con los diferentes formatos numericos comentar que MATLAB aplicaun factor de escala general a las matrices cuando los elementos mas grandes, o

Page 18: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

8 Capıtulo 1. Introduccion al Matlab

Introducción al MatlabIntroducción al Matlab

8

Control de los formatos de salida y de otras opciones de MATLAB Los formatos de salida en la ventana principal de MATLAB se pueden controlar fácilmente a partir del cuadro de diálogo que se abre con el comando Preferences del menú File.

Figura 6. Menú de preferencias de MATLAB.

En esta figura aparecen los diferentes formatos numéricos que puede tener MATLAB. Estos formatos son los que usa para mostrar los resultados (siempre calcula con la máxima precisión). Los más importantes son los siguientes:

• format short coma fija con 4 decimales • format long coma fija con 15 decimales • format hex cifras hexadecimales • format bank números con dos cifras decimales • format short e notación científica con 4 decimales • format short g notación científica o decimal, dependiendo del valor • format long e notación científica con 15 decimales • format loose introduce algunas líneas en blanco en la salida • format compact elimina las líneas en blanco citadas • format rat expresa los números racionales como cocientes de

enteros comentar que estos formatos también se pueden activar desde la línea de comandos. Relacionado con los diferentes formatos numéricos comentar que MATLAB aplica un factor de escala general a las matrices cuando los elementos más grandes, o más pequeños, son superiores, o inferiores, a una determinada cantidad; además MATLAB trata de mantener el formato de los números que han sido definidos como enteros (sin punto decimal).

Figura 1.6: Menu de preferencias de MATLAB.

mas pequenos, son superiores, o inferiores, a una determinada cantidad; ademasMATLAB trata de mantener el formato de los numeros que han sido definidos comoenteros (sin punto decimal).

El cuadro de dialogo Command Window Font de la Figura 6 ofrece la posi-bilidad de elegir el tipo de letra –ası como el tamano y el color, tanto de las letrascomo del fondo– utilizada en la ventana de comandos de MATLAB. Es mejor utilizartipos de letra de tamano constante para que la salida se alinee bien en la pantalla.

1.2 Operaciones basicas

MATLAB es, fundamentalmente, un programa para calculo matricial. En else iran definiendo las matrices, los vectores y las expresiones que los combinan,obteniendose resultados bien parciales bien totales. Si estos resultados son asignadosa otras variables podran ser utilizados en otras expresiones. Antes de hacer calculoscomplicados se aprendera a introducir matrices y vectores desde el teclado. Masadelante se veran otras formas de definir matrices y vectores.

Al igual que en otros lenguajes de programacion en MATLAB las matrices yvectores son variables que tienen nombres. Se sugiere que se utilicen letrasmayusculas para matrices y minusculas para vectores y escalares, destacando queMATLAB no exige esto, pero puede resultar util de cara a distinguir dichos elemen-tos. Para definir una matriz no hace falta establecer de antemano su tamano (dehecho, se puede definir un tamano y cambiarlo posteriormente). MATLAB deter-mina el numero de filas y de columnas en funcion del numero de elementos que se

Page 19: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.2 Operaciones basicas 9

proporcionan (o se utilizan). Las matrices se definen por filas; los elementos de unamisma fila estan separados por espacios o comas las filas, sin embargo, estan sepa-radas por retornos de carro o por caracteres punto y coma (;). A modo de ejemplola siguiente instruccion define una matriz, A, de dimension 3x3.

>> A=[1 2 3; 4 5 6; 7 8 9]

La respuesta del programa es la siguiente:

A =

1 2 3

4 5 6

7 8 9

Destacar que en MATLAB se accede a los elementos de un vector poniendo elındice entre parentesis, por ejemplo x(3) o x(i). Los elementos de las matrices seacceden poniendo los dos ındices entre parentesis, separados por una coma, comopor ejemplo A(1, 2)o A(i, j).

Una vez que se ha definido la matriz A ya esta disponible formando parte delespacio de trabajo de MATLAB, para hacer cualquier tipo de operacion con ella. Ası,a modo de ejemplo, una sencilla operacion con A es hallar su matriz traspuesta .En MATLAB el apostrofe (’) es el sımbolo de trasposicion matricial.

>> A’

ans =

1 4 7

2 5 8

3 6 9

Como el resultado de la operacion no ha sido asignado a ninguna otra matriz,MATLAB

utiliza un nombre de variable por defecto (ans, de answer), que contiene elresultado de la ultima operacion. La variable ans puede ser utilizada como operandoen la siguiente expresion que se introduzca. Tambien podrıa haberse asignado elresultado a otra matriz llamada B:

>> B=A’

>> B =

1 4 7

2 5 8

3 6 9

Page 20: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

10 Capıtulo 1. Introduccion al Matlab

Ahora ya estan definidas las matrices A y B, y es posible seguir operando conellas. Por ejemplo, se puede hacer el producto B*A (debera resultar una matrizsimetrica):

>> B*A

ans =

66 78 90

78 93 108

90 108 126

MATLAB puede operar con matrices por medio de operadores y por medio defunciones. Los operadores matriciales de MATLAB son los siguientes:

+ adicion o suma– sustraccion o resta* multiplicacion’ traspuesta∧ potenciacion\division-izquierda/ division-derecha.* producto elemento a elemento./ y .\ division elemento a elemento.∧ elevar a una potencia elemento a elementoTodos estos operadores son coherentes con las correspondientes operaciones ma-

triciales; por ejemplo no se pueden sumar matrices que no sean del mismo tamano.Si los operadores no se usan de modo correcto se obtiene un mensaje de error. Losoperadores anteriores se pueden aplicar tambien de modo mixto, es decir con unoperando escalar y otro matricial. En este caso la operacion con el escalar se aplicaa cada uno de los elementos de la matriz. Considerese el siguiente ejemplo:

>> A=[1 2; 3 4]

>> A =

1 2

3 4

>> A*2

ans =

2 4

6 8

>> A-4

ans =

-3 -2

-1 0

Page 21: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.2 Operaciones basicas 11

1.2.1 Tipos de datos

Ya se ha comentado que MATLAB es un programa preparado para trabajar convectores y matrices. Como caso particular tambien trabaja con variables escalares.MATLAB, ademas, trabaja siempre con doble precision: guarda cada dato en 8bytes, con unas 15 cifras decimales exactas. Ya se vera mas adelante que tambienpuede trabajar con cadenas de caracteres (strings) y, desde la version 5.0, tambiencon otros tipos de datos: matrices de mas dos dimensiones, vectores y matrices deceldas, estructuras y clases y objetos.

MATLAB mantiene una forma especial para los numeros muy grandes (masgrandes que los que es capaz de representar), que son considerados como infinito.Por ejemplo, observese como responde el programa al ejecutar el siguiente comando:

>> 1.0/0.0

>> Warning: Divide by zero

ans =

Inf

Ası pues, para MATLAB el infinito se representa como inf o In f. MATLABtiene tambien una representacion especial para los resultados que no estan definidoscomo numeros. Por ejemplo, ejecutense los siguientes comandos y observense lasrespuestas obtenidas:

>> 0/0

>> Warning: Divide by zero

ans =

NaN

>> inf/inf

ans =

NaN

En ambos casos la respuesta es NaN , que es la abreviatura de Not a Num-

ber . Este tipo de respuesta es enormemente importante en MATLAB, pues permitecontrolar la fiabilidad de los resultados de los calculos matriciales. Los NaN sepropagan al realizar con ellos cualquier operacion aritmetica, en el sentido que, porejemplo, cualquier numero sumado a un NaN da otro NaN . MATLAB tiene estoen cuenta. Algo parecido sucede con los Inf .

MATLAB dispone de tres funciones utiles relacionadas con las operaciones decoma flotante. Estas funciones, que no tienen argumentos, son las siguientes:

Page 22: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

12 Capıtulo 1. Introduccion al Matlab

• eps devuelve la diferencia entre 1.0 y el numero de coma flotante inmediata-mente superior. Da una idea de la precision o numero de cifras almacenadas.En un PC, eps vale 2.2204e-016.

• realmin devuelve el numero mas pequeno con que se puede trabajar (2.2251e-308).

• realmax devuelve el numero mas grande con que se puede trabajar (1.7977e+308).

En muchos calculos matriciales los datos y/o los resultados no son reales sino com-plejos, con parte real y parte imaginaria. MATLAB trabaja sin ninguna dificultadcon numeros complejos. En la entrada de datos se pueden utilizar indistintamente lai y la j para representar la unidad imaginaria (cuando MATLAB devuelve los datossiempre aparece la i). Cuando i y j son variables utilizadas para otras finalidades,como unidad imaginaria puede utilizarse tambien la funcion sqrt(-1 ), o una variablea la que se haya asignado el resultado de esta funcion.

La asignacion de valores complejos a vectores y matrices desde teclado puedehacerse de las dos formas que se muestran en el ejemplo siguiente (conviene hacerantes clear i, para que i no este definida como variable. Este comando se estudiaramas adelante):

>> A = [1+2i 2+3i; -1+i 2-3i]

A =

1.0000 + 2.0000i 2.0000 + 3.0000i

-1.0000 + 1.0000i 2.0000 - 3.0000i

>> A = [1 2; -1 2] + [2 3; 1 -3]*i

A =

1.0000 + 2.0000i 2.0000 + 3.0000i

-1.0000 + 1.0000i 2.0000 - 3.0000i

Puede verse que es posible definir las partes reales e imaginarias por separado.En este caso sı es necesario utilizar el operador (*), segun se muestra en el ejemploanterior. MATLAB dispone asimismo de la funcion complex , que crea un numerocomplejo a partir de dos argumentos que representan la parte real e imaginaria.

Es importante advertir que el operador de matriz traspuesta (’), aplicado a ma-trices complejas, produce la matriz conjugada y traspuesta. Existe una funcionque permite hallar simplemente la matriz conjugada (conj) y el operador punto yapostrofe (.’) que calcula simplemente la matriz traspuesta.

MATLAB puede definir variables que contengan cadenas de caracteres. En MAT-LAB las cadenas de texto van entre apostrofos o comillas simples.

Page 23: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.2 Operaciones basicas 13

Ahora se va a tratar de generalizar un poco lo visto hasta ahora en cuanto aexpresiones matriciales. Una variable es un nombre que se da a una matriz, unvector o un escalar. El valor de esa variable, e incluso su tipo, puede cambiar alo largo de la ejecucion de un programa. Una expresion de MATLAB puede tenerlas dos formas siguientes: primero, asignando su resultado a una variable, variable

= expresion y segundo evaluando simplemente el resultado del siguiente modo,expresion , en cuyo caso el resultado se asigna automaticamente a una variableinterna de MATLAB llamada ans (de answer) que almacena el ultimo resultadoobtenido. Se considera por defecto que una expresion termina cuando se pulsa elretorno de carro. Si se desea que una expresion continue en la lınea siguiente, hayque introducir tres puntos (...) antes de pulsar dicho retorno de carro. Tambiense pueden incluir varias expresiones en una misma lınea separandolas por comas (,)o puntos y comas (;). Si una expresion termina en punto y coma (;) su resultado secalcula, pero no se escribe en pantalla.

A semejanza de C los nombres de variables deben empezar siempre por unaletra y pueden constar de hasta 31 letras y numeros. El caracter guion bajo ( ) seconsidera como una letra. A diferencia del lenguaje C, no hace falta declarar lasvariables que se vayan a utilizar. Esto hace que se deba tener especial cuidado conno utilizar nombres erroneos en las variables, porque no se recibira ningun aviso delordenador.

Cuando se quiere tener una relacion de las variables que se han utilizado enuna sesion de trabajo se utiliza el comando who. Existe otro comando, whos, queproporciona ademas informacion sobre tamano, cantidad de memoria ocupada y elcaracter de cada variable. Relacionado con estos dos comandos aparece el comandoclear que tiene varias formas posibles:

• clear sin argumentos; elimina todas las variables creadas previamente (exceptolas variables globales).

• clear A X Y, borra las variables indicadas (en este caso A, X e Y).

• clear global borra las variables globales.

• clear functions borra las funciones.

• clear all borra todas las variables, incluyendo las globales, y las funciones.

Existen en MATLAB varias funciones orientadas a definir con gran facilidadmatrices de tipos particulares. Algunas de estas funciones son las siguientes:

• eye(N) forma la matriz identidad de tamano NxN.

• zeros(M,N) forma una matriz de ceros de tamano MxN.

Page 24: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

14 Capıtulo 1. Introduccion al Matlab

• ones(M,N) forma una matriz de unos de tamano MxN.

• linspace(x1,x2,n) vector con n valores, igualmente espaciados, entre x1 y x2

• logspace(d1,d2,n) vector con n valores espaciados, logarıtmicamente, entre 10d1

y 10d2.

• rand(M,N) matriz de numeros aleatorios entre 0 y 1, con distribucion uniforme,de tamano MxN.

• randn(M,N) matriz MxN de numeros aleatorios con distribucion normal, devalor medio 0 y varianza 1.

Existen otras funciones para crear matrices de tipos particulares. Con Help/Help

Window se puede obtener informacion sobre todas las funciones disponibles enMATLAB, que aparecen agrupadas por directorios. En matlab\elmat aparecen lamayor parte de las funciones estudiadas en este apartado.

Un par de instrucciones muy utiles para trabajar con matrices son size y length.[m,n]=size(A) devuelve el numero de filas y de columnas de la matriz A por otraparte n=length(x) calcula el numero de elementos de un vector x.

A partir de unas determinadas matrices se pueden obtener otras derivadas de ellasmediante el uso de determinadas instrucciones. Ası, a modo de ejemplo, algunas deestas posibilidades serıan:

• zeros(size(A)) forma una matriz de ceros del mismo tamano que una matriz Apreviamente creada.

• ones(size(A)) lo mismo pero ahora aparecen unos.

• A=diag(x) forma una matriz diagonal A cuyos elementos diagonales son loselementos de un vector ya existente x.

• x=diag(A) operacion opuesta a la anterior; forma un vector x a partir de loselementos de la diagonal de una matriz ya existente A

• flipud(A) halla la matriz simetrica de A respecto de un eje horizontal.

• fliplr(A) halla la matriz simetrica de A respecto de un eje vertical.

• reshape(A,m,n) cambia el tamano de la matriz A devolviendo una matriz detamano mxn cuyas columnas se obtienen a partir de un vector formado por lascolumnas de A puestas una a continuacion de otra.

Page 25: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.2 Operaciones basicas 15

Existen muchas mas y, al igual que con ejemplos anteriores se sugiere al lectorque utilice el fichero de ayuda de MATLAB para ver todas las posibilidades que sele ofrecen.

Otras formas de definicion de matrices serıan los ficheros .m . MATLAB aceptaeste tipo de ficheros que contienen instrucciones y/o funciones. Dichos ficheros sellaman desde la lınea de comandos tecleando su nombre, sin la extension. Las varia-bles definidas dentro de un fichero de comandos *.m que se ejecuta desde la lınea decomandos son variables globales, esto es, pueden ser accedidas desde fuera de dichofichero; no sucede lo mismo si el fichero *.m corresponde a una funcion. Si un ficherode comandos se llama desde una funcion, las variables que se crean pertenecen alespacio de trabajo de dicha funcion, son locales.

Existe un operador muy importante en MATLAB por el uso tan extendido que sele da; este operador es el operador dos puntos (:). En cierta forma se podrıa decir queel operador (:) representa un rango. Ası, si se tiene x=1:2:10, el vector x contendrıalos enteros de 1 a 10 a incrementos de dos (en definitiva se tendrıan los impares).Por defecto el incremento es 1, pero este operador puede tambien utilizarse conotros valores enteros y reales, positivos o negativos. Puede verse que, por defecto,este operador produce vectores fila. Si se desea obtener un vector columna bastatrasponer el resultado.

El operador dos puntos (:) es muy util y potente con matrices. Recuerdese queMATLAB accede a los elementos de una matriz por medio de los ındices de fila yde columna encerrados entre parentesis y separados por una coma. Podemos usarel operador : para acceder a una determinada submatriz de una matriz. Ası porejemplo A(2,3:5) serıa el vector correspondiente a la segunda fila de la matriz peroconsiderando solamente las columnas 3,4 y 5. Los dos puntos aislados representan“todos los elementos”. Por ejemplo, el comando A(3,:) extrae todos los elementosde la 3a fila de la matriz A. Para acceder a la ultima fila o columna puede utilizarsela palabra end, en lugar del numero correspondiente.

Uno de los posibles problemas que se puede encontrar al trabajar con MATLABson la matriz vacıa. Para MATLAB una matriz definida sin ningun elemento entrelos corchetes es una matriz que existe, pero que esta vacıa, o lo que es lo mismo quetiene dimension cero. Las funciones exist() e isempty() permiten chequear si unavariable existe y si esta vacıa.

En cuanto a operadores en MATLAB comenzaremos por los relacionales; estosson:

< menor que

> mayor que

<= menor o igual que

Page 26: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

16 Capıtulo 1. Introduccion al Matlab

>= mayor o igual que

== igual que

∼= distinto que

En MATLAB los operadores relacionales pueden aplicarse a vectores y matrices,si una comparacion se cumple el resultado es 1 (verdadero), mientras que si no secumple es 0 (falso). Recıprocamente, cualquier valor distinto de cero, es consideradocomo verdadero y el cero equivale a falso. Hay que tener en cuenta que cuandolos operadores relacionales se aplican a dos matrices o vectores del mismo tamano,la comparacion se realiza elemento a elemento, y el resultado es otra matriz deunos y ceros del mismo tamano, que recoge el resultado de cada comparacion entreelementos.

En cuanto a los operadores logicos de MATLAB estos son los siguientes:

& and

| or

∼ negacion logica

Los operadores logicos se combinan con los relacionales para implementar condi-ciones multiples.

1.3 Funciones de Matlab

MATLAB tiene un gran numero de funciones incorporadas. Algunas son funcio-nes incorporadas en el propio programa. El codigo de estas funciones esta optimi-zado, siendo funciones particularmente rapidas y eficientes. Ademas podemos tenerfunciones definidas por el usuario.

En MATLAB una funcion tiene nombre, valor(es) de retorno y argumentos. Unafuncion se llama utilizando su nombre en una expresion o utilizandolo como uncomando mas. Las funciones se definen en ficheros de texto *.m. Una diferenciaimportante con otros lenguajes es que en MATLAB las funciones pueden tener valoresde retorno matriciales multiples. Ademas las funciones que no tienen argumentosde entrada no llevan parentesis, por lo que a simple vista no siempre son faciles dedistinguir de las simples variables. Los nombres de las funciones de MATLAB no sonpalabras reservadas del lenguaje; es posible crear una variable llamada con el mismonombre que una determinada funcion, lo que ocultara la funcion correspondiente.

A continuacion se enumeran los tipos de funciones mas importantes de MATLABclasificadas segun su finalidad:

Page 27: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.3 Funciones de Matlab 17

1.- Funciones matematicas elementales.2.- Funciones especiales.3.- Funciones matriciales elementales.4.- Funciones matriciales especıficas.5.- Funciones para la descomposicion y/o factorizacion de matrices.6.- Funciones para analisis estadıstico de datos.7.- Funciones para analisis de polinomios.8.- Funciones para integracion de ecuaciones diferenciales ordinarias.9.- Resolucion de ecuaciones no-lineales y optimizacion.10.- Integracion numerica.11.- Funciones para procesamiento de senal.A continuacion se enumeran algunas caracterısticas generales de las funciones de

MATLAB:

• Los argumentos usados al llamar la funcion pueden ser expresiones y tambienllamadas a otra funcion.

• MATLAB nunca modifica las variables que se pasan como argumentos. Si elusuario las modifica dentro de la funcion, se sacan copias modificandose dichascopias, no las variables originales.

• MATLAB admite valores de retorno matriciales multiples.

Las operaciones de suma y/o resta de una matriz con un escalar consisten ensumar y/o restar el escalar a todos los elementos de la matriz.

Destacar que en el Help Desk aparecen enlaces a “Matlab Functions by Sub-ject” y “Matlab Functions by Index”, en donde aparecen relaciones completas de lasfunciones disponibles en MATLAB.

En cuanto a funciones matematicas elementales que operan con escalares algunasde las mas importantes serıan las siguientes:

• sin(x) seno.

• cos(x) coseno.

• tan(x) tangente.

• asin(x) arco seno.

• acos(x) arco coseno.

• atan(x) arco tangente (devuelve un angulo entre -π/2 y +π/2).

• sinh(x) seno hiperbolico.

Page 28: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

18 Capıtulo 1. Introduccion al Matlab

• cosh(x) coseno hiperbolico.

• tanh(x) tangente hiperbolica.

• asinh(x) arco seno hiperbolico.

• acosh(x) arco coseno hiperbolico.

• atanh(x) arco tangente hiperbolica.

• log(x) logaritmo natural.

• log10(x) logaritmo decimal.

• exp(x) funcion exponencial.

• sqrt(x) raız cuadrada.

• sign(x) devuelve -1 si <0, 0 si =0 y 1 si >0. Aplicada a un numero comple-jo,devuelve un vector unitario en la misma direccion.

• rem(x,y) resto de la division (2 argumentos que no tienen que ser enteros).

• round(x) redondeo hacia el entero mas proximo.

• fix(x) redondea hacia el entero mas proximo a 0.

• real(x) parte real.

• imag(x) parte imaginaria.

• abs(x) valor absoluto.

• angle(x) fase.

Las anteriores funciones actuan sobre escalares y vectores/matrices. Existenotras funciones que actuan solamente sobre vectores y matrices:

• max(x) maximo elemento de un vector. Devuelve el valor maximo y la posicionque ocupa.

• min(x) mınimo elemento de un vector. Devuelve el valor mınimo y la posicionque ocupa.

• sum(x) suma de los elementos de un vector.

• cumsum(x) devuelve el vector suma acumulativa de los elementos de un vector.

• mean(x) valor medio de los elementos de un vector.

Page 29: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.3 Funciones de Matlab 19

• std(x) desviacion tıpica

• prod(x) producto de los elementos de un vector.

• cumprod(x) devuelve el vector producto acumulativo de los elementos de unvector.

• sort(x) ordenacion de menor a mayor de los elementos de un vector x.

En realidad estas funciones se pueden aplicar tambien a matrices, pero en ese casose aplican por separado a cada columna de la matriz, dando como valor de retornoun vector resultado de aplicar la funcion a cada columna de la matriz consideradacomo vector. Si estas funciones se quieren aplicar a las filas de la matriz basta aplicardichas funciones a la matriz traspuesta.

Las siguientes funciones se aplican solamente a matrices. En este grupo aparecenalgunas de las funciones mas utiles y potentes de MATLAB:

• B = A’ traspuesta (conjugada si es compleja) de la matriz A.

• B = A.’ traspuesta (sin conjugar) de la matriz A.

• v = poly(A) polinomio caracterıstico de la matriz cuadrada A.

• t = trace(A) suma de los elementos de la diagonal de una matriz cuadrada.

• [m,n] = size(A) numero de filas m y de columnas n.

• n = size(A) tamano de una matriz cuadrada A.

Existen una serie de instrucciones sobre calculo matricial que tiene una ampliautilizacion en el campo del procesado digital de senales, algunas de estas funcionesserıan las siguientes:

• B = inv(A) inversa de A.

• d = det(A) determinante d de la matriz A.

• E = rref(A) reduccion a forma de escalon

• [X,D] = eig(A) valores propios (diagonal de D) y vectores propios (columnasde X) de una matriz cuadrada A. Con frecuencia el resultado es complejo (siA no es simetrica).

• [X,D] = eig(A,B) valores propios (diagonal de D) y vectores propios (columnasde X) de dos matrices cuadradas A y B (Ax = lBx).

Page 30: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

20 Capıtulo 1. Introduccion al Matlab

• [Q,R] = qr() descomposicion QR de una matriz rectangular. Se utiliza parasistemas con mas ecuaciones que incognitas.

• Q = orth(A) las columnas de Q son una base ortonormal del espacio de co-lumnas de A. El numero de columnas de Q es el rango de A.

• [U,D, V ] = svd(A) descomposicion de valor singular de una matriz rectangular(A=U*D*V’). U y V son matrices ortonormales. D es diagonal y contiene losvalores singulares.

• B = pinv(A) calcula la pseudo-inversa de una matriz rectangular A

• r = rank(A) calcula el rango r de una matriz rectangular A

1.3.1 Calculo de normas de matrices.

• norm(A) norma sub-2, es decir, maximo valor singular de A, max(svd(A)).

• normest(A) aproximacion de la norma sub-2. Util para matrices grandes enlas que norm(A) necesita demasiado tiempo.

• norm(A,2) lo mismo que norm(A)

• norm(A,1) norma sub-1 de A, maxima suma de valores absolutos por columnas,es decir: max(sum(abs((A)))).

• norm(A,inf) maxima suma de valores absolutos por filas, es decir: max(sum(abs((A’))))

1.3.2 Calculo de normas de vectores.

• norm(x,p) norma sub-p, es decir sum(abs(x) p) (1/p).

• norm(x) norma euclıdea; equivale al modulo o norm(x,2).

• norm(x,inf) max(abs(x)).

• norm(x,1) norma sub-1, es decir sum(abs(x)).

Ademas MATLAB dispones de una serie de instrucciones para trabajar con lasmatrices, vectores, binarias que se obtienen tras la aplicacion de los operadoresrelacionales, algunas de estas instrucciones son:

• any(x) comprueba si alguno de los elementos del vector x cumple una determi-nada condicion (en este caso ser distinto de cero). Devuelve un uno o un cero.Si x es una matriz se aplica por separado a cada columna. El resultado es unvector de unos y ceros.

Page 31: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.4 Datos en Matlab 21

• all(x) funcion vectorial; comprueba si todos los elementos del vector x cumplenuna condicion. Devuelve un uno o un cero. Si x es una matriz se aplica porseparado a cada columna. El resultado es un vector de unos y ceros.

• find(x) busca ındices correspondientes a elementos de vectores que cumplenuna determinada condicion. El resultado es un vector con los ındices de loselementos que cumplen la condicion. Cuando esta funcion se aplica a unamatriz la considera como un vector con una columna detras de otra, de la 1a

a la ultima.

Relacionadas con estas existen otras funciones que comprueban otras condiciones:

• exist(var) comprueba si la variable var existe

• isnan() comprueba si hay valores NaN, devolviendo una matriz de unos y ceros.

• isinf() comprueba si hay valores Inf, devolviendo una matriz de unos y ceros.

• isfinite() comprueba si los valores son finitos.

• isempty() comprueba si un vector o matriz esta vacıo.

• ischar() comprueba si una variable es una cadena de caracteres.

• isglobal() comprueba si una variable es global.

• issparse() comprueba si una matriz tiene un gran numero de ceros.

1.4 Datos en Matlab

Hasta ahora solo se ha comentado el trabajo de MATLAB con escalares, vectoresy matrices. Veremos a continuacion que este programa puede trabajar con otrostipos de datos:

1. Conjuntos o cadenas de caracteres, fundamentales en cualquier lenguaje de pro-gramacion.

2. Hipermatrices, o matrices de mas de dos dimensiones.

3. Estructuras, o agrupaciones bajo un mismo nombre de datos de naturalezadiferente.

4. Vectores o matrices de celdas (cell arrays), que son vectores o matrices cuyoselementos pueden ser cualquier otro tipo de dato.

Page 32: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

22 Capıtulo 1. Introduccion al Matlab

Comenzaremos hablando de las cadenas de caracteres. Comentar para empezarque las funciones para cadenas de caracteres estan en el sub-directorio toolbox\matlab\strfundel directorio en que este instalado MATLAB.

Los caracteres de una cadena se almacenan en un vector, con un caracter porelemento. Las cadenas de caracteres van entre apostrofos o comillas simples, comopor ejemplo: ’cadena’. Si la cadena debe contener comillas, estas se representan porun doble caracter comilla, de modo que se pueden distinguir facilmente del principioy final de la cadena. Por ejemplo, para escribir la cadena ni ’idea’ se escribirıa ’ni’’idea”’. Una matriz de caracteres es una matriz cuyos elementos son caracteres, obien una matriz cuyas filas son cadenas de caracteres. Todas las filas de una matrizde caracteres deben tener el mismo numero de elementos. Si es preciso, las cadenas(filas) mas cortas se completan con blancos.

Las funciones mas importantes para manejo de cadenas de caracteres son lassiguientes:

• double(c) convierte en numeros ASCII cada caracter.

• char(v) convierte un vector de numeros v en una cadena de caracteres.

• char(c1,c2) crea una matriz de caracteres, completando con blancos las cadenasmas cortas.

• deblank(c) elimina los blancos al final de una cadena de caracteres.

• disp(c) imprime el texto contenido en la variable c

• ischar(c) detecta si una variable es una cadena de caracteres.

• isletter() detecta si un caracter es una letra del alfabeto. Si se le pasa un vectoro matriz de caracteres devuelve un vector o matriz de unos y ceros.

• isspace() detecta si un caracter es un espacio en blanco. Si se le pasa un vectoro matriz de caracteres devuelve un vector o matriz de unos y ceros.

• strcmp(c1,c2) comparacion de cadenas. Si las cadenas son iguales devuelveun uno, y si no lo son, devuelve un cero (funciona de modo diferente que lacorrespondiente funcion de C).

• strcmpi(c1,c2) igual que strcmp(c1,c2 ), pero ignorando la diferencia entremayusculas y minusculas.

• strncmp(c1,c2,n) compara los n primeros caracteres de dos cadenas c1==c2compara dos cadenas caracter a caracter. Devuelve un vector o matriz de unosy ceros.

Page 33: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.4 Datos en Matlab 23

• strmatch(cc,c) devuelve los ındices de todos los elementos de la matriz decaracteres (o vector de celdas) cc, que empiezan por la cadena c.

• strrep(c1,c2,c3) sustituye la cadena c2 por c3, cada vez que c2 es encontradaen c1.

• [p, r]=strtok(t) separa las palabras de una cadena de caracteres t. Devuelve laprimera palabra p y el resto de la cadena r.

• int2str(v) convierte un numero entero en cadena de caracteres.

• num2str(x,n) convierte un numero real x en su expresion por medio de unacadena de caracteres, con cuatro cifras decimales por defecto.

• str2double(str) convierte una cadena de caracteres representando un numeroreal en el numero real correspondiente.

• vc=cellstr(cc) convierte una matriz de caracteres cc en un vector de celdas vc,eliminando los blancos adicionales al final de cada cadena; la funcion char()realiza las conversiones opuestas.

• sprintf convierte valores numericos en cadenas de caracteres, de acuerdo conlas reglas y formatos de conversion del lenguaje C.

Pasemos a continuacion a comentar las hipermatrices, matrices de mas de dosdimensiones. Una aplicacion tıpica de estos elementos serıa almacenar con un uniconombre distintas matrices del mismo tamano (resulta una hipermatriz de 3 dimensio-nes). Destacar que los elementos de una hipermatriz pueden ser numeros, caracteres,estructuras, y vectores o matrices de celdas.

Las funciones para trabajar con estas hipermatrices estan en el sub-directoriotoolbox\matlab\datatypes. Respecto a las funciones vistas de MATLAB, se puedenestablecer las siguientes reglas para su aplicacion a hipermatrices:

1. Todas las funciones de MATLAB que operan sobre escalares (sin( ), cos( ), etc.)se aplican sobre hipermatrices elemento a elemento (igual que sobre vectoresy matrices). Las operaciones con escalares se aplican de la misma manera.

2. Las funciones que operan sobre vectores (sum( ), max( ), etc.) se aplican amatrices e hipermatrices segun la primera dimension, resultando un array deuna dimension inferior.

3. Las funciones matriciales propias del Algebra Lineal (det( ), inv( ), etc.) no sepueden aplicar a hipermatrices. Para poderlas aplicar hay que extraer primerolas matrices correspondientes.

Page 34: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

24 Capıtulo 1. Introduccion al Matlab

Las siguientes funciones de MATLAB se pueden emplear tambien con hiperma-trices:

• size() no de elementos en cada dimension.

• ndims() numero de dimensiones.

• squeeze() elimina las dimensiones que son igual a uno.

• reshape() distribuye el mismo numero de elementos en una matriz con distintaforma o con distintas dimensiones.

• permute(A,v) permuta las dimensiones de A segun los ındices del vector v

• ipermute(A,v) realiza la permutacion inversa

La funcion cat() permite concatenar matrices segun las distintas “dimensiones”,como puede verse en el siguiente ejemplo:

>> A=zeros(2,3); B=ones(2,3);

>>cat(1,A,B)

ans =

0 0 0

0 0 0

1 1 1

1 1 1

>> cat(2,A,B)

ans =

0 0 0 1 1 1

0 0 0 1 1 1

>> cat(3,A,B)

ans(:,:,1) =

0 0 0

0 0 0

ans(:,:,2) =

1 1 1

1 1 1

Page 35: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.4 Datos en Matlab 25

Pasemos ahora a los vectores de celdas; un vector (matriz o hipermatriz) deceldas es un vector (matriz o hipermatriz) cuyos elementos son, cada uno de ellos,una variable de tipo cualquiera. En un vector ordinario todos sus elementos sonnumeros o cadenas de caracteres. Sin embargo, en un vector, array, de celdas, elprimer elemento puede ser un numero; el segundo una matriz; el tercero una cadenade caracteres; el cuarto una estructura, etc.

Vesamos como se crean estos elementos mediante un sencillo ejemplo.

>> vc(1)=[1 2 3]

vc =

[1x3 double]

>> vc(2)=’mi nombre’

vc =

[1x3 double] ’mi nombre’

>> vc(3)=rand(3,3)

vc =

[1x3 double] ’mi nombre’ [3x3 double]

Se observa que el elemento clave para definir este array son los sımbolos. Esimportante que el nombre del vector de celdas no haya sido utilizado previamentepara otra variable (si ası fuera, se obtendrıa un error). Otra nomenclatura alternativay similar a la anterior serıa:

>> vb1=[1 2 3]

vb =

[1x3 double]

>> vb2=’mi nombre’

vb =

[1x3 double] ’mi nombre’

>> vb3=rand(3,3)

vb =

[1x3 double] ’mi nombre’ [3x3 double]

MATLAB dispone de funciones para trabajar con este tipo de datos:

• cell(m,n) crea un cell array vacıo de m filas y n columnas

• celldisp(ca) muestra el contenido de todas las celdas de ca

Page 36: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

26 Capıtulo 1. Introduccion al Matlab

• cellplot(ca) muestra una representacion grafica de las distintas celdas

• iscell(ca) indica si ca es un vector de celdas

• num2cell() convierte un array numerico en un cell array

• cell2struct() convierte un cell array en una estructura

• struct2cell() convierte una estructura en un cell array

Continuando con los tipos de datos de MATLAB pasaremos a describir las es-tructuras. Una estructura es una agrupacion de datos (campos) de tipo diferentebajo un mismo nombre. Una estructura es un nuevo tipo de dato, del que luego sepueden crear muchas variables. Por ejemplo, la estructura alumno puede contenerlos campos nombre (una cadena de caracteres) y carnet (un numero).

En MATLAB la estructura alumno se crea creando un objeto de dicha estructura.A diferencia de otros lenguajes de programacion, no hace falta definir previamenteel modelo de la estructura. Una posible forma de hacerlo es crear uno a uno losdistintos campos, como en el ejemplo siguiente:

>> alu.nombre=’Mikel’

alu =

nombre: ’Mikel’

>> alu.carnet=75482

alu =

nombre: ’Mikel’

carnet: 75482

>> alu

alu =

nombre: ’Mikel’

carnet: 75482.

Se accede a los miembros o campos de una estructura por medio del operadorpunto (.), que une el nombre de la estructura y el nombre del campo (por ejemplo:alu.nombre). Tambien puede crearse la estructura por medio de la funcion struct().Los nombres de los campos se pasan a la funcion struct() entre apostrofos (’), seguidosdel valor que se les quiere dar. Este valor puede ser la cadena vacıa (”) o la matrizvacıa ([ ]). Pueden crearse vectores y matrices (e hipermatrices) de estructuras. Porejemplo, la sentencia, alum(10) = struct(’nombre’, ’Inaki’, ’carnet’, 76589) crea unvector de 10 elementos cada uno de los cuales es una estructura tipo alumno. Solo

Page 37: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.4 Datos en Matlab 27

el elemento 10 del vector es inicializado con los argumentos de la funcion struct(); elresto de los campos se inicializan con una cadena vacıa o una matriz vacıa.

Algunas funciones de MATLAB para facilitar el uso de las estructuras son lassiguientes:

• fieldnames() devuelve un vector de celdas con cadenas de caracteres que recogenlos nombres de los campos de una estructura.

• isfield(ST,s) comprueba si la cadena s es un campo de una estructura ST

• isstruct(ST) comprueba si ST es o no una estructura.

• rmfield(ST,s) elimina el campo s de la estructura ST.

• getfield(ST,s) devuelve el valor del campo especificado. Si la estructura esun vector hay que pasarle los ındices como cell array (entre llaves ) comosegundo argumento.

• setfield(ST,s,v) devuelve el valor v al campo s de la estructura ST. Si la es-tructura es un vector, hay que pasarle los ındices como cell array (entre llaves) como segundo argumento.

MATLAB permite definir estructuras anidadas, es decir una estructura con cam-pos que sean otras estructuras. Para acceder a los campos de la estructura masinterna se utiliza dos veces el operador punto:

>>clase=struct(’curso’,’primero’,’grupo’,’A’, ...

’alum’, struct(’nombre’,’Juan’, ’edad’, 19))

>> clase =

curso: ’primero’

grupo: ’A’

alum: [1x1 struct]

>> clase.alum(2).nombre=’Marıa’;

>> clase.alum(2).edad=17;

>> clase.alum(2)

ans =

nombre: ’Marıa’

edad: 17

>> clase.alum(1)

ans =

Page 38: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

28 Capıtulo 1. Introduccion al Matlab

nombre: ’Juan’

edad: 19

La gran ventaja de las estructuras y los arrays de celdas es que proporcionan unagran flexibilidad para el almacenamiento de los mas diversos tipos de informacion.

1.5 Programacion de Matlab

MATLAB permite programar muy facilmente; de tal forma que, como lenguajede programacion, tiene tantas posibilidades como otros lenguajes. Ası, dispone desentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizaruna u otra operacion segun se cumpla o no una determinada condicion. Los buclespermiten repetir las mismas o analogas operaciones sobre datos distintos.

Comenzando por las bifurcaciones tenemos la instruccion basica if . En su formamas simple, la sentencia if se escribe en la forma siguiente:

if condicionsentenciasend

Existe tambien la bifurcacion multiple, en la que pueden concatenarse tantascondiciones como se desee:

if condicion1bloque1elseif condicion2bloque2elseif condicion3bloque3else (si no se cumplen las condiciones 1,2 y 3).bloque4end

Aquı la opcion por defecto else puede ser omitida: si no esta presente no se hacenada en caso de que no se cumpla ninguna de las condiciones que se han chequeado.

Destacar que la condicion del if puede ser una condicion matricial, del tipoA==B, donde A y B son matrices del mismo tamano. Para que se considere que lacondicion se cumple, es necesario que sean iguales dos a dos todos los elementos delas matrices A y B.

Page 39: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.5 Programacion de Matlab 29

Como se ha dicho, MATLAB dispone de funciones especiales para ayudar en elchequeo de condiciones matriciales. Por ejemplo, la funcion isequal(A, B) devuelveun uno si las dos matrices son identicas y un cero en caso de que difieran en algo.

La sentencia switch realiza una funcion analoga a un conjunto de if...elseif con-catenados. Su forma general es la siguiente:

switch switch expresioncase case expr1,bloque1case case expr2, case expr3, case expr4,...bloque2...otherwise, % opcion por defectobloque3end

Al principio se evalua la switch expresion, cuyo resultado debe ser un numeroescalar o una cadena de caracteres. Este resultado se compara con las case expr,y se ejecuta el bloque de sentencias que corresponda con ese resultado. Si ningunoes igual a switch expresion se ejecutan las sentencias correspondientes a otherwise.Segun puede verse en el ejemplo anterior, es posible agrupar varias condiciones; bastala igualdad con cualquier elemento del cell array para que se ejecute ese bloque desentencias. La “igualdad” debe entenderse en el sentido del operador de igualdad(==) para escalares y la funcion strcmp() para cadenas de caracteres).

En cuanto a los bucles, la sentencia for repite un conjunto de sentencias unnumero predeterminado de veces. La siguiente construccion ejecuta sentencias convalores de i de 1 a n, variando de uno en uno.

for i=1:n

sentencias

end

Podemos cambiar el incremento teniendo en cuenta el operador :,

Valor inicial:incremento: Valor final.

En el siguiente ejemplo se presenta una estructura correspondiente a dos buclesanidados. La variable j es la que varıa mas rapidamente (por cada valor de i, j tomatodos sus posibles valores):

Page 40: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

30 Capıtulo 1. Introduccion al Matlab

for i=1:m

for j=1:n

sentencias

end

end

Continuando con bucles llegamos a la estructura de bucle while. Su sintaxis esla siguiente:

while condicion

sentencias

end

Aquı condicion puede ser una expresion vectorial o matricial. Las sentencias sesiguen ejecutando mientras haya elementos distintos de cero en condicion, es decir,mientras haya algun o algunos elementos true. El bucle se termina cuando todoslos elementos de condicion son false (es decir, cero). Como complemento a estasinstrucciones esta la sentencia break que termina la ejecucion del bucle mas internode los que comprenden a dicha sentencia.

En cuanto a la introduccion de las variables existe una forma sencilla de leervariables desde teclado y escribir mensajes en la pantalla del PC. La funcion inputpermite imprimir un mensaje en la lınea de comandos de MATLAB y recuperarcomo valor de retorno un valor numerico o el resultado de una expresion tecleadapor el usuario. Despues de imprimir el mensaje, el programa espera que el usuarioteclee el valor numerico o la expresion. Como complemento a esta instruccion esta lafuncion disp que permite imprimir en pantalla un mensaje de texto o el valor de unamatriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectoresy/o matrices: las cadenas de caracteres son un caso particular de vectores.

Los ficheros con extension (.m) son ficheros de texto sin formato (ficheros ASCII)que constituyen el centro de la programacion en MATLAB. Ya se han utilizadoen varias ocasiones. Estos ficheros se crean y modifican con un editor de textoscualquiera. En el caso de MATLAB 5.3 ejecutado en un PC bajo Windows, lo massencillo es utilizar su propio editor de textos.

1.6 Ficheros *.m

Existen dos tipos de ficheros ∗.m: ficheros de comandos (llamados scripts eningles) y funciones. Los primeros contienen simplemente un conjunto de comandos

Page 41: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.6 Ficheros *.m 31

que se ejecutan sucesivamente cuando se teclea el nombre del fichero en la lınea decomandos de MATLAB. Un fichero de comandos puede llamar a otros ficheros decomandos. Las variables que crea un fichero de comandos llamado desde MATLABpertenecen al espacio de trabajo base de MATLAB y permanecen en el cuando setermina la ejecucion de dicho fichero.

Las funciones permiten definir funciones enteramente analogas a las de MAT-LAB, con su nombre, sus argumentos y sus valores de retorno. Los ficheros ∗.mquedefinen funciones permiten extender las posibilidades de MATLAB; de hecho existenbibliotecas de ficheros ∗.mque se venden (toolboxes) o se distribuyen gratuitamentela mayorıa a traves de Internet. Las funciones definidas en ficheros ∗.mse caracte-rizan porque la primera lınea (que no sea un comentario) comienza por la palabrafunction, seguida por los valores de retorno entre corchetes, [ ], y separados porcomas, si hay mas de uno, el signo igual (=) y el nombre de la funcion, seguido delos argumentos entre parentesis y separados por comas. Recuerdese que un fichero∗.mpuede llamar a otros ficheros ∗.m, e incluso puede llamarse a sı mismo de formarecursiva. Los ficheros de comandos se pueden llamar tambien desde funciones, encuyo caso las variables que se crean pertenecen a espacio de trabajo de la funcion.El espacio de trabajo de una funcion es independiente del espacio de trabajo basey del espacio de trabajo de las demas funciones. Esto implica por ejemplo que nopuede haber problemas por los nombres de las variables aunque varias funcionestengan una variable con el mismo nombre. En realidad son variables completamentedistintas. Para que la funcion tenga acceso a variables que no han sido pasadas comoargumentos es necesario declarar dichas variables como variables globales, tanto enel programa principal como en las distintas funciones que deben acceder a su valor.Las variables globales son visibles en todas las funciones (y en el espacio de trabajobase o general) que las declaran como tales. Dichas variables de declaran precedidaspor la palabra global y separadas por blancos. Estas variables solo son visibles enlos espacios de trabajo de las funciones que las declaran como tales (y en el propioespacio de trabajo base, si tambien ahı han sido declaradas como globales).

Una diferencia importante con C/C++/Java es que en MATLAB una funcionno modifica nunca los argumentos que recibe. Los resultados de una funcion deMATLAB se obtienen siempre a traves de los valores de retorno, que pueden sermultiples y matriciales. Si dentro de la funcion se realizan modificaciones sobrelos argumentos recibidos, antes se sacan copias de dichos argumentos a variableslocales y se modifican las copias. Dentro de la funcion, los valores de retorno debenser calculados en algun momento. De todas formas, no hace falta calcular siempretodos los posibles valores de retorno de la funcion, sino solo los que el usuario esperaobtener en la sentencia de llamada a la funcion. En cualquier funcion existen dosvariables definidas de modo automatico, llamadas nargin y nargout, que representan,respectivamente, el numero de argumentos y el numero de valores de retorno con los

Page 42: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

32 Capıtulo 1. Introduccion al Matlab

que la funcion ha sido llamada. Dentro de la funcion, estas variables pueden serutilizadas como el programador desee. Tanto el numero de argumentos como el devalores de retorno no tienen que ser fijos.

Desde la version 5.0, MATLAB dispone de una nueva forma de pasar a unafuncion un numero variable de argumentos por medio de la variable varargin, quees un vector de celdas que contienen tantos elementos como sean necesarios parapoder recoger, en dichos elementos, todos los argumentos que se hayan pasado enla llamada. No es necesario que varargin sea el unico argumento, pero sı debe serel ultimo, pues recoge todos los argumentos a partir de una determinada posicion.De forma analoga, una funcion puede tener un numero indeterminado de valores deretorno utilizando varargout, que es tambien un cell array que agrupa los ultimosvalores de retorno de la funcion. Puede haber otros valores de retorno, pero varargoutdebe ser el ultimo.

Un tipo interesante de variables son las persistentes que son variables locales delas funciones (pertenecen al espacio de trabajo de la funcion y solo son visibles endicho espacio de trabajo), y que conservan su valor entre distintas llamadas a lafuncion. Por defecto, las variables locales de una funcion se crean y destruyen cadavez que se ejecuta la funcion. Las variables persistentes se pueden definir en funcio-nes, pero no en ficheros de comandos. Las variables se declaran como persistentesutilizando la palabra persistent seguida de los nombres de las diferentes variablesseparados por blancos. Las variables persistent se inicializan a la matriz vacıa [ ] ypermanecen en memoria hasta que se hace clear de la funcion o cuando se modificael fichero-M. Para evitar que un fichero-M se modifique se puede utilizar el comandomlock file.m, que impide la modificacion del fichero. El comando munlock desblo-quea el fichero mientras que la funcion mislocked permite saber si esta bloqueado ono.

Destacar que a partir de la version 5.0 se han introducido las sub-funciones, queson funciones adicionales definidas en un mismo fichero *.m, con nombres diferentesdel nombre del fichero (y del nombre de la funcion principal) y que las sub-funcionessolo pueden ser llamadas por las funciones contenidas en ese fichero, resultando“invisibles” para otras funciones externas.

Otro tipo de funciones son las funciones privadas. Este tipo de funciones no sepueden llamar desde cualquier otra funcion, aunque se encuentren en el camino debusqueda o en el directorio actual. Solo ciertas funciones estan autorizadas a utilizar-las. Las funciones privadas se definen en sub-directorios que se llaman private y solopueden ser llamadas por funciones definidas en el directorio padre del sub-directorioprivate. En la busqueda de nombres que hace MATLAB cuando encuentra un nom-bre en una expresion, las funciones privadas se buscan inmediatamente despues delas sub-funciones, y antes que las funciones de tipo general.

Otra extension posible a las funciones es *.p. Las funciones *.p son funciones *.m

Page 43: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.6 Ficheros *.m 33

pre-compiladas con la funcion pcode. Por defecto el resultado de este comando es unfichero en el directorio actual (el fichero func.m puede estar en cualquier directoriodel camnio de busqueda). El comando pcode -inplace func.m crea el fichero func.pen el mismo directorio donde encuentra el fichero func.m. Pueden pasarse variosficheros *.m al comando pcode de una sola vez. Los ficheros *.p se ejecutan algomas rapidamente que los *.m y permiten ocultar el codigo de los ficheros ASCIIcorrespondientes a las funciones *.m de MATLAB.

Uno de los problemas frecuentes que un programador se encuentra es la falta deinformacion sobre funciones que el mismo creo. En este problema MATLAB ayudaal usuario ya que las funciones creadas por el usuario pueden tener su propia ayudade las misma forma que la tienen las funciones propias de MATLAB. Para ello lasprimeras lıenas de las funciones comienzan por el sımbolo % indicando al programaque lo que sigue son comentarios. De esta forma cuando en la pantalla de comandosde MATLAB se teclea help nombre func aparecen los comentarios que se han puestoal principio de nombre func. Ademas MATLAB permite a los usuarios tener unaayuda general para todas las funciones que estan en un determinado directorio. Paraello se crea en dicho directorio un fichero llamado contents.m. Para que este ficherode ayuda de directorios funcione correctamente hace falta que este en el camino debusqueda de MATLAB o que sea el directorio actual.

Hay varias formas de pasar datos de otras aplicaciones –por ejemplo de Excel– aMATLAB. Se pueden enumerar las siguientes:

• Copy y Paste para copiar datos de la aplicacion original y depositarlos entrelos corchetes de una matriz o vector, en una lınea de comandos de MATLAB.Tiene el inconveniente de que estos datos no se pueden editar.

• Se puede crear un fichero *.m con un editor de textos, con lo cual no existenproblemas de edicion.

• Es posible leer un flat file escrito con caracteres ASCII. Un flat file es unfichero con filas de longitud constante separadas con un retorno de carro, yvarios datos por fila separados por blancos. Estos ficheros pueden ser leıdosdesde MATLAB con el comando load.

• El comando textread permite leer datos de cualquier tipo de un fichero siempreque esten convenientemente separados.

• Usando las funciones fopen y fread.

De forma analoga, tambien los resultados de MATLAB se pueden exportar aotras aplicaciones como Word o Excel.

• Usando el comando diary para datos de pequeno tamano.

Page 44: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

34 Capıtulo 1. Introduccion al Matlab

• Utilizando el comando save con la opcion –ascii

• Utilizando las funciones de bajo nivel fopen, fwrite.

Mencion especial merece el trabajo con ficheros. MATLAB dispone de funcionesde lectura/escritura analogas a las del lenguaje C aunque con algunas diferencias.En general son versiones simplificadas –con menos opciones y posibilidades– que lascorrespondientes funciones de C. Comenzamos con las instrucciones para abrir (fo-pen) y cerrar ficheros (fclose), respectivamente. La funcion fopen tiene la formasiguiente:

[fid,texto] = fopen(’filename’,’c’)

Donde fid es un valor de retorno que sirve como identificador del fichero, textoes un mensaje para caso de que se produzca un error, y c es un caracter (o dos) queindica el tipo de operacion que se desea realizar. Las opciones mas importantes sonlas siguientes:

’r’ lectura (de read)’w’ escritura reemplazando (de write)’a’ escritura a continuacion (de append)’r+’ lectura y escritura

Cuando por alguna razon el fichero no puede ser abierto, se devuelve un (-1). Eneste caso el valor de retorno texto puede proporcionar informacion sobre el tipo deerror que se ha producido tambien existe una funcion llamada ferror que permiteobtener informacion sobre los errores. Despues de realizar las operaciones de lecturay escritura deseadas, el fichero se puede cerrar con la funcion close en la formasiguiente:

st = fclose(fi)

donde st es un valor de retorno para posibles condiciones de error. Si se quierencerrar a la vez todos los ficheros abiertos puede utilizarse el comando:

st = close(’all’)

Otra funcion importante para el manejo de ficheros es fscan. La forma generalde la funcion fscanf es la siguiente:

Page 45: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.6 Ficheros *.m 35

[var1,var2,...] = fscanf(fid,’cadena de control’,size)

Donde fi es el identificador del fichero (devuelto por la funcion fopen), y size esun argumento opcional que puede indicar el tamano del vector o matriz a leer. Lacadena de control va encerrada entre apostrofes simples, y contiene los especificado-res de formato para las variables:

%s para cadenas de caracteres%d para variables enteras%f para variables de punto flotante%lf para variables de doble precision

La funcion sscanf es similar a fscanf pero la entrada de caracteres no provienede un fichero sino de una cadena de caracteres.

Finalmente, la funcion fprintf dirige su salida formateada hacia el fichero indi-cado por el identificador. Su forma general es:

fprintf(fi,’cadena de control’,var1,var2,...)

La cadena de control contiene los formatos de escritura, que son similares a losde C. De forma analoga, la funcion sprintf convierte su resultado en una cadenade caracteres que devuelve como valor de retorno, en vez de enviarlo a un fichero.Vease un ejemplo:

resultado = sprintf(’El cuadrado de %f es %12.4f\n’,n,n*n)

Donde resultado es una cadena de caracteres. Esta funcion constituye el metodomas general de convertir numeros en cadenas de caracteres, por ejemplo para ponerloscomo tıtulos de figuras.

Las funciones fread y fwrite son analogas a fscanf y fprintf , pero en vezde leer o escribir en un fichero de texto (ASCII), lo hacen en un fichero binario, nolegible directamente por el usuario. Aunque dichos ficheros no se pueden leer y/omodificar con un editor de textos, tienen la ventaja de que las operaciones de lecturay escritura son mucho mas rapidas, eficientes y precisas (no se pierden decimales alescribir).

De ordinario los ficheros de disco se leen y escriben secuencialmente, es decir, deprincipio a final, sin volver nunca hacia atras ni realizar saltos. Sin embargo, a vecesinteresa acceder a un fichero de un modo arbitrario, sin ningun orden preestablecido.Esto se puede conseguir con las funciones ftell y fseek . En cada momento hay unaespecie de cursor que indica en que parte del fichero se esta posicionado. La funcion

Page 46: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

36 Capıtulo 1. Introduccion al Matlab

fseek permite mover este cursor hacia delante o hacia atras, respecto a la posicionactual (’cof’), respecto al principio (’bof’) o respecto al final del fichero (’eof’). Lafuncion ftell indica en que posicion esta el cursor. Si alguna vez se necesita utilizareste tipo de acceso a disco, se puede buscar mas informacion por medio del help.

1.7 Graficos en Matlab

Comenzaremos con los graficos 2-D que estan orientados a la representaciongrafica de vectores (y matrices). MATLAB dispone de cuatro funciones basicaspara crear graficos 2-D. Estas funciones se diferencian principalmente por el tipo deescala que utilizan en los ejes de abscisas y de ordenadas. Estas cuatro funcionesson las siguientes:

• plot() crea un grafico a partir de vectores y/o columnas de matrices, con escalaslineales sobre ambos ejes.

• loglog() lo mismo pero ahora con escala logarıtmica en ambos ejes.

• semilogx() ahora se tiene escala lineal en el eje de ordenadas y logarıtmica enel eje de abscisas.

• semilogy() escala lineal en el eje de abscisas y logarıtmica en el eje de ordenadas.

Existen ademas otras funciones orientadas a anadir tıtulos al grafico, a cadauno de los ejes, a dibujar una cuadrıcula auxiliar, a introducir texto, etc. Algunasfunciones destacadas son las siguientes:

• title(’tıtulo’) anade un tıtulo al dibujo.

• xlabel(’etiq’) anade una etiqueta al eje de abscisas. Con xlabel off desaparece.

• ylabel(’etiq’) anade una etiqueta al eje de ordenadas. Con ylabel off desaparece.

• text(x,y,’texto’) introduce ’texto’ en el lugar especificado por las coordenadasx e y.

• gtext(’texto’) introduce texto con ayuda del raton: el cursor cambia de formay se espera un clic para introducir el texto en esa posicion

• legend() define rotulos para las distintas lıneas o ejes utilizados en la figura.

• grid activa la inclusion de una cuadrıcula en el dibujo. Con grid off desaparecela cuadrıcula.

Page 47: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.7 Graficos en Matlab 37

La funcion plot es la funcion clave de todos los graficos 2-D en MATLAB. Yase ha dicho que el elemento basico de los graficos bidimensionales es el vector.Se utilizan tambien cadenas de 1, 2 o 3 caracteres para indicar colores y tipos delınea. La funcion plot( ), en sus diversas variantes, no hace otra cosa que dibujarvectores. Por defecto, los distintos puntos del grafico se unen con una lınea continua.Tambien por defecto, el color que se utiliza para la primera lınea es el azul. Cuandoa la funcion plot() se le pasa un unico vector –real– como argumento, dicha funciondibuja en ordenadas el valor de los n elementos del vector frente a los ındices 1, 2,... n del mismo en abscisas. Mas adelante se vera que si el vector es complejo, elfuncionamiento es bastante diferente.

Una segunda forma de utilizar la funcion plot() es con dos vectores como argu-mentos. En este caso los elementos del segundo vector se representan en ordenadasfrente a los valores del primero, que se representan en abscisas. Ademas la fun-cion plot() permite tambien dibujar multiples curvas introduciendo varias parejasde vectores como argumentos. En este caso, cada uno de los segundos vectores sedibujan en ordenadas como funcion de los valores del primer vector de la pareja, quese representan en abscisas.

Si se pasan a plot() varios vectores complejos como argumentos, MATLAB re-presenta las partes reales y desprecia las partes imaginarias. Sin embargo, un unicoargumento complejo hace que se represente la parte real en abscisas, frente a la parteimaginaria en ordenadas. Si se quieren dibujar varios vectores complejos, hay queseparar explıcitamente las partes reales e imaginarias de cada vector.

El comando plot puede utilizarse tambien con matrices como argumentos. Al-gunos ejemplos sencillos serıan (A es una matriz y x un vector):

• plot(A) dibuja una lınea por cada columna de A en ordenadas, frente al ındicede los elementos en abscisas.

• plot(x,A) dibuja las columnas (o filas) de A en ordenadas frente al vector x enabscisas. Las dimensiones de A y x deben ser coherentes: si la matriz A escuadrada se dibujan las columnas, pero si no lo es y la dimension de las filascoincide con la de x, se dibujan las filas.

• plot(A,x) analogo al anterior, pero dibujando las columnas (o filas) de A enabscisas, frente al valor de x en ordenadas.

• plot(A,B) dibuja las columnas de B en ordenadas frente a las columnas de Aen abscisas, dos a dos. Las dimensiones deben coincidir.

• plot(A,B,C,D) analogo al anterior para cada par de matrices. Las dimensionesde cada par deben coincidir, aunque pueden ser diferentes de las dimensionesde los demas pares

Page 48: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

38 Capıtulo 1. Introduccion al Matlab

El tipo de lınea y color del grafico se puede alterar usando la propia instruccionplot ya que los argumentos de esta funcion es una tripleta formada por dos vectoresy una cadena de 1, 2 o 3 caracteres que indica el color y tipo de lınea. En la siguientetabla se muestran las diferentes posibilidades que se tienen.

Introducción al MatlabIntroducción al Matlab

34

Cuando hay que dibujar varias líneas, por defecto se van cogiendo sucesivamente los colores de la tabla comenzando por el azul, hacia arriba, y cuando se terminan se vuelve a empezar otra vez por el azul. Si el fondo es blanco, este color no se utiliza para las líneas. Existe la posibilidad de añadir líneas a un gráfico ya existente, sin destruirlo o sin abrir una nueva ventana. Se utilizan para ello los comandos hold on y hold off. El primero de ellos hace que los gráficos sucesivos respeten los que ya se han dibujado en la figura (es posible que haya que modificar la escala de los ejes); el comando hold off deshace el efecto de hold on. Una ventana gráfica se puede dividir en m particiones horizontales y n verticales, con objeto de representar múltiples gráficos en ella. Cada una de estas subventanas tiene sus propios ejes. La forma general de este comando es subplot(m,n,i)donde m y n son el número de subdivisiones en filas y columnas, e i es la subdivisión donde se realiza la gráfica. Las subdivisiones se numeran consecutivamente empezando por las de la primera fila, siguiendo por las de la segunda, etc. Para modificar los ejes se utiliza la instrucción axis. Por defecto, MATLAB ajusta la escala de cada uno de los ejes de modo que varíe entre el mínimo y el máximo valor de los vectores a representar. Este es el llamado modo auto. Para definir de modo explícito los valores máximo y mínimo según cada eje, se utiliza el comando axis([xmin, xmax, ymin, ymax]), mientras que axis(’auto’) devuelve el escalado de los ejes al valor por defecto o automático. Otros posibles usos de este comando son los siguientes:

v=axis devuelve un vector v con los valores [xmin, xmax, ymin, ymax]

axis(axis) mantiene los ejes en sus actuales valores de cara a posibles nuevas gráficas añadidas con hold on. axis('ij') utiliza ejes de pantalla, con el origen en la esquina superior izda y el eje j en dirección vertical descendente.

Cuando hay que dibujar varias lıneas, por defecto se van cogiendo sucesivamentelos colores de la tabla comenzando por el azul, hacia arriba, y cuando se terminan sevuelve a empezar otra vez por el azul. Si el fondo es blanco, este color no se utilizapara las lıneas.

Existe la posibilidad de anadir lıneas a un grafico ya existente, sin destruirlo osin abrir una nueva ventana. Se utilizan para ello los comandos hold on y hold

off. El primero de ellos hace que los graficos sucesivos respeten los que ya se handibujado en la figura (es posible que haya que modificar la escala de los ejes); elcomando hold off deshace el efecto de hold on .

Una ventana grafica se puede dividir en m particiones horizontales y n verticales,con objeto de representar multiples graficos en ella. Cada una de estas subventanastiene sus propios ejes. La forma general de este comando es subplot(m,n,i)dondem y n son el numero de subdivisiones en filas y columnas, e i es la subdivision dondese realiza la grafica. Las subdivisiones se numeran consecutivamente empezando porlas de la primera fila, siguiendo por las de la segunda, etc.

Para modificar los ejes se utiliza la instruccion axis. Por defecto, MATLABajusta la escala de cada uno de los ejes de modo que varıe entre el mınimo y elmaximo valor de los vectores a representar. Este es el llamado modo auto. Paradefinir de modo explıcito los valores maximo y mınimo segun cada eje, se utiliza elcomando axis([xmin, xmax, ymin, ymax]), mientras que axis(’auto’) devuelveel escalado de los ejes al valor por defecto o automatico. Otros posibles usos de este

Page 49: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.7 Graficos en Matlab 39

comando son los siguientes:

• v=axis devuelve un vector con los valores [xmin, xmax, ymin, ymax]

• axis(axis) mantiene los ejes en sus actuales valores de cara a posibles nuevasgraficas anadidas con hold on.

• axis(’ij’) utiliza ejes de pantalla, con el origen en la esquina superior izda y eleje j en direccion vertical descendente.

• axis(’xy’) utiliza ejes cartesianos normales, con el origen en la esquina inferiorizda. y el eje y vertical ascendente.

• axis(’equal’) el escalado es igual en ambos ejes.

• axis(’square’) la ventana sera cuadrada.

• axis(’image’) la ventana tendra las proporciones de la imagen que se desea re-presentar en ella siendo el escalado de los ejes sera coherente con dicha imagen.

• axis(’normal’) elimina las restricciones introducidas por ’equal’ y ’square’.

• axis(’off’) elimina las etiquetas, los numeros y los ejes.

• axis(’on’) restituye las etiquetas, los numeros y los ejes.

Si se llama a la funcion figure sin argumentos, se crea una nueva ventana graficacon el numero que le corresponda. El comando figure(n) hace que la ventana n pasea ser la ventana activa. Si dicha ventana no existe, se crea una nueva ventana con elnumero que le corresponda. La funcion close cierra la figura activa, mientras queclose(n) cierra la ventana o figura numero n. El comando clf elimina el contenidode la figura activa, es decir, la deja abierta pero vacıa. La funcion gcf devuelve elnumero de la figura activa en ese momento.

Existen otras funciones graficas bidimensionales orientadas a generar otro tipode graficos distintos de los que produce la funcion plot() y sus analogas. Algunasde estas funciones son las siguientes:

• bar() crea diagramas de barras

• barh() diagramas de barras horizontales

• bar3() diagramas de barras con aspecto 3-D

• bar3h() diagramas de barras horizontales con aspecto 3-D

• pie() graficos con forma de “tarta”

Page 50: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

40 Capıtulo 1. Introduccion al Matlab

• pie3() graficos con forma de “tarta” y aspecto 3-D

• area() similar plot( ), pero rellenando en ordenadas de 0 a y

• stairs() funcion analoga a bar() sin lıneas internas

• errorbar() representa sobre una grafica valores de errores

• hist() dibuja histogramas de un vector

La funcion plot vista anteriormente dibuja vectores. Si se quiere dibujar unafuncion, antes de ser pasada a plot debe ser convertida en un vector de valores.La funcion fplot admite como argumento un nombre de funcion o un nombre defichero *.m en el cual este definida una funcion de usuario. La funcion puede serescalar (un unico resultado por cada valor de x) o vectorial. La forma general deesta funcion es la siguiente:

fplot(’funcion’, limites, ’cadena’, tol)

Siendo ’funcion’ el nombre de la funcion o del fichero *.m entre apostrofos (pa-sado como cadena de caracteres), limites un vector de 2 o 4 elementos que puedetomar los valores [xmin,xmax] o [xmin,xmax,ymin,ymax], ’cadena’ tiene el mismosignificado que en plot y permite controlar el color y el tipo de lınea y, por ultimo,tol es la tolerancia de error relativo. El valor por defecto es 2e-03. Esta funcionpuede utilizarse tambien en la forma:

[x,y]=fplot(’funcion’, limites, ’cadena’, tol)

y en este caso se devuelven los vectores x e y, pero no se dibuja nada. El graficopuede obtenerse con un comando posterior por medio de la funcion plot . Veaseun ejemplo de utilizcion de esta funcion. Se comienza creando un fichero llamadomifunc.m en el directorio G:\matlab que contenga las lıneas siguientes:

function y = mifunc(x)

y(:,1)=200*sin(x)./x;y(:,2)=x. 2;

y a continuacion se ejecuta el comando:

fplot(’mifunc(x)’, [-20 20], ’g’)

Page 51: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.7 Graficos en Matlab 41

Observese que la funcion mifunc devuelve una matriz con dos columnas, queconstituyen las dos graficas dibujadas. En este caso se ha utilizado para ellas el colorverde.

Podemos introducir datos en la pantalla grafica mediante el raton. Pa ello seutiliza la funcion ginput , que permite introducir las coordenadas del punto sobre elque esta el cursor al pulsar una tecla. Algunas formas de utilizar esta funcion sonlas siguientes:

• [x,y] = ginput lee un numero indefinido de puntos hasta que se terminapulsando la tecla intro.

• [x,y] = ginput(n) lee las coordenadas de n puntos.

• [x,y,bot] = ginput igual que el anterior, pero devuelve tambien un vector deenteros bot con el codigo ASCII de la tecla pulsada o el numero del boton delraton.

MATLAB tambien ofrece la posibilidad de hacer animaciones de graficos o pelıculas.Para ello se pueden utilizar las funciones: movie, moviein y getframe. Unapelıcula se compone de varias imagenes, denominadas frames. La funcion get-

frame devuelve un vector columna con la informacion necesaria para reproducir laimagen que se acaba de representar en la figura o ventana grafica activa, por ejemplocon la funcion plot . El tamano de este vector columna depende del tamano de laventana, pero no de la complejidad del dibujo. La funcion moviein(n) reserva me-moria para almacenar n frames. La siguiente lista de comandos crearıa una pelıculade 17 imagenes o frames, que se almacenaran como las columnas de la matriz M:

M = moviein(17);

x=[-2*pi:0.1:2*pi]’;

for j=1:17

y=sin(x+j*pi/8);

plot(x,y);

M(:,j) = getframe;

end;

Una vez creada la pelıcula se puede representar el numero de veces que se deseecon el comando movie. Por ejemplo, para representar 10 veces la pelıcula anterior, a15 imagenes por segundo, habrıa que ejecutar el comando siguiente (los dos ultimosparametros son opcionales):

movie(M,10,15)

Page 52: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

42 Capıtulo 1. Introduccion al Matlab

En cuanto a la impresion de las graficas realizadas en MATLAB, esta es muyfacil de llevar a cabo. El menu File de la pantalla grafica tiene una serie de opcionescon la impresion de figuras. Ası, es posible establecer los parametros de la pagina(Page Setup), de la impresora (Print Setup), obtener una vision preliminar (PrintPreview) e imprimir (Print). Por defecto, MATLAB produce salidas tipo postscript,pero, si no hay ninguna impresora postcript disponible, MATLAB puede trasformarla salida y convertirla al formato de la impresora disponible en ese momento. Laimpresion de una figura puede hacerse tambien desde la lınea de comandos usando elcomando print que tiene una gran numero de opciones, apareciendo estas utilizandoel comando help.

Ademas es posible tambien exportar a un fichero una figura de MATLAB, porejemplo para incluirla luego en un documento de Word o en una presentacion dePowerpoint. Para ello se utiliza el comando File/Export de la ventana en la queaparece la figura. El cuadro de dialogo que se abre ofrece distintos formatos graficospara guardar la imagen. La figura puede exportarse con cualquier formato estandary luego utilizar, por ejemplo, Paint Shop Pro para transformarla.

MATLAB tiene posibilidades de realizar varios tipos de graficos 3D. La primeraforma de grafico 3D es la funcion plot3 , que es el analogo tridimensional de la funcionplot . Esta funcion dibuja puntos cuyas coordenadas estan contenidas en 3 vectores,bien uniendolos mediante una lınea continua (defecto), bien mediante otra serie deelementos, markers. Su terminologıa serıa plot3(x,y,z,s) que dibuja una lınea queune los puntos (x(1), y(1), z(1)), (x(2), y(2), z(2)), etc. y la proyecta sobre un planopara poderla representar en la pantalla. Al igual que en el caso plano, incluye unacadena,s, de 1, 2 o 3 caracteres para determinar las caracterısticas de la lınea.

Tambien se pueden utilizar tres matrices X, Y y Z del mismo tamano; plot3(X,Y, Z) en cuyo caso se dibujan tantas lıneas como columnas tienen estas 3 matrices,cada una de las cuales esta definida por las 3 columnas homologas de dichas matrices.

Ahora se vera con detalle como se puede dibujar una funcion de dos variables(z=f(x,y)) sobre un dominio rectangular. Se pueden dibujar los elementos de unamatriz como funcion de los dos ındices. Sean x e y dos vectores que contienenlas coordenadas en una y otra direccion de la retıcula (grid) sobre la que se va adibujar la funcion. Despues hay que crear dos matrices X (cuyas filas son copias dex) e Y (cuyas columnas son copias de y). Estas matrices se crean con la funcionmeshgrid. Estas matrices representan, respectivamente, las coordenadas xe ydetodos los puntos de la retıcula. La matriz de valores Z se calcula a partir de lasmatrices de coordenadas X e Y. Finalmente hay que dibujar esta matriz Z con lafuncion mesh . A modo de ejemplo se muestra el dibujo de la funcion sin(r)/r

(siendo r =√

(x2 + y2):

close all

Page 53: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.7 Graficos en Matlab 43

u=0.1:0.1:10; v=u;

[U,V]=meshgrid(u,v);

R=sqrt(U.\ 2+V.\ 2);

W=sin(R)./R;

mesh(W)

Ejecutando este conjunto de instrucciones se obtiene la Fig. 1.7.

Introducción al MatlabIntroducción al Matlab

38

representan, respectivamente, las coordenadas x e y de todos los puntos de la retícula. La matriz de valores Z se calcula a partir de las matrices de coordenadas X e Y. Finalmente hay que dibujar esta matriz Z con la función mesh. A modo de ejemplo se muestra el dibujo de la función sen(r)/r (siendo r=sqrt(x^2 +y^2 ): close all u=0.1:0.1:10; v=u; [U,V]=meshgrid(u,v); R=sqrt(U.^2+V.^2); W=sin(R)./R; mesh(W) Ejecutando este conjunto de instrucciones se obtiene la siguiente figura:

Figura 6. Uso de la instrucción meshgrid.

Una forma distinta de representar funciones tridimensionales es por medio de isolíneas o curvas de nivel. Para ello se usa la instrucción contour y contour3 dependiendo de las distribución de las líneas de nivel (en un plano o en el espacio). En los dibujos realizados hasta ahora, se ha visto que el resultado adoptaba determinados colores, pero todavía no se ha explicado de dónde han salido. Ahora se verá qué sistema utiliza MATLAB para determinar los colores. Un mapa de colores se define como una matriz de tres columnas, cada una de las cuales contiene un valor entre 0 y 1, que representa la intensidad de uno de los colores fundamentales: R (red o rojo), G (green o verde) y B (blue o azul). La longitud por defecto de los mapas de colores de MATLAB es 64, es decir, cada mapa de color contiene 64 colores. Algunos mapas de colores están predefinidos en MATLAB. Buscando colormap en Help Desk se obtiene la lista de los mapas de colores, para visualizarlos se usa el comando colormap(nombre). Este comando actúa sobre la figura activa, cambiando sus colores. Si no hay ninguna figura activa, sustituye al mapa de color anterior para las siguientes figuras que se vayan a dibujar. Cuando se desea dibujar una figura con un determinado mapa de colores se establece un correspondencia entre los valores de la función y los colores del mapa de colores. Esto

Figura 1.7: Uso de la instruccion meshgrid.

Una forma distinta de representar funciones tridimensionales es por medio deisolıneas o curvas de nivel. Para ello se usa la instruccion contour y contour3

dependiendo de las distribucion de las lıneas de nivel (en un plano o en el espacio).En los dibujos realizados hasta ahora, se ha visto que el resultado adoptaba

determinados colores, pero todavıa no se ha explicado de donde han salido. Ahorase vera que sistema utiliza MATLAB para determinar los colores. Un mapa de coloresse define como una matriz de tres columnas, cada una de las cuales contiene un valorentre 0 y 1, que representa la intensidad de uno de los colores fundamentales: R (redo rojo), G (green o verde) y B (blue o azul). La longitud por defecto de los mapasde colores de MATLAB es 64, es decir, cada mapa de color contiene 64 colores.Algunos mapas de colores estan predefinidos en MATLAB. Buscando colormap

en Help Desk se obtiene la lista de los mapas de colores, para visualizarlos seusa el comando colormap(nombre). Este comando actua sobre la figura activa,cambiando sus colores. Si no hay ninguna figura activa, sustituye al mapa de coloranterior para las siguientes figuras que se vayan a dibujar.

Cuando se desea dibujar una figura con un determinado mapa de colores seestablece un correspondencia entre los valores de la funcion y los colores del mapa

Page 54: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

44 Capıtulo 1. Introduccion al Matlab

de colores. Esto hace que los valores pequenos se dibujen con los colores bajos delmapa, mientras que los valores grandes se dibujan con los colores altos. La funcionque representa la correspondencia color del grafico-valor de la funcion es la funcioncolorbar . La funcion caxis permite ajustar manualmente la escala de colores.Su forma general es: caxis([cmin, cmax]) donde cmin y cmax son los valoresnumericos a los que se desea ajustar el mınimo y el maximo valor de la escala decolores.

Relacionada con este punto se encuentra la funcion surf que tiene diversas po-sibilidades referentes a la forma en que son representadas las facetas o polıgonoscoloreados. Las tres posibilidades son las siguientes:

• shading flat determina sombreado con color constante para cada polıgono.Este sombreado se llama plano o flat.

• shading interp establece que el sombreado se calculara por interpolacionde colores entre los vertices de cada faceta. Se llama tambien sombreado deGouraud.

• shading faceted consiste en sombreado constante con lıneas negras super-puestas. Esta es la opcion por defecto.

Para obtener el efecto deseado, basta poner la sentencia shading a continuacionde la sentencia sur f. Destacar que las funciones mesh y surf disponen de unalgoritmo de eliminacion de lıneas ocultas (los polıgonos o facetas, no dejan ver laslıneas que estan detras). El comando hidden activa y desactiva la eliminacion delıneas ocultas.

Existen unas formas mas generales de las funciones mesh , surf y pcolor. Son lassiguientes (sepresentan principalmente con la funciones mesh y surf ). La funcionmesh(x, y, Z, C) dibuja una superficie cuyos puntos tienen como coordenadas(x(j), y(i), Z(i, j)) y como color C(i, j). Observese que x varıa con el ındice decolumnas e y con el de filas. Analogamente, la funcion: mesh(X, Y, Z, C) dibujauna superficie cuyos puntos tienen como coordenadas (X(i,j), Y(i,j), Z(i,j)) y comocolor C(i,j). Las cuatro matrices deben ser del mismo tamano.

La principal ventaja de usar esta aproximacion a la hora de representar funcionesconsiste en que admiten mas variedad en la forma de representar la cuadrıcula enel plano (x-y). La primera forma admite vectores x e y con puntos desigualmenteespaciados, y la segunda admite conjuntos de puntos muy generales, incluso losprocedentes de coordenadas cilındricas y esfericas.

Otras funciones para mejorar nuestos graficos 3-D serıan las siguientes:

• surfc Combinacion de surf , y contour en z=0

Page 55: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.8 Otras caracterısticas de Matlab 45

• meshz Es la instruccion mesh con plano de referencia en el valor mınimo yuna especie de “cortina” en los bordes del dominio de la funcion surfl paracontrolar la iluminacion determinando la posicion e intensidad de un foco deluz.

• light Crea un foco de luz en los ejes actuales capaz de actuar sobre superficies3-D. Se le deben pasar como argumentos el color, el estilo (luz local o en elinfinito) y la posicion.

Las funciones surf y mesh dibujan funciones tridimensionales en perspectiva.La localizacion del punto de vista o direccion de observacion se puede hacer mediantela funcion view , que tiene la siguiente forma:view(azimut, elev), donde azimut

es el angulo de rotacion de un plano horizontal, medido sobre el eje z a partir del ejex en sentido antihorario, y elev es el angulo de elevacion respecto al plano (x-y).Ambos angulos se miden en grados, y pueden tomar valores positivos y negativos(sus valores por defecto son -37.5 y 30). Tambien se puede definir la direccion delpunto de vista mediante las tres coordenadas cartesianas de un vector (solo se tieneen cuenta la direccion): view([xd,yd,zd])

En los graficos tridimensionales existen funciones para controlar los ejes, porejemplo: axis([xmin,xmax,ymin,ymax,zmin,zmax]) Tambien se pueden utilizarlas funciones siguientes: xlabe l, ylabe l, zlabe l, axis(’auto’ ), axis(axis), etc queya se comentaron en la seccion de graficos bidimensionales.

1.8 Otras caracterısticas de Matlab

En muchas ocasiones puede resultar interesante interrumpir el trabajo con MAT-LAB y poderlo recuperar mas tarde en el mismo punto en el que se dejo (con lasmismas variables definidas, con los mismos resultados intermedios, etc.). Hay quetener en cuenta que al salir del programa todo el contenido de la memoria se borraautomaticamente.

Para guardar el estado de una sesion de trabajo en el directorio actual existeel comando save. Si se teclea save antes de abandonar el programa, se crea unfichero binario llamado matlab.mat (o matlab) con el estado de la sesion (exceptolos graficos, que por ocupar mucha memoria hay que guardar aparte). Dicho estadopuede recuperarse la siguiente vez que se arranque el programa con el comando load.Esta es la forma mas basica de utilizacion de estos comandos. Se pueden guardartambien matrices y vectores de forma selectiva y en ficheros con nombre especificadopor el usuario. Por ejemplo, el comando save filename A, x, guarda las variablesA y x en un fichero binario llamado filename.mat Para recuperarlas en otra sesionbasta teclear load filename. Si no se indica ningun nombre de variable, se guardantodas las variables creadas en esa sesion.

Page 56: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

46 Capıtulo 1. Introduccion al Matlab

El comando save permite guardar el estado de la sesion en formato ASCIIutilizandolo de la siguiente forma:

• save -ascii % almacena 8 cifras decimales.

• save -ascii -double % almacena 16 cifras decimales.

• save -ascii -double -tab % almacena 16 cifras separadas por tabs aunqueen formato ASCII solo se guardan los valores.

Cuando se recuperan estos ficheros con load -ascii toda la informacion se guardaen una unica matriz con el nombre del fichero. Esto produce un error las filas tienenun numero desigual de elementos.

Con la opcion -append en el comando save la informacion se guarda a conti-nuacion de lo que hubiera en el fichero. Es posible tambien almacenar con el formatobinario de la version 4.* de MATLAB utilizando la opcion -v4 . El comando load

admite las opciones -ascii y -mat, para obligarle a leer en formato ASCII o binario,respectivamente.

Los comandos save y load crean ficheros binarios o ASCII con el estado dela sesion. Existe otra forma mas sencilla de almacenar en un fichero un texto quedescriba lo que el programa va haciendo (entradas y salidas utilizadas ası como loscomandos utilizados). Esto se hace con el comando diary en la forma siguientediary filename.txt.

Relacionada con la anterior se encuentran los comandos diary off que suspendela ejecucion de diary y diary on que la reanuda. El simple comando diary pasade on a off y viceversa. Para poder acceder al fichero filename.txt con el bloc denotas, notepad, es necesario que diary este en off.

Ademas de estar optimizado para trabajar con matrices y vectores MATLAB estaespecialmente preparado para trabajar con polinomios. Para MATLAB un polinomiose puede definir mediante un vector de coeficientes. Por ejemplo el polinomio x3 +2 ·x2− 1 se puede representar mediante el vector [1 2 0 -1]. Las funciones orientadasal calculo con polinomios son las siguientes:

• poly(A) polinomio caracterıstico de la matriz A.

• roots(pol) raıces del polinomio pol.

• polyval(pol,x) evaluacion del polinomio pol para el valor de x. Si x es unvector, pol se evalua para cada elemento de x.

• polyvalm(pol,A) evaluacion del polinomio pol de la matriz A.

• conv(p1,p2) producto de convolucion de dos polinomios p1 y p2.

Page 57: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.8 Otras caracterısticas de Matlab 47

• [c,r]=deconv(p,q) division del polinomio p por el polinomio q. En c sedevuelve el cociente y en r el resto de la division.

• residue(p1,p2) descompone el cociente entre p1 y p2 en suma de fraccionessimples.

• polyder(pol) calcula la derivada de un polinomio.

• polyder(p1,p2) calcula la derivada de producto de polinomios.

• polyfit(x,y,n) calcula los coeficientes de un polinomio p(x) de grado n quese ajusta a los datos p(x(i)) ∼= y(i) minimizando el error cuadratico mediocometido en el ajuste.

MATLAB es un programa especializado en calculo numerico y dispone de funcio-nes que permiten calcular el tiempo empleado en las operaciones realizadas. Algunasde estas funciones son las siguientes:

• cputime devuelve el tiempo de CPU (con precision de centesimas de segundo)desde que el programa arranco. Llamando antes y despues de realizar unaoperacion y restando los valores devueltos se puede saber el tiempo de CPUempleado en esa operacion.

• etime(t2, t1) tiempo transcurrido entre los vectores t1 y t2 obtenidos comorespuesta al comando clock .

• tic ops toc imprime el tiempo en segundos requerido por ops. El comandotic pone el reloj a cero y toc obtiene el tiempo transcurrido.

Otras funciones permiten calcular el numero de operaciones de coma flotanterealizadas: flops(0) que inicializa a cero el contador de numero de operacionesaritmeticas de punto flotante (flops); la instruccion flops devuelve el numero deflops realizados hasta ese momento.

Relacionado con esta estimacion de tiempo de calculo se encuentra profiler ,utilidad que permite saber que tiempo de calculo se ha gastado en cada lınea deuna funcion definida en un fichero *.m o en general de un programa de MATLAB.Permite asimismo determinar el numero de llamadas a dicha funcion, funciones quela han llamado, funciones llamadas por ella (child functions), etc. Esta utilidadmejora la calidad de los programas, pues permite detectar los “cuellos de botella”de una aplicacion y concentrar en ellos los esfuerzos para mejorar su eficiencia. Porejemplo, sabiendo el numero de veces que se llama a una funcion y el tiempo quecuesta cada llamada, se puede decidir si es mejor emplear mas memoria en guardarresultados intermedios para no tener que calcular varias veces lo mismo.

Page 58: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

48 Capıtulo 1. Introduccion al Matlab

Una forma de llamar al profiler podrıa ser la siguiente (se supone que estaslıneas forman parte de un fichero *.m):

profile on -detail operator;[T, Y] = ode113( ’RTDyn2m’, tspan, y0, myOptions);profile report;

Con la primera lınea se activa el profiler a la vez que se define el grado dedetalle que se desea. La segunda lınea es una llamada a la funcion ode113 que a suvez llama a muchas otras funciones y la tercera lınea detiene el profiler y le pideque genere un informe en HTML con los resultados calculados. Existen tres posiblesgrados de detalle respecto a la informacion que se le pide al profiler:

• mmex determina el tiempo utilizado por funciones y sub-funciones definidasen ficheros ∗.my *.mex. Esta es la opcion por defecto.

• builtin como el anterior pero incluyendo las funciones intrınsecas de MATLAB.

• operator como builtin pero incluyendo tambien el tiempo empleado por losoperadores tales como la suma + y el producto *.

Otros posibles comandos relacionados con el profiler de MATLAB son los siguien-tes:

• profile on activa el profiler poniendo a cero los contadores.

• profile on –detail level como el anterior, pero con el grado de detalle indicado.

• profile on –history activa el profiler guardando informacion sobre el orden delas llamadas.

• profile off desactiva el profiler sin poner a cero los contadores.

• profile resume vuelve a activar el profiler sin poner a cero los contadores.

• profile clear pone a cero los contadores.

• profile report detiene el profiler, genera paginas HTML con los resultados ylos muestra en un explorador e Internet.

• profile report basename genera un informe consistente en varios ficherosHTML en el directorio actual; los nombre de los ficheros estan basados en elnombre basename, que debe darse sin extension.

Page 59: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

1.8 Otras caracterısticas de Matlab 49

• profile plot detiene el profiler y representa, graficamente, los resultados en undiagrama de barras correspondientes a las funciones mas usadas

• profile status muestra una estructura conteniendo los datos del profile.

• stats = profile(‘info’) detiene el profiler y muestra una estructura con losresultados.

Destacar que esta utilidad solo se puede aplicar a funciones no a ficheros decomandos.

A traves de MATLAB podemos acceder al sistema operativo; ası estando enla ventana de comandos de MATLAB, se pueden ejecutar comandos de MS-DOSprecediendolos por el caracter (!) . Por ejemplo ! edit programa.m abrirıa el editorasociado al fichero programa.m. Si el comando va seguido por el caracter & elcomando se ejecuta en “background”, es decir, se recupera el control del programa sinesperar que el comando termine de ejecutarse. Ademas existe tambien la posibilidadde arrancar una aplicacion y dejarla iconizada. Esto se hace postponiendo el caracterbarra vertical isando el caracter |

Algunos comandos de MATLAB realizan la misma funcion que los comandosanalogos del sistema operativo MS-DOS, con lo que se puede evitar utilizar el ope-rador (!). Algunos de estos comandos son los siguientes:

• dir contenido del directorio actual.

• what ficheros *.m en el directorio actual.

• delete filename borra el fichero llamado filename.

• mkdir(nd) crea un sub-directorio con el nombre nd.

• copyfile(sc, dst) copia el fichero sc en el fichero dst.

• type file.txt imprime por la pantalla el contenido del fichero de texto file.txt

• cd cambiar de directorio activo.

• pwd muestra el camino del directorio actual.

• which func localiza una funcion llamada func.

• lookfor palabra busca palabra en las primeras lıneas de los ficheros ∗.m.

Finalizamos este rapido repaso a MATLAB con las funciones evalc, feval y

evalin . Estas funciones tienen mucho que ver con las cadenas de caracteres ya quenecesitan la flexibilidad de estas para alcanzar todas sus posibilidades.

Page 60: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

50 Capıtulo 1. Introduccion al Matlab

La funcion eva l(’cadena de caracteres’) hace que se evalue como expresion deMATLAB el texto contenido entre las comillas como argumento de la funcion. Es-te texto puede ser un comando, una formula matematica o, en general, cualquierexpresion valida de MATLAB. La funcion eval debe tener los valores de retornonecesarios para recoger los resultados de la expresion evaluada. Con esta instruccionse pueden definir macros. El siguiente ejemplo va creando variables llamadas A1,A2, ..., A10 utilizando la posibilidad de concatenar cadenas antes de pasarselascomo argumento a la funcion eval:

for n = 1:10

eval([’A’,num2str(n),’ = magic(n)’])

end

La funcion eval() se puede usar tambien en la forma eval(’tryString’, ’catchS-

tring’ ). En este caso se evalua la cadena ’tryString ’, y si se produce algun errorse evalua la cadena ’catchString ’.

La funcion T=evalc() es similar a eval() pero con la diferencia de que cualquiersalida que la expresion pasada como argumento hubiera enviado a la ventana decomandos de MATLAB es capturada y almacenada en una matriz de caracteres Tcuyas filas terminan con el caracter ’\n’.

Por su parte la funcion feval sirve para evaluar, dentro de una funcion, otrafuncion cuyo nombre esta contenido en una cadena de caracteres. Es posible queeste nombre se haya leıdo desde teclado o se haya recibido como argumento. Ala funcion feval hay que pasarle como argumentos tanto el nombre de la funcion aevaluar como sus argumentos. Por ejemplo, si dentro de una funcion se quiere evaluarla funcion calcular(A, b, c), donde el nombre calcular se envıa como argumentoen la cadena nombre, entonces feval(nombre, A, b, c) equivale a calcular(A,

b, c).Finalmente, la funcion evalin(ws, ’expresion’) evalua ’expresion’ en el espacio

de trabajo ws. Los dos posibles valores para ws son ’caller’ y ’base ’, que indicanel espacio de trabajo de la funcion que llama a evalin o el espacio de trabajo base.Los valores de retorno se pueden recoger del modo habitual.

Page 61: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Capıtulo 2

Introduccion a los Sistemas

Continuos de Control

ESTE primer tema se centra en los conceptos, tecnicas y metodos de diseno fun-damentales de la Teorıa de Control Continuo. La organizacion del tema es como

sigue. En primer lugar revisaremos los conceptos mas utiles de la Teorıa de Control,para pasar despues a analizar los modelos y sus respuestas. En la tercera parte deltema se estudian los principios de la realimentacion. El tema finaliza analizando losmetodos clasicos de diseno de controladores (mediante el Lugar de las Raıces y laRespuesta en Frecuencia).

2.1 Perspectiva historica y definiciones

Desde el punto de vista de la Teorıa de Control clasica podemos definir variosconceptos y evolucion temporal resenables:

• Sistemas Automaticos de Control. “Son dispositivos que acoplados a unproceso tratan de conseguir que alguna magnitud del mismo varıe en el trans-curso del tiempo de alguna forma impuesta voluntariamente de forma externa.”Ver Figs. 2.1 y 2.2.

• Realimentacion. Segun Nobert Wiener, “realimentacion es un metodo decontrolar un sistema, insertando en el los resultados del comportamiento ante-rior”

• Realimentacion (y II). Un elemento esencial de todos los mecanismos decontrol automatico es el principio de realimentacion, que permite al disenadordotar a una maquina de capacidad de autocorreccion. Un ciclo o bucle derealimentacion es un dispositivo mecanico, neumatico o electronico que detecta

Page 62: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

52 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Course Material

• Lecture notes: Robert Babuska. Fuzzy and Neural

Control.

• Overhead sheets.

• Software for Matlab/Simulink: demos and examples.

• Assignments.

Everything available at http://lcewww.et.tudelft.nl/ discfuzz

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 5

Prerequisites, Background Knowledge

•Mathematical analysis

• Linear algebra

• Control systems

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 6

Process

d

uProceso

y

y : variable a controlar (salida)

u : variable a manipular (entrada de control)

d : ruido (entrada no controlable)

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 7

Classical Control Design

DisturbancesGoal (reference)

Controller

Synthesis

Mathematicalmodel

Modeling

uProcess

y

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 8Figura 2.1: Idealizacion de proceso.

Course Material

• Lecture notes: Robert Babuska. Fuzzy and Neural

Control.

• Overhead sheets.

• Software for Matlab/Simulink: demos and examples.

• Assignments.

Everything available at http://lcewww.et.tudelft.nl/ discfuzz

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 5

Prerequisites, Background Knowledge

•Mathematical analysis

• Linear algebra

• Control systems

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 6

Process

d

uProcess

y

y : variable to be controlled (output)

u : manipulated variable (control input)

d : disturbance (input that cannot be influenced)

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 7

Classical Control Design

Señales de ruidoObjetivo (referencia)

Controlador

Síntesis

ModeloMatemático

Modelización

uProceso

y

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 8

Figura 2.2: Idealizacion del control de procesos.

una magnitud fısica como una temperatura, un tamano o una velocidad, lacompara con una norma preestablecida, y realiza aquella accion preprogramadanecesaria para mantener la cantidad medida dentro de los lımites de la normaaceptable.

El principio de realimentacion se utiliza desde hace varios siglos. Un notableejemplo es el regulador de bolas inventado en 1788 por el ingeniero escocesJames Watt para controlar la velocidad de la maquina de vapor. El conocidotermostato domestico es otro ejemplo de dispositivo de realimentacion. Enla fabricacion y en la produccion, los ciclos de realimentacion requieren ladeterminacion de lımites aceptables para que el proceso pueda efectuarse; queestas caracterısticas fısicas sean medidas y comparadas con el conjunto delımites, y que el sistema de realimentacion sea capaz de corregir el procesopara que los elementos medidos cumplan la norma. Mediante los dispositivosde realimentacion las maquinas pueden ponerse en marcha, pararse, acelerar,disminuir su velocidad, contar, inspeccionar, comprobar, comparar y medir.Estas operaciones suelen aplicarse a una amplia variedad de operaciones deproduccion, por ejemplo el fresado, el embotellado y el refinado.

• Servomecanismo En ingenierıa, dispositivo o conjunto de ellos que permitela automatizacion del control de un mecanismo o de una fuente de energıa.

Page 63: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.1 Perspectiva historica y definiciones 53

Los servomecanismos pueden ser mecanicos, electricos, hidraulicos y opticos.Su caracterıstica principal es que se activa por la llamada senal de error, queviene determinada por la diferencia entre la senal establecida como salida parauna determinada senal de entrada y la senal de salida real. Esta senal de errorse envıa a la entrada para compensar ese error, de forma que el mecanismose autorregula. Esta tecnica se llama realimentacion. La direccion de losautomoviles es un ejemplo de servomecanismo. La orientacion de las ruedasdelanteras se controla mediante el giro del volante. Cuando soltamos el volante,un servomecanismo, que en este caso es un sistema hidraulico y mecanico,obliga a las ruedas a volver a la posicion normal.

• A.I.E.E., American Institute of Electrical Engineers. “Sistema de con-trol en lazo cerrado es aquel que tiende a mantener una relacion prevista eimpuesta de forma externa (por nosotros) entre una variable del proceso, lasalida, y otra, la referencia, comparando funciones de estas variables y usandola diferencia como medio de control”.

• Routh, 1877. En este ano, Routh formula su criterio algebraico de estabilidadde un sistema. Es el punto de partida de la Teorıa Clasica de Control.

• Aplicaciones. Sus trabajos abren un campo enorme de aplicaciones. Bode,Nyquist y Black trabajan en la descripcion de amplificadores realimentadosmediante tecnicas de respuesta en frecuencia.

• Laplace y Fourier. La utilizacion de la representacion en el campo complejo,el uso del calculo operacional desarrollado en el S. XIX por Heaviside y de lasTransformadas de Laplace y Fourier originan una solida base para el ControlClasico.

• Black, 1932. Abre el camino mediante las representaciones graficas en elplano complejo.

• Nyquist, 1932. Enuncia el Criterio de Estabilidad, herramienta muy utilpara el estudio de la estabilidad de los sistemas realimentados.

• Ziegler y Nichols, 1942. Proponen formulas de ajuste de los reguladoresbasadas en la respuesta temporal.

• Evans, 1948. Presenta la Teorıa de las Raıces que es la base del diseno decompensadores mediante el Metodo del Lugar de las Raıces.

• Teorıa Moderna del Control. Con la aparicion de la “Tranformada Z” seextiende la Teorıa Clasica de Control al tratamiento digital de senales. La

Page 64: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

54 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Teorıa Moderna de Control se conoce tambien como la Teorıa de Control Dis-creto o de Control Digital.

• Operador Retardo, z−1. La definicion en el Plano-Z del retardo temporalhace evolucionar la Teorıa de Control al Analisis Temporal.

• Kalman, 1960. Resuelve el problema general de optimizacion tal y como seplantea en la Teorıa Moderna de Control.

• Situacion Actual. Los metodos de diseno segun la Teorıa de Control hantenido un notable exito en el campo aeronautico, pero su aplicacion al campoindustrial no tuvo la acogida esperada, como consecuencia de la dificultad dedisponer de modelos precisos de los sistemas a controlar.

Este problema, impulso en los 70 el desarrollo de metodos de identificacionde los parametros de un proceso y metodologıas para el diseno de sistemasmultivariantes, con un enfoque clasico similar al monovariable. En la ultimadecada se han desarrollado nuevas ramas del control, y de gran importanciapara la aplicacion industrial, como el Control Adaptativo, el Control Robusto,el Control Difuso o el Control Neuronal. En las Figs. ?? y ?? se muestranejemplos de esquemas de control neuronal y adaptativo, respectivamente.

Figura 2.3: Esquema de control mediante redes neuronales. Para controlar una planta mediante

un controlador se ajusta su actuacion mediante la senal de error que comete la planta.

El estudio de la combinacion estimacion/adaptacion, con los problemas deconvergencia que esto supone es un tema de actualidad resuelto en los casosde hipotesis mas restrictivas. En particular, se han acunado algunos terminosrelacionados con el Control que intentan identificar cada una de las parcelasen que se desenvuelve su estudio.

• Control Robusto. Trata de encontrar las condiciones que garanticen la es-tabilidad del bucle cerrado bajo perturbacioens genericas o incertidumbre delmodelo.

• Control Predictivo. Basados en la minimizacion de un ındice cuadraticoque pondera, entre otros, el conocimiento que se tiene sobre el comportamien-

Page 65: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.1 Perspectiva historica y definiciones 55

Figura 2.4: Esquema de control adaptativo. El regulador se va adaptando a partir de las salidas

que proporciona un estimador de la actuacion de la planta cuya actuacion se va controlando

mediante el mismo controlador. Se trata de un proceso adaptativo o iterativo.

to deseado del proceso en el futuro (horizonte de prediccion), con el fin decompensar el mismo con antelacion.

• Control Supervisado. Basado en la vigilancia de las condiciones que debencumplir los bucles adaptativos para su buen funcionamiento.

• Control Experto. Nace este termino en (Astrom, Anton y Arzen, 1986)donde se introducen tecnicas de I.A. y, mas concretamente, Sistemas Expertospara el control de procesos.

• Control Borroso. Podrıan considerarse integrados en el grupo anterior, pues-to que los mismos incorporan algun tipo de reglas de razonamiento atribuiblesa los Sistemas Expertos, si bien con el termino Control Borroso, se quiere des-tacar que el control surge de la elaboracion de la informacion suministradapor el proceso, pero desde la optica del operador experto mediante conceptosheurısticos y con la inevitable presencia de incertidumbre en su contenido. LaTeorıa de Conjuntos Borrosos es la base de estos controladores.

• Control Neuronal. Esta basado en otra tecnica de la I.A., las redes neuro-nales, y presentan grandes ventajas por tratarse de elementos de procesado nolineal en los que no es necesaria ninguna asuncion sobre las senales adquiridaso sobre el sistema a modelar.

• Teorıa General de Sistemas. Bertalanffy la define como “la disciplinaque trata sobre las propiedades generales y leyes de los Sistemas sometidos aacciones de control mediante un sistema basado en ordenador”. En ocasionesse habla de Informatica de Control.

• Cibernetica. Segun N. Wiener (1961) se trata de la ciencia dedicada al es-tudio de los metodos de comunicacion, control y autoorganizacion comunes a

Page 66: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

56 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

maquinas y organismos vivos”.

• Automatica. Se define como “la ciencia que estudia a los sistemas ciberneticosen los que ha sido introducido conscientemente algun elemento que realiza fun-ciones de control”.

• Senal. Se define como una “magnitud fısica que lleva una informacion”.

• Estacionariedad. Una serie temporal o secuencia de datos se denomina es-tacionaria cuando la media y la varianza se mantiene constante en el tiempo.

• Sistema. Se puede definir como un “elemento que transforma informacion’.

• Informatica. “Ciencia que estudia el tratamiento de la informacion”.

• Modelizacion en el Espacio de Estados. Los modelos de espacio de estadosson representaciones matriciales para series temporales univariantes y multi-variantes. Muchos modelos de series temporales se pueden escribir en formade “ecuaciones de estados”. Hay algunos metodos de prediccion que empleandirectamente estos modelos. Los calculos se realizan empleando EcuacionesRecursivas de Kalman o Filtros de Kalman por lo que se llaman tambien Mo-delos de Kalman.

• Filtro de Kalman. La ventaja fundamental de especificar un modelo en elespacio de estados es la utilizacion de diversos algoritmos para la estimacion desus parametros, obtencion de predicciones, etc. El nucleo de estos algoritmoses el filtro de Kalman. Con el se obtienen estimaciones optimas del vector deestado con la informacion disponible hasta ese momento.

• Identificacion. Etapa en la construccion del modelo de prediccion/regresiondonde se intenta elegir a traves de datos estadısticos el mejor modelo para unsistema.

2.1.1 Objetivos de los Sistemas de Control

Los principales objetivos de un sistema de control son:

• Estabilizar el sistema ante perturbaciones.

• Hacer que el sistema evoluciones en el tiempo con arreglo a unas determinadasespecificaciones.

• Conseguir el comportamiento dinamicos optimo con respecto a algun ındice decalidad.

Page 67: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.1 Perspectiva historica y definiciones 57

2.1.2 Clasificacion de los Sistemas de Control

Podemos dividir los sistemas atendiendo a:

• Ecuacion diferencial que lo define:

– Sistemas de parametros concentrados.

– Sistemas de parametros distribuidos.

– Sistemas lineales: invariante o variante temporal.

– Sistemas no lineales.

• Senales que maneja:

– Sistemas de entrada y salida unicas (SISO).

– Sistemas multivariable (MIMO).

– Sistemas de tiempo continuo.

– Sistemas de tiempo discreto.

– Sistemas de control determinista.

– Sistemas de control estocastico.

En la siguiente seccion analizamos en mayor profundidad los conceptos de sistemay modelo.

2.1.3 Sistemas y modelos

La creacion de modelos a partir de observaciones ası como el estudio de suspropiedades es, en definitiva, de lo que trata la ciencia. Los modelos (“hipotesis”,“leyes naturales”, “paradigmas”, etc.) pueden tener un caracter mas o menos for-mal, aunque siempre contendran una caracterıstica basica: trataran de enlazar lasobservaciones, generadas u obtenidas de algun sistema fısico, mediante un patronde comportamiento. La identificacion de sistemas trata de las tecnicas matematicasempleadas en la construccion de modelos de sistemas dinamicos basados en los datosque estos generan (Ljung, 1999). Veamos que son los sistemas dinamicos, como sepuede definir un modelo y la diferencia entre un modelo y un sistema.

Sistemas dinamicos

Un sistema se define como un objeto en el que variables de distintos tipos inte-raccionan entre sı para dar lugar a una o varias salidas, tambien llamadas senalesobservables. El sistema tambien se puede ver afectado por estımulos externos quepueden ser manipulados por el observador y que se llaman entradas. Otro tipo de

Page 68: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

58 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

senales son las denominadas perturbaciones, que pueden dividirse en aquellas queson medibles directamente y aquellas que solo pueden ser observadas a traves de suinfluencia sobre la salida y que son a menudo conocidas como ruido. La diferenciaentre las entradas y las perturbaciones medidas es, a menudo, de menor importanciapara el proceso de modelizacion de un sistema (Ljung, 1999) (ver Fig. 2.5).

w

v

y

u

w: radiación solar

v: viento, temperatura exterior

y: temperaturaalmacenadau: velocidad

del ventilador

(a)

(b)

Figura 2.5: (a) Representacion grafica de un sistema con una salida y, una entrada u, una

perturbacion medida w y una no mensurable v. (b) Ejemplo de sistema. Panel solar de una casa:

u entrada, I es la perturbacion medida, y es la salida, v son las perturbaciones no mensurables.

Se dice que un sistema es dinamico si su salida actual no solo depende de lasentradas o estımulos externos sino de sus valores anteriores. Las salidas de un siste-ma dinamico cuyos estımulos externos no son observables se denominan a menudoseries temporales. Las series temporales son la representacion matematica de unsistema fısico con caracter dinamico y, por tanto, su modelizacion, caracterizacion yprediccion ha captado el interes de la comunidad cientıfica. Ası, el escenario de laprediccion en series temporales se centra en estimar valores futuros a corto o medioplazo de una serie de sucesos a partir de los valores anteriores mediante alguna fun-cion que relacione dichos valores (Ungar, 1995). En cambio, se habla de modelizarcuando se trata de encontrar una descripcion a largo plazo del comportamiento delsistema y por tanto, se persigue un modelo que defina en todo momento el compor-tamiento del sistema que genero la serie temporal. Nos referimos a caracterizar unsistema cuando la tarea consiste en determinar las propiedades fundamentales delsistema como puede ser el caracter caotico de la serie o su componente autoregresiva.En todos los casos el interes esta en formular modelos matematicos que describan larealidad fısica.

Page 69: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.1 Perspectiva historica y definiciones 59

Modelos de sistemas

Una vez revisada la naturaleza de los sistemas dinamicos, veamos que es unmodelo, como se construyen y sus limitaciones.

Tipos de modelos y su uso

Cuando se interacciona con un sistema, se necesita contar con alguna idea sobrecomo sus variables se relacionan entre sı. Esa relacion que asumimos que existe,la llamaremos modelo de un sistema. Los modelos pueden especificarse de distin-tas maneras, formas, descripciones y con gran variedad de grados de formalismomatematico. Podemos definir distintos tipos de modelos:

• Modelos mentales. No implican ningun tipo de formalismo matematico. Porejemplo, el acto de aparcar un coche implica que gran cantidad de informacionsea almacenada, procesada y ponderada en el cerebro. Su adaptabilidad almedio hace que este modelo sea altamente complejo desde un punto de vistamatematico.

• Modelos graficos. Para determinados sistemas resulta apropiado describirsus propiedades mediante graficas y/o tablas. Los sistemas lineales, por ejem-plo, se pueden representar mediante su respuesta impusional o frecuencial (verFig. 2.6 y 2.7). Las caracterısticas no lineales de, por ejemplo, un diodo, hacenque el sistema pueda ser descrito eficientemente por un modelo grafico.

16 17 18 19 20 21 22 23 243.5

4

4.5

5

5.5

6

6.5Salida

16 17 18 19 20 21 22 23 24

3.5

4

4.5

5

5.5

6

6.5

7Entrada

Figura 2.6: Respuestas de entrada y salida de un determinado sistema.

• Modelos matematicos o analıticos. Para aplicaciones mas avanzadas pue-de resultar ventajoso la descripcion de los sistemas en forma de expresionesmatematicas que describan las relaciones entre sus variables. El uso de estetipo de modelos es tıpico en el campo de las matematicas, fısica e ingenierıa, ytienen la ventaja de poder ser trasladados a una representacion grafica senci-llamente. Se emplean para la simulacion y prediccion del comportamiento de

Page 70: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

60 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

0 2 4 6 8 10 12 14 16 18 20−0.06

−0.04

−0.02

0

0.02

0.04

0.06

0.08

0.1

0.12

0.14Estimación de la Respuesta Impulsional

lags

Figura 2.7: Respuesta impulsional de un sistema.

sistemas en areas como la economıa, ecologıa, medicina, farmacia o biologıa.

Los modelos matematicos se pueden caracterizar de distintas maneras (contınuoso discretos en el tiempo, en bloque o distribuidos, deterministas o estocasticos,lineales o no lineales, etc.) que simbolizan el tipo de relacion existente entre lasvariables. Una clasificacion general divide los modelos matematicos en duros yblandos o difusos, atendiendo a si se expresan con variables o valores numericoso linguısticos respectivamente.

Nuestro trabajo se centrara en los modelos matematicos, tambien conocidos comomodelos cuantitativos o empıricos.

Construccion de modelos

Basicamente, un modelo se debe construir a partir de la informacion disponiblesobre el problema, la tarea o sistema a modelar. El modelo mental de “aparcar uncoche” se debe desarrollar a partir de la experiencia en la conduccion. Los modelosgraficos se deben construir a partir de distintas medidas. Los modelos matematicos,los que nos ocupan, se pueden desarrollar mediante dos vıas (o una combinacion deellas):

• Modelizacion analıtica o fısica. Una forma consiste en dividir el siste-ma en varios subsistemas cuyas propiedades son bien conocidas a partir decierta experiencia previa. Este punto de vista no implica necesariamente unaexperimentacion en los sistemas actuales y depende en gran medida de la apli-cacion. Intentan determinar en primer lugar los fenomenos (fısicos) relevantesal problema y describir la interaccion de sus componentes (subsistemas). Lasegunda etapa se centra en una descripcion formal de las estructuras y compo-nentes dando como resultado un sistema fısico idealizado. La tercera etapa oanalisis del sistema se centra en la manipulacion del sistema, su analisis cuali-

Page 71: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 61

tativo y experimental (simulacion). Por ultimo, el modelo debe ser corregido,simplificado y validado con datos empıricos.

• Modelizacion experimental. El otro punto de vista se basa directamenteen la experimentacion. Las senales de entrada y salida del sistema son anali-zadas para inferir un determinado modelo. Esta vıa de actuacion se denominanormalmente identificacion de sistemas. Distinguimos dos tipos fundamentalesde modelos experimentales: los parametricos y los no parametricos. Se deno-minan modelos parametricos aquellos que hacen alguna asuncion acerca de ladistribucion estadıstica de las muestras observadas (por ejemplo, asumiendodistribucion Gaussiana) y el problema se reduce a estimar los parametros deesas distribuciones (medias y varianzas en el caso de Gaussianas). Los modelosno parametricos unicamente asumen la representatividad del conjunto originalde las muestras, lo cual es una premisa imprescindible en todo modelo. El pro-ceso de identificacion de un sistema, al igual que en la modelizacion fısica, debefinalizar con su validacion y revision mediante el contraste de sus estimacionescon datos ajenos a los de su construccion.

2.2 Modelos dinamicos y respuesta dinamica.

2.2.1 Principios basicos de la realimentacion

El objetivo del control retroalimentado es utilizar el principio de retroalimenta-cion para conseguir que la salida de un sistema dinamico, como el eje de un motorelectrico o el vector velocidad de un aeroplano, tomen los valores deseados a pesar defuerzas perturbadoras externas o cambios de parametros internos. La modelizacionde sistemas complejos es difıcil, de alto costo y lenta, especialmente si se incluyenpasos importantes de verificacion experimental (bucle de identificacion).

La metodologıa para tratar cualquier sistema consiste en:

• Obtener el modelo. La forma habitual es epecificarlo en forma de ecuacionesdinamicas (ecuaciones diferenciales ordinarias).

• Resolver el modelo. La resolucion resulta, sin embargo, difıcil ya que seobtienen sistemas de alto orden, variante temporales y en la mayorıa de loscasos reales con relaciones no lineales entre las variables.

A pesar de los problemas de los modelos reales, en control es importante mantenerel sistema en un punto de equilibrio y podemos considerar la respuesta del sistemaa senales pequenas en torno a este equilibrio. De aquı que podamos aproximar elcomportamiento no lineal por un modelo lineal para valores pequenos alrededor deeste punto de equilibrio (expansion en series de Taylor).

Page 72: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

62 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Revisemos algunos conceptos basicos sobre la dinamica de sistemas o “ecuacionesdel movimiento” mediante algunos ejemplos:

Figura 2.8: Sistema mecanico.

En la Tabla 2.2.1 mostramos la relacion de analogıas entre las variables fısicasası como algunas implementaciones de sistemas de control.

Tabla 2.1: Relacion de analogıas entre las variables fısicas ası como algunas implementaciones

de sistemas de control

Electrico Termico Hidraulico Desplazamiento Rotacion

Corriente Flujo de calor Flujo de fluido Fuerza ParVoltaje Temperatura Precision Velocidad Velocidad an-

gularResistencia Coeficiente de

transmisionResistencia Rozamiento Rozamiento

Inductancia — Inercia Muelle MuelleCapacidad Capacidad

termicaCompresion Masa Momento de

inercia

Page 73: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 63

Figura 2.9: Sistemas rotores o rotacionales. Satelite

2.2.2 Respuesta dinamica

Hemos visto que los modelos de componentes dinamicas se pueden controlarmediante una ecuacion diferencial ordinaria o un conjunto de estas. Ademas, cercadel equilibrio, las ecuaciones estan bien aproximadas como lineales e invariables enel tiempo.

Una vez obtenidas estas ecuaciones hay que encontrar sus soluciones y ademasanalizarlas de modo que no solo sea posible visualizar la respuesta dinamica si noque tambien sea posible modificar la respuesta del sistema hacia una direccion desea-da. Cabe saber que una solucion tendra unas determinadas caracterısticas: tiempode elevacion transitorio, exceso del valor final, duracion del transitorio, tiempo deestabilizacion, etc.

Para el estudio de la respuesta dinamica existen tres marcos o formatos:

• Plano s. La transformada de Laplace y el estudio de los polos–ceros pro-porciona las bases fundamentales para el estudio de los sistemas continuos decontrol.

• Respuesta en frecuencia. Se estudia la magnitud y fase de esta respuestaen funcion de la frecuencia.

• Espacio de Estados. Se trata de, a grandes rasgos, emplear pares de ecua-ciones recursivamente enlazadas: una para modelar la salida del sistema y otrapara modelar su evolucion. Se describe ası el comportamiento de una o massalidas del sistema en funcion de varias variables internas del mismo (variablesde estado), y de un conjunto de entradas a este. El comportamiento del sis-tema queda determinado recursivamente en dos fases a partir de las entradas:

Page 74: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

64 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.10: Sistemas rotores o rotacionales. Pendulo.

Figura 2.11: Sistemas rotores o rotacionales. Pendulo invertido.

en la primera fase las entradas determinan las variables de estado del sistemay en la segunda las variables de estado determinan su salida.

2.2.3 Transformada de Laplace

Este metodo operacional puede usarse para resolver ecuaciones diferenciales li-neales. Con su uso muchas funciones sinusoidales, sinusoidales amortiguadas y ex-ponenciales, se pueden convertir a funciones algebraicas de una variable complejas y reemplazar operaciones como la diferenciacion y la integracion por operacionesalgebraicas en el plano complejo.

Las bases de las tecnicas analıticas aplicadas a los sistemas lineales e invariablesen el tiempo (SLIT) son:

Page 75: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 65

Figura 2.12: Sistemas rotores o rotacionales. Avion.

Page 76: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

66 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.13: Sistemas electricos.

Page 77: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 67

Figura 2.14: Sistemas electro-mecanicos.

1. Superposicion. Respuesta de sistemas lineales.

2. Convolucion. La respuesta del sistema es la convolucion de la entrada con larespuesta a la entrada impulso.

La Transformada de cualquier funcion f(t) transformable de Laplace, se puedeobtener facilmente multiplicando f(t) por e−st e integrando el producto desde t = 0hasta t = ∞. Ası pues, la T. de Laplace la definimos como:

F (s) =∫ +∞

−∞f(t)e−stdt (2.1)

Aplicandolo a y(t) =∫ +∞−∞ u(t− τ)h(τ)dτ = u(t) ∗h(t), tendremos Y (s) = H(s) ·

U(s).

Ejemplos de Transformada de Laplace

• Funcion escalon. f(t) = u(1) = ∞(t)

F (s) =∫ +∞

0u(1)e−stdt =

∫ +∞

01e−stdt =

1s

(2.2)

• Funcion rampa. f(t) = tu(1) = t1(t)

F (s) =∫ +∞

0u(1)e−stdt =

∫ +∞

0te−stdt =

1s2

(2.3)

• Funcion impulso unitario. f(t) = δ(t)

F (s) =∫ +∞

0u(1)e−stdt =

∫ +∞

0δ(t)e−stdt =

∫ 0+

0−δ(t)dt = 1 (2.4)

Page 78: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

68 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.15: Sistemas Flujo de calor.

• Funcion exponencial decreciente. f(t) = e−αt

F (s) =∫ +∞

0u(1)e−stdt =

∫ +∞

0e−αte−stdt =

1s+ α

(2.5)

• Funcion sinusoidal. f(t) = sin(ωt)

F (s) =∫ +∞

0u(1)e−stdt =

∫ +∞

0sin(ωt)e−stdt = · · · = ω

s2 + ω2(2.6)

Propiedades de la Transformada de Laplace

Las principales propiedades de la Transformada de Laplace son las siguientes:

• Superposicion.

L[αf1(t) + βf2(t)] = αL[f1(t)] + βL[f2(t)] (2.7)

De esta propiedad se deriva esta otra, conocida por escalamiento:

L[αf(t)] = αL[f(t)] (2.8)

Page 79: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 69

Figura 2.16: Sistemas de compresion de fluidos.

• Retardo temporal.

L[αf(t)] = F (s) (2.9)

L[f(t− λ)] = e−λs · F (s), λ > 0, f(t) = 0, ∀t < 0 (2.10)

• Escalamiento temporal.

L[f(αt)] =1|α|

F(sa

)(2.11)

• Retardo en frecuencia.

L[e−αtf(t)] = F (s+ α) (2.12)

• Diferenciacion.

L

[d

dtf(t)

]= sF (s)− f(o−) (2.13)

• Integracion real.

L

[∫ t

of(τ)dτ

]=F (s)s

(2.14)

Page 80: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

70 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

• Convolucion.

L[f1(t) ∗ f2(t)] = F1(s)F2(s) (2.15)

• Integracion compleja.

L

[f(t)t

]=

∫ ∞

sF (s)ds (2.16)

• Derivacion compleja (multiplicacion temporal).

L[tf(t)] = − d

dsF (s) (2.17)

En la Tabla 2.17 se muestran algunas Transformadas de Laplace utiles.

f(t) L[ f(t) ]

1 (t)1s

1(t)1s2

t1

s+aeat

1(s+a)2

teat

a

s2+a2sin at

s

s2+a2cosat

s+a

(s+a)2+b2eat cosat

Figura 2.17: Algunas Transformadas estandar de Laplace.

Ejercicios propuestos

1. Considerando f1(t) = e−t y f2(t/5) = e−0.2t. Hallar las Transformadas deLaplace F1 y F2.

2. Sea el sistema en el plano s:

L[f(t)] = F (s) =1

s(s2 + s+ 1), (2.18)

Page 81: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 71

3. A partir de:

Y (s) =(s+ 2)(s+ 4)s(s+ 1)(s+ 3)

, (2.19)

encontrar y(t).

4. A partir de:

F (s) =(s+ 3)

(s+ 1)(s+ 2), (2.20)

encontrar f(t).

5. Encontrar la ganancia DC de:

G(s) =3(s+ 2)

s2 + 2s+ 10, (2.21)

6. Encontrar la solucion de la ecuacion diferencial:

y(t) + y(t) = 0; y(0) = α, y(0) = β. (2.22)

7. Encontrar la solucion de la ecuacion diferencial:

y(t) + 5y(t) + 4y(t) = u(t); y(0) = 0, y(0) = 0, u(t) = 2e−2t1(t) (2.23)

Transformada Inversa de Laplace (TIL)

El proceso matematico de pasar de la expresion en variable compleja a la defuncion temporal se denomina transformacion inversa. Notacion: L−1, L−1[F (s)] =f(t).

Matematicamente se hallan ası:

f(t) =1

2πj

∫ c+j∞

c−j∞F (s)estds, t > 0 (2.24)

Este proceso es complejo, por lo que usamos las tablas o en su defecto la expansionen fracciones simples para que, al escribir F(s) en terminos de funciones simples des, se pueden reconocer las transformadas inversas de Laplace. De hecho, en losproblemas de Teorıa de Control, F(s) tiene usualmente la forma:

F (s) =A(s)B(s)

= kΠm

i (s− zi)Πn

j (s− pj)=b0s

m + b1sm−1 + ...+ bm

sn + a1sn−1 + ...+ am(2.25)

En estos sistemas se cuenta con una condicion de realizabilidad fısica por la quese exige que m ≤ n.

Page 82: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

72 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Ejemplos sobre la Transformada Inversa de Laplace

Hallar la Transformada Inversa de Laplace de:

1. EJEMPLO 1.

F (s) =s3 + 5s2 + 9s+ 7

(s+ 1)(s+ 2), (2.26)

SOLUCION. Como el grado del numerador es mayor que el del denominador,podemos dividir los dos polinomios y, por tanto, obtenemos:

F (s) = s+ 2 +s+ 3

(s+ 1)(s+ 2). (2.27)

Consultando las tablas de transformadas, llegamos a la solucion:

f(t) =d

dtδ(t) + 2δ(t) + 2e−t − e−2t. (2.28)

2. EJEMPLO 2.

F (s) =2s+ 12

s2 + 2s+ 5, (2.29)

SOLUCION. Como la funcion F(s) incluye un par de polos complejos conju-gados (s2 + 2s + 5 = (s + 1 + 2j)(s + 1 − 2j)), es conveniente expandir F(s)en una suma de una funcion seno y coseno amortiguadas, y no en fraccionessimples. De este modo:

s2 + 2s+ 5 = (s+ 1)2 + 22 (2.30)

y teniendo en mente las propiedades siguientes:

L[sin(ωt)e−αt] =ω

(s+ α)2 + ω2(2.31)

L[cos(ωt)e−αt] =s+ α

(s+ α)2 + ω2, (2.32)

podemos decomponer la expresion de la siguiente forma:

F (s) =10 + 2(s+ 1)(s+ 1)2 + 22

= 52

(s+ 1)2 + 22+ 2

s+ 1(s+ 1)2 + 22

(2.33)

f(t) = L−1[F (s)] = ... = 5e−tsin(2t) + 2e−tcos(2t), t ≥ 0 (2.34)

Page 83: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 73

3. EJEMPLO 3.

F (s) =s2 + 2s+ 3

(s+ 1)3, (2.35)

SOLUCION. f(t) = (t2 + 1)e−t

Teoremas adicionales de la Transformada de Laplace

• Teorema del Valor Final.

limt→∞

y(t) = limt→∞

sY (s). (2.36)

• Teorema del Valor Inicial.

lims→∞

sF (s) = f(0+). (2.37)

Se propone resolver los siguientes ejercicios:

• EJEMPLO 1. Sea la funcion:

L[f(t)] = F (s) =1

s(s+ 1), (2.38)

calcular limt→∞ f(t)

• EJEMPLO 2. Sea el sistema:

Y (s) =3

s(s− 2), (2.39)

hallar el valor final de la senal correspondiente a Y(s).

SOLUCION: Si aplicamos el TVF, obtenemos un valor final de -3/2 pero estono es cierto ya que el teorema no se puede aplicar al tener un polo en elsemiplano derecho. Si obtenemos la expresion de la senal temporal, obtenemos:

y(t) =(−32

+32e2t

)1(t) →∞, (2.40)

• EJEMPLO 3. Encontrar el valor inicial de la senal que genera el sistema:

G(s) =3

s(s− 2)(2.41)

Por ultimo, ilustremos un sistema electro-mecanico real y como se especifica enmediante sus ecuaciones diferenciales y Transformada de Laplace. En la Fig. 2.18mostramos un ejemplo de sistema fısico mediante el analisis de un motor DC. En laFig. 2.19 mostramos las ecuaciones diferenciales que definen el sistema y su paso alplano s mediante la Transformada de Laplace.

Page 84: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

74 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

State-Space Models

Continuous time:

x(t) = f (x(t), u(t), dx(t))

y(t) = g(x(t), u(t), dy(t))

Discrete time:

x(k + 1) = f (x(k), u(k), dx(k))

y(k) = g(x(k), u(k), dy(k))

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 9

Input–Output Models

Continuous time:

y(n)(t) = f(y(n−1)(t), . . . , y(1)(t), y(t), u(n−1)(t), . . . , u(1)(t), u(t)

)

Discrete time:

y(k + 1) = f(y(k), y(k − 1), . . . , y(k − ny + 1), . . . ,

u(k), u(k − 1), . . . , u(k − nu + 1))

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 10

How to Obtain Models?

• physical (mechanistic) modeling

1. first principles→ differential equations (nonlinear)

2. linearization around an operating point

• system identification

1. measure input–output data (around an operating point)

2. postulate model structure (linear–nonlinear, order)

3. estimate model parameters from data (least squares)

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 11

Example: Physical Modeling of a DC Motor

V

T

J

R L

+

V = Kb ω

bω-

+

-

Ldi

dt+ Ri = V − Vb, Vb = Kω = K

dt, T = Ki

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 12

Figura 2.18: Motor DC.

DC Motor: Differential Equations

Ldi(t)dt +Ri(t) = V (t)−Kdθ(t)

dt parte eléctrica

Jd2θ(t)dt2

+ bdθ(t)dt = Ki(t) parte mecánica

Transf. Laplace ( ddt → s): función de transferencia

G(s) =θ(s)

V (s)=

K

s[(Ls + R)(Js + b) + K2]

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 13

Example: System Identification

y

Output data

t

Input data

u

t

yProcess

u

u(1), u(2), . . . , u(N ) y(1), y(2), . . . , y(N )

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 14

Example: System Identification

Given data set (u(k), y(k)) | k = 1, 2, . . . , N:

1. Postulate model structure, e.g.:

y(k + 1) = ay(k) + bu(k)

2. Form regression equations:

y(2) = ay(1) + bu(1)

y(3) = ay(2) + bu(2)...

y(N ) = ay(N−1) + bu(N−1)

in a matrix form: y = ϕ[a b]T

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 15

Example: System Identification

3. Solve the equations for [a b] (least-squares solution):

y = ϕ[a b]T

ϕTy = ϕTϕ[a b]T

[a b]T = [ϕTϕ]−1ϕTy

Numerically better methods are available

(in Matlab [a b] = ϕ \ y).

Robert Babuska Control Engineering Laboratory, ITS, TU Delft 16

Figura 2.19: Ecuaciones diferenciales y Transformada de Laplace (funcion de transferencia) del

Sistema del Motor DC.

2.2.4 Especificaciones en el dominio del tiempo y Transformada de

Laplace

Mediante la T. Laplace se pueden describir sistemas de forma muy eficiente yanalizar sus respuestas y caracterısticas de manera sencilla. Cabe, sin embargoanalizar los conceptos e interrelaciones de estabilidad, polos y ceros de un sistema.Estos los ilustramos con un ejemplo; si consideramos el sistema:

F (s) =2s+ 1

s2 + 3s+ 2). (2.42)

Los ceros de una funcion de transferencia son las raıces del numerador, mientrasque los polos son las raıces del denominador. En nuestro caso, por tanto, el cero se

Page 85: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 75

encuentra en -1/2 y los polos en -1 y -2. En la Figura ?? se muestra la notacion(aspas para los polos y cırculos para los ceros), posicion y expresion en diferencias.

x x o

H(s) =1

s + 1+

3

s + 2; h(t) = et + e2t

La respuesta del sistema puede ser definida mediante la inspeccion de la posicionde los polos y ceros. Para que el sistema sea estable, los polos deben estar en elsemiplano izquierdo (LHP, “Left-Half of the s-Plane”). El control de un sistema sinestabilidad se logra manipulando la posicion de los polos y ceros mediante la adicionde otros tipos de sistemas llamados reguladores o compensadores para, de este modo,conseguir unas determinadas especificaciones.

2.2.5 Sistemas de primer orden, parametros caracterısticos

Los sistemas de primer orden tienen como ecuacion diferencial caracterıstica lasiguiente:

T y(t) + y(t) = Ay(t), y(0) = 0, y(0) = 0, (2.43)

donde hemos supuesto unas determinadas condiciones iniciales que no tienen porquecumplirse siempre.

Si aplicamos la transformada de Laplace, obtenemos:

TsY (s) + Y (s) = AU(s) → H(s) =Y (s)U(s)

=A

1 + Ts, (2.44)

siendo T una constante de tiempo.Veamos la respuesta de este tipo de sistemas ante distintas entradas:

• Impulso unitario:

U(s) = 1 → Y (s) =A

1 + Ts→ y(t) = L−1[Y (s)] =

A

Te−t/T , t > 0 (2.45)

Page 86: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

76 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Por tanto se trata de una caıda exponencial donde T simboliza el tiempo quetarda en reducirse la salida en e−1 = 0.368 de su valor inicial. Si T > 0 tenemosun polo p1 = −1/T < 0, por lo que y(t) es decreciente y el sistema es estable.

• Entrada rampa unitaria:

Como la T. Laplace de la funcion rampa unitaria es 1/s2, la salida del sistemaes:

Y (s) =A

1 + Ts

1s2

(2.46)

Al expandir Y(s) en fracciones simples se obtiene:

Y (s) =1s2− T

s+

T 2

1 + sT, (2.47)

que tomando la TIL obtenemos:

y(t) = t− T + Te−t/T (2.48)

La respuesta del sistema sera graficamente el mostrado en la Fig. 2.20.

0 0.5 1 1.5 2 2.5 3 3.5 40

0.5

1

1.5

2

2.5

3

3.5

4

t

y(t)

Figura 2.20: Respuesta de un sistema de primer orden a la entrada rampa unitaria.

T = 0.5 representa el error en estado estacionario, esto es, el error al seguir laentrada es igual a T para un t sufiecientemente grande. Cuanto menor sea laconstante de tiempo T, menor sera el error en estado estacionario al seguir laentrada rampa.

• Entrada funcion escalon:

En este caso tendremos:

Page 87: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 77

u(t) = 1(t) → U(s))1/s→ Y (s) = G(s)U(s) =A

1 + Ts

1s, (2.49)

La respuesta temporal sera la siguiente:

y(t) = L−1 A

1 + Ts

1s = A(1− e−t/T ) (2.50)

Si suponemos que las condiciones inciales no son nulas, sino que y(0) = b,podemos calcular los valores en regimen estacionario y transitorio:

– Estacionario: yss = limt→∞ y(t) = A

– Transitorio: yt = (b−A)e−t/T

La respuesta del sistema sera graficamente el mostrado en la Fig. 2.21.

0 0.5 1 1.5 2 2.5

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

t

y(t)

Figura 2.21: Respuesta de un sistema de primer orden a la entrada escalon.

La constante de tiempo T sera el parametro caracterıstico. Cuanto mas pe-queno sea T, mas rapida sera la respuesta del sistema. Para t > 4T la respuestase mantiene dentro del 2% del valor final. El estado estacionario solo se alcanzaen un tiempo infinito.

La respuesta transitoria de un sistema de primer orden puede describirse enterminos de la localizacion del polo de la funcion de transferencia (-1/T), represen-tando la respuesta ante entrada escalon (ver Fig. 2.22).

2.2.6 Sistemas de segundo orden, respuesta impulsional/escalon, ...

Los sistemas de segundo orden tienen la siguiente ecuacion diferencial asociada:

Page 88: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

78 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

0

1

0

1

0

1

0

1

jw

s

Figura 2.22: Respuesta impulsional en funcion de la posicion de los polos en un sistema de primer

orden.

2∑i=0

aidiy(t)dti

=m∑

j=0

bjdju(t)dtj

, m ≥ 2 (2.51)

Si desarrollamos la funcion de transferencia G(s) = N(s)/D(s), obtenemos elsistema siguiente:

G(s) =w2

n

s2 + 2ξwns+ w2n

, (2.52)

donde ξ es la relacion de amortiguamiento y wn es la frecuencia natural. Estaexpresion se corresponde al sistema con realimentacion unitaria mostrado en la Fig.2.23:

u(t) y(t)

-+

Figura 2.23: Sistema de segundo orden como bloque con realimentacion unitaria.

En la Fig. 2.24 se muestran ejemplos de la respuesta en funcion de los distintospolos.

Page 89: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 79

Figura 2.24: Respuesta de un sistema de segundo orden en funcion de la posicion de los polos.

El denominador del sistema se denomina ecuacion caracterıstica y, para un sis-tema de segundo orden, tiene la siguientes raıces o polos:

p1,2 = −ξwn ± jwn

√1− ξ2 (2.53)

En funcion de los valores de ξ, obtendremos distintas posiciones de los polos y,por tanto, distintas respuestas del sistema:

• ξ = 0. Sistema sin amortiguamiento.

p1,2 = ±jwn (2.54)

• 0 < ξ < 1. Sistema subamortiguado.

p1,2 = −ξwn ± jwn

√1− ξ2 (2.55)

En este caso, como p21 + p2

2 = w2n, y por tanto ξ2 + w2 = w2

n, esta situacion seda alrededor de una circunferencia de radio la frecuencia natural, wn.

Page 90: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

80 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

• ξ = 1. Amortiguamiento crıtico (polos reales dobles).

p1,2 = −ξwn (2.56)

• ξ > 1 Sobreamortiguamiento (polos reales simples).

p1,2 = −ξwn ± wn

√ξ2 − 1 (2.57)

Respuesta escalon en sistemas de segundo orden

En el caso de los sistemas de segundo orden, resulta de interes observar susrespuesta ante una entrada escalon. Recordemos que la funcion de entrada al sistemaes U(s) = 1/s, por lo que:

Y (s) = G(s)U(s) =w2

n

s2 + 2ξwns+ w2n

1s, (2.58)

que para el caso 0 < ξ < 1 se obtiene una respuesta temporal:

y(t) = 1− e−σt(cos(wdt) +σ

wdsin(wdt)), (2.59)

donde σ y wd definen los polos del sistema: s = −σ − jwd, σ = ξwn y wd =wn

√1− ξ2.

En la Fig. 2.25 mostramos esta respuesta en funcion de distintos valores de laconstante de amortiguamiento ξ.

Figura 2.25: Respuesta temporal de un sistema de segundo orden en funcion de distintos valores

del coeficiente de amortiguamiento, ξ.

Page 91: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 81

2.2.7 Especificaciones en el dominio temporal

La respuesta temporal ante una entrada escalon tiene una forma caracterısticaque podemos dividir en dos tramos: una primera parte en la que se alcanza la senalde entrada (estado transitorio) y una segunda en que el sistema presenta oscilacionesalrededor del valor maximo de entrada (regimen estacionario) Ver la Fig. 2.26.

Figura 2.26: Respuesta temporal transitoria tıpica de un sistema de segundo orden. Se indican

tambien las caracterısticas que definen la respuesta, a menudo conocidas por especificaciones del

sistema ya que son las propiedades deseadas a conseguir en un controlador.

La respuesta transitoria de un sistema ante una entrada de escalon unitario de-pende de las condiciones iniciales. Al comparar respuestas transitorias de diversossistemas, por conveniencia, se suele usar la condicion inicial de reposo (todas lasderivadas se hacen cero). La respuesta transitoria presentara oscilaciones amorti-guadas antes de alcanzar el estado estacionario. Las caracterısticas que definen estarespuesta son:

• Tiempo de retardo, td (“delay”). Tiempo que tarda la respuesta en alcanzarla mitad del valor final por primera vez.

• Tiempo de crecimiento, tr (“raise”). Tiempo necesario para que la respuestaaumente del 10% al 90%, del 5% al 95% (sistemas subamortiguados, ξ > 1) odel 0% al 100% (sistemas subamortiguados, 0 < ξ < 1). Un valor aproximadoviene dado por tr ≈ 1.8/wn.

• Tiempo de pico, tp (“peak”). Tiempo necesario para que la respuesta alcanceel primer pico de sobreimpulso.

• Sobreimpulso maximo, Mp (“maximum peak”). Es el valor de pico maximo dela curva de respuesta medido desde la unidad. Si no se estabiliza en la unidad,Mp = 100%y(tp)−t(∞)

y(∞) . Nos indica la estabilidad relativa del sistema.

Page 92: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

82 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

• Tiempo de establecimiento, ts (“settling time”). Es el tiempo que el sistemanecesita para alcanzar y mantenerse en un rango alrededor del valor final conuna magnitud del 1%, 2% o del 5%. Esta magnitud esta relacionada con laconstante de tiempo maxima del sistema de control. Un valor aproximadoviene dado por ts ≈ 4.6/ξ.

Ejemplos

1. Hallar las especificaciones de un sistema de segundo orden ante una entradaescalon si ξ = 0.6 y wn = 5rad/s.

SOLUCION: wd = 4, σ = ξwn = 3, tr = 0.55s., tp = 0.785s., Mp = 9.5%,ts(2%) = 1.33s., ts(5%) = 1s.

2. Determinar K y Kh para el sistema de la Fig. ?? de modo que Mp en laresuesta escalon unitario sea 0.2 y tp = 1s.. Obtener despues tr y ts para esosvalores K y Kh.

Im(s)

Re(s)

x

-4 -2

x

x

4

-4

p1 = 0

p2,3 = -4+4j_

Im(s)

Re(s)

x

-4 -2

x

x

4

-4

(a) (b)

Im(s)

Re(s)

x

-4 -2

x

x

4

-4

p1 = 0

p2,3 = -4+4j_

(d)Im(s)

Re(s)

x

-4 -2

x

x

4

-4

(c)

π/3

−π/3=5π/3

-2.67

p1 = 0

p2,3 = -4+4j_

φ1

φ2 φ3

45

φ2

φ3

φ190+45

90

905.66

-5.66

Figura 2.27: Sistema de control con realimentacion. Ejemplo 2.

SOLUCION: K = 12.5, Kh = 0.178, tr = 0.65s., tp = 3.14s., Mp = 0.2,ts(2%) = 2.48s., ts(5%) = 1.86s.

2.2.8 Efectos de la adicion de ceros y polos

Si un cierto diseno tiene un tiempo de elevacion demasiado bajo, se debe elevarla frecuencia natural, wn. De forma similar, si el transitorio es demasiado elevado,la amortiguacion necesaria debera incrementarse. Si el transitorio dura demasiadotiempo, habra que mover los polos a la izquierda en el plano s. La influencia de

Page 93: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.2 Modelos dinamicos y respuesta dinamica. 83

los ceros en un sistema de segundo orden se basa en que modifican los coeficientesde los terminos exponenciales. Si el cero se desplaza lejos de los polos, tendra pocoefecto sobre la respuesta. Por el contrario, si el cero esta en el valor de la parte realde los polos podrıa tener influencia decisiva sobre la respuesta. El mayor efecto delos ceros es, por tanto, el de aumentar Mp con poca influencia sobre el tiempo deestabilizacion.

Por tanto, resulta evidente que la posicion de polos y ceros en un sistema decontrol tiene especial relevancia en las caracterısticas de su respuesta. Veamos estehecho con un ejemplo. Si consideramos los sistemas:

H1(s) =2

(s+ 1)(s+ 2)=

2s+ 1

− 2s+ 2

(2.60)

H2(s) =2(s+ 1.1)

1.1(s+ 1)(s+ 2)=

0.18s+ 1

+1.64s+ 2

(2.61)

En el segundo sistema hemos anadido un cero en (-1.1) cerca de uno de los polos(-1). El valor 1.1 en el denominador ajusta la ganancia DC para que sean iguales1. LaFig. 2.28 ilustra las respuestas de los dos sistemas ante la entrada escalon unitario.De estos sistemas se pueden extraer caracterısticas interesantes:

Time (sec.)

Ampl

itude

Step Response

0 1 2 3 4 5 60

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1From: U(1)

To: Y

(1)

Figura 2.28: Respuesta de los sistemas H1(s) y H2(s). Con la adicion del cero conseguimos un

menor tiempo de subida.

• A medida que el cero se aproxima al origen, se incrementa el sobreimpulso.

• Los polos/ceros se pueden cancelar en el semiplano negativo (LHP) en lo quese refiere a la respuesta pero pueden afectar a las condiciones iniciales.

1Esto se puede demostrar mediante el TVF: limt→∞ y(t) = lims→0 sY (s).

Page 94: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

84 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

• El predominio relativo de los polos de lazo cerrado esta determinado por larelacion entre sus partes reales, ası como de las magnitudes relativas de losresiduos calculados por cada polo.

• Los valores de los residuos dependen de los polos y de los ceros de lazo cerrado.

• Los polos mas cercanos al eje jw dominan el comportamiento de la respuestatransitoria “Polos dominantes”.

2.3 Principios esenciales de la realimentacion

2.3.1 Introduccion

Existen dos estructuras basicas para el control de sistemas: en lazo abierto yen lazo cerrado (o realimentado). La diferencia entre ellas es que en lazo cerradonecesitamos usar un sensor a la salida el cual normalmente nos introduce un ruidoademas de una medida de la variable de salida. En la Fig. 2.29 mostramos estos dosesquemas.

(a)

(b)

Entrada dereferencia

Controlador ProcesoSalida

Control de entrada

Entrada dereferencia

Controlador ProcesoSalida

Control de entrada

Sensor

+

-

Figura 2.29: Estructuras basicas en el control de sistemas: (a) Lazo abierto y (b) lazo cerrado.

En la Fig. 2.30 se muestra el esquema mas sencillo de sistema con realimentacionunitaria (ganancia unitaria en el lazo de realimentacion). A partir del esquemapodemos extraer las ecuaciones que definen el sistema total de la siguiente manera:

Page 95: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.3 Principios esenciales de la realimentacion 85

+r

-

ek H(s)

y

Figura 2.30: Sistema con realimentacion unitaria.

E(s) = R(s)− Y (s) (2.62)

Y (s) = kH(s)E(s) (2.63)

Y (s) = kH(s)(R(s)− Y (s)) (2.64)Y (s)R(s)

=kH(s)

1 + kH(s);E(s)R(s)

=1

1 + kH(s)(2.65)

Si el valor de k es elevado, la ganancia entrada–salida se hace uno. Por tanto, elvalor de k sera decisivo para la estabilidad de un sistema. Hablamos de realimenta-cion proporcional (“proportional feedback”). Este hecho lo ilustramos en el siguienteejemplo.

• EJEMPLO 1. Si consideramos el sistema

H(s) =1

s(s+ 2), (2.66)

realimentado con lazo unitario, podemos establecer su ecuacion caracterısticacomo:

s2 + 2s+ k = 0 (2.67)

En la Fig. 2.31 mostramos la posicion de las raıces de la ecuacion caracterısticay la respuesta ante una senal escalon con k = 1, k = 10 y k = 100.

• EJEMPLO 2. El segundo ejemplo que veremos se refiere al sistema siguiente:

H(s) =1

s[(s+ 4)2 + 16], (2.68)

realimentado con lazo unitario, podemos establecer su ecuacion caracterısticacomo:

s[(s+ 4)2 + 16] + k = 0 (2.69)

En la Fig. 2.32 mostramos la posicion de las raıces de la ecuacion caracterısticay la respuesta ante una senal escalon con k = 1, k = 100 y k = 275.

Page 96: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

86 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

x x

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

0.5

1

Time (secs)

Am

plitu

de

step response

0 2 4 6 8 10 12 140

0.5

1

Time (secs)

Am

plitu

de

proportional feedback, k =1

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

Time (secs)

Am

plitu

de

proportional feedback, k =10

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

Time (secs)

Am

plitu

de

proportional feedback, k =100

Figura 2.31: Posicion de los polos del sistema y respuesta escalon para k = 1, y k = 100.

En este ejemplo vemos como, al contrario del caso anterior, conforme aumen-tamos el valor de k provocamos la inestabilidad del sistema al hacer que lasraıces de la ecuacion caracterıstica pasen del semiplano negativo al positivo.

2.3.2 Sensibilidad

Podemos definir la sensibilidad como el cambio relativo de una magnitud respectoa otra. La sensibilidad de la magnitud Y respecto a la magnitud X, se define ası:

SYX ≡

∂YY

∂XX

=X

Y

∂Y

∂X(2.70)

Si aplicamos esta definicion sobre el sistema:

H(s) =kG(s)

1 + kG(s), (2.71)

la sensibilidad de H respecto de K se define como:

SHK ≡=

K

H

∂H

∂K=

11 +KG

→ 0 si |KG| es elevado. (2.72)

Page 97: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.3 Principios esenciales de la realimentacion 87

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.02

0.04

Time (secs)

Am

plitu

de

step response

0 20 40 60 80 100 120 140 160 180 2000

0.5

1

Time (secs)

Am

plitu

de

proportional feedback, k =1

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

Time (secs)

Am

plitu

de

proportional feedback, k =100

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.50

1

2

Time (secs)

Am

plitu

de

proportional feedback, k =275

Figura 2.32: Posicion de los polos del sistema y respuesta escalon para k = 1, k = 100 y k = 275.

Por tanto vemos que la realimentacion reduce la sensibilidad del sistema.

2.3.3 Precision en regimen estacionario: tipo de sistema

Si consideramos un sistema G(s) con realimentacion unitaria, con un controladoren serie D(s), la senal de error –recordemos– tiene la forma:

E(s) =R(s)

1 +G(s)(2.73)

Por otro lado, la entrada de referencia a un sistema toma, por norma general, laforma:

r(t) =tk

k!1(t) (2.74)

R(s) =1

sk+1(2.75)

En la mayorıa de los casos, la referencia de entrada no sera constante sino quepuede ser aproximada por una funcion lineal en un periodo de tiempo suficiente paraque el sistema alcance el estado estacionario. Esto se conoce como error en estadoestacionario. El tipo de la entrada a un sistema depende del valor de k:

• k = 0 implica una entrada escalon (error de posicion).

• k = 1 implica una entrada rampa (error de velocidad).

Page 98: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

88 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

• k = 0 implica una entrada parabolica (error de aceleracion).

El error estacionario de un sistema de control realimentado se define como:

ε∞ ≡ limt→∞

ε(t) (2.76)

ε∞ ≡ lims→0

sE(s) (2.77)

donde E(s) es la transformada de Laplace de la senal de error y se define ası:

E(s) =1

1 +D(s)G(s)R(s) =

11 +D(s)G(s)

1sk+1

(2.78)

Por tanto, podemos calcular el error estacionario:

ε∞ ≡ lims→0

1sk

11 +D(s)G(s)

= 0, ∞ o un constante. (2.79)

Por tanto, el error estacionario dependera del tipo de senal de entrada. Hablamosde tipo de un sistema al orden k para el cual ε∞ es una constante, y coincide con elnumero de polos del sistema en lazo abierto. Ası, por ejemplo, el sistema D(s)G(s) =

k(1+0.5s)s(1+s)(2+3s) es de tipo 1, mientras que el sistema D(s)G(s) = k/s3 es de tipo 3.

De este modo, podemos resumir los errores estacionarios por tipo de entradacomo se muestra en la Tabla 2.3.3.

Tabla 2.2: Expresiones de los errores en regimen estacionario en funcion del tipo de entrada.

Las constantes representan el tipo de error: Kp es la constante de error de posicion, Kv es la

constante del error de velocidad y Ka es la constante para el error de aceleracion.

EntradaTipo Escalon Rampa Parabola Polinomico

1(t) t 12 t

2 1kt

k

0 1/(1+Kp) ∞ ∞ ∞1 0 1/Kv ∞ ∞2 0 0 ∞

....... . . . ∞k 0 0 0 1/K0

El tipo de un sistema es una propiedad de robustez del mismo2. Si la gananciadel proceso cambia (cambio de parametros) el Kerror cambia, pero no ocurre esto

2La definicion del tipo de un sistema nos ayuda a identificar rapidamente la habilidad de este

para “seguir” polinomios (entradas). En la estructura de realimentacion unitaria, si la ganancia

cambia a tipo 1, la Kv cambia tambien, pero el sistema todavıa tendra e∞ = 0 en respuesta a

una entrada constante y aun sera de tipo 1. Los mismo ocurre para tipo II o superiores. Podemos

afirmar que la “robustez” es la mayor razon para preferir realimentaciones unitarias.

Page 99: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.3 Principios esenciales de la realimentacion 89

con el tipo del sistema. Para realimentacion no unitaria, el tipo del sistema se puededefinir con respecto a la entrada de referencia:

ep → Kp = limG(s) (2.80)

ev → Kv = limsG(s) (2.81)

ea → Ka = lims2G(s) (2.82)

Teorema de Truxal

Truxal (1995) derivo la formula para la constante de velocidad en terminos delos polos y los ceros en lazo cerrado; una formula que conecta el error en estadoestacionario con la respuesta dinamica. La formula de Truxal es:

1Kv

= − d

ds[lnT ]s=0 =

n∑i=1

(− 1pi

)+

m∑j=1

(1zj

)(2.83)

De esta ecuacion se observa que se obtienen mayores valores de Kv cuando elvalor absoluto de los polos es menor. Veamos a continuacion un ejemplo practico:

EJEMPLO. Un sistema de tercer orden y de tipo I tiene los polos en lazo ce-rrado en −2 ± 2j y −0.1. El sistema tiene un cero en lazo cerrado. ¿Donde debeestar el cero si se desea una Kv = 10?

SOLUCION. Si aplicamos Truxal obtenemos z = −0.096.

2.3.4 Estabilidad en SLIT. Criterio de Routh.

La estabilidad es una propiedad del sistema en sı y no depende de la entrada ofuncion excitadora del sistema. Un sistema dinamico es estable si, estando en reposo,se cumple que:

• Cualquier entrada acotada produce una salida acotada (BIBO, “Bounded InputBouded Output”).

• Entradas suficientemente pequenas producen salidas suficientemente pequenas.

Si un SLIT cumple la primera condicion tambien cumple la segunda.

• TEOREMA. “La condicion necesaria y suficiente para que un SLIT sea esta-ble es que su respuesta g(t) a la entrada impulso sea absolutamente integrable”.

Page 100: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

90 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

• ECUACION CARACTERISTICA. La estabilidad va ligada a la posicionde las raıces de la ecuacion caracterıstica. Las raıces de la ecuacion carac-terıstica son los polos de G(s), y cuando s tome esos valores, |G(s)| → ∞.Para que un sistema sea estable todas las raıces de la ecuacion caracterısticahan de estar en el semiplano real negativo del plano s.

• CRITERIO DE ROUTH. Solo se aplica este criterio si la ecuacion ca-racterıstica es algebraica y todos los coeficientes son reales. Sea la ecuacioncaracterıstica D(s) = an(s − p1)...(s − pn) = 0, la condicion necesaria y sufi-ciente para que D(s) = 0 no tenga raıces con parte real positiva es que: (1)todos los coeficientes tengan el mismo signo, y (2) ningun coeficiente sea nulo.

• ESTABILIDAD RELATIVA. El Criterio de Routh confirma la estabilidadabsoluta de un sistema. La estabilidad relativa se asocia a la amortiguacionrelativa de cada raız de la ecuacion caracterıstica; se define como “la propiedadque se mide por los tiempos relativos de estabilizacion de cada raız”. Tam-bien se puede definir la estabilidad relativa en terminos de los coeficientes deamortiguacion de cada par de raıces complejas y por tanto en terminos de lavelocidad de la respuesta y el sobrenivel en lugar del tiempo de estabilizacion.La estabilidad relativa depende de la localizacion de las raıces de la ecuacioncaracterıstica.

2.4 Metodo de diseno del lugar de las raıces (MLR)

2.4.1 Introduccion

En las secciones anteriores hemos visto las caracterısticas de la respuesta anteuna entrada escalon tales como el tiempo de establecimiento, la localizacion de lospolos en el plano s (wn, ξ, σ), el sobreimpulso, etc.; ademas hemos examinado loscambios de la respuesta transitoria ala anadir un polo–cero al sistema. Por otraparte, hemos visto tambien como la realimentacion puede influir en la estabilidad yla respuesta dinamica al cambiar la posicion de los polos.

Ahora veremos el Metodo del Lugar de las Raıces, que nos mostrara la influenciade los polos en las caracterısticas de los sistemas realimentados. Empecemos con elesquema de la Figura 2.33.

La relacion entre la entrada y la salida del sistema en el plano s es:

Y (s)R(s)

=KaKGG(s)

1 +KaKGG(s), (2.84)

por los que la ecuacion caracterıstica del sistema es: 1 + KaKGG(s) = 0, cuyasraıces son los polos de la funcion de transferencia. Las raıces dependeran pues de Ka

(ganancia del controlador) y su eleccion tendra influencia en la respuesta del sistema.

Page 101: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.4 Metodo de diseno del lugar de las raıces (MLR) 91

R(s) Y(s)

-+

1

KGGKa

E(s) U(s)

Figura 2.33: Sistema controlador proporcional de constante Ka y planta a controlar KGG en

lazo realimentado unitario.

El Metodo de Evans (1948) sugiere dibujar la localizacion de las raıces de laecuacion caracterıstica en funcion de Ka variando esta entre 0 e ∞, y usar el graficoresultante para seleccionar el valor mas adecuado de Ka. Ademas, estudiando losefectos de la adicion de polos-ceros sobre este grafico, se puede determinar las con-secuencias sobre el sistema. Ası pues llamamos Lugar de las Raıces al grafico detodas las posibles raıces de la ecuacion caracterıstica en funcion de alguna variable(ganancia u otro parametro). La tecnica empleada para ello es el Metodo de Evans.

Ahora definimos el parametro de estudio de nuestro LGR como K = KaKG quees la ganancia estatica en lazo abierto (l.a.). Por tanto tenemos: 1 +KG(s) = 0 →G(s) = − 1

K . Por tanto el LGR es el conjunto de valores de s para el cual la ecuacion1 +KG(s) = 0 tiene valores positivos de K (y en consecuencia de Ka).

2.4.2 Trazado del Lugar de las Raıces

Para trazar el Lugar de las Raıces hay que seguir una serie de siete pasos:

1. Marcar los polos de la funcion de transferencia en lazo abierto con aspas (‘X’)y los ceros con cırculos (‘O’).

2. Dibujar el LGR debido a los polos en el eje real.

• El LGR siempre queda a la izquierda de un numero impar de polos realesy ceros reales.

• Un polo o zero en el eje real introducen un desfase de 180o y como sealcanza la parte izquierda del plano s, la fase se hace negativa.

• Es mas, un segundo polo o un segundo cero en el eje real introduce undesfase adicional de 180o.

• Mostramos algunos ejemplos (Fig. 2.34):

3. Dibujar las asıntotas centradas en α (tambien llamado centroide) y con angulosde salida de φs:

Page 102: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

92 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

XO

XXO

X

180o

Figura 2.34: Algunos ejemplos de polos y ceros sobre el eje real para dibujar el LGR.

num. ceros − num. polos = n−m = num. asintotas. (2.85)

α =∑pi −

∑zi

n−m=−a1 + b1n−m

(2.86)

φs =180o + 360o(l − 1)

n−m; l = 1, 2, ..., n−m (2.87)

Por ejemplo, si tenemos que n − m = 3 → φl = 60o, 180o, 300o ya que(n − m)φl = 180o + (l)360o. En la Fig. 2.35 mostramos algunos ejemplosde asıntotas.

4. Calcular los angulos de partida (polos) y de llegada (ceros):∑Ψi −

∑φi − 180o − 360ol = qφsalida (2.88)∑

φi −∑

Ψi + 180o + 360ol = qΨllegada, (2.89)

donde el orden del polo o cero y l toma valores enteros: los angulos estan entre±180o.

Consideremos, por ejemplo el sistema en lazo abierto siguiente:

G(S) =s+ 1

s[((s+ 2)2 + 4)(s+ 5)], (2.90)

la representacion de polos y ceros se muestra en la Fig. ?? junto con los angulosφi y psii de cada polo/cero respecto a un punto de test s0 = −1+2j. Debemostener en cuenta que si s0 es un punto del LGR, la ecuacion siguiente se debesatisfacer:

∠G(S) = ψi − (φ1 + φ2 + φ3 + φ4) = −180o (2.91)

Page 103: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.4 Metodo de diseno del lugar de las raıces (MLR) 93

Figura 2.35: Ejemplos de trazado de asıntotas para el LGR.

5. Determinar el punto de cruce (interseccion) con el eje imaginario s = jw:

• Los puntos de interseccion y los correspondientes valores de K se puedendeterminar mediante el Criterio de estabilidad de Routh.

• Una raız de la ecuacion caracterıstica en el RHP (derceha del plano s)implica que el sistema en lazo cerrado es inestable.

• Si utilizamos el Criterio de Estabilidad de Routh, podemos localizar aquellosvalores de K para los cuales un incremento puede causar un cambio delnumero de raıces en el semiplano derecho. Esos valores se correspondencon el LGR que cruza el eje imaginario.

6. Dos segmentos se juntan en 180o y se separan en ±90o. Tres segmento seaprosiman con angulos relativos de 120o y parten con angulos de 60o rotados.Estos punto se conocen como puntos de bifurcacion, ruptura o dispersion: dK

ds =0 (ver Figs. 2.37 y 2.38.).

7. Completar el dibujo: las ramas empiezan en los polos y acaban en los ceros o

Page 104: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

94 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.36: Ejemplo del calculo de los angulos de salida φ y ψ.

en el ∞.

Algunas definiciones utiles:

• El LGR es un conjunto de valores de s para los que 1+KG(s) = 0 se satisfacetal que K varıa entre 0 e ∞.

• E LGR de G(s) es el conjutno de puntos en un plano-s donde la fase de G(s)es 180o: ∠G = 180o + 360ol, l ∈ Z.

2.4.3 Ejemplos practicos.

• EJEMPLO 1. Hallar el LGR de KGG(s) = 1/(s(s + 1) en funcion delparametro Ka.

KG = 1 → K = Ka

Orden de numerador y denominador: m = 0, n = 2; G(s) = b(s)/a(s); b(s) = 1,a(s) = s2 + s. Por tanto no existen zeros y tenemos dos polos en 0 y –1.

Resolviendo 1 + KG(s) = 0 se obtiene s2 + s + K = 0 cuyas raıces son:r1, r2 = −1

2 ±√

1−4K2 por lo que se puede distinguir tres casos:

– 0 ≤ K ≤ 1/4 → Raıces reales entre –1 y 0.

Page 105: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.4 Metodo de diseno del lugar de las raıces (MLR) 95

Figura 2.37: Este ejemplo ilustra un caso en que dos ramas del LGR se encuentran en el punto

de ruptura (“breakway point”, “saddle point”) y se alejan del eje en sentidos contrarios. En este

caso, el punto de ruptura representa una doble raız de la ecuacion, cuando el valor de K tiene el

valor del punto.

– K = 1/4 → Dos raıces en –1/2.

– K > 1/4 → Raıces complejas: Re: –1/2, Im: α√K.

En la Fig. 2.39 mostramos como existe un punto de ruptura para el cualtenemos raıces complejas para K > 1/4.

• EJEMPLO 2. Representar el LGR para la planta G(s) = 1/(s(s + c)) res-pecto el valor de c.

En este caso se tiene que 1+G(s) = 0 → s2+sc+1 = 0, a(s) = s2+1, b(s) = s,K = c, por lo que las raıces seran: r1, r2 = − c

2 ±√

c2−42 (cero en s = 0, polos

en ±j). El LGR se muestra en la Fig. 2.40.

• EJEMPLO 3. Entender y justificar los LGR de la Fig. 2.41.

• EJEMPLO 4. Se desea obtener el LGR del siguiente sistema:

Page 106: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

96 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.38: Situaciones tıpicas de puntos de ruptura (“breakway point”, “saddle point”).

G(s) =1

s[(s+ 4)2 + 16](2.92)

1. Representar los polos y ceros del sistema (Fig. ??a):

2. Lugar sobre el eje real: izquierda de un numero impar de ceros y polosreales (Fig. 2.42a).

3. Asıntotas. Tenemos n = 3,m = 0, por lo que tendremos n − m = 3asıntotas: l = 1, 2, 3.

α =0 + (−4 + 4j) + (−4− 4j)

3= −8/3 = −2.67 (2.93)

φ1 =180o + 360o(1− 1)

3= π/3 (2.94)

φ1 =180o + 360o(2− 1)

3= π (2.95)

φ1 =180o + 360o(3− 1)

3= 5π/3 (2.96)

Las asıntotas quedan representadas en la Fig. 2.42b.

4. Angulos de salida y llegada (polos y ceros). Sabemos que el LGR empiezaen los polos y va hacia los ceros o el ∞ por las lıneas asintoticas. Sirecordamos la regla para el calculo de los angulos de partida:

Page 107: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.4 Metodo de diseno del lugar de las raıces (MLR) 97

x x

Im(s)

Re(s)

Punto de ruptura

Figura 2.39: Lugar de las raıces para el sistema del Ejemplo 1.

x

Im(s)

Re(s)

Punto de ruptura

x

-1

Figura 2.40: Lugar de las raıces para el sistema del Ejemplo 2.

– Angulo de partida de un polo complejo = 180o - [∑

angulos de lossegmentos al polo complejo desde los otros polos] + [

∑angulos de

los segmentos al polo complejo desde los ceros]

– Angulo de partida de un polo complejo = 180o - [∑

angulos de lossegmentos al cero complejo desde los otros ceros] + [

∑angulos de

los segmentos al cero complejo desde los polos]

Como solo tenemos polos (dos complejos y otro real), solo aplicaremos laregla 1, es decir, solo habra angulos de partida (Fig. 2.42c). Para cadapolo i calculamos un φi:

– φ1 = 180o - (45o+45o) = 90o

– φ2 = 180o - (90o + 135o) + 0o = -45o

– φ3 = 180o + 0o - (90o+45o) = +45o

Page 108: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

98 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

X

X

O

O

X

orden 2

X

X

X

orden 2

Figura 2.41: Mas ejemplos de LGR.

5. Cruce en el eje imaginario (s = jw) + Criterio de Routh:

1 +K

s[(s+ 4)2 + 16]= 0 (2.97)

s3 + 8s2 + 32s+K = 0 (2.98)

Si aplicamos el Criterio de Routh, vemos que la ecuacion no tiene raıcesen el SPD para 0 < K < 8 ∗ 32 = 256. Como nos interesan los K > 0,nos centraremos en K < 256. Para K < 256 no tenemos raıces en el SPDy para K > 256 tenemos dos raıces en el SPD. Analizamos el punto deruptura K = 256: wo = ±

√32 = ±5.66.

6. Puntos de bifurcacion:

d

ds[−1/G]s=s0 = 0 → 3s2 + 16s+ 32 = 0 → s0 = −2.67± 1.89j (2.99)

Como este s0 NO esta en el LGR, no nos ha servido el proceso. Hay querecordar que es una condicion necesaria pero no suficiente.

7. Completamos el LGR. Ver Fig. 2.42d.

Page 109: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.4 Metodo de diseno del lugar de las raıces (MLR) 99

Im(s)

Re(s)

x

-4 -2

x

x

4

-4

p1 = 0

p2,3 = -4+4j_

Im(s)

Re(s)

x

-4 -2

x

x

4

-4

(a) (b)

Im(s)

Re(s)

x

-4 -2

x

x

4

-4

p1 = 0

p2,3 = -4+4j_

(d)Im(s)

Re(s)

x

-4 -2

x

x

4

-4

(c)

π/3

−π/3=5π/3

-2.67

p1 = 0

p2,3 = -4+4j_

φ1

φ2 φ3

45

φ2

φ3

φ190+45

90

905.66

-5.66

Figura 2.42: Paso 1: indicamos los polos del sistema y con una flecha roja el lugar de raıces que

queda a la izquierda de un numero impar de ceros + polos reales.

Una forma mas sencilla de realizar el LGR es con MATLAB. Si hacemos:

>>rlocus(1,conv([1 0],[1 8 32])), obtenemos la misma representacion (Fig.2.43).

• Ejemplo 3: MATLAB. Representar el LGR del sistema:

G(s) =(s+ 3)(s+ 1± j3)

s(s+ 1)(s+ 2)3(s+ 4)(s+ 5± 2j)(2.100)

Empleando el comando rlocus, obtenemos el LGR facilmente (Fig. 2.44).

Algunos aspectos sobre la construccion del LGR

Desde el punto de vista del diseno de sistemas de control resulta absolutamentenecesario conocer el efecto que tiene sobre el LGR anadir o mover polo y ceros deD(s)G(s) sobre el plano-s. Las principales propiedades son:

• Efecto de anadir polos y ceros a D(s)G(s):

Page 110: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

100 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

-6 -5 -4 -3 -2 -1 0 1 2-10

-8

-6

-4

-2

0

2

4

6

8

10

Real Axis

Imag

Axi

s

Figura 2.43: Resolucion del LGR con MATLAB.

– Anadir polos: En general, anadir un polo a la funcion D(s)G(s) en elsemiplano izquierdo tiene el efecto de empujar el LGR hacia el semiplanoderecho.

– Anadir ceros: Anadir ceros en el semiplano izquierdo a la funcion D(s)G(s)por norma general tiene el efecto de mover el LGR hacia el mismo semi-plano izquierdo.

• Calcular la ganancia K a partir de LGR: Una vez que el LGR ha sidoconstruido, el valor de K en cualquier punto se puede determinar ya que sa-bemos que 1 +KG(s) = 0 y, por tanto: K = −1/G(s). Graficamente, esto secalcula ası:

K =Π distancia desde s0 a los ceros

Π distancia desde s0 a los polos(2.101)

En MATLAB esto se hace mediante la funcion rlocfind.

2.4.4 Compensacion dinamica

Hemos visto que variando la ganancia podemos conseguir una representaciondeseada de nuestro sistema pero esto no es siempre posible. Empleamos el Metodode compensacion dinamica cuando el diseno deseado no lo podemos alcanzar con lavariacion de la ganancia unicamente. Tenemos dos tipos basicos de compensadores:por adelanto y por atraso:

Page 111: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.4 Metodo de diseno del lugar de las raıces (MLR) 101

Figura 2.44: LGR del ejemplo con MATLAB.

• Adelanto. Se usa para reducir el tiempo de elevacion y el transitorio desobreimpulso de la respuesta. Es decir, se aproxima a un control derivativo.

• Atraso. Se usa para mejorar la respuesta en estado estacionario. Tambiennos referimos a el como control integral.

Si tenemos un compensador con la forma:

D(s) =s+ zis+ pi

, (2.102)

se llama compensador de adelanto si zi < pi y de atraso si zi > pi.Normalmente la compensacion se realiza en serie con la planta (Fig. 2.45), aunque

tambien se puede situar en el camino de realimentacion.

Figura 2.45: Estructura tıpica de un compensador.

Page 112: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

102 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

De este modo, tenemos una ec. caracterıstica: 1 + KD(s)G(s) = 0, dondeK = KAKG. Todas las reglas del LGR se pueden aplicar ahora a la funcionD(s)G(s). Definimos compensacion como el calculo de D(s) para que se cumplanciertas especificaciones del sistema total.

Efecto de adicion de polos y ceros

Recordemos que:

• Adicion de polos3.

– Mueve el LGR hacia la derecha.

– Reduce la estabilidad relativa.

– Aumenta el tiempo de establecimiento, ts.

• Adicion de ceros.

– Mueve el LGR hacia la izquierda, mejorando la estabilidad del sistema.

– Aumenta la estabilidad relativa.

– Reduce el tiempo de establecimiento, ts.

– Agregar un cero introduce cierto grado de anticipacion al sistema y acelerala respuesta transitoria.

Compensacion en adelanto

Veamos, en primer lugar, un ejemplo sobre la adicion de un cero al siguientesistema:

KG(s) =K

s(s+ 1)(2.103)

El LGR se muestra en la Fig. 2.46 en lınea continua. Si consideramos un com-pensador D(s) = s + 2, se consigue el LGR en lınea discontinua (cırculo). Vemoscomo anadir un simple cero en s = −2 hemos desplazado el LGR hacia la izquierda,mejorando la estabilidad del sistema final.

El problema de anadir un unico cero en el compensador serıa que, una realiza-cion fısica del sistema involucrarıa un diferenciador que amplificarıa el ruido de altafrecuencia de la senal del sensor. Por ello, es imposible construir un diferenciadorpuro. Podemos, sin embargo, ver la influencia que tendrıa construir un compensadorque incluyera el cero anterior y un polo adicional en s = −20:

D(s) =s+ 2s+ 20

(2.104)

Page 113: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.4 Metodo de diseno del lugar de las raıces (MLR) 103

Figura 2.46: Lugar de las Raıces para la inclusion de un compensador por adelanto.

Figura 2.47: Lugar de las Raıces para la inclusion de un compensador por adelanto (s=-2) y un

polo (s=-20).

El efecto se muestra en la Fig. 2.47.Normalmente la eleccion de los polos/ceros se realiza mediante prueba–y–error

aunque existen algunos consejos utiles:

• El polo se situa entre 3 y 20 veces el valor de la posicion del cero.

• Si el polo esta demasiado cerca al cero, entonces el LGR se aleja hacia unaforma no compensada y el cero no hace su funcion.

• Si el polo fuera demasiado lejos hacia la izquierda, aparecerıa ruido de ampli-ficacion de alta frecuencia.

El ejemplo del “coche+barra”

Este ejemplo es clasico en la demostracion de un sistema que necesita ser estabi-lizado mediante la inclusion de un compensador. El sistema consiste en un cochecito

3A la funcion de transferencia en lazo abierto.

Page 114: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

104 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

con una barra fija en su capo y que oscila conforme el coche avanza y frena (Fig.2.48).

mu

θ

Figura 2.48: Diagrama del coche+barra.

El sistema se puede describir matematicamente como sigue (Ogata, 1993):

θ + θ = u→ s2φ(s)− φ(s) = U(s) → φ(s)φU(s)

=1

s2 − 1(2.105)

Si representamos el LGR de este sistema obtenemos un sistema inestable (Fig. 2.49a).Ahora bien, si introducimos un compensador por adelanto como en la Fig. 2.50,podemos obtener un sistema estable (Fig. 2.49b) o incluso, cuando las variacionesson menores, con mejor relacion de amortiguamiento (Fig. 2.49c). Este ultimosistema serıa mas lento pero conseguirıa una mejor relacion de amortiguamiento.

-2 -1 0 1 2-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

Real Axis

Imag

Axi

s

(a)

-4 -2 0 2-5

0

5

Real Axis

Imag

Axi

s

(b)

-4 -2 0 2-5

0

5

Real Axis

Imag

Axi

s

(c)

Figura 2.49: Lugar de las raıces para (a) el sistema original, (b) compensador 1 y (c) compensador

2.

El codigo de MATLAB para realizar estos LGR serıa:

subplot(131),rlocus([1],[1 0 -1]),grid,title(’(a)’)

alpha = 2;beta = 3;

Page 115: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.4 Metodo de diseno del lugar de las raıces (MLR) 105

u e+

-

s + αs + β s -12

1

Figura 2.50: Control mediante un compensador por adelanto del sistema coche+barra.

subplot(132),rlocus([1 alpha],conv([1 0 -1],[1 beta])),grid,title(’(b)’)

alpha = 0.5;beta = 3;

subplot(133),rlocus([1 alpha],conv([1 0 -1],[1 beta])),grid,title(’(c)’)

Compensacion en atraso

Si consideramos de nuevo la misma funcion de transferencia, y consideramos elcompensador en adelanto D(s) = (s + 2)/(s + 20), obtendremos el LGR de la Fig.2.47 anterior. Si ahora elevamos la ganancia (K=31) hasta conseguir una relacionde amortiguamiento ξ = 0.707, la constante de velocidad es:

Kv = lims→0

sKD(s)G(s) = (31/10) = 3.1 (2.106)

Si ahora anadimos un segundo compensador por atraso:

D2(s) =s+ 0.1s+ 0.01

, (2.107)

aumentamos la velocidad por 10 ya que z/p = 10 y ademas mantenemos pequenosz y p de forma que D2(s) tendrıa poca influencia sobre la dinamica del sistema. ElLGR se muestra en la Fig. 2.51.

De este ejemplo podemos comentar que:

• El pequeno cırculo alrededor del origen es el resultado de la compensacion poratraso.

• Una raız de lazo cerrado se queda muy cerca del cero de compensacion porretardo de –1, lo que corresponde a un transitorio muy lento. Esta lentitudse debe a que el cero casi cancela el polo en la funcion de transferencia. Sinembargo, este decaimiento es tan lento que este termino puede aumentar elvalor del tiempo de establecimiento.

• Por tanto, resulta importante situar la combinacion de atraso polo-cero enfrecuencias tan altas como sean posibles sin causar desplazamientos demasiadoimportantes en la localizacion de la planta original.

Page 116: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

106 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.51: Lugar de las Raıces para la inclusion de un compensador por atraso con control de

velocidad.

Tecnica LGR de diseno mediante compensacion en adelanto

El metodo del LGR es bastante bueno para el diseno de compensadores si lasespecificaciones dadas son terminos en el dominio del tiempo: amortiguamiento (δ),frecuencia natural (wn), sobreimpulso maximo (Mp), tiempo de crecimiento (tr),tiempo de establecimiento (ts), etc. El sistema original que se nos plantea en estoscasos es, bien inestable para cualquier ganancia estatica K, bien estable para algunvalor de K pero con respuesta transitoria indeseable. Es entonces cuando tendremosque modificar el LGR proximo al eje imaginario y al origen mediante la inclusion deun compensador.

El procedimiento de diseno sigue estos pasos:

• A partir de las especificaciones obtenemos la ubicacion de los polos dominantesde lazo cerrado.

• Trazamos el LGR y nos planteamos la pregunta de si con solo ajustar la ganan-cia podemos obtener los polos deseados en lazo cerrado. En caso de no poderhacerlo, calculamos la diferencia angular φ que debera proporcionar nuestrocompensador para que el nuevo LGR pase por los polos deseados.

• Supondremos la funcion del compensador:

Gc(s) = Kcα1 + Ts

1 + αTs= Kc

s+ 1T

s+ 1αT

, 0 < α < 1. (2.108)

Los valores de α y T los podremos calcular a partir de φ y la ganancia estaticadel compensador Kc a partir de la ganancia de lazo abierto.

Page 117: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.4 Metodo de diseno del lugar de las raıces (MLR) 107

• Si las constantes de error no se proporcionan, determinar la posicion del poloy cero de Gc(s) de forma que este contribuya con el angulo necesario φ. Sino hay otros requisitos impuestos, elegiremos α lo mayor posible ya que asıconseguimos una constante de velocidad elevada, lo cual es deseable.

Si se da alguna constante de error estatico deberemos emplear el Metodo deCompensacion de Respuesta en Frecuencia que veremos en la siguiente seccion

• Determinar la ganancia en lazo abierto del sistema compensado partiendo dela condicion de magnitud.

Tecnica LGR de diseno mediante compensacion en atraso

Se utiliza la compensacion en atraso cuando tenemos, por ejemplo, un sistemaque presenta caracterısticas satisfactorias de respuesta transitoria pero no en estadoestacionario. Ası pues, la compensacion consiste en incrementar la ganancia en lazoabierto sin modificar las caracterısticas de la respuesta transitoria. Esto significa queel LGR mas cercano a los polos dominantes en lazo cerrado no debe variar de formasignificativa, pero hay que incrementar la ganancia de lazo abierto tanto como seanecesario. Esto se puede lograr si se coloca un compensador en atraso en serie conla planta.

Para evitar una modificacion apreciable del LGR, la contribucion angular delcompensador debe ser menor de 5o. Para asegurar esto, el polo y el cero del com-pensador en atraso se tienen que colocar bastante juntos y cerca del origen. Ası,los polos de lazo cerrado del sistema total compensado se desplazan levemente desus ubicaciones originales por lo que las caracterısticas de respuesta transitoria nose alteran.

La forma del compensador es:

Gc(s) = Kcβ1 + Ts

1 + βTs= Kc

s+ 1T

s+ 1βT

, β > 1. (2.109)

Si el polo y el cero se colocan muy cerca entre si, s = s1 donde s1 es uno de lospolos dominantes de lazo cerrado por lo que s1 +1/T y s1 +1/βT son casi iguales y:

|Gc(s)| = |Kcs+ 1

T

s+ 1βT

| ≈ Kc. (2.110)

Esto quiere decir que si Kc = 1 las caracterısticas de respuesta transitoria no sealteraran (la ganancia global de la funcion de transferencia de lazo abierto (l.a.) sepuede incrementar en un factor β > 1.)

Como ponemos el polo y el cero cerca del origen, β puede hacerse muy grande(1 < β < 15, β = 10 suele ser una buena eleccion). El valor de T debe ser grande pero

Page 118: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

108 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

no en exceso. Un aumento en la ganancia significa un aumentao en las constantesde error estatico:

Sistema No Compensado : Kv = lims→0

[sG(s)] (2.111)

Sistema Compensado : Kv = lims→0

[sGc(s)G(s)] = KcβKv (2.112)

El procedimiento de diseno es el siguiente4:

• Trazar el LGR para el sistema no compensado. Empleando las especificaciones,localizamos los polos dominantes en lazo cerrado (l.c.)

• Planteamos el compensador por atraso:

Gc(s) = Kcs+ 1

T

s+ 1βT

. (2.113)

• Calculamos el error estatico especificado: Kp, Kv, Ka, ess.

• Deteminar el aumento del coeficiente de error estatico que se da para cumplirlas especificaciones.

• Determinar el polo y el cero del compensador en atraso que produce el aumentonecesario en el coeficiente de error estatico sin alterar mucho el LGR original5.

• Trazar el LGR del sistema compensado. Poner los polos dominantes de l.c. enel LGR. Poner los polos dominantes de l.c. deseados conforme a las especifica-ciones de la respuesta transitoria.

• Ajustar la ganancia Kc a partir de la condicion de modulo para que los polosdominantes l.c. queden en las ubicaciones deseadas.

Tecnica LGR de diseno mediante compensacion en atraso–adelanto

Hasta ahora hemos visto como un compensador en adelanto proporcionaba mayorancho de banda, aceleraba la respuesta y reducıa el sobreimpulso maximo, mientrasque un compensador en atraso proporcionaba una mayor ganancia en frecuencias

4Vamos a suponer que el sistema no compensado cumple las condiciones de respuesta transitoria

por ajsute de ganancia.5La relacion de ganancias de las especificaciones/no compensado es la misma que la de distancias

del cero al origen y poloo al origen.

Page 119: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 109

bajas (mejora la exactitud en estado estacionario) teniendo una mayor velocidad derespuesta (menor ancho de banda). El compensador de atraso–adelanto aprovechalas caracterısticas de ambos y se suele emplear cuando deseamos mejorar la respuestatransitoria y estacionaria al mismo tiempo.

La forma del compensador es:

Gc(s) = Kc

(s+ 1T1

)(s+ 1T2

)

(s+ γT1

)(s+ 1βT1

), β > 1, γ > 1. (2.114)

Para los detalles y procedimiento de diseno se recomienda consultar (Ogata, 1993).

2.5 Metodo de diseno de la respuesta en frecuencia (MRF)

Este es el metodo de diseno de sistemas de control con realimentacion mas usadoen la industria ya que:

• Da buenos disenos para modelos poco conocidos o con frecuencias altas deresonancia.

• Permite el diseno con informacion experimental. Las medidas de amplitudy fase de salida de una planta bajo una excitacion de entrada senoidal sonsuficientes para el diseno del sistema de control.

• No es necesario un calculo intermedio de los datos como ocurrıa con el metododel LGR en el que habıa que encontrar los polos y ceros deseados.

La principal desventaja, sin embargo, es que la teorıa es algo complicada (va-riable compleja) aunque la metodologıa de diseno sea sencilla. En este curso noprofundizamos en los conceptos matematicos del diseno e iremos directamente a las“recetas” del diseno de compensadores. Para mas detalles se recomienda consultar(Franklin y Powell, 1994; Ogata, 1993).

2.5.1 Respuesta en frecuencia

Definimos respuesta en frecuencia de un sistema a la respuesta de este ante unaentrada sinusoidal. A partir de la lozalizacion de polos y ceros, podemos conocermejor esta respuesta en frecuencia. Consideremos una funcion de transferencia enlazo abierto:

Y (s)U(s)

= G(s) → G(jw) (2.115)

Page 120: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

110 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Suponemos una entrada:

u(t) = sin(wt), (2.116)

que para un sistema lineal, tendra una salida:

y(t) = Asin(wt+ φ). (2.117)

Definimos:

Magnitud : A = |G(jw)| = |G(s)|s=jw (2.118)

Fase : φ = ∠G(jw) = arctanIm(G(jw))Re(G(jw))

(2.119)

Por tanto un sistema estable con funcion de transferencia G(s) excitada por unasinusoide de amplitud unitaria y frecuencia w, tras alcanzar el estado estacionario,exhibira una salida sinusoidal con amplitud A(w) y fase φ(w). Hay que hacer notarque la salida es una sinusoide con igual frecuencia que la de la enrtada y la amplitud Aes independiente de la senal de entrada. Esto es consecuencia de que G(s) representaun sistema lineal.

Estamos interesados en representar A y φ porque nos ayudara a interpretar larespuesta del sistema y a determinar la estabilidad en lazo cerrado del sistema apartir del lazo abierto.

2.5.2 Diagramas de Bode

Hablamos de los Diagramas de Bode en dos casos:

• Diagrama de magnitud: log10A frente a log10w

• Diagrama de fase: φ frente a log10w

Dado un sistema:

KG(s) = K(s− z1)(s− z2)...(s− p1)(s− p2)...

= KΠm

i=1(s− zi)Πn

j=1(s− pj)(2.120)

→ KG(jw) = K0Πm

i=1(jwτi + 1)Πn

j=1(jwτj + 1); K0 = |KG(jw)|w<< (2.121)

A partir de esta expresion, obtenemos el diagrama de magnitud:

log10KG(jw) = log10K0 + log10|jwτ1 + 1|+ ...

−nlog10|jw| − nlog10|jwτa + 1|, (2.122)

Page 121: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 111

y el de fase:

∠KG(jw) = ∠K + ∠(jwτ1 + 1) + ...− n90o − ∠(jwτa + 1). (2.123)

Todas las funciones de transferencia estan compuestas por tres tipos de terminos:

• Singularidad en el origen: K(jw)n (Fig. 2.52).

Figura 2.52: Diagrama de Bode de la amplitud para singularidades en el origen.

Se trata de una recta con pendiente n (20 db/dec) en una representacion lo-garıtmica de la amplitud y anade una fase de n90o en el diagrama de fase:

20log10[K0|(jw)n|] = 20log10K0 + 20nlog10|jw| (2.124)

• Termino de primer orden: (jwτ + 1)±1 (Fig. 2.53).

Figura 2.53: Diagrama de Bode de (a) amplitud y (b) fase para terminos de primer orden.

Este termino se aproxima a una asıntota a bajas frecuencias (wτ << 1 →jwτ+1 ≈ 1 → 0) y a otras a altas (wτ >> 1 → jwτ+1 ≈ jwτ → 20nlog|jwτ |):

20log10|(jwτ + 1)n| = 20nlog10|jwτ + 1| (2.125)

Page 122: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

112 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Por tanto, este termino anade una linea con pendiente 0 para w << 1/τ y unalinea con pendiente ±1 para w > 1/τ . El punto de ruptura es w = 1/τ ya quelas dos asıntotas se cruzan y la curva de magnitud pasa por un factr 1.4 (3dB)por encima. En el diagrama de fase, se anaden ±90o cuando w > 1/τ .

• Termino de segundo orden: [( jwwn

)2 + 2ξ jwwn

+ 1]±1 (Fig. 2.54).

Figura 2.54: Diagrama de Bode de (a) amplitud y (b) fase para terminos de segundo orden.

Su comportamiento es parecido al anterior pero con algunas diferencias: elpunto de ruptura es w = wn y el cambio de pendiente s +2 (+40 dB/dec) enel punto de ruptura.

Veamos los Diagramas de Bode del sistema:

G(s) =20(s+ 0.5)

s(s+ 10)(s+ 50)(2.126)

En el panel 2.55 mostramos la construccion completa analitica de los diagramasde amplitud (a), fase (b) y una aproximacion de la fase (c).

En cambio, MATLAB proporciona un comando para realizar de forma sencillaesta tarea: bode.m. El resultado de:

grid bode(20*[1 0.5],conv([1 10 0],[1 50]))

se muestra en la Fig. 2.56.

2.5.3 Margenes de Estabilidad

Veamos como trabajar con el concepto de estabilidad mediante los Diagramasde Bode en un ejemplo concreto. Sea el siguiente sistema con control proporcional(Fig. 2.57):

Page 123: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 113

Figura 2.55: Diagramas de amplitud (a), fase (b) y una aproximacion de la fase (c) para el

sistema G(s) = 20(s+0.5)s(s+10)(s+50) .

Page 124: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

114 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Frequency (rad/sec)

Pha

se (d

eg);

Mag

nitu

de (d

B)

Bode Diagrams

-100

-50

0

50From: U(1)

10-2 10-1 100 101 102 103-200

-180

-160

-140

-120

-100

-80

-60

-40

-20

0To

: Y(1

)

Figura 2.56: Diagramas de amplitud (a), fase (b) para el sistema G(s) = 20(s+0.5)s(s+10)(s+50) mediante

bode.m de MATLAB.

G(s) =1

s(s+ 1)2(2.127)

Figura 2.57: Bloque de control proporcional.

Si representamos el LGR y usamos el Criterio de Routh, observamos que elsistema se hace inestable para K > 2 (el LGR pasa al SPD). Por tanto la condicionde estabilidad es 0 < K < 2 (Fig. 2.58).

Si representamos los Diagramas de Bode para distintos valores de K (Fig. 2.59),podemos definir dos conceptos muy utiles para estudiar la estabilidad de un sistema:

• Margen de Ganancia. Es el factor para el cual la ganancia es menor queel valor crıtico: MG = 1

|KG(jw)| . Es la diferencia en magnitud entre cualquierBode y el crıtico (en nuestro caso el correspondiente a K = 2). Si el MG > 0tenemos un sistema estable y, en caso contrario, inestable.

• Margen de Fase. Es la diferencia en fase respecto a 180o para una frecuenciaconcreta.

Mediante Matlab se pueden obtener los valores de MG y MF facilmente emplean-do el comando margin, de la siguiente forma:

Page 125: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 115

Figura 2.58: Lugar de las raıces para els sistema G(s) = 1s(s+1)2 . Se observa que para K > 2 el

sistema se hace inestable.

margin([1],conv([1 0],[1 2 1]))

El resultado lo muestra Matlab junto con los Diagramas de Bode correspondientes(Fig. 2.60).

El Teorema de Bode relaciona la Ganancia y la Fase de Bode estableciendo que“Para todo sistema estable de fase mınima (sin polos o ceros en el semiplano de-recho), la fase de G(jw) esta relacionada unicamente con la magnitud de G(jw)”.De este teorema se pueden inferir caracterısticas de estabilidad ya que si calculamos|KG(jw)| = 1, tendremos que:

• ∠G(jw) ≈ −90o si n = −1.

• ∠G(jw) ≈ −180o si n = −2.

y la estabilidad se asegura con ∠G(jw) > −180o y PM > 0.Algunas definiciones utiles:

• Frecuencia de cruce, “crossover frequency”. Se trata de la frecuenciapara la cual la ganancia es la unidad (0 dB).

• Vector de Margen. Menor distancia al punto -1 desde el diagrama de Ny-quist. A pesar de la dificultad de calculo, da una idea a “primera vista” sobrela estabilidad del sistema.

Page 126: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

116 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.59: Diagramas de Bode para el sistema G(s) = 1s(s+1)2 con K=1.

2.5.4 Criterio de estabilidad de Nyquist

Un Diagrama de Nyquist es una representacion de la magnitud frente a la fase y esutil cuando los Diagramas de Bode son demasiado ambiguos respecto a la estabilidad.Un Diagrama de Nyquist resulta de evaluar una funcion de transferencia H(s) paravalores de s definidos por algunos contornos. Si hay polos o ceros dentro del trazadodel contorno, entonces el Diagrama de Nyquist dara una o mas vueltas alrededor delcırculo unidad. La funcion de transferencia de lazo cerrado tiene la forma:

Y (s)R(s)

=KG(s)

1 +KG(s)(2.128)

La respuesta del lazo cerrado se evalua mediante:

1 +KG(s) = 0, (2.129)

que es simplemente la respuesta de lazo abierto, KG(s), desplazada hacia la derechauna unidad. Por tanto 1+KG(S) rodea el origen si y solo si KG(s) rodea a -1 (ver

Page 127: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 117

Frequency (rad/sec)

Pha

se (d

eg);

Mag

nitu

de (d

B)

Bode Diagrams

-100

-50

0

50Gm=6.0206 dB (at 1 rad/sec), Pm=21.386 deg. (at 0.68233 rad/sec)

10-2 10-1 100 101-300

-250

-200

-150

-100

-50

Figura 2.60: Diagramas de Bode para el sistema G(s) = 1s(s+1)2 con K=1 mediante el comando

margin de MATLAB.

Fig.2.67). Podemos definir el contorno que sea todo el semiplano derecho. Si hayvarios rodeos mientras evaluamos la funcion de transferencia se dice que el sistemaes inestable.

Un rodeo en el sentido de las agujas del reloj de -1 indica la presencia de un ceroen el semiplano derecho mientras que en sentido contrario indica la presencia de unpolo en el semiplano derecho. El numero de rodeos en el sentido de las agujas delreloj es:

N = Z − P. (2.130)

Como el numero de polos en el RHP de G(s) es conocido, asumiremos que unrodeo de -1 indica una raız inestable del sistema en lazo cerrado. Por tanto tenemosque el numero de raıces en el semiplano derecho es:

Z = N + P (2.131)

Para dibujar el Diagrama de Nyquist debemos seguir los siguientes pasos:

• Dibujar KG(s) para −j∞ ≤ s ≤ +j∞.

• El numero de rodeos de -1 sera N .

• El numero de polos inestables (semiplano derecho) de G(s) sera P .

• Calcular el numero de raıces en lazo cerrado inestables: Z = N + P .

Page 128: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

118 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Ejemplos del Diagrama de Nyquist

• EJEMPLO 1. Consideremos el sistema:

G(s) =1

(s+ 1)2(2.132)

El lugar de las raıces muestra que el sistema es estable para cualquier valor deK. El Diagrama de Nyquist se muestra para K = 1 y no encierra a -1. ComoG(s) solo cruza el eje real negativo en G(s) = 0, nunca cruzara −1/K paracualquier valor de K positivo.

• EJEMPLO 2. Se considera el sistema:

G(s) =1

s(s+ 1)2, (2.133)

que es estable para valores pequenos de K (Fig. 2.62).

En la Fig. 2.63 mostramos los Diagramas de Bode.

A partir del Diagrama de Nyquist (Fig. 2.64) se puede ver como valores altosde K provocan dos bucles. El arco infinito en el grafico de Nyquist se debe alpolo en 0. Si hubieramos tenido dos polos en s = 0, el cırculo hubiera sido de360o.

• EJEMPLO 3. Consideremos el sistema:

G(s) =s+ 1

s( s10 − 1)2

(2.134)

Para valores altos de K se da un rodeo del origen en el sentido contrario alas agujas del reloj (ver Fig. 2.65), por lo que N = −1. Pero como P = 1por el polo del semiplano derecho de G(s), Z = 0, y no hay por tanto raıcesinestables del sistema. Cuando K es pequeno, N = 1 lo que indica que Z = 2y por tanto hay dos raıces inestables en lazo cerrado.

Estabilidad en el Diagrama de Nyquist

Al igual que en el Diagrama de Bode podemos analizar la estabilidad del sistemaen lazo cerrado en el Diagrama de Nyquist. Veamos como se calculan los margenesde fase (PM) y amplitud (GM) en estos diagramas en terminos de la distancia delsistema a rodear el punto -1. El margen de ganancia se define como la inversa de|KG(jw)| cuando el dibujo cruza el eje real negativo. El margen de fase se definecomo la diferencia entre la fase de G(jw) y -180o cuando el dibujo cruza el cıculounidad. La Fig. 2.66 ilustra el calculo graficamente.

Page 129: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 119

Figura 2.61: Planta, LGR, Bode y Nyquist del Ejemplo 1: G(s) = 1(s+1)2 .

Page 130: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

120 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.62: Planta del Ejemplo 2: G(s) = 1s(s+1)2 .

Figura 2.63: Diagrama de Bode del Ejemplo 2: G(s) = 1s(s+1)2 .

Un problema con estas definiciones es que pueden haber varias PM y GM validos;una solucion propuesta es la definicion del margen del vector que es la distancia alpunto -1 desde la situacion mas proxima del grafico de Nyquist. El “vector margin”puede ser dificil de calcular pero MATLAB hace esto de forma automatica mediantenyquist.m.

2.5.5 Diagrama de Nichols

El Diagrama de Nichols se define como el lugar de magnitud constante (M) y faseconstante (N) en el diagrama del logaritmo de la magnitud en funcion de la fase.El Diagrama de Nichols contiene curvas de magnitud de lazo cerrado y angulo defase constantes. Podemos determinar graficamente PM y GM, magnitud de pico de

Page 131: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 121

Figura 2.64: Diagrama de Nyquist del Ejemplo 2: G(s) = 1s(s+1)2 .

resonancia, frecuencia del pico de resonancia y ancho de banda del sistema en lazocerrado. Todo esto se calcula a partir del sistema en lazo abierto del lugar de G(jw).

Este tipo de diagramas se realizan de forma sencillo con el comando de MATLABnichols.m. Mediante la funcion de Matlab ngrid.m se muestran las lıneas constantesde fase y magnitud en un Diagrama de Nichols. En la Fig. 2.68 mostramos unejemplo de Diagrama de Nichols para el sistema:

G(s) =s+ 1

s(s+ 3)(s+ 5)(2.135)

2.5.6 Compensacion

Compensacion en adelanto

La funcion de transferencia de un compensador por adelanto, recordemos, tienela siguiente expresion:

D(s) = Kcs+ 1

T

s+ 1αT

, 0 < α < 1. (2.136)

La Fig. 2.69 muestra el diagrama de Bode de este tipo de compensador. El maximoadelanto de fase ocurre con:

w =1√αT

(2.137)

La compensacion por adelanto anade un adelanto de fase en la banda de frecuenciasentre puntos de ruptura (ver Fig. 2.69). Si no tenemos una variacion de gananciaen bajas frecuencias, el compensador anade un adelanto de fase al sistema por lo

Page 132: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

122 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.65: LGR, Bode y Nyquist del Ejemplo 3: G(s) = s+1s( s

10−1)2 .

Page 133: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 123

Figura 2.66: Definiciones de los margenes de estabilidad (PM y GM) sobre un Diagrama de

Nyquist generico.

que mejora su velocidad de respuesta (aun no siendo estable!). Los compensadoresen adelanto actuan aproximadamente como un compensador PD pero con menoramplificacion de las altas frecuencias.

El diseno de compensadores en adelanto sigue el siguiente protocolo:

• Determinar la ganancia K que satisface el requisito de error estatico.

• Con esa K trazar los Diagramas de Bode del sistema no compensado pero conla ganancia determinada. Evaluar el margen de fase.

• Determinar φm (angulo de fase en adelanto) necesario para agregarlo al sistema.

• Determinar la frecuencia en que la magnitud del sistema no compensadoG1(jw) =−20log10( 1√

α). Esta sera la nueva frecuencia de cruce de ganancia.

• Las frecuencias de cruce del compensador por adelanto son: CERO: w = 1/T ,POLO: w = 1/αT .

• Kc = K/α.

• Verificar el margen de ganancia (GM). Si no se cumple la especificacion modi-ficar la posicion del polo/cero.

Continuamos con un ejemplo de diseno de un compensador de adelanto para unaplanta con la siguiente funcion de transferencia:

G(s) =1

s(s+ 1)(2.138)

Page 134: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

124 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.67: Diagrama de Nyquist de un sistema complejo y definicion del margen de vector.

Page 135: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 125

Open-Loop Phase (deg)

Ope

n-Lo

op G

ain

(dB

)

Nichols Charts

-180 -160 -140 -120 -100 -80 -60-200

-150

-100

-50

0

50From: U(1)

To: Y

(1)

Figura 2.68: Ejemplo de Diagrama de Nichols para el sistema en l.a. G(s) = s+1s(s+3)(s+5) .

Figura 2.69: Diagrama de Bode del compensador en adelanto para α = 0.1 Kc = 1.

Se nos pide que el sistema en lazo cerrado tenga un error en estado estacionariomenor del 10% ante una entrada rampa y un sobreimpulso Mp < 25%.

El error en estado estacionario viene dado por:

ε(∞) = lims→∞

= s1

1 +D(s)G(s)R(s), (2.139)

donde R(s) = 1/s2 para la rampa unitaria, con lo que la expresion se reduce a:

ε(∞) = lims→∞

=1

s+D(s) 1s+1

=1

D(0)=

1Kcα

, 0 < α < 1. (2.140)

Podemos elegir K = 10 para conseguir el error estacionario deseado (10% = 0.1).Ademas, conociendo la relacion entre el margen de fase y el sobreimpulso (sinφ =

Page 136: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

126 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

1−α1+α , wm = 1/

√αT , Mp ≈ 1

2sin(PM/2)), podemos concluir que necesitamos unPM=45o para conseguir los requerimientos (Fig. 2.70). Ahora solo queda expe-rimentar con algunos valores de α y T para conseguir el compensador deseado:

D(s) = 10s2 + 1s10 + 1

(2.141)

Figura 2.70: Diagramas de Bode para el sistema sin compensar (trazo continuo) y compensado

(trazo discontinuo) mediante red de adelanto.

Compensador PD

El Compensador PD (Control Proporcional Derivativo) es una version simplifi-cada del compensador en adelanto. Su funcion de transferencia es:

D(s) = K(1 + TDs). (2.142)

Se comporta como un filtro pasa alta y se emplea situando z = −1/TD de forma queel adelanto de fase se da cerca de wc, es decir, donde |D(s)G(s)| = 1, de forma queaumente la ganancia (Fig. 2.71).

La magnitud del compensador continua creciendo con la frecuencia. Esto no esdeseable ya que amplifica el ruido de alta frecuencia que esta siempre presente en losproblemas reales. Esto ocurre para w > 1/TD.

Page 137: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 127

Figura 2.71: Diagrama de Bode del Compensador PD.

Compensacion en atraso

Un controlador en atraso tiene la forma:

D(s) = KTs+ 1αTs+ 1

, (2.143)

donde ahora α es mayor que 1. La Fig. 2.72 muestra el diagrama de Bode de estetipo de compensador.

La compensacion por atraso aumenta la magnitud en frecuencias por debajo delos dos puntos de ruptura y por tanto disminuye los errores en estado estacionario.Basicamente se trata de un filtro pasa–baja ya que las frecuencias bajas se mantieneninalteradas y las altas son atenuadas.

El diseno de compensadores en atraso sigue el siguiente protocolo:

• Determinar la ganancia K que satisface el requisito de errors estatico.

• Si el sistema no compensado G1(jw) = KG(jw) no satisface las especificacio-nes de PM y GM, hallar el punto de frecuencias donde φm de la funcion detransferencia en l.a. es −180o + PMrequerido. El PMrequerido es el especificadomas 5o a 12o. Estos grados adicionales compensan el atraso de fase del contro-lador. Elegir esta frecuencia como nueva frecuencia de cruce de ganancia.

Page 138: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

128 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Figura 2.72: Diagramas de Bode de un compensador de atraso.

• El polo y el cero del compensador se deben poner por debajo de la nuevafrecuencia de cruce de ganancia:

w = |1/T | < |wc/8| a |wc/10| (2.144)

• Determinar la atenuacion necesaria para bajar la curva de magnitud a 0 dBen la nueva frecuencia de cruce de ganancia. Esta atenuacion es de −20log10α.Halla α.

• Kc = K/α.

• Verificar el margen de ganancia (GM). Si no se cumple la especificacion modi-ficar la posicion del polo/cero.

Compensador PI

El compensador de control proporcional integral es una version simplificada delcompensador en atraso y actua como un filtro pasa baja. Su funcion de transferenciaes:

D(s) = K(1 +1TIs

) =K

s(s+

1TI

) (2.145)

El aspecto deseado de este compensador es la ganancia ∞ a frecuencia nula quereduce el error estatico. Esto se consigue con el coste de un decrecimiento de la

Page 139: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2.5 Metodo de diseno de la respuesta en frecuencia (MRF) 129

fase por debajo del punto de ruptura w = 1/TI . Por tanto, este punto se situanormalmente a una frecuencia menor que la de cruce para que el PM no quedeafectado mucho. La Fig. 2.73 muestra el efecto de un compensador integral.

Figura 2.73: Diagrama de Bode de un Compensador Integral (PI).

Page 140: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

130 Capıtulo 2. Introduccion a los Sistemas Continuos de Control

Page 141: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Capıtulo 3

Toolbox de Control

ESTE tema revisamos las funciones mas utiles que contiene la Toolbox de Controlde Matlab 5.3 (Mathworks, 1997).

3.1 Organizacion del paquete de Control

La Toolbox de Control es un conjunto de funciones que facilitan la tarea dedisenar compensadores, modelar sistemas SLIT, simular la dinamica de los siste-mas, sus respuestas temporales y frecuenciales ası como el trabajar en tiempo con-tinuo/discreto, espacio de estados, etc.

Las partes esenciales para nuestros intereses son:

Creation of LTI models.

tf - Create a transfer function model.

zpk - Create a zero/pole/gain model.

ss - Create a state-space model.

dss - Create a descriptor state-space model.

frd - Create a frequency response data model.

filt - Specify a digital filter.

set - Set/modify properties of LTI models.

ltimodels - Detailed help on various types of LTI models.

ltiprops - Detailed help on available LTI properties.

Overloaded arithmetic operations.

+ and - - Add and subtract LTI systems (parallel connection).

* - Multiply LTI systems (series connection).

\ - Left divide -- sys1\sys2 means inv(sys1)*sys2.

/ - Right divide -- sys1/sys2 means sys1*inv(sys2).

^ - LTI model powers.

’ - Pertransposition.

.’ - Transposition of input/output map.

Page 142: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

132 Capıtulo 3. Toolbox de Control

[..] - Concatenate LTI models along inputs or outputs.

stack - Stack LTI models/arrays along some array dimension.

inv - Inverse of an LTI system.

Model dynamics.

pole, eig - System poles.

zero - System (transmission) zeros.

pzmap - Pole-zero map.

dcgain - D.C. (low frequency) gain.

norm - Norms of LTI systems.

covar - Covariance of response to white noise.

damp - Natural frequency and damping of system poles.

esort - Sort continuous poles by real part.

dsort - Sort discrete poles by magnitude.

Time response.

ltiview - Response analysis GUI (LTI Viewer).

step - Step response.

impulse - Impulse response.

initial - Response of state-space system with given initial state.

lsim - Response to arbitrary inputs.

gensig - Generate input signal for LSIM.

stepfun - Generate unit-step input.

Frequency response.

ltiview - Response analysis GUI (LTI Viewer).

bode - Bode plot of the frequency response.

sigma - Singular value frequency plot.

nyquist - Nyquist plot.

nichols - Nichols chart.

margin - Gain and phase margins.

freqresp - Frequency response over a frequency grid.

evalfr - Evaluate frequency response at given frequency.

System interconnections.

append - Group LTI systems by appending inputs and outputs.

parallel - Generalized parallel connection (see also overloaded +).

series - Generalized series connection (see also overloaded *).

feedback - Feedback connection of two systems.

lft - Generalized feedback interconnection (Redheffer star product).

connect - Derive state-space model from block diagram description.

Classical design tools.

rltool - Root locus design GUI

rlocus - Evans root locus.

Page 143: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

3.2 Funciones esenciales 133

rlocfind - Interactive root locus gain determination.

acker - SISO pole placement.

place - MIMO pole placement.

estim - Form estimator given estimator gain.

reg - Form regulator given state-feedback and estimator gains.

3.2 Funciones esenciales

En esta seccion se enuncian y describen las funciones basicas de la Toolbox deControl. El formato usado por dicho paquete de funciones consiste en representarlos polinomios de las funciones de transferencia como vectores fila conteniendo suscoeficientes; para representar una funcion de transferencia se usan dos de estos vec-tores, uno para el numerador (num) y el otro para el denominador (den). Ası, unafuncion de transferencia como:

G(s) =3s2 + 6s+ 7s3 − 4.2s+ 8

(3.1)

se introducirıa haciendo:

num = [3 6 7];

den = [1 0 -4.2 8];

o mejor aun:

num = [0 3 6 7];

den = [1 0 -4.2 8];

porque, aun cuando para la mayorıa de las funciones de la Toolbox no es necesarioque numerador y denominador tengan la misma longiud como vectores, alguna deellas lo comprueba, debido al uso interno de la Toolbox de Procesado de Senales(signal), que sigue otra convencion. En el caso de que haya que introducir funcionesque vienen descompuestas en factores, como:

G(s) =3s2 + 6s+ 7

(s+ 2)(s2 + 2s+ 1), (3.2)

se puede multiplicar a mano o usar el comando conv, que multiplica polinomios(convolucion de secuencias), haciendo:

num = [0 3 6 7];

den = conv([1 2],[1 2 1]);

Page 144: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

134 Capıtulo 3. Toolbox de Control

Funciones para la conversion de modelos

residue

Objetivo Descomposicion en fracciones simples.Sinopsis [r,p,k] = residue(num,den)

Descripcion Los vectores num y den son los coeficientes del numerador y denominadorrespectivamente, ordenados de forma decreciente respecto las potenciasde la variable. El vector columna r alamcena los restos, el p la localiza-cion de los polos y el vector fila k almacena el cociente directo.

Ver La operacion [num,den] = residue(r,p,k) realiza la operacion con-traria.

tf2zp

Objetivo Conversion de la funcion de transferencia a la forma ganancia–ceros–polos.

Sinopsis [z,p,k] = tf2zp(num,den)

Descripcion tf2zp encuentra los ceros, polos y la ganancia de una funcion de transfe-rencia en forma polinomica. Los vectores columna z y p almacenan lasposiciones respectivas de ceros y polos. k almacena la ganancia.

Ver zp2tf

zp2tf

Objetivo Conversion de la forma cero–polo–ganancia a la funcion de transferencia.Sinopsis [num, den] = zp2tf(z,p,k)

Descripcion zp2tf construye una funcion de transferencia en forma polinomial a partirde los ceros, polos y ganancia del sistema en forma polinomial. Losvectores p, z y k contienen la misma informacion que la funcion anterior.Los coeficientes del denominador y numerador se almacena en den y num,respectivamente.

Ver tf2zp

Page 145: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

3.2 Funciones esenciales 135

Funciones para el estudio de la respuesta temporal

impulse

Objetivo Respuesta al impulso unidad.Sinopsis [y,x,t] = impulse(num,den), [y,x,t] = impulse(num,den,t)

Descripcion Calcula la respuesta al impulso unidad de un sistema lineal continuo. Sise indica t, este vector hace referencia al vector de tiempos en que secalcula dicha respuesta. La funcion devuelve la respuesta del sistema y lamatriz de estados, respectivamente, evaluados en los puntos t. Cuandose llama sin la parte izquierda, simplemente dibuja la respuesta en unafigura.

Ver lsim, step.

lsim

Objetivo Simulacion de sistemas continuos con entradas arbitrarias.Sinopsis [y,x] = lsim(num,den,u,t)

Descripcion La funcion simula sistemas contiuos con entrada arbitraria u hasta uninstante t. El vector y es la respuesta del sistema y x es la matriz deestados. Cuando se llama sin la parte izquierda, simplemente dibuja larespuesta en una figura.

Ver impulse, step

step

Objetivo Respuesta al escalon unidad.Sinopsis [y,x,t] = step(num,den), [y,x,t] = step(num,den,t)

Descripcion Calcula la respuesta al escalon unidad de un sistema lineal continuo. Sise indica t, este vector hace referencia al vector de tiempos en que secalcula dicha respuesta. La funcion devuelve la respuesta del sistema y lamatriz de estados, respectivamente, evaluados en los puntos t. Cuandose llama sin la parte izquierda, simplemente dibuja la respuesta en unafigura.

Ver lsim, impulse

Page 146: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

136 Capıtulo 3. Toolbox de Control

Funciones para el estudio de la respuesta frecuencial

bode

Objetivo Muestra la respuesta en frecuencia (diagrama de Bode).Sinopsis [mag,phase,w] = bode(num,den)

Descripcion Esta funcion calcula la magnitud y la fase de la respuesta en frecuenciade sistemas lineales continuos. El vector w contiene las frecuencias enrad/s en las cuales la respuesta del sistema es calculada. Si no se pasa, seelige logarıtmicamente espaciado en un rango apropiado, y es devueltopor la funcion. Cuando se llama sin la parte izquierda, simplementedibuja la respuesta en una figura.

Ver margin, nichols, nyquist

margin

Objetivo Calcula los margenes de ganancia y fase.Sinopsis [Gm,Pm,Wcp,Wcg] = margin(mag,phase,w), [Gm,Pm,Wcp,Wcg] =

margin(num,den)

Descripcion Esta funcion calcula el margen de fase (Pm), margen de ganancia (Gm),y las frecuencias de corte asociadas (Wcp, Wcg), a partir de la respuestaen frecuenca de Bode o de la funcion de transferencia. Cuando se llamasin la parte izquierda dibuja la respuesta en la pantalla, situando lıneasverticales en los puntos de corte interesantes, y dando numericamentelos valores de los margenes en el tıtulo de la figura.

Ver bode, nichols, nyquist

ngrid

Objetivo Dibuja las lıneas del Diagrama de Nichols.Sinopsis ngrid, ngrid(‘new’)

Descripcion Esta funcion genera las lıneas de un diagrama de Nichols para una regionentre -40dB y +40dB de magnitud y -360 a 0 grados de fase. Son lıneas demagnitud mag( H

1+H ) y fase constante angle( H1+H ), siendo H un numero

complejo. Con la opcion ‘new’ se borran los graficos anteriores.Ver nichols

nichols

Objetivo Dibuja la respuesta en frecuencia de Nichols.Sinopsis [mag,phase,w] = nichols(num,den), [mag,phase,w] =

nichols(num,den,w)

Descripcion Esta funcion calcula la magnitud y fase de la respuesta en frecuenciade Nichols de sistemas lineales continuos. w se comporta com en loscasos anteriores (mirar bode). Cuando se llama sin la parte izquierda,simplemente dibuja la respuesta en una figura.

Ver bode, margin, nyquist

nyquist

Objetivo Dibuja la respuesta en frecuencia de Nyquist.Sinopsis [re,im,w] = nyquist(num,den)

Descripcion Esta funcion calcula la magnitud y fase de la respuesta en frecuencia deNyquist de sistemas lineales continuos. Los vectores re e im almacenanla parte real e imaginaria de la respuesta para cada punto a lo largo delcamino de Nyquist. w se comporta com en los casos anteriores (mirarbode). Cuando se llama sin la parte izquierda, simplemente dibuja larespuesta en una figura.

Ver bode, margin, nichols

Page 147: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

3.2 Funciones esenciales 137

Propiedades de los modelos

dcgain

Objetivo Calcula la ganancia estatica (DC) del sistema continuo.Sinopsis k = dcgain(num,den)

Descripcion Calcula el lımite cuando s→ 0 de la funcion de transferencia dad comopolinomios de s.

Ver bode

timespec

Objetivo Muestra por pantalla los parametros relevantes de la respuesta transito-ria del sistema.

Sinopsis timespec(num,den)

Descripcion Imprime en la pantalla el tiempo de pico (tp), porcentaje de sobrenivel(Mp), tiempo de subida (tr) y tiempo de establecimiento (ts).

printsys

Objetivo Muestra por pantalla el sistema dado en forma de fraccion.Sinopsis printsys(num,den,’s’)

Descripcion Imprime la funcion de transferencia como una fraccion.

Page 148: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

138 Capıtulo 3. Toolbox de Control

Construccion de los modelos

parallel

Objetivo Conexion en paralelo de dos sistemas.Sinopsis [num,den] = parallel(num1,den1,num2,den2)

Descripcion Esta funcion calcula la funcion de transferencia polinomial de dos siste-mas en paralelo tanto para sistemas continuos como discretos.

Ver feedback, series

series

Objetivo Conexion en serie de dos sistemas.Sinopsis [num,den] = series(num1,den1,num2,den2)

Descripcion Esta funcion calcula la funcion de transferencia polinomial de dos siste-mas en serie tanto para sistemas continuos como discretos.

Ver cloop, feedback, parallel

feedback

Objetivo Conexion retroalimentada de dos sistemas.Sinopsis [num,den] = parallel(num1,den1,num2,den2), [num,den] =

parallel(num1,den1,num2,den2,sign)

Descripcion Esta funcion calcula la funcion de transferencia polinomial de dos siste-mas en retroalimentacion tanto para sistemas continuos como discretos.Aquı se supone realimentacion unitaria. sign se usa para indicar elsigno de realimentacion: vale 1 si es positiva y -1 si es negativa (pordefecto es -1). Normalmente el sistema 1 es la planta y el sistema 2 esel controlador.

Ver parallel, series

ord2

Objetivo Genera sistemas de segundo orden.Sinopsis [num,den] = ord2(wn,ξ)

Descripcion Devuelve la funcion de transferencia de un sistema de segundo orden condos parametros dados: la variable ξ que es el coeficiente de atenuaciony wn que es la frecuencia natural.

minreal

Objetivo Realizacion mınima y cancelacion de polos y ceros.Sinopsis [num,den] = minreal(num,den), [num,den] =

minreal(num,den,tol)

Descripcion Esta es la unica funcion que existe para cancelar polos y ceros comuneso muy proximos cuya influencia en el comportamiento transitorio delsistema se compensa y, por tanto, pueden ser despreciados a casi todoslos efectos. De todos modos, no deberıan tratar de cancelarse polos y cerssituados en regiones inestables. Esta funcion cancela las raıces comunesdel numerador y denominador de la funcion de transferencia que estana una distancia menor que cierta tolerancia, tol, una de otra.

Page 149: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

3.2 Funciones esenciales 139

Funciones para el analisis del Lugar de la Raıces

pzmap

Objetivo Dibuja el diagrama de polos y ceros del sistema.Sinopsis [p,z] = pzmap(num,den)

Descripcion Esta funcion devuelve dos vectores, p y z, conteniendo respectivamentela localizacion de los polos (raıces del denominador) y ceros (raıces delnumerador) de la funcion de transferencia dada. Llamando sin argun-mentos a la parte izquierda, dibuja los polos como cruces y los ceroscomo cırculos en un plano-s.

Ver rlocus, sgrid

rlocus

Objetivo Lugar de las raıces de Evans.Sinopsis r = rlocus(num,den), r = rlocus(num,den,k)

Descripcion Esta funcion obtiene el LGR de un sistema SISO. El vector r contiene lalocalizacion de las raıces. El vector k es el vector de ganancia proporcio-nado por el usuario, que se elige apropiadamente si no se pasa. Cuandose llama sin la parte izquierda, la funcion dibuja el LGR en una figura.

Ver pzmap

sgrid

Objetivo Dibuja lıneas del coeficiente de atenuacion y frecuencia natural constantepara el LGR y diagramas de polos y ceros en el plano continuo.

Sinopsis sgrid, sgrid(‘new’)

Descripcion Genera las lıneas de atenuacion constante de ξ desde 0 hasta 1 en pasosde 0.1, y frecuencia natural normalizada wn desde 0 hasta π en pasos deπ10 . sgrid(‘new’) borra los graficos de la pantalla antes de dibujar larejilla y establece el modo hold on para que el lugar de las raıces o eldiagrama de ceros y polos pueda dibujarse encima.

Ver rlocus, pzmap

Page 150: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

140 Capıtulo 3. Toolbox de Control

3.3 Demostraciones ilustrativas

En cualquier paquete anexo de funciones de Matlab existen dos ordenes basicaspara tener acceso a informacion adicional sobre las caracterısticas de la misma: help< nombre toolbox > y demo. El primero muestra una breve descripcion de cadafuncion de la toolbox en cuestion mientras que la segunda es una acceso a todas lasdemostraciones instaladas junto con el paquete estandar de Matlab.

Si nos fijamos en el contenido de contents tenemos las siguientes demostraciones:

Demonstrations.

ctrldemo - Introduction to the Control System Toolbox.

jetdemo - Classical design of jet transport yaw damper.

diskdemo - Digital design of hard-disk-drive controller.

milldemo - SISO and MIMO LQG control of steel rolling mill.

kalmdemo - Kalman filter design and simulation.

El caso de las demos “visuales” de la Toolbox de Control tenemos las siguientes:

Model analysis example

Digital Control of a Disk drive

Command Line demos

Todas las Toolbox de Matlab llevan una ayuda muy extensa tanto en HTML comoen PDF que podemos encontrar en c:\Matlab\help\html_doc y en c:\Matlab\

help\pdf_doc. En cualquier caso, podemos emplear el comando help para conseguirayuda de cualquier funcion. Por ejemplo:

help rlocus

RLOCUS Evans root locus.

RLOCUS(SYS) computes and plots the root locus of the single-input,

single-output LTI model SYS. The root locus plot is used to

analyze the negative feedback loop

+-----+

---->O----->| SYS |----+---->

-| +-----+ |

| |

| +---+ |

+-------| K |<----+

+---+

and shows the trajectories of the closed-loop poles when the feedback

gain K varies from 0 to Inf. RLOCUS automatically generates a set of

positive gain values that produce a smooth plot.

Page 151: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

3.4 Herramientas de Control con Matlab en Internet 141

RLOCUS(SYS,K) uses a user-specified vector K of gains.

[R,K] = RLOCUS(SYS) or R = RLOCUS(SYS,K) returns the matrix R

of complex root locations for the gains K. R has LENGTH(K) columns

and its j-th column lists the closed-loop roots for the gain K(j).

See also RLTOOL, RLOCFIND, POLE, ISSISO, LTIMODELS.

Overloaded methods

help lti/rlocus.m

help frd/rlocus.m

3.4 Herramientas de Control con Matlab en Internet

Las ventajas de simulacion y control de sistemas complejos en un entorno sencillocomo MATLAB, junto con el rapido desarrollo y expansion de la red de ordenadoresha permitido el intercambio de ficheros, demostraciones, aplicaciones alternativas,referencias, etc. En esta seccion resenamos algunas de las direcciones mas ilustrativasde esto que decimos:

• Control Tutorials for Matlab: http://www.engin.umich.edu/group/ctm/

• CCSDEMO for Matlab 5 y Matlab/Simulink macros: http://www.control.

lth.se/~kursdr/tools.html

• Sitio Web de Mathworks: http://www.mathworks.com

• Libros de Control de Procesos: http://www-europe.mathworks.com/books

• PID Tuning, Analysis, and Simulation Software: http://www.expertune.com/

• Laboratorio Virtual de Control de la Universidad de Bochum (Alemania):http://www.esr.ruhr-uni-bochum.de/VCLab/

• Course on Fuzzy and Neural Control : http://lcewww.et.tudelft.nl/~babuska/

• DISC Group: http://www.disc.tudelft.nl/

• Exploring the s-Plane: http://www.jhu.edu/~signals/explore/index.html

• The Joy of Convolution: http://www.jhu.edu/~signals/convolve/index.html

• Representacion frecuencial de dos polo/ceros: http://www-hadoc.ensieg.

inpg.fr/hadoc/continu/n06/r06-03.htm

• Para curiosos: http://www.esr.ruhr-uni-bochum.de/cacsd/teachware/projects.html

Page 152: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

142 Capıtulo 3. Toolbox de Control

Page 153: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Capıtulo 4

Introduccion al Entorno

Simulink

Page 154: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Quick Start

Running a Demo Model . . . . . . . . . . . . . . . 2-2Description of the Demo . . . . . . . . . . . . . . . . 2-3Some Things to Try . . . . . . . . . . . . . . . . . . 2-4What This Demo Illustrates . . . . . . . . . . . . . . 2-5Other Useful Demos . . . . . . . . . . . . . . . . . 2-5

Building a Simple Model . . . . . . . . . . . . . . 2-6

Page 155: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2 Quick Start

2-2

Running a Demo ModelAn interesting demo program provided with Simulink models thethermodynamics of a house. To run this demo, follow these steps:

1 Start MATLAB. See your MATLAB documentation if you’re not sure how todo this.

2 Run the demo model by typing thermo in the MATLAB command window.This command starts up Simulink and creates a model window that containsthis model.

When you open the model, Simulink opens a Scope block containing two plotslabeled Indoor vs. Outdoor Temp and Heat Cost ($), respectively.

3 To start the simulation, pull down the Simulation menu and choose theStart command (or, on Microsoft Windows, press the Start button on theSimulink toolbar). As the simulation runs, the indoor and outdoortemperatures appear in the Indoor vs. Outdoor Temp plot and thecumulative heating cost appears in the Heat Cost ($) plot.

Page 156: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2-3

4 To stop the simulation, choose the Stop command from the Simulationmenu (or press the Pause button on the toolbar). If you want to explore otherparts of the model, look over the suggestions in “Some Things to Try” on page2-4.

5 When you’re finished running the simulation, close the model by choosingClose from the File menu.

Description of the DemoThe demo models the thermodynamics of a house using a simple model. Thethermostat is set to 70 degrees Fahrenheit and is affected by the outsidetemperature, which varies by applying a sine wave with amplitude of 15degrees to a base temperature of 50 degrees. This simulates daily temperaturefluctuations.

The model uses subsystems to simplify the model diagram and create reusablesystems. A subsystem is a group of blocks that is represented by a Subsystemblock. This model contains five subsystems: one named Thermostat, one namedHouse, and three Temp Convert subsystems (two convert Fahrenheit toCelsius, one converts Celsius to Fahrenheit).

The internal and external temperatures are fed into the House subsystem,which updates the internal temperature. Double-click on the House block tosee the underlying blocks in that subsystem.

House subsystem

Page 157: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2 Quick Start

2-4

The Thermostat subsystem models the operation of a thermostat, determiningwhen the heating system is turned on and off. Double-click on the block to seethe underlying blocks in that subsystem.

Both the outside and inside temperatures are converted from Fahrenheit toCelsius by identical subsystems

When the heat is on, the heating costs are computed and displayed on the HeatCost ($) plot on the Thermo Plots Scope. The internal temperature is displayedon the Indoor Temp Scope.

Some Things to TryHere are several things to try to see how the model responds to differentparameters:

• Each Scope block contains one or more signal display areas and controls thatenable you to select the range of the signal displayed, zoom in on a portion ofthe signal, and perform other useful tasks. The horizontal axis representstime and the vertical axis represents the signal value. For more informationabout the Scope block, see Chapter 8.

• The Constant block labeled Set Point (at the top left of the model) sets thedesired internal temperature. Open this block and reset the value to 80degrees while the simulation is running. See how the indoor temperatureand heating costs change. Also, adjust the outside temperature (the AvgOutdoor Temp block) and see how it affects the simulation.

• Adjust the daily temperature variation by opening the Sine Wave blocklabeled Daily Temp Variation and changing the Amplitude parameter.

Thermostat subsystem

Fahrenheit to Celsius conversion (F2C)

Page 158: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2-5

What This Demo IllustratesThis demo illustrates several tasks commonly used when building models:

• Running the simulation involves specifying parameters and starting thesimulation with the Start command, described in detail in Chapter 4.

• You can encapsulate complex groups of related blocks in a single block, calleda subsystem. Creating subsystems is described in detail in Chapter 3.

• You can create a customized icon and design a dialog box for a block by usingthe masking feature, described in detail in Chapter 6. In the thermo model,all Subsystem blocks have customized icons created using the maskingfeature.

• Scope blocks display graphic output much as an actual oscilloscope does.Scope blocks are described in detail in Chapter 8.

Other Useful DemosOther demos illustrate useful modeling concepts. You can access these demosfrom the Simulink block library window:

1 Type simulink3 in the MATLAB command window. The Simulink blocklibrary window appears.

2 Double-click on the Demos icon. The MATLAB Demos window appears. Thiswindow contains several interesting sample models that illustrate usefulSimulink features.

The Demos icon

Page 159: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2 Quick Start

2-6

Building a Simple ModelThis example shows you how to build a model using many of the model buildingcommands and actions you will use to build your own models. The instructionsfor building this model in this section are brief. All of the tasks are describedin more detail in the next chapter.

The model integrates a sine wave and displays the result, along with the sinewave. The block diagram of the model looks like this.

To create the model, first type simulink in the MATLAB command window. OnMicrosoft Windows, the Simulink Library Browser appears.

On UNIX, the Simulink library window appears.

Page 160: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Building a Simple Model

2-7

To create a new model on UNIX, select Model from the New submenu of theSimulink library window’s File menu. To create a new model on Windows,select the New Model button on the Library Browser’s toolbar.

Simulink opens a new model window.

You might want to move the new model window to the right side of your screenso you can see its contents and the contents of block libraries at the same time.

To create this model, you will need to copy blocks into the model from thefollowing Simulink block libraries:

• Sources library (the Sine Wave block)

• Sinks library (the Scope block)

• Continuous library (the Integrator block)

• Signals & Systems library (the Mux block)

You can copy a Sine Wave block from the Sources library, using the LibraryBrowser (Windows only) or the Sources library window (UNIX or Windows).

New Model button

Page 161: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2 Quick Start

2-8

To copy the Sine Wave block from the Library Browser, first expand theLibrary Browser tree to display the blocks in the Sources library. Do this byclicking first on the Simulink node to display the Sources node, then on theSources node to display the Sources library blocks. Finally click on the SineWave node to select the Sine Wave block. Here is how the Library Browsershould look after you have done this.

Now drag the Sine Wave node from the browser and drop it in the modelwindow. Simulink creates a copy of the Sine Wave block at the point where youdropped the node icon.

To copy the Sine Wave block from the Sources library window, open the Sourceswindow by double-clicking on the Sources icon in the Simulink library window.(On Windows, you can open the Simulink library window by right-clicking the

Simulink library

Sources library

Sine Wave block

Page 162: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Building a Simple Model

2-9

Simulink node in the Library Browser and then clicking the resulting OpenLibrary button.) Simulink displays the Sources library window.

Now drag the Sine Wave block from the Sources window to your model window.

Copy the rest of the blocks in a similar manner from their respective librariesinto the model window. You can move a block from one place in the modelwindow to another by dragging the block. You can move a block a short distanceby selecting the block, then pressing the arrow keys.

The Sine Wave block

Page 163: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2 Quick Start

2-10

With all the blocks copied into the model window, the model should looksomething like this.

If you examine the block icons, you see an angle bracket on the right of the SineWave block and two on the left of the Mux block. The > symbol pointing out ofa block is an output port; if the symbol points to a block, it is an input port. Asignal travels out of an output port and into an input port of another blockthrough a connecting line. When the blocks are connected, the port symbolsdisappear.

Now it’s time to connect the blocks. Connect the Sine Wave block to the topinput port of the Mux block. Position the pointer over the output port on theright side of the Sine Wave block. Notice that the cursor shape changes to crosshairs.

Hold down the mouse button and move the cursor to the top input port of theMux block. Notice that the line is dashed while the mouse button is down andthat the cursor shape changes to double-lined cross hairs as it approaches theMux block.

Output portInput port

Page 164: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Building a Simple Model

2-11

Now release the mouse button. The blocks are connected. You can also connectthe line to the block by releasing the mouse button while the pointer is insidethe icon. If you do, the line is connected to the input port closest to the cursor’sposition.

If you look again at the model at the beginning of this section (see “Building aSimple Model” on page 2-6), you’ll notice that most of the lines connect outputports of blocks to input ports of other blocks. However, one line connects a lineto the input port of another block. This line, called a branch line, connects theSine Wave output to the Integrator block, and carries the same signal thatpasses from the Sine Wave block to the Mux block.

Drawing a branch line is slightly different from drawing the line you just drew.To weld a connection to an existing line, follow these steps:

1 First, position the pointer on the line between the Sine Wave and the Muxblock.

2 Press and hold down the Ctrl key. Press the mouse button, then drag thepointer to the Integrator block’s input port or over the Integrator block itself.

Page 165: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

2 Quick Start

2-12

3 Release the mouse button. Simulink draws a line between the starting pointand the Integrator block’s input port.

Finish making block connections. When you’re done, your model should looksomething like this.

Now, open the Scope block to view the simulation output. Keeping the Scopewindow open, set up Simulink to run the simulation for 10 seconds. First, setthe simulation parameters by choosing Parameters from the Simulationmenu. On the dialog box that appears, notice that the Stop time is set to 10.0(its default value).

Stop time parameter

Page 166: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Building a Simple Model

2-13

Close the Simulation Parameters dialog box by clicking on the Ok button.Simulink applies the parameters and closes the dialog box.

Choose Start from the Simulation menu and watch the traces of the Scopeblock’s input.

The simulation stops when it reaches the stop time specified in the SimulationParameters dialog box or when you choose Stop from the Simulation menu.

To save this model, choose Save from the File menu and enter a filename andlocation. That file contains the description of the model.

To terminate Simulink and MATLAB, choose Exit MATLAB (on a MicrosoftWindows system) or Quit MATLAB (on a UNIX system). You can also typequit in the MATLAB command window. If you want to leave Simulink but notterminate MATLAB, just close all Simulink windows.

This exercise shows you how to perform some commonly used model-buildingtasks. These and other tasks are described in more detail in Chapter 3.

Page 167: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

144 Capıtulo 4. Introduccion al Entorno Simulink

Page 168: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Capıtulo 5

Practicas

Page 169: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

146 Capıtulo 5. Practicas

Practica 0

Ejemplos sencillos, cuestiones y demos.

En esta primera practica se proponen (y en algunos casos se proporciona lasolucion) algunos problemas sencillos en el manejo de comandos de la Toolbox deControl. Su uso sera mas exhaustivo en las practicas posteriores.

1. Ejemplo 1. Descomponer en fracciones simples el sistema:

G(s) =3s2 + 4s+ 52s2 + 2s+ 3

, (5.1)

[r,p,k]=residue([3 4 5],[2 2 3])

2. Ejemplo 2. Representa en una misma figura las respuestas del sistema ante-rior al impulso, el escalon unitario, rampa unitaria y la funcion ‘sinc’ hasta untiempo t = 10.

subplot(221),grid,impulse([3 4 5],[2 2 3],10),title(’Resp. Impulso’)

subplot(222),grid,step([3 4 5],[2 2 3],10),title(’Resp. Escalon’)

subplot(223),grid,lsim([3 4 5],[2 2 3],0:10,0:10),title(’Resp. Rampa’)

subplot(224),grid,lsim([3 4 5],[2 2 3],sinc(0:10),0:10),title(’Resp. Sinc’)

3. Ejemplo 3. Representa la respuesta en frecuencia del sistema anterior.

4. Ejemplo 4. Calcula la ganancia estatica del sistema anterior.

>> dcgain([3 4 5],[2 2 3])

5. Ejemplo 5. Dibuja la respuesta en frecuencia de Nichols del sistema, repre-sentando el grid correspondiente:

G(s) =3s8 + 1.44s5 + 5s+ 3

(1.44s+ 2.2)(4s7 + 2.44s4 + 3.3s3 + 3), (5.2)

>> ngrid,

>> nichols([3 0 0 1.44 0 0 0 5 3],

>> conv([1.44 2.2],[4 0 0 2.44 3.3 0 0 3]))

Page 170: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

147

Time (sec.)

Ampl

itude

Resp. Impulso

0 2 4 6 8 10-0.2

0

0.2

0.4

0.6From: U(1)

To: Y

(1)

Time (sec.)

Ampl

itude

Resp. Escalón

0 2 4 6 8 101.5

1.6

1.7

1.8

1.9From: U(1)

To: Y

(1)

Time (sec.)

Ampl

itude

Resp. Rampa

0 2 4 6 8 100

5

10

15

20

To: Y

(1)

Time (sec.)

Ampl

itude

Resp. Sinc

0 2 4 6 8 10-0.5

0

0.5

1

1.5

To: Y

(1)

Figura 5.1: Respuestas del sistema del ejemplo 01 al impulso, el escalon unitario, rampa unitaria

y la funcion ‘sinc’ hasta un tiempo t = 10.

6. Ejemplo 6. Dado el sistema de segundo orden que tiene la siguiente funcionde transferencia en lazo cerrado:

Y (s)X(s)

=2

(s+ 1)(s+ 1), (5.3)

representar su respuesta ante la entrada escalon con step. Obtener graficamentelos valores de Ts, Tp, Mp y Tr. Comprobar los valores con timespec.

7. Ejemplo 7. Usando las funciones series, parallel y feedback, obtener lafuncion de transferencia Y (s)

R(s) del sistema siguiente:

Gc(s) =s+ 1s+ 2

, G(s) =1

500s2(5.4)

+R(s)

-G(s)

Y(s)Gc(s)

Figura 5.2: Sistema del ejercicio 07.

8. Ejemplo 8. Encontrar las raıces de la ecuacion caracterıstica del sistema dela figura siguiente. ¿Es estable?

Page 171: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

148 Capıtulo 5. Practicas

G(s) =1

s3 + s2 + 2s+ 23. (5.5)

>> roots([1 1 2 23])

9. Ejemplo 9. Si la ecuacion caracterıstica de un sistema es:

q(s) = s3 + s2 + 4s+K = 0, (5.6)

encontrar el rango de K en que el sistema es estable.

10. Ejemplo 10. Encuentra el rango de K para que las raıces del siguiente polino-mio esten en el semiplano izquierdo. Comprueba graficamente los resultados:

q(s) = s5 + 5s4 + 10s3 + 10s2 + 5s+K = 0, (5.7)

11. Ejemplo 11. Generar con la orden ord2 un sistema de segundo orden. Re-presenta graficamente su respuesta ante un impulso, el escalon unitario, rampaunitaria y la funcion ‘sin’ hasta un tiempo t = 10. Dibujar el diagrama depolos y ceros usando pzmap.

12. Ejemplo 12. Ejecuta jetdemo.

13. Ejemplo 13. Ejecuta ctrldemo.

14. Ejemplo 14. Ejecuta diskdemo.

15. Ejemplo 15. Ejecuta ltimodels y ltiprops.

16. Ejemplo 16. Obtener el Diagrama de Bode del sistema de control con lazode realimentacion unitario siguiente:

G(s) =K

s(s+ 2)(s+ 50), (5.8)

para una ganancia K = 1300.

17. Ejemplo 17. Para el sistema en lazo cerrado siguiente:

T (s) =438

s3 + 52s2 + 100s+ 438, (5.9)

se pide:

Page 172: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

149

• Obtener la respuesta en frecuencia del sistema.

• Determinar el ancho de banda del sistema.

• Determinar la magnitud del pico de resonancia.

>> K=438;

>> num = [K]

>> den = [1 52 100 K]

>> w = 0:.1:10;

>> [mag,phase] = bode(num,den,w);

>> plot(w,mag),

>> title(’Respuesta de amplitud del sistema en lazo cerrado.’)

>> grid, pause, frqspec(w,mag)

18. Ejemplo 18. Para un sistema G(s) = 1s(s+2) con una ganancia en serie K

y lazo de realimentacion unitario, se pide calcular K para que la salida y(t)tenga un sobrenivel menor del 10% ante la entrada escalon.

19. Ejemplo 19. ¿Que informacion proporciona el comando ltimodels?

20. Ejemplo 20. ¿Para que sirve el comando ltiview? Inspecciona durante unosinstantes sus propiedades.

21. Ejemplo 21. Considera un sistema con los siguientes polos (‘x’) y ceros (‘o’):

Re

1

Im

The system is

a) stable b) unstable c) stability cannot be determined

7. For annth-order system

x(k + 1) = Φx(k) + Γu(k)

y(k) = Cx(k) + Du(k)

the controllability matrixWc is given by:

a) Wc = Φn b) Wc =(Γ ΦΓ . . . Φn−1Γ

)c) Wc =

(C CΦ . . . CΦn−1

)T

8. A discrete-time system

x(k + 1) = Φx(k) + Γu(k)

y(k) = Cx(k) + Du(k)

of ordern is controlled by a state-feedback control lawu(k) = −Lx(k). The resultingclosed-loop system will be of order:

a) 2n b) n c) 0

9. Consider a discrete-time system controlled by a feedback controller. In order to eliminatesteady-state errors, an integrator can be inserted in the loop. If zero steady-state error isrequired for a step reference signal,

a) it is always necessary to insert an integrator in the loop,

b) it is only necessary to insert an integrator in the loop if the discrete-time system hasno poles in 1,

c) it is not necessary to insert an integrator in the loop because for a step reference, azero steady-state error is obtained, no matter where the system’s poles are.

2

Figura 5.3: Diagrama de polos y ceros del ejemplo 21.

¿El sistema es estable, inestable o no se puede determinar?

Page 173: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

150 Capıtulo 5. Practicas

Practica 1

Controladores P/I/D/PID. Compensacion dinamica.

A. Retroalimentacion P, I, D, PID

Dado el sistema:

G(s) =1

s(s+ 1)(5.10)

• Supon una retroalimentacion proporcional Kp. ¿Cual es el efecto de la retroa-limentacion proporcional sobre el error estacionario? ¿Cual es el efecto sobreel tiempo de subida? ¿Y sobre la amortiguacion?

• Supon una retroalimentacion integral y varıa K/TI , ¿Cual es el efecto de laretroalimentacion integral sobre el error estacionario? ¿Que ocurre con la es-tabilidad? ¿Y sobre la amortiguacion?

• Supon una retroalimentacion diferencia. ¿Afecta esta por sı sola al error enestado estacionario? ¿Y a la estabilidad?

• Supon una retroalimentacion PID. Comprobar que Kp y 1/TI crecientes redu-cen los errores, 1/TI creciente reduce la estabilidad, y TD creciente mejora laestabilidad.

B. LGR y seleccion de ganancia (I)

Dado el sistema:

KG(s) =K((s+ 1)2) + 1s2(s+ 2)(s+ 3)

(5.11)

• Rerpesentar la localizacion de los polos y ceros de G(s), mostrando el segmentodel LGR sobre el eje real.

• ¿Cuales son los angulos de llegada a los ceros complejos y los angulos de salidadesde los polos?

• ¿Cuales son las asıntotas?

• ¿Cual es el cruce del LGR con el eje imaginario? Usa el Criterio de Routh paraverificar los puntos de cruce.

• ¿Cuales son los puntos de ruptura?

Page 174: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

151

• Dibuja el LGR completo para K > 0 y comprueba el resultado usando lafuncion rlocus de MATLAB.

C. LGR y seleccion de ganancia (II)

Dado el sistema:

KG(s) =K

s(s2 + 6s+ 12), (5.12)

• Dibuja el LGR completo para K > 0 y comprueba el resultado usando lafuncion rlocus de MATLAB.

• ¿Cual es el valor de K en el punto donde las raıces complejas en lazo cerradotienen un coeficiente de amoriguamiento ξ = 0.5? Usa las funciones rlocfindy sgrid.

D. Compensacion dinamica: redes de adelanto y atraso (I)

Dado el sistema:

G(s) =K

s(s+ 1), (5.13)

y el compesador:

D(s) =s+ z

s+ p, (5.14)

• Estudiar el efecto de una red de adelanto y atraso sobre el LGR y sobre losparametros de la respuesta transitoria, para diferentes valores de z, p y z/p.

• Comprobar que un compensador de adelanto reduce el tiempo de subida y elsobrenivel y uno de atraso mejora la precision en estado estacionario.

• Recordar que la red de adelanto es una aproximacion al control diferencial yla red de atraso es una aproximacion al control integral.

E. Compensacion dinamica: redes de adelanto y atraso (II)

Un diagrama de bloques de la posicion de un servomecanismo se muestra en laFigura 5.4.

• Dibuja el LGR en funcion de K para KT = 0.

Page 175: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

152 Capıtulo 5. Practicas

R(s) +

-

+

-K 1

s+11s

KT

Y(s)

Figura 5.4: Sistema del apartado E.

• Indica sobre el LGR obtenido las localizaciones de las raıces correspondientesa K = 4. Para esas localizaciones estima los parametros de la respuesta tran-sitoria Tr, Ts y Mp. Comprueba el resultado representado la salida del sistemaante el escalon unitario y empleando tambien la funcion timespec.

• Para K = 4, dibuja el LGR en funcion de KT .

• Para K = 4 y KT ubicado de modo que Mp = 0.5, o sea ξ = 0.707, estima Tr

y Ts. Comprueba el resultado de las estimaciones.

• Para los parametros del apartado anterior, ¿cual es la constante de velocidadKv de este sistema?

F. Compensacion dinamica: redes de adelanto y atraso (III)

Sea el sistema continuo con funcion de transferencia en lazo abierto:

G(s) =4

s(s+ 1), (5.15)

• Obtener la salida ante entrada escalon y los parametros de la respuesta tran-sitoria.

• Se pide disenar un compensador que cumpla las siguientes especificaciones:constante de tiempo 1.27 sec. (τ = 1.27sec.), tiempo de pico menor de 1.5 sec.(Tp ≤ 1.5sec.), error de velocidad menor que 1 (ev ≤ 1).

• Obtener analıticamente la posicion de polo y cero que harıan al sistema cum-plirlas. Dibujar las lıneas de amortiguamiento constante y frecuencia naturalconstante que pasan por esos polos (comando sgrid). Dibujar el LGR y decir,de acuerdo a la deformacion que este deberıa sufrir, que tipo de regulador harıafalta. ¿Por que un regulador proporcional no es adecuado?

• Buscar la posicion adecuada para el polo y cero, y anadirlos, dibujando denuevo el LGR. Comprobar que las especificaciones efectivamente se cumplen.

Page 176: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

153

• Obtener la salida ante entrada rampa y el error de velocidad.

• Usar el comando rldesign para obtener los parametros para controladoresde tipo PI, PD y PID. ¿Que les ocurre a los PI? ¿Por que? (Recuerdese lasemejanza entre adelanto de fase–PD y atraso de fase–PI). Obtener para cadacaso la respuesta ante escalon y los parametros de la respuesta transitoria.Comprobarlos con el primer regulador disenado. En el caso de los PD, estudiartambien la respuesta ante entrada ramap y error de velocidad. ¿Cual se esperay cual se obtiene?

Page 177: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

154 Capıtulo 5. Practicas

Practica 2

Analisis de la respuesta en frecuencia y diseno de compensadores.

A. Bode, Nichols y Nyquist, Margenes de fase y de ganancia.

Obtener el diagrama de Bode (magnitud y fase) del sistema de control cuyafuncion de transferencia en lazo abierto es:

GH(s) =10

s(s+ 2)(s+ 50)(5.16)

• Obtener tambien el diagrama de Nyquist y el de Nichols. Medir graficamentesobre estos tres diagramas el MF y el MG. Comprobar el resultado con la ordenmargin.

• Estudiar como varıa el Diagrama de Bode y el de Nyquist en funcion de laposicion, numero de ceros y polos de la funcion de transferencia de un sistemaen lazo abierto.

B. Criterio de estabilidad de Nyquist.

La funcion de transferencia de un sistema en lazo abierto es:

GH(s) =K(s+ 1)

(s− 2)(s− 4)(5.17)

Obtener el diagrama de Nyquist para K=12, 6 y 4 usando la funcion nyquist ydeterminar si el sistema es estable o no. ¿Que ocurre para valores K < 6?

C. Diseno en el dominio de la frecuencia.

• Para el sistema con funcion de transferencia en lazo abierto:

G(s) =K

s(0.1s+ 1)(s+ 1), (5.18)

disenar un compensador de adelanto Gc(s) tal que el margen de fase sea 45o,el margen de ganancia no sea menor de 8dB y el coeficiente de error estaticode velocidad Kv sea 4.0 s−1. Comprobar que se cumplen las especificacionesdel sistema compensado.

• Para el sistema con funcion de transferencia en lazo abierto:

G(s) =8

s(s+ 1)(s+ 4), (5.19)

Page 178: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

155

disenar un compesador en atraso (“phase-lag”) tal que el sistema tenga unmargen de fase de 45o y un error en estado estacionario de 0.05 para una entradarampa. Usa la funcioon frdesign. Dibujar la respuesta ante la entrada rampay comprobar que se cumplen las especificaciones.

• Para el sistema con funcion de transferencia en lazo abierto:

G(s) =50

s(s+ 1)(s+ 4)(s+ 5), (5.20)

se pide:

– Disenar un controlador PD para que el sistema compensado tenga unmargen de fase de 50o. Comprobar que se cumplen las especificaciones.

– Disenar un controlador PI para que el sistema compensado tenga un mar-gen de fase de 50o. Comprobar que se cumplen las especificaciones.

– Disenar un controlador PID para que el sistema compensado tenga unmargen de fase de 50o. Comprobar que se cumplen las especificaciones.Elegir KI = 0.01. Usar la funcion frdesign.

Page 179: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

156 Bibliografıa.

P1. Introduccion a los Sistemas de Control (I)

Práctica 3

Introduccion a los Sistemas de Control (I)

En esta tercera práctica veremos algunas de las instrucciones básicas que Matlab ofre-ce para el estudio de los sistemas de control. Ademas, veremos como las caracterısticasdinamicas de un sistema pueden mejorarse mediante su adecuada realimentacion.

1. Sistemas de Primer Orden

Los sistemas continuos de primer orden y de coeficientes constantes estan descritospor una ecuacion diferencial de la forma y(t)/a + y(t) = u(t), y por tanto su funcion detransferencia sera H1(s) = 1

s/a+1 , que introduciremos en Matlab haciendo,

a=1numH1=[1]denH1=[1/a 1]

Su diagrama de Bode puede obtenerse haciendo,

freqs(numH1, denH1)

o tambien,

Bode(numH1, denH1)

donde se observan las caıdas de fase y de ganancia de 900 y de −20db/dec (= 1dec/dec)respectivamente. Su respuesta al escalon unitario es,

step(numH1, denH1)

El equivalente discreto de este sistema puede obtenerse mediante el metodo del bloquea-dor de orden cero, con un periodo de muestreo T = 0.1 segundo,

T=0.1[numH1z, denH1z]=c2dm(numH1, denH1, T, ’zoh’)y=dstep(numH1z, denH1z);dstep(numH1z, denH1z)

Para verificar que los sistemas analogico y digital son equivalentes, representamos si-multaneamente sus respuestas al escalon unitario (fig.1),

step(numH1, denH1)hold onplot([0:size(y,1)-1]*T, y,’o’)

Si usamos la transformacion bilineal o de Tustin,

1

Page 180: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Bibliografıa. 157

P1. Introduccion a los Sistemas de Control (I)

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Time (secs)

Am

plitu

de

Respuesta ante 1(t) de H1(s) y H1(z) con ZOH y T=0.1

Figura 1: Respuestas ante entrada escalon unitario del sistema de primer orden continuoy de su discreto equivalente (obtenido con el metodo del bloqueador de orden cero y unperiodo de muestreo T=0.1 segundo).

[numH1z, denH1z]=c2dm(numH1, denH1, T, ’tustin’)y=dstep(numH1z, denH1z);step(numH1, denH1)hold onplot([0:size(y,1)-1]*T, y,’o’)

2. Sistemas de Segundo Orden

Consideramos ahora un sistema de segundo orden H(s) = 1(s/ω0)2+2ζ(s/ω0)+1 . Cuando

el coeficiente de amortiguamiento ζ es mayor que 1 los dos polos son reales, y cuando esmenor que 1 son complejos. Tomamos una frecuencia natural o de resonancia ω0=1rad/s,y un coeficiente de amortiguamiento ζ=0.1,

zeta=0.1numH2=[1]denH2=[1 2*zeta 1]

cuyo diagrama de Bode se obtiene haciendo,

Bode(numH2, denH2)

donde se observa la caıda de fase de 1800 en ω0=1. El pico de la ganancia en la resonanciase puede calcular como Q(db) ≡ 1

2ζ (db), o sea,

Q=1/(2*zeta)20*log10(Q)

2

Page 181: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

158 Bibliografıa.

P1. Introduccion a los Sistemas de Control (I)

siendo Q el llamado factor de calidad asociado al par de polos conjugados.Es conocido que un sistema de segundo orden con ζ < 1 tiene, ante entrada escalon unita-

rio, un tiempo de establecimiento ts ≈ πω0ζ

y una sobreoscilacion Mp(%) = 100 exp( −πζ√1−ζ2

),

que en nuestro caso son,

ts=pi/zetaMp=100*exp(-pi*zeta/(1-zeta^2)^0.5)step(numH2, denH2)

3. Realimentacion

A continuacion realimentaremos convenientemente el sistema de segundo orden paramodificar su dinamica, de forma que el sistema resultante no oscile y su tiempo de es-tablecimiento sea menor. Utilizaremos una compensacion de la forma C(s) = s+ωz

s+ωp , conωz = 1rad/s y ωp = 100rad/s,

numC=[1 1]denC=[1 100]

que conectaremos en serie con el sistema de segundo orden,

[numGH, denGH]=series(numH2, denH2, numC, denC)

Veamos como es el diagrama de Bode resultante (fig.2),

Bode(numGH, denGH)

10−1

100

101

102

103

−150

−100

−50

0

Frequency (rad/sec)

Gai

n dB

10−1

100

101

102

103

−90

−180

0

90

Frequency (rad/sec)

Pha

se d

eg

Figura 2: Diagrama de Bode de la ganancia de lazo antes de ajustar la ganancia.

Observamos que alrededor de ω = 10rad/s la fase de GH es de aproximadamente −900.Si desplazamos el Bode de la ganancia hacia arriba sin modificar el de la fase (multiplicando

3

Page 182: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Bibliografıa. 159

P1. Introduccion a los Sistemas de Control (I)

GH por una ganancia), podremos situar el cruce de la ganancia por los 0db en ω = 10rad/s,obteniendo un margen de fase optimo de aproximadamente 900. En el diagrama de Bodese observa que sera necesaria una ganancia adicional de aproximadamente 60db ≡ 1000, loque comprobamos haciendo,

Bode(1000*numGH, denGH)

La ganancia de lazo definitiva sera,

numGH=1000*numGH

Para establecer la realimentacion y obtener el sistema en lazo cerrado haremos,

[numF, denF]=feedback(numGH, denGH, 1, 1)

Podemos ahora comparar las respuestas al escalon unitario de los sistemas sin realimen-tar y realimentado (fig.3),

t=0:0.1:50;yH2=step(numH2, denH2, t);yF=step(numF, denF, t);plot(t, yH2, t, yF, t, ones(size(t)), ’--’)grid

observando que el sistema compensado es mucho mas rapido y estable que el sistema desegundo orden de partida.

0 5 10 15 20 25 30 35 40 45 500

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

Figura 3: Respuestas ante escalon del sistema original y el compensado.

4. Error Estatico

Sin embargo, apreciamos un error estatico ante la entrada escalon (error de posicion),que no tenıa el sistema de segundo orden de partida. Para eliminar el error sera necesarioque el sistema sea de tipo 1, es decir, que GH(s) tenga un polo en el origen. MultiplicamosGH(s) por s+ωz2

s , con ωz2 = 1rad/s,

4

Page 183: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

160 Bibliografıa.

P1. Introduccion a los Sistemas de Control (I)

[numGH2, denGH2]=series(numGH, denGH, [1 1], [1 0])

El nuevo diagrama de Bode sera ahora,

Bode(numGH2, denGH2)

conservandose el margen de fase y la frecuencia de cruce (por encima de ωz2 el nuevocompensador no altera a GH).

Finalmente cerramos el lazo y atacamos con un escalon unitario al nuevo sistema,

[numF2, denF2]=feedback(numGH2, denGH2, 1, 1)step(numF2, denF2)grid

del que hemos eliminado el error de posicion (fig.4).

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

0.2

0.4

0.6

0.8

1

1.2

Time (secs)

Am

plitu

de

Figura 4: Respuesta del sistema compensado ante entrada escalon unitario una vez elimi-nado el error de posicion.

5

Page 184: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Bibliografıa. 161

P2. Introduccion a los Sistemas de Control (II)

Práctica 4

Introduccion a los Sistemas de Control (II)

En esta practica se repasan los conceptos de “sistema reducido equivalente”, “frecuen-cia de cruce”, “margen de fase”, “margen de ganancia”, etc., mediante su aplicacion avarios ejemplos concretos. Se pretende ademas que el alumno adquiera cierta madurez enel analisis frecuencial de los sistemas a traves de la informacion que se desprende de susdiagramas de Bode.

1. Sistema Reducido Equivalente

Supongase que tras un proceso de identificacion o modelizacion se han caracterizadolos siguientes sistemas. Antes de proceder con el diseno de sus compensadores convienereducirlos de orden.

1. H1(s) = 100s3+3s2+103s+101

2. H2(s) = 85s4+11s3+45.25s2+46.5s+42.5

3. H3(s) = 100(s+2)s4+42s3+491s2+1202s+4010

Cuestion 1: Encontrar los correspondientes sistemas reducidos equivalentes, y verifi-carlos mediante una entrada escalon unitario. Ejemplo (fig.1):

numH1=100denH1=[1 3 103 101]damp(roots(denH1))denH1eq=poly(-1)numH1eq=dcgain(numH1, denH1)/dcgain(1, denH1eq)step(numH1, denH1)hold onstep(numH1eq, denH1eq)grid

2. Frecuencia de Cruce y Margen de Fase

Cuestion 2: Determinar la maxima frecuencia de cruce de los siguientes sistemas enlazo abierto antes de hacerse inestables (k > 0) (consejo: usar el comando Bode(numGH,denGH) aplicado a algun caso particular de los propuestos).

1. GH1(s) = ks(s2+2ζω0s+ω2

0)

2. GH2(s) = k(s+10)s2(s+1)(s+100)

3. GH3(s) = k(100−s)s(s+1)

1

Page 185: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

162 Bibliografıa.

P2. Introduccion a los Sistemas de Control (II)

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Time (secs)

Am

plitu

de

Figura 1: Respuesta al escalon unitario de H1(s) y de su reducido equivalente.

4. GH4(s) = ke−sT

s

Cuestion 3: En relacion con el tercer caso anterior, justifica que la frecuencia de crucenunca puede ser mayor que la frecuencia natural del cero del semiplano derecho.

3. Estabilizacion de un Sistema Inestable

Considerese ahora un sistema inestable de primer orden,

G(s) =1

s− 1

que se pretende estabilizar y eliminar el error de posicion mediante el compensador,

C(s) =k(s+ 1)

s(k > 0)

situado en serie con G(s) en el camino de ganancia directa (la realimentacion es unitaria).Cuestion 4: Escoger un valor de k para que el sistema en lazo cerrado presente un

buen margen de fase (consejo: usar los comandos Bode(numGH, denGH) y margin(numGH,denGH)).

Cuestion 5: ¿Por que el margen de ganancia es negativo cuando el sistema es estable?Cuestion 6: Dibuja el diagrama de Nyquist aproximado de GH(s) = G(s)C(s) (deja

el polo en s = 0 fuera del camino de Nyquist). Razona la estabilidad conseguida basandoteen el criterio de estabilidad de Nyquist,

Sistema Estable⇐⇒ −NumPolos(GH)SPD = NumV ueltas(GH(jω))(−1,0)

(Puedes usar el comando Nyquist(numGH, denGH)).Cuestion 7: ¿A que se debe el incremento de fase de 1800 que se observa en los

diagramas de Bode y de Nyquist, y gracias al cual se estabiliza el sistema?

2

Page 186: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Bibliografıa. 163

P2. Introduccion a los Sistemas de Control (II)

Cuestion 8: Dibuja el diagrama de Bode en lazo cerrado.¿Que pasarıa si se hubiese situado el compensador como ganancia de realimentacion, en

vez de como ganancia directa? (dibuja tambien el Bode en lazo cerrado en este caso).Compara las respuestas al escalon unitario del sistema en lazo cerrado en ambos casos.

3

Page 187: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

164 Bibliografıa.

P3. Diseno Clasico de Compensadores

Práctica 5

Diseno Clasico de Compensadores

En esta practica se disena el control del posicionamiento del cabezal de una impresora.Para el diseno del compensador se utilizan las tecnicas clasicas de inspeccion de diagramasde Bode y del lugar geometrico de las raıces.

1. Introduccion

Se pretende construir un sistema de posicionamiento del cabezal de escritura de unaimpresora, tal y como se muestra en la fig.1. Se dispone de un motor de tension continuabidireccional cuya velocidad angular de giro es,

ω(s) =Km

[τs+ 1] [(s/ω0)2 + 2ζ(s/ω0) + 1]vc(s) (1)

siendo vc la tension de entrada al motor (entre Vcc− = −15v y Vcc+ = 15v), Km su gananciatension-velocidad angular, τ = 0.1s su constante de tiempo dominante, ζ = 0.1961 y ω0 =1020rad/s.

Cuestion 1: Encontrar Km si la maxima velocidad del motor es ωmax = 10 vueltas/sy esta se tiene con vc = Vcc.

El cabezal se adhiere al motor, y solidario con su eje se coloca una rueda dentada (deradio R = 1cm) que transforma su velocidad angular en desplazamiento lineal. Para sensarla posicion exacta del cabezal se distribuye un potenciometro a lo largo de su recorrido (delongitud L = 0.5m), entre cuyos extremos se aplica la tension de alimentacion (fig.1). Latension ası obtenida es proporcional a la posicion a traves de v = Vcc

L x. El diagrama debloques del sistema es el mostrado en la fig.2.

ω

Figura 1: Implementacion practica del sistema propuesto.

2. Dinamica del Motor

Lo primero que haremos sera construir el modelo del motor.Cuestion 2: ¿Cual es la posicion de los polos complejos?

L=0.5; %Longitud del rail

1

Page 188: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Bibliografıa. 165P3. Diseno Clasico de Compensadores

Rs

1

L

Vcc

x xωcvevrefv

+)(sC

s

K m

τ+1−

Figura 2: Diagrama de bloques del sistema de posicionamiento del cabezal.

Vcc=15; %Tension de alimentacionR=0.01; %Radio de la rueda dentadatau=0.1; %Constante de tiempo del motorwpm=1/tau; %Polo dominante del motorKm=10*2*pi/Vcc; %velocidad maxima del motor: 10vueltas/segundodenGm=poly([-wpm, 1000*(-0.2+i), 1000*(-0.2-i)]);denGmre=poly(-wpm);numGm=Km/dcgain(1, denGm);numGmre=Km/dcgain(1, denGmre);

Ahora representamos la respuesta del motor y la de su reducido equivalente, y su dia-grama de Bode (fig.3):

figure(1);hold on;step(numGm, denGm);step(numGmre, denGmre);grid;title(’Velocidad angular del motor ante un escalon unitario’);hold off;figure(2);bode(numGm, denGm);

3. Sistema sin Compensar

Aunque se ha dibujado un compensador en el diagrama de bloques, el lazo podrıacerrarse sin ninguna circuiterıa adicional, es decir, llevando la senal de error directamenteal motor. Veamos como se comportarıa el sistema. Construimos las ganancias directa, derealimentacion y de lazo:

%Ganancia directa:numG1=R*numGm;denG1=[denGm, 0];%Ganancia de realimentacion:H=Vcc/L;

2

Page 189: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

166 Bibliografıa.

P3. Diseno Clasico de Compensadores

10−1

100

101

102

103

104

−100

−50

0

50

Frequency (rad/sec)

Gai

n dB

10−1

100

101

102

103

104

−90

−180

−270

0

Frequency (rad/sec)

Pha

se d

eg

Figura 3: Diagrama de Bode del motor, donde se observa la posicion del polo simple domi-nante y los dos polos complejos.

%Ganancia de lazo sin compensar:numGH1=numG1*H;denGH1=denG1;

El diagrama de Bode de la ganancia de lazo sin compensar, y su comportamiento enlazo cerrado ante entrada escalon unitario (fig.4) son:

figure(1);Bode(numGH1, denGH1);[numF1, denF1]=feedback(numG1, denG1, H, 1);figure(2);step(numF1, denF1);grid;title(’Respuesta al escalon sin compensar’);

Cuestion 3: ¿Por que el valor final es 0.033?El comportamiento no es satisfactorio debido a la excesiva lentitud del sistema ts ≈ 4s

(no es aceptable con un motor de ts ≈ 0.5s). Para solucionarlo usaremos un compensadorproporcional derivativo.

Cuestion 4: ¿Que conseguiremos con el compensador PD?

4. Sistema Compensado

Lo primero que haremos sera introducir los datos del compensador. Cancelaremos el polodominante del motor, quedando pendiente unicamente el ajuste de ganancia (supondremosinicialmente que tenemos ganancia Kc = 1).

wcz=wpm;

3

Page 190: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Bibliografıa. 167P3. Diseno Clasico de Compensadores

0 0.5 1 1.5 2 2.5 3 3.5 40

0.005

0.01

0.015

0.02

0.025

0.03

0.035

Time (secs)

Am

plitu

de

Respuesta al escalón sin compensar

Figura 4: Respuesta en lazo cerrado del sistema sin compensar ante entrada escalon unitario.

Kc=1;numC=Kc*poly(-wcz)/wcz;denC=1;

Construimos las nuevas ganancias directa y de lazo (la de realimentacion es la mismade antes):

%Ganancia directa compensada:numG2=R*conv(numGm, numC);denG2=[conv(denGm, denC), 0];%Ganancia de lazo:numGH2=numG2*H;denGH2=denG2;

Para la seleccion de la ganancia del compensador Kc usaremos el comando rlocfind.Primero dibujaremos el “lugar de las raıces” del sistema (lugar geometrico de los polos delazo cerrado en funcion de una ganancia adicional K) con el comando rlocus (fig.5). Luego,usando rlocfind, seleccionaremos las raices deseadas en lazo cerrado y obtendremos el valorde la ganancia K que les corresponde. Finalmente asignaremos esta K al compensador(Kc = K):

rlocus(numGH2, denGH2);K=rlocfind(numGH2, denGH2)Kc=K;numG2=K*numG2;numGH2=K*numGH2;

Cuestion 5: ¿Que punto del plano s conviene marcar?Los margenes de estabilidad relativa que se obtendran son (fig.6):

4

Page 191: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

168 Bibliografıa.

P3. Diseno Clasico de Compensadores

margin(numGH2, denGH2);

y la respuesta en lazo cerrado al escalon unitario sera (fig.7):

[numF2, denF2]=feedback(numG2, denG2, H, 1);step(numF2, denF2);grid;title(’Respuesta del sistema compensado’);

donde observamos un considerable aumento de la velocidad del sistema (ts ≈ 0.03s).Los polos en lazo cerrado y sus residuos seran:

damp(roots(denF2));abs(residue(numF2, denF2))

Cuestion 6: ¿Que nos indican los residuos de los polos?Cuestion 7: Propon una implementacion electronica del sistema.

−2000 −1500 −1000 −500 0 500 1000 1500 2000−2000

−1500

−1000

−500

0

500

1000

1500

2000

Real Axis

Imag

Axi

s

Figura 5: Lugar de las raıces del sistema una vez compensado. Tendremos siempre dospolos complejos y uno real.

5

Page 192: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Bibliografıa. 169P3. Diseno Clasico de Compensadores

10−1

100

101

102

103

104

−100

−50

0

50

100

Frequency (rad/sec)

Gai

n dB

Gm=9.485 dB, (w= 1020) Pm=86.94 deg. (w=136.5)

10−1

100

101

102

103

104

0

−90

−180

−270

−360

Frequency (rad/sec)

Pha

se d

eg

Figura 6: Bode de la ganancia de lazo del sistema compensado, una vez ajustada la ganancia.Se muestran los margenes de ganancia y de fase, y las frecuencias de cruce por 1800 y 0db

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.040

0.005

0.01

0.015

0.02

0.025

0.03

0.035

Time (secs)

Am

plitu

de

Respuesta del sistema compensado

Figura 7: Respuesta en lazo cerrado del sistema compensado.

6

Page 193: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

170 Bibliografıa.

P4. Introduccion a Simulink de Matlab

Práctica 6

Introduccion a Simulink de Matlab

En esta practica se disena el control del posicionamiento del cabezal de una impresora.Para el diseno del compensador se utilizan las tecnicas clasicas de inspeccion de diagramasde Bode y del lugar geometrico de las raıces.

1. Introduccion

En una central lechera se utiliza un sistema automatico para el control del proceso depasteurizacion de la leche. El proceso consiste en la repeticion de ciclos de temperatura de laleche, entre 100C y 900C en 1 minuto. Para ello (fig.1) se sensa la temperatura de la leche encada uno de los recipientes de la fabrica mediante termopares debidamente acondicionados.La tension proporcionada por cada termopar v es adquirida por un ordenador que centralizael control digital del proceso. El ordenador compara las senales sensadas con una referenciade temperatura (que el mismo genera) e implementa la funcion de compensacion. La salidadel ordenador constituye la senal de control vc de una fuente de corriente (implementadamediante un convertidor Buck con control de corriente de pico). La carga resistiva R delconvertidor esta distribuida en el interior del deposito, y la potencia que se disipa en ellapermite controlar la temperatura del mismo.

Vin i

vc R

T

C(z)+

- Kvv

VrefOrdenador

T

Figura 1: Implementacion practica del sistema de control de temperatura.

Antes de plantear un diagrama de bloques es necesario saber como se relacionan lasdiversas variables del sistema.

La relacion entre la potencia P disipada en la resistencia R = 50Ω y la temperatura Tdel deposito es,

HT (s) =T (s)P (s)

=KT

τT s+ 1(1)

siendo KT = 0.10C/W y τT = 10s.La respuesta del termopar es,

Hv(s) =v(s)T (s)

=Kv

τvs+ 1(2)

1

Page 194: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Bibliografıa. 171

P4. Introduccion a Simulink de Matlab

siendo Kv = 0.1V/0C y τv = 0.01s.Finalmente, la respuesta de la corriente del convertidor frente a su senal de control es,

Hi(s) =i(s)vc(s)

=Ki

τis+ 1(3)

siendo Ki = 0.5A/V y τi = 0.1s.

2. Diseno del Compensador

En este apartado seleccionaremos y disenaremos el compensador en formato continuoC(s), y posteriormente lo discretizaremos para obtener el compensador C(z) buscado.

Para poder disenar el compensador C(s) deberemos primero representar el sistema me-diante un diagrama de bloques. Sin embargo, esto no es posible si no se linealiza la relacionentre la potencia y la corriente P = i2R. Para pequenas variaciones de corriente, los in-crementos de potencia que se producen son dP = 2IRdi. Por tanto, los incrementos encorriente y en potencia se relacionan a traves de una ganancia variable GP = 2IR, siendoI la corriente continua sobre la que se producen las variaciones.

Teniendo en cuenta estas relaciones, el diagrama de bloques simplificado es el mostradoen la fig.2.

2IRTPcvevrefv

+)(sC

-

v

H (s) H (s)Ti

H (s)v

i

Figura 2: Diagrama de bloques linealizado.

Se propone un compensador del tipo,

C(s) = Kc(s+ ωz1)(s+ ωz2)

s(s+ ωp)(4)

con ωz1 = 1τT

= 0.1rad/s, ωz2 = 1τi

=10rad/s y ωp = 10τv

=1000rad/s.Cuestion 1: Dibujar la ganancia de lazo, y justificar la posicion de ceros y polos del

compensador, y la frecuencia de cruce. Dibujar el Bode de lazo cerrado.Cuestion 2: ¿Para que valor de Gp deberemos disenar la ganancia del compensador

Kc? (Suponer que la maxima temperatura a alcanzar es 1000C).En estas condiciones, ajustamos la frecuencia de cruce a 50rad/s con una ganancia Kc =,

2. Modelo Simulink

A continuacion se construira el diagrama de bloques del sistema y se implementara enSimulink.

2

Page 195: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

172 Bibliografıa.

Page 196: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

Bibliografıa

Franklin, G. F., y Powell, J. D. (1994). Feedback control of dynamic systems. (Vol. 1,1 ed.). Addison-Wesley.

Ljung, L. (1999). System identification. Theory for the user. (2nd ed.). PTR PrenticeHall, Upper Saddle River, N.J.

Mathworks. (1997). Using Matlab–the language of technical computing. The Math-works, Inc.

Ogata, K. (1993). Ingenierıa de control moderna (Vol. 1, 1 ed.). Prentice-Hall.

Ungar, L. H. (1995). Forecasting. The Handbook of Brain Theory and NeuralNetworks, 399–403.

Page 197: CURSO “Disen˜o de Sistemas de Control Usando MATLAB …isp.uv.es/courses/manuals/02_ApuntesCursoControlCheste2002_secur… · 2.18 Motor DC. . . . . . . . . . . . . . . . .

“Diseno de Sistemas de Control Usando MATLAB-SIMULINK”

Emilio Soria Olivas & Gustavo Camps i Valls, 2002.

e-mail: soriae,[email protected] de Procesado Digital de Se~nales, http://gpds.uv.es