Documentos de Académico
Documentos de Profesional
Documentos de Cultura
02 ApuntesCursoControlCheste2002 Secure PDF
02 ApuntesCursoControlCheste2002 Secure PDF
Lista de Figuras. iv
Lista de Tablas. ix
1 Introducción al Matlab 1
1.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Establecer el camino de búsqueda . . . . . . . . . . . . . . . 4
1.1.2 Editor de ficheros y depurador de errores. . . . . . . . . . . . 5
1.1.3 El espacio de trabajo en MATLAB. . . . . . . . . . . . . . . 6
1.1.4 Control de los formatos de salida y de otras opciones de MAT-
LAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Operaciones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1 Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Funciones de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.1 Cálculo de normas de matrices. . . . . . . . . . . . . . . . . . 20
1.3.2 Cálculo de normas de vectores. . . . . . . . . . . . . . . . . . 20
1.4 Datos en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.5 Programación de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.6 Ficheros *.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.7 Gráficos en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.8 Otras caracterı́sticas de Matlab . . . . . . . . . . . . . . . . . . . . . 45
5 Prácticas 145
Bibliografı́a 173
Índice de Figuras
2.1 Relación 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 régimen estacionario en función del tipo
de entrada. Las constantes representan el tipo de error: Kp es la cons-
tante de error de posición, Kv es la constante del error de velocidad
y Ka es la constante para el error de aceleración. . . . . . . . . . . . 88
Capı́tulo 1
Introducción al Matlab
1.1 Introducción
MATLAB es un paquete informático cuyo nombre procede de la unificación de los
términos MATrix LABoratory. Su objetivo inicial fue proporcionar un fácil acceso
a las librerı́as LINPACK y EISPACK que son dos de las librerı́as más importantes
en computación y cálculo matricial. Este manual hace referencia a la versión 5.3
de este programa, aparecida a comienzos de 1999.
MATLAB es un programa para realizar cálculos numéricos usando vectores y
matrices. Como caso particular de estos elementos evidentemente puede trabajar
también con números tanto reales como complejos. MATLAB es un entorno de com-
putación y desarrollo totalmente integrado; está orientado para llevar a cabo proyec-
tos donde se lleven a cabo gran número de cálculos matemáticos complementándose
dichos cálculos con excelentes representaciones gráficas.
En los medios universitarios MATLAB se ha convertido en una herramienta
básica docente. En el mundo industrial MATLAB está siendo utilizado como he-
rramienta de investigación para la resolución de complejos problemas planteados en
la realización y aplicación de modelos matemáticos en ingenierı́a.
Como se ha comentado anteriormente MATLAB dispone de una serie de librerı́as
especializadas. Entre las más destacadas están:
MATLAB se puede arrancar como cualquier otra aplicación 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 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
2 Capı́tulo 1. Introducción al Matlab
3
1.1 Introducción 3
Introducción al Matlab
4
4 Capı́tulo 1. Introducción al Matlab
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 ficheros
de comandos y las funciones. Con el comando Set Path del menú File se muestra
la lista de directorios en la que MATLAB buscará. En la figura 3 se muestra un
ejemplo de dicho path.al Matlab
Introducción
depuración). Este editor muestra con diferentes colores los diferentes tipos o ele-
mentos 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.
Figuracualquiera
Si se pulsa sobre 1.4: Variables
de estasdel espaciopor
variables, deejemplo
trabajosobre
de MATLAB.
x, se abre una ventana
como la que muestra la siguiente figura:
Si se pulsa sobre cualquiera de estas variables, por ejemplo sobre x, se abre una
ventana como la que muestra la Fig. 1.5:
1.1SiIntroducci cualquiera de estas variables, por ejemplo sobre x, se abre una ventana 7
se pulsa sobreón
como la que muestra la siguiente figura:
En esta figura aparecen los diferentes formatos numéricos que puede tener MAT-
LAB. 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:
7
• format short coma fija con 4 decimales .
Comentar que estos formatos también se pueden activar desde la lı́nea de coman-
dos.
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
Introducción al Matlab
Figura los
En esta figura aparecen 1.6:diferentes
Menú de preferencias
formatos de MATLAB.
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:
más pequeños, son superiores, o inferiores, a una determinada cantidad; además
MATLAB •trata format
de short
mantener elcoma fija conde
formato 4 decimales
los números que han sido definidos como
• format long coma fija con 15 decimales
enteros (sin punto decimal). cifras hexadecimales
• format hex
• format
El cuadro de diálogo
bank Command números conWindow
dos cifrasFont de la Figura 6 ofrece la posi-
decimales
• format short e notación científica con 4 decimales
bilidad de elegir el tipo de letra –ası́ como el tamaño y el color, tanto de las letras
• format short g notación científica o decimal, dependiendo del valor
como del fondo– utilizada en la ventana de comandos de MATLAB. Es mejor utilizar
• format long e notación científica con 15 decimales
tipos de letra de tamaño
• format loose constante para
introduce que líneas
algunas la salida se alinee
en blanco bien en la pantalla.
en la salida
• format compact elimina las líneas en blanco citadas
• format rat expresa los números racionales como cocientes de
1.2 Operaciones básicas
enteros
comentar que estos formatos también se pueden activar desde la línea de comandos.
MATLAB es, fundamentalmente, un programa para cálculo matricial. En él
se irán Relacionado
definiendocon laslosmatrices,
diferentes formatos numéricos
los vectores comentar
y las que MATLAB
expresiones que aplica un
los combinan,
factor de escala general a las matrices cuando los elementos más grandes, o más
obteniéndose resultados
pequeños, bienoparciales
son superiores, inferiores, bien
a una totales. Si estos
determinada resultados
cantidad; son asignados
además MATLAB
a otras trata
variables podrán
de mantener ser utilizados
el formato en otras
de los números expresiones.
que han Antes
sido definidos como de hacer
enteros (sincálculos
punto decimal).
complicados se aprenderá a introducir matrices y vectores desde el teclado. Más
adelante se verán otras formas de definir matrices y vectores.
Al igual que en otros lenguajes de programación en MATLAB las matrices 8 y
vectores son variables que tienen nombres. Se sugiere que se utilicen letras
mayúsculas para matrices y minúsculas para vectores y escalares, destacando que
MATLAB no exige esto, pero puede resultar útil de cara a distinguir dichos elemen-
tos. Para definir una matriz no hace falta establecer de antemano su tamaño (de
hecho, se puede definir un tamaño y cambiarlo posteriormente). MATLAB deter-
mina el número de filas y de columnas en función del número de elementos que se
1.2 Operaciones básicas 9
proporcionan (o se utilizan). Las matrices se definen por filas; los elementos de una
misma fila están separados por espacios o comas las filas, sin embargo, están sepa-
radas por retornos de carro o por caracteres punto y coma (;). A modo de ejemplo
la siguiente instrucción define una matriz, A, de dimensión 3x3.
>> A=[1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> A’
ans =
1 4 7
2 5 8
3 6 9
>> B=A’
>> B =
1 4 7
2 5 8
3 6 9
10 Capı́tulo 1. Introducción al Matlab
>> 1.0/0.0
>> Warning: Divide by zero
ans =
Inf
Ası́ pues, para MATLAB el infinito se representa como inf ó Inf. MATLAB
tiene también una representación especial para los resultados que no están definidos
como números. Por ejemplo, ejecútense los siguientes comandos y obsérvense las
respuestas obtenidas:
>> 0/0
>> Warning: Divide by zero
ans =
NaN
>> inf/inf
ans =
NaN
• realmin devuelve el número más pequeño con que se puede trabajar (2.2251e-
308).
• realmax devuelve el número más grande con que se puede trabajar (1.7977e+308).
En muchos cálculos matriciales los datos y/o los resultados no son reales sino com-
plejos, con parte real y parte imaginaria. MATLAB trabaja sin ninguna dificultad
con números complejos. En la entrada de datos se pueden utilizar indistintamente la
i y la j para representar la unidad imaginaria (cuando MATLAB devuelve los datos
siempre aparece la i). Cuando i y j son variables utilizadas para otras finalidades,
como unidad imaginaria puede utilizarse también la función sqrt(-1 ), o una variable
a la que se haya asignado el resultado de esta función.
La asignación de valores complejos a vectores y matrices desde teclado puede
hacerse de las dos formas que se muestran en el ejemplo siguiente (conviene hacer
antes clear i, para que i no esté definida como variable. Este comando se estudiará
más adelante):
>> 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 (*), según se muestra en el ejemplo
anterior. MATLAB dispone asimismo de la función complex , que crea un número
complejo 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 función
que permite hallar simplemente la matriz conjugada (conj) y el operador punto y
apóstrofe (.’) que calcula simplemente la matriz traspuesta.
MATLAB puede definir variables que contengan cadenas de caracteres. En MAT-
LAB las cadenas de texto van entre apóstrofos o comillas simples.
1.2 Operaciones básicas 13
• clear sin argumentos; elimina todas las variables creadas previamente (excepto
las variables globales).
• clear all borra todas las variables, incluyendo las globales, y las funciones.
Existen otras funciones para crear matrices de tipos particulares. Con Help/Help
Window se puede obtener información sobre todas las funciones disponibles en
MATLAB, que aparecen agrupadas por directorios. En matlab\elmat aparecen la
mayor parte de las funciones estudiadas en este apartado.
Un par de instrucciones muy útiles para trabajar con matrices son size y length.
[m,n]=size(A) devuelve el número de filas y de columnas de la matriz A por otra
parte n=length(x) calcula el número de elementos de un vector x.
A partir de unas determinadas matrices se pueden obtener otras derivadas de ellas
mediante el uso de determinadas instrucciones. Ası́, a modo de ejemplo, algunas de
estas posibilidades serı́an:
• zeros(size(A)) forma una matriz de ceros del mismo tamaño que una matriz A
previamente creada.
• A=diag(x) forma una matriz diagonal A cuyos elementos diagonales son los
elementos de un vector ya existente x.
Existen muchas más y, al igual que con ejemplos anteriores se sugiere al lector
que utilice el fichero de ayuda de MATLAB para ver todas las posibilidades que se
le ofrecen.
Otras formas de definición de matrices serı́an los ficheros .m. MATLAB acepta
este tipo de ficheros que contienen instrucciones y/o funciones. Dichos ficheros se
llaman desde la lı́nea de comandos tecleando su nombre, sin la extensión. Las varia-
bles definidas dentro de un fichero de comandos *.m que se ejecuta desde la lı́nea de
comandos son variables globales, esto es, pueden ser accedidas desde fuera de dicho
fichero; no sucede lo mismo si el fichero *.m corresponde a una función. Si un fichero
de comandos se llama desde una función, las variables que se crean pertenecen al
espacio de trabajo de dicha función, son locales.
Existe un operador muy importante en MATLAB por el uso tan extendido que se
le da; este operador es el operador dos puntos (:). En cierta forma se podrı́a decir que
el operador (:) representa un rango. Ası́, si se tiene x=1:2:10, el vector x contendrı́a
los 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 también utilizarse con
otros valores enteros y reales, positivos o negativos. Puede verse que, por defecto,
este operador produce vectores fila. Si se desea obtener un vector columna basta
trasponer el resultado.
El operador dos puntos (:) es muy útil y potente con matrices. Recuérdese que
MATLAB accede a los elementos de una matriz por medio de los ı́ndices de fila y
de columna encerrados entre paréntesis y separados por una coma. Podemos usar
el operador : para acceder a una determinada submatriz de una matriz. Ası́ por
ejemplo A(2,3:5) serı́a el vector correspondiente a la segunda fila de la matriz pero
considerando solamente las columnas 3,4 y 5. Los dos puntos aislados representan
“todos los elementos”. Por ejemplo, el comando A(3,:) extrae todos los elementos
de la 3a fila de la matriz A. Para acceder a la última fila o columna puede utilizarse
la palabra end, en lugar del número correspondiente.
Uno de los posibles problemas que se puede encontrar al trabajar con MATLAB
son la matriz vacı́a. Para MATLAB una matriz definida sin ningún elemento entre
los corchetes es una matriz que existe, pero que está vacı́a, o lo que es lo mismo que
tiene dimensión cer o. Las funciones exist() e isempty() permiten chequear si una
variable existe y si está vacı́a.
En cuanto a operadores en MATLAB comenzaremos por los relacionales; estos
son:
== igual que
∼= distinto que
& and
| or
∼ negación lógica
Los operadores lógicos se combinan con los relacionales para implementar condi-
ciones múltiples.
Las operaciones de suma y/o resta de una matriz con un escalar consisten en
sumar 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 las
funciones disponibles en MATLAB.
En cuanto a funciones matemáticas elementales que operan con escalares algunas
de las más importantes serı́an las siguientes:
• sin(x) seno.
• cos(x) coseno.
• tan(x) tangente.
• angle(x) fase.
En realidad estas funciones se pueden aplicar también a matrices, pero en ese caso
se aplican por separado a cada columna de la matriz, dando como valor de retorno
un vector resultado de aplicar la función a cada columna de la matriz considerada
como vector. Si estas funciones se quieren aplicar a las filas de la matriz basta aplicar
dichas funciones a la matriz traspuesta.
Las siguientes funciones se aplican solamente a matrices. En este grupo aparecen
algunas de las funciones más útiles y potentes de MATLAB:
Existen una serie de instrucciones sobre cálculo matricial que tiene una amplia
utilización en el campo del procesado digital de señales, algunas de estas funciones
serı́an las siguientes:
• B = inv(A) inversa de A.
• Q = orth(A) las columnas de Q son una base ortonormal del espacio de co-
lumnas de A. El número de columnas de Q es el rango de A.
• norm(x,inf) max(abs(x)).
Además MATLAB dispones de una serie de instrucciones para trabajar con las
matrices, vectores, binarias que se obtienen tras la aplicación de los operadores
relacionales, algunas de estas instrucciones son:
• any(x) comprueba si alguno de los elementos del vector x cumple una determi-
nada condición (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 un
vector de unos y ceros.
1.4 Datos en Matlab 21
• all(x) función vectorial; comprueba si todos los elementos del vector x cumplen
una condición. Devuelve un uno o un cero. Si x es una matriz se aplica por
separado a cada columna. El resultado es un vector de unos y ceros.
Relacionadas con éstas existen otras funciones que comprueban otras condiciones:
• 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.
4. Vectores o matrices de celdas (cell arrays), que son vectores o matrices cuyos
elementos pueden ser cualquier otro tipo de dato.
22 Capı́tulo 1. Introducción al Matlab
• char(c1,c2) crea una matriz de caracteres, completando con blancos las cadenas
más cortas.
1. Todas las funciones de MATLAB que operan sobre escalares (sin( ), cos( ), etc.)
se aplican sobre hipermatrices elemento a elemento (igual que sobre vectores
y matrices). Las operaciones con escalares se aplican de la misma manera.
2. Las funciones que operan sobre vectores (sum( ), max( ), etc.) se aplican a
matrices e hipermatrices según la primera dimensión, resultando un array de
una dimensión inferior.
3. Las funciones matriciales propias del Álgebra Lineal (det( ), inv( ), etc.) no se
pueden aplicar a hipermatrices. Para poderlas aplicar hay que extraer primero
las matrices correspondientes.
24 Capı́tulo 1. Introducción al Matlab
>>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
1.4 Datos en Matlab 25
>> 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{}. Es
importante que el nombre del vector de celdas no haya sido utilizado previamente
para otra variable (si ası́ fuera, se obtendrı́a un error). Otra nomenclatura alternativa
y similar a la anterior serı́a:
>> vb{1}=[1 2 3]
vb =
[1x3 double]
>> vb{3}=rand(3,3)
vb =
[1x3 double] ’mi nombre’ [3x3 double]
Continuando con los tipos de datos de MATLAB pasaremos a describir las es-
tructuras. Una estructura es una agrupación de datos (campos) de tipo diferente
bajo un mismo nombre. Una estructura es un nuevo tipo de dato, del que luego se
pueden crear muchas variables. Por ejemplo, la estructura alumno puede contener
los campos nombre (una cadena de caracteres) y carnet (un número).
En MATLAB la estructura alumno se crea creando un objeto de dicha estructura.
A diferencia de otros lenguajes de programación, no hace falta definir previamente
el modelo de la estructura. Una posible forma de hacerlo es crear uno a uno los
distintos 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 operador
punto (.), que une el nombre de la estructura y el nombre del campo (por ejemplo:
alu.nombre). También puede crearse la estructura por medio de la función struct().
Los nombres de los campos se pasan a la función struct() entre apóstrofos (’), seguidos
del valor que se les quiere dar. Este valor puede ser la cadena vacı́a (”) o la matriz
vacı́a ([ ]). Pueden crearse vectores y matrices (e hipermatrices) de estructuras. Por
ejemplo, la sentencia, alum(10) = struct(’nombre’, ’Iñaki’, ’carnet’, 76589) crea un
vector de 10 elementos cada uno de los cuales es una estructura tipo alumno. Sólo
1.4 Datos en Matlab 27
MATLAB permite definir estructuras anidadas, es decir una estructura con cam-
pos que sean otras estructuras. Para acceder a los campos de la estructura más
interna 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 =
28 Capı́tulo 1. Introducción al Matlab
nombre: ’Juan’
edad: 19
La gran ventaja de las estructuras y los arrays de celdas es que proporcionan una
gran flexibilidad para el almacenamiento de los más diversos tipos de información.
if condicion
sentencias
end
if condicion1
bloque1
elseif condicion2
bloque2
elseif condicion3
bloque3
else (si no se cumplen las condiciones 1,2 y 3).
bloque4
end
Aquı́ la opción por defecto else puede ser omitida: si no está presente no se hace
nada en caso de que no se cumpla ninguna de las condiciones que se han chequeado.
Destacar que la condición del if puede ser una condición matricial, del tipo
A==B, donde A y B son matrices del mismo tamaño. Para que se considere que la
condición se cumple, es necesario que sean iguales dos a dos todos los elementos de
las matrices A y B.
1.5 Programación de Matlab 29
for i=1:n
sentencias
end
for i=1:m
for j=1:n
sentencias
end
end
while condicion
sentencias
end
Aquı́ condicion puede ser una expresión vectorial o matricial. Las sentencias se
siguen ejecutando mientras haya elementos distintos de cero en condicion, es decir,
mientras haya algún o algunos elementos true. El bucle se termina cuando todos
los elementos de condicion son false (es decir, cero). Como complemento a estas
instrucciones está la sentencia break que termina la ejecución del bucle más interno
de los que comprenden a dicha sentencia.
En cuanto a la introducción de las variables existe una forma sencilla de leer
variables desde teclado y escribir mensajes en la pantalla del PC. La función input
permite imprimir un mensaje en la lı́nea de comandos de MATLAB y recuperar
como valor de retorno un valor numérico o el resultado de una expresión tecleada
por el usuario. Después de imprimir el mensaje, el programa espera que el usuario
teclee el valor numérico o la expresión. Como complemento a esta instrucción está la
función disp que permite imprimir en pantalla un mensaje de texto o el valor de una
matriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectores
y/o matrices: las cadenas de caracteres son un caso particular de vectores.
Los ficheros con extensión (.m) son ficheros de texto sin formato (ficheros ASCII)
que constituyen el centro de la programación en MATLAB. Ya se han utilizado
en varias ocasiones. Estos ficheros se crean y modifican con un editor de textos
cualquiera. En el caso de MATLAB 5.3 ejecutado en un PC bajo Window s, lo más
sencillo es utilizar su propio editor de textos.
que la función ha sido llamada. Dentro de la función, estas variables pueden ser
utilizadas como el programador desee. Tanto el número de argumentos como el de
valores de retorno no tienen que ser fijos.
Desde la versión 5.0, MATLAB dispone de una nueva forma de pasar a una
función un número variable de argumentos por medio de la variable varargi n, que
es un vector de celdas que contienen tantos elementos como sean necesarios para
poder recoger, en dichos elementos, todos los argumentos que se hayan pasado en
la llamada. No es necesario que varargin sea el único argumento, pero sı́ debe ser
el último, pues recoge todos los argumentos a partir de una determinada posición.
De forma análoga, una función puede tener un número indeterminado de valores de
retorno utilizando varargout, que es también un cell array que agrupa los últimos
valores de retorno de la función. Puede haber otros valores de retorno, pero varargout
debe ser el último.
Un tipo interesante de variables son las persistentes que son variables locales de
las funciones (pertenecen al espacio de trabajo de la función y sólo son visibles en
dicho espacio de trabajo), y que conservan su valor entre distintas llamadas a la
función. Por defecto, las variables locales de una función se crean y destruyen cada
vez que se ejecuta la función. Las variables persistentes se pueden definir en funcio-
nes, pero no en ficheros de comandos. Las variables se declaran como persistentes
utilizando la palabra persistent seguida de los nombres de las diferentes variables
separados por blancos. Las variables persistent se inicializan a la matriz vacı́a [ ] y
permanecen en memoria hasta que se hace clear de la función o cuando se modifica
el fichero-M. Para evitar que un fichero-M se modifique se puede utilizar el comando
mlock file.m, que impide la modificación del fichero. El comando munlock desblo-
quea el fichero mientras que la función mislocked permite saber si está bloqueado o
no.
Destacar que a partir de la versión 5.0 se han introducido las sub-funciones, que
son funciones adicionales definidas en un mismo fichero *.m, con nombres diferentes
del nombre del fichero (y del nombre de la función principal) y que las sub-funciones
sólo 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 se
pueden llamar desde cualquier otra función, aunque se encuentren en el camino de
búsqueda o en el directorio actual. Sólo ciertas funciones están autorizadas a utilizar-
las. Las funciones privadas se definen en sub-directorios que se llaman private y sólo
pueden ser llamadas por funciones definidas en el directorio padre del sub-directorio
private. En la búsqueda de nombres que hace MATLAB cuando encuentra un nom-
bre en una expresión, las funciones privadas se buscan inmediatamente después de
las sub-funciones, y antes que las funciones de tipo general.
Otra extensión posible a las funciones es *.p. Las funciones *.p son funciones *.m
1.6 Ficheros *.m 33
• Se puede crear un fichero *.m con un editor de textos, con lo cual no existen
problemas de edición.
• Es posible leer un flat file escrito con caracteres ASCII. Un flat file es un
fichero con filas de longitud constante separadas con un retorno de carro, y
varios datos por fila separados por blancos. Estos ficheros pueden ser leı́dos
desde MATLAB con el comando load.
[fid,texto] = fopen(’filename’,’c’)
Donde fid es un valor de retorno que sirve como identificador del fichero, texto
es un mensaje para caso de que se produzca un error, y c es un carácter (o dos) que
indica el tipo de operación que se desea realizar. Las opciones más importantes son
las siguientes:
Cuando por alguna razón el fichero no puede ser abierto, se devuelve un (-1). En
este caso el valor de retorno texto puede proporcionar información sobre el tipo de
error que se ha producido también existe una función llamada ferror que permite
obtener información sobre los errores. Después de realizar las operaciones de lectura
y escritura deseadas, el fichero se puede cerrar con la función close en la forma
siguiente:
st = fclose(fi)
st = close(’all’)
fprintf(fi,’cadena de control’,var1,var2,...)
La cadena de control contiene los formatos de escritura, que son similares a los
de C. De forma análoga, la función sprintf convierte su resultado en una cadena
de caracteres que devuelve como valor de retorno, en vez de enviarlo a un fichero.
Véase un ejemplo:
fseek permite mover este cursor hacia delante o hacia atrás, respecto a la posición
actual (’cof’), respecto al principio (’bof’) o respecto al final del fichero (’eof’). La
función ftell indica en qué posición está el cursor. Si alguna vez se necesita utilizar
este tipo de acceso a disco, se puede buscar más información por medio del help.
• plot() crea un gráfico a partir de vectores y/o columnas de matrices, con escalas
lineales sobre ambos ejes.
• xlabel(’etiq’) añade una etiqueta al eje de abscisas. Con xlabel off desaparece.
• ylabel(’etiq’) añade una etiqueta al eje de ordenadas. Con ylabel off desaparece.
• gtext(’texto’) introduce texto con ayuda del ratón: el cursor cambia de forma
y se espera un clic para introducir el texto en esa posición
• legend() define rótulos para las distintas lı́neas o ejes utilizados en la figura.
• grid activa la inclusión de una cuadrı́cula en el dibujo. Con grid off desaparece
la cuadrı́cula.
1.7 Gráficos en Matlab 37
• plot(A) dibuja una lı́nea por cada columna de A en ordenadas, frente al ı́ndice
de los elementos en abscisas.
El tipo de lı́nea y color del gráfico se puede alterar usando la propia instrucción
plot ya que los argumentos de esta función es una tripleta formada por dos vectores
y una cadena de 1, 2 ó 3 caracteres que indica el color y tipo de lı́nea. En la siguiente
Introducción al Matlab
tabla se muestran las diferentes posibilidades que se tienen.
Cuando
Cuando hayhayqueque dibujar
dibujar varias
varias lı́neas,
líneas, por defecto
por defecto se vansecogiendo
van cogiendo sucesivamente
sucesivamente los
loscolores
coloresdedela la tabla
tabla comenzando
comenzando por elpor el hacia
azul, azul, arriba,
hacia yarriba,
cuandoy se cuando
terminan se se
terminan
vuelve se
a empezar
vuelve otra vez
a empezar porvez
otra el azul.
por elSi azul.
el fondo Si eles fondo
blanco,eseste color este
blanco, no secolor
utilizanopara las
se utiliza
líneas.
para las lı́neas.
Existe
Existe la posibilidad
la posibilidad de añadir
de añadir líneas lı́neas a un ya
a un gráfico gráfico ya existente,
existente, sin destruirlosinodestruirlo
sin abrir o
sinuna
abrir
nuevauna nuevaSeventana.
ventana. Se ello
utilizan para utilizan para ellohold
los comandos los on y hold off.hold
comandos on y de
El primero hold
ellos hace que los gráficos sucesivos respeten los que ya se han
off. El primero de ellos hace que los gráficos sucesivos respeten los que ya se han dibujado en la figura (es
posible que
dibujado en lahaya que modificar
figura (es posible la escala
que haya de losqueejes); el comando
modificar hold off
la escala dedeshace el el
los ejes);
efecto de hold on.
comando hold off deshace el efecto de hold on.
Una
Una ventana
ventana gráfica
gráfica se puede
se puede dividir en menparticiones
dividir m particiones y n verticales,
horizontales
horizontales y n verticales,
con
objeto de representar múltiples gráficos en ella. Cada una de estas
con objeto de representar múltiples gráficos en ella. Cada una de estas subventanas subventanas tiene sus
propios ejes. La forma general de este comando es subplot(m,n,i)donde
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
mgráfica.
y n sonLas el número de subdivisiones
subdivisiones se numeranenconsecutivamente
filas y columnas,empezando
e i es la subdivisión
por las de donde
la
se primera
realiza fila,
la gráfica.
siguiendo Lasporsubdivisiones
las de la segunda, se numeran
etc. consecutivamente empezando por
las de la primera fila, siguiendo por las de la segunda, etc.
Para
Paramodificar
modificar los ejes se utiliza
los ejes la instrucción
se utiliza axis. Poraxis.
la instrucción defecto, PorMATLAB
defecto, ajusta
MATLABla
escala de cada uno de los ejes de modo que varíe entre el mínimo y el máximo valor de
ajusta la escala
los vectores de cada Este
a representar. uno es deellos ejes de
llamado modomodo
auto.que
Paravarı́e
definirentre
de modoel mı́nimo
explícitoy el
máximo valor
los valores de losy vectores
máximo mínimo según a representar.
cada eje, se Este
utilizaesel el llamado
comando modo auto.
axis([xmin, xmax, Para
ymin,de
definir ymax]),
modomientras
explı́citoquelosaxis(’auto’)
valores máximo devuelve el escalado
y mı́nimo de los
según cada ejeseje,
al valor por el
se utiliza
defecto oaxis([xmin,
comando automático. Otros xmax, posibles
ymin, usosymax]),
de este comando
mientras sonquelosaxis(’auto’)
siguientes: devuelve
el escalado de los ejes al valor por defecto o automático. Otros posibles usos de este
v=axis devuelve un vector v con los valores [xmin, xmax, ymin, ymax]
34
1.7 Gráficos en Matlab 39
• 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 nuevas
gráficas añadidas con hold on.
Si se llama a la función figure sin argumentos, se crea una nueva ventana gráfica
con el número que le corresponda. El comando figure(n) hace que la ventana n pase
a ser la ventana activa. Si dicha ventana no existe, se crea una nueva ventana con el
número que le corresponda. La función close cierra la figura activa, mientras que
close(n) cierra la ventana o figura número n. El comando clf elimina el contenido
de la figura activa, es decir, la deja abierta pero vacı́a. La función gcf devuelve el
número de la figura activa en ese momento.
Existen otras funciones gráficas bidimensionales orientadas a generar otro tipo
de gráficos distintos de los que produce la función plot() y sus análogas. Algunas
de estas funciones son las siguientes:
Siendo ’funcion’ el nombre de la función o del fichero *.m entre apóstrofos (pa-
sado como cadena de caracteres), limites un vector de 2 ó 4 elementos que puede
tomar los valores [xmin,xmax] o [xmin,xmax,ymin,ymax], ’cadena’ tiene el mismo
significado que en plot y permite controlar el color y el tipo de lı́nea y, por último,
tol es la tolerancia de error relativo. El valor por defecto es 2e-03. Esta función
puede utilizarse también en la forma:
function y = mifunc(x)
y(:,1)=200*sin(x)./x;
y(:,2)=x. 2;
Obsérvese que la función mifunc devuelve una matriz con dos columnas, que
constituyen las dos gráficas dibujadas. En este caso se ha utilizado para ellas el color
verde.
Podemos introducir datos en la pantalla gráfica mediante el ratón. Pa ello se
utiliza la función ginput, que permite introducir las coordenadas del punto sobre el
que está el cursor al pulsar una tecla. Algunas formas de utilizar esta función son
las siguientes:
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 número de veces que se desee
con el comando movi e. Por ejemplo, para representar 10 veces la pelı́cula anterior, a
15 imágenes por segundo, habrı́a que ejecutar el comando siguiente (los dos últimos
parámetros son opcionales):
movie(M,10,15)
42 Capı́tulo 1. Introducción al Matlab
close all
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);
1.7 Gráficos en Matlab 43
R=sqrt(U.^2+V.^2);
W=sin(R)./R;
mesh(W) u=0.1:0.1:10; v=u;
[U,V]=meshgrid(u,v);
EjecutandoR=sqrt(U.\ 2+V.\de2);
este conjunto instrucciones se obtiene la siguiente figura:
W=sin(R)./R;
mesh(W)
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
38
44 Capı́tulo 1. Introducción al Matlab
de colores. Esto hace que los valores pequeños se dibujen con los colores bajos del
mapa, mientras que los valores grandes se dibujan con los colores altos. La función
que representa la correspondencia color del gráfico-valor de la función es la función
colorbar . La función caxis permite ajustar manualmente la escala de colores.
Su forma general es: caxis([cmin, cmax]) donde cmin y cmax son los valores
numéricos a los que se desea ajustar el mı́nimo y el máximo valor de la escala de
colores.
Relacionada con este punto se encuentra la función surf que tiene diversas po-
sibilidades referentes a la forma en que son representadas las facetas o polı́gonos
coloreados. Las tres posibilidades son las siguientes:
• shading flat determina sombreado con color constante para cada polı́gono.
Este sombreado se llama plano o flat.
• light Crea un foco de luz en los ejes actuales capaz de actuar sobre superficies
3-D. Se le deben pasar como argumentos el color, el estilo (luz local o en el
infinito) y la posición.
• save -ascii -double -tab % almacena 16 cifras separadas por tabs aunque
en formato ASCII sólo se guardan los valores.
Cuando se recuperan estos ficheros con load -ascii toda la información se guarda
en una única matriz con el nombre del fichero. Esto produce un error las filas tienen
un número desigual de elementos.
Con la opción -append en el comando save la información se guarda a conti-
nuación de lo que hubiera en el fichero. Es posible también almacenar con el formato
binario de la versión 4.* de MATLAB utilizando la opción -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 de
la sesión. Existe otra forma más sencilla de almacenar en un fichero un texto que
describa lo que el programa va haciendo (entradas y salidas utilizadas ası́ como los
comandos utilizados). Esto se hace con el comando diary en la forma siguiente
diary filename.txt.
Relacionada con la anterior se encuentran los comandos diary off que suspende
la ejecución de diary y diary on que la reanuda. El simple comando diary pasa
de on a off y viceversa. Para poder acceder al fichero filename.txt con el bloc de
notas, notepad, es necesario que diary esté en off.
Además de estar optimizado para trabajar con matrices y vectores MATLAB está
especialmente preparado para trabajar con polinomios. Para MATLAB un polinomio
se 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 orientadas
al cálculo con polinomios son las siguientes:
• tic ops toc imprime el tiempo en segundos requerido por ops. El comando
tic pone el reloj a cero y toc obtiene el tiempo transcurrido.
Una forma de llamar al profiler podrı́a ser la siguiente (se supone que estas
lı́neas forman parte de un fichero *.m):
• operator como builtin pero incluyendo también el tiempo empleado por los
operadores tales como la suma + y el producto *.
Otros posibles comandos relacionados con el profiler de MATLAB son los siguien-
tes:
• profile on –detail level como el anterior, pero con el grado de detalle indicado.
• profile resume vuelve a activar el profiler sin poner a cero los contadores.
• profile report detiene el profiler, genera páginas HTML con los resultados y
los muestra en un explorador e Internet.
• profile status muestra una estructura conteniendo los datos del profile.
• type file.txt imprime por la pantalla el contenido del fichero de texto file.txt
• lookfor palabra busca palabra en las primeras lı́neas de los ficheros ∗.m.
Finalizamos este rápido repaso a MATLAB con las funciones evalc, feval y
evalin. Estas funciones tienen mucho que ver con las cadenas de caracteres ya que
necesitan la flexibilidad de éstas para alcanzar todas sus posibilidades.
50 Capı́tulo 1. Introducción al Matlab
for n = 1:10
eval([’A’,num2str(n),’ = magic(n)’])
end
E STE primer tema se centra en los conceptos, técnicas y métodos de diseño fun-
damentales de la Teorı́a de Control Continuo. La organización del tema es como
sigue. En primer lugar revisaremos los conceptos más útiles de la Teorı́a de Control,
para pasar después a analizar los modelos y sus respuestas. En la tercera parte del
tema se estudian los principios de la realimentación. El tema finaliza analizando los
métodos clásicos de diseño de controladores (mediante el Lugar de las Raı́ces y la
Respuesta en Frecuencia).
• Assignments.
Robert Babuška Control Engineering Laboratory, ITS, TU Delft 5 Robert Babuška Control Engineering Laboratory, ITS, TU
• Linear algebra d
Goal (reference) Distu
ts.
• Control systems
Matlab/Simulink: demos and examples. u y u
Proceso Controller Pr
d
Objetivo (referencia) Señales de ruido
u y u y
Process Controlador Proceso
e controlled (output)
Síntesis Modelización
variable (control input)
(input that cannot be influenced) Modelo
Matemático
Control Engineering Laboratory, ITS, TU Delft 7 Robert Babuška Control Engineering Laboratory, ITS, TU Delft 8
• Evans, 1948. Presenta la Teorı́a de las Raı́ces que es la base del diseño de
compensadores mediante el Método del Lugar de las Raı́ces.
Figura 2.3: Esquema de control mediante redes neuronales. Para controlar una planta mediante
un controlador se ajusta su actuación mediante la señal de error que comete la planta.
Figura 2.4: Esquema de control adaptativo. El regulador se va adaptando a partir de las salidas
que proporciona un estimador de la actuación de la planta cuya actuación se va controlando
mediante el mismo controlador. Se trata de un proceso adaptativo o iterativo.
• Control Neuronal. Está basado en otra técnica de la I.A., las redes neuro-
nales, y presentan grandes ventajas por tratarse de elementos de procesado no
lineal en los que no es necesaria ninguna asunción sobre las señales adquiridas
o sobre el sistema a modelar.
• Automática. Se define como “la ciencia que estudia a los sistemas cibernéticos
en los que ha sido introducido conscientemente algún elemento que realiza fun-
ciones de control”.
• Señal. Se define como una “magnitud fı́sica que lleva una información”.
Sistemas dinámicos
señales son las denominadas perturbaciones, que pueden dividirse en aquellas que
son medibles directamente y aquellas que sólo pueden ser observadas a través de su
influencia sobre la salida y que son a menudo conocidas como ruido. La diferencia
entre las entradas y las perturbaciones medidas es, a menudo, de menor importancia
para el proceso de modelización de un sistema (Ljung, 1999) (ver Fig. 2.5).
(a)
v
w
y
u
w: radiación solar
y: temperatura
u: velocidad almacenada
del ventilador
Figura 2.5: (a) Representación gráfica de un sistema con una salida y, una entrada u, una
perturbación medida w y una no mensurable v. (b) Ejemplo de sistema. Panel solar de una casa:
u entrada, I es la perturbación medida, y es la salida, v son las perturbaciones no mensurables.
Modelos de sistemas
5.5
4.5
3.5
16 17 18 19 20 21 22 23 24
Entrada
7
6.5
6
5.5
5
4.5
4
3.5
16 17 18 19 20 21 22 23 24
0.12
0.1
0.08
0.06
0.04
0.02
−0.02
−0.04
−0.06
0 2 4 6 8 10 12 14 16 18 20
lags
Tabla 2.1: Relación de analogı́as entre las variables fı́sicas ası́ como algunas implementaciones
de sistemas de control
Eléctrico Térmico Hidráulico Desplazamiento Rotación
Corriente Flujo de calor Flujo de fluido Fuerza Par
Voltaje Temperatura Precisión Velocidad Velocidad an-
gular
Resistencia Coeficiente de Resistencia Rozamiento Rozamiento
transmisión
Inductancia — Inercia Muelle Muelle
Capacidad Capacidad Compresión Masa Momento de
térmica inercia
2.2 Modelos dinámicos y respuesta dinámica. 63
en la primera fase las entradas determinan las variables de estado del sistema
y en la segunda las variables de estado determinan su salida.
Este método 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 algebráicas de una variable compleja
s y reemplazar operaciones como la diferenciación y la integración por operaciones
algebráicas en el plano complejo.
Las bases de las técnicas analı́ticas aplicadas a los sistemas lineales e invariables
en el tiempo (SLIT) son:
2.2 Modelos dinámicos y respuesta dinámica. 65
Z +∞ Z +∞ Z 0+
−st −st
F (s) = u(1)e dt = δ(t)e dt = δ(t)dt = 1 (2.4)
0 0 0−
68 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
Z +∞ Z +∞
1
F (s) = u(1)e−st dt = e−αt e−st dt = (2.5)
0 0 s+α
Z +∞ Z +∞
−st ω
F (s) = u(1)e dt = sin(ωt)e−st dt = · · · = (2.6)
0 0 s2 + ω2
• Superposición.
• Retardo temporal.
• Escalamiento temporal.
1 s
L[f (αt)] = F (2.11)
|α| a
• Retardo en frecuencia.
• Diferenciación.
d
L f (t) = sF (s) − f (o− ) (2.13)
dt
• Integración real.
Z t
F (s)
L f (τ )dτ = (2.14)
o s
70 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
• Convolución.
• Integración compleja.
Z ∞
f (t)
L = F (s)ds (2.16)
t s
d
L[tf (t)] = − F (s) (2.17)
ds
f(t) L[ f(t) ]
1 (t)
1
s 1(t)
1
s2 t
1
s+a e at
1
(s+a)2
te at
a
s2 +a2 sin at
s
s2 +a2 cos at
s+a e at cos at
(s+a)2 +b2
Ejercicios propuestos
1
L[f (t)] = F (s) = , (2.18)
s(s2 + s + 1)
2.2 Modelos dinámicos y respuesta dinámica. 71
3. A partir de:
(s + 2)(s + 4)
Y (s) = , (2.19)
s(s + 1)(s + 3)
encontrar y(t).
4. A partir de:
(s + 3)
F (s) = , (2.20)
(s + 1)(s + 2)
encontrar f (t).
3(s + 2)
G(s) = , (2.21)
s2 + 2s + 10
ÿ(t) + 5ẏ(t) + 4y(t) = u(t); y(0) = 0, ẏ(0) = 0, u(t) = 2e−2t 1(t) (2.23)
Este proceso es complejo, por lo que usamos las tablas o en su defecto la expansión
en fracciones simples para que, al escribir F(s) en términos de funciones simples de
s, se pueden reconocer las transformadas inversas de Laplace. De hecho, en los
problemas de Teorı́a de Control, F(s) tiene usualmente la forma:
1. EJEMPLO 1.
s3 + 5s2 + 9s + 7
F (s) = , (2.26)
(s + 1)(s + 2)
2s + 12
F (s) = , (2.29)
s2 + 2s + 5
SOLUCIÓN. Como la función 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 función seno y coseno amortiguadas, y no en fracciones
simples. De este modo:
s2 + 2s + 5 = (s + 1)2 + 22 (2.30)
ω
L[sin(ωt)e−αt ] = (2.31)
(s + α)2 + ω 2
s+α
L[cos(ωt)e−αt ] = , (2.32)
(s + α)2 + ω 2
podemos decomponer la expresión de la siguiente forma:
10 + 2(s + 1) 2 s+1
F (s) = 2 2
=5 2 2
+2 (2.33)
(s + 1) + 2 (s + 1) + 2 (s + 1)2 + 22
3. EJEMPLO 3.
s2 + 2s + 3
F (s) = , (2.35)
(s + 1)3
74 Example: Physicalón
Capı́tulo 2. Introducci Modeling of aContinuos
a los Sistemas DC Motor de Control
R L
+ T
+
J
V Vb = Kω
-
t) -
bω
di dθ
L + Ri = V − Vb, Vb = Kω = K , T = Ki
dtDC Motor: Differential dt Equations
di(t) dθ(t)
L dt + Ri(t) = V (t) − K dt parte eléctrica
d2θ(t) dθ(t)
J dt2 + b dt = Ki(t) parte mecánica
θ(s) K
G(s) = =
V (s) s[(Ls + R)(Js + b) + K 2]
2. de
Los ceros Form
unaregression
función deequations:
transferencia son las raı́ces del numerador, mientras
que los polos son las raı́ces del denominador. En nuestro caso, por tanto, el cero se
y(2) = ay(1) + bu(1)
y(3) = ay(2) + bu(2)
..
y(N ) = ay(N −1) + bu(N −1)
x x o
H (s) =
1 + 3 ; h(t) = e t +e 2t
s+1 s+2
donde hemos supuesto unas determinadas condiciones iniciales que no tienen porqué
cumplirse siempre.
Si aplicamos la transformada de Laplace, obtenemos:
Y (s) A
T sY (s) + Y (s) = AU (s) → H(s) = = , (2.44)
U (s) 1 + Ts
• Impulso unitario:
A A
U (s) = 1 → Y (s) = → y(t) = L−1 [Y (s)] = e−t/T , t > 0 (2.45)
1 + Ts T
76 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
Por tanto se trata de una caı́da exponencial donde T simboliza el tiempo que
tarda en reducirse la salida en e−1 = 0.368 de su valor inicial. Si T > 0 tenemos
un polo p1 = −1/T < 0, por lo que y(t) es decreciente y el sistema es estable.
1 T T2
Y (s) = − + , (2.47)
s2 s 1 + sT
que tomando la TIL obtenemos:
3.5
2.5
y(t)
1.5
0.5
0
0 0.5 1 1.5 2 2.5 3 3.5 4
t
A 1
u(t) = 1(t) → U (s))1/s → Y (s) = G(s)U (s) = , (2.49)
1 + Ts s
La respuesta temporal será la siguiente:
A 1
y(t) = L−1 { } = A(1 − e−t/T ) (2.50)
1 + Ts s
Si suponemos que las condiciones inciales no son nulas, sino que y(0) = b,
podemos calcular los valores en régimen estacionario y transitorio:
0.9
0.8
0.7
0.6
y(t)
0.5
0.4
0.3
0.2
0.1
jw
1 1 1 1
0 0 0 0
Figura 2.22: Respuesta impulsional en función de la posición de los polos en un sistema de primer
orden.
2 m
X di y(t) X dj u(t)
ai = bj , m≥2 (2.51)
dti dtj
i=0 j=0
wn2
G(s) = , (2.52)
s2 + 2ξwn s + wn2
donde ξ es la relación de amortiguamiento y wn es la frecuencia natural. Esta
expresión se corresponde al sistema con realimentación unitaria mostrado en la Fig.
2.23:
u(t) y(t)
+
-
Figura 2.23: Sistema de segundo orden como bloque con realimentación unitaria.
Figura 2.24: Respuesta de un sistema de segundo orden en función de la posición de los polos.
p
p1,2 = −ξwn ± jwn 1 − ξ2 (2.55)
En este caso, como p21 + p22 = wn2 , y por tanto ξ 2 + w2 = wn2 , esta situación se
da alrededor de una circunferencia de radio la frecuencia natural, wn .
80 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
p
p1,2 = −ξwn ± wn ξ2 − 1 (2.57)
wn2 1
Y (s) = G(s)U (s) = , (2.58)
s2 + 2ξwn s + wn2 s
que para el caso 0 < ξ < 1 se obtiene una respuesta temporal:
σ
y(t) = 1 − e−σt (cos(wd t) + sin(wd t)), (2.59)
wd
Figura 2.25: Respuesta temporal de un sistema de segundo orden en función de distintos valores
del coeficiente de amortiguamiento, ξ.
2.2 Modelos dinámicos y respuesta dinámica. 81
Figura 2.26: Respuesta temporal transitoria tı́pica de un sistema de segundo orden. Se indican
también 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.
Ejemplos
x -4 x -4
(c) (d)
Im(s) Im(s) p1 = 0
φ2 5.66 p2,3 = -4+4j
_
x 90
4 x
4
φ1
90+45
x x
-4 -2 Re(s) -4 -2 Re(s)
45
90
φ3 x -4 x
-4
-5.66
p1 = 0 φ1
p2,3 = -4+4j
_ φ2 φ3
los ceros en un sistema de segundo orden se basa en que modifican los coeficientes
de los términos exponenciales. Si el cero se desplaza lejos de los polos, tendrá poco
efecto sobre la respuesta. Por el contrario, si el cero está en el valor de la parte real
de los polos podrı́a tener influencia decisiva sobre la respuesta. El mayor efecto de
los ceros es, por tanto, el de aumentar Mp con poca influencia sobre el tiempo de
estabilización.
Por tanto, resulta evidente que la posición de polos y ceros en un sistema de
control tiene especial relevancia en las caracterı́sticas de su respuesta. Veamos este
hecho con un ejemplo. Si consideramos los sistemas:
2 2 2
H1 (s) = = − (2.60)
(s + 1)(s + 2) s+1 s+2
0.9
0.8
0.7
0.6
Amplitude
To: Y(1)
0.5
0.4
0.3
0.2
0.1
0
0 1 2 3 4 5 6
Time (sec.)
Figura 2.28: Respuesta de los sistemas H1 (s) y H2 (s). Con la adición del cero conseguimos un
menor tiempo de subida.
• Los valores de los residuos dependen de los polos y de los ceros de lazo cerrado.
(a)
Controlador Proceso
Salida
Entrada de
referencia
Control de entrada
(b)
Entrada de
referencia
+
Controlador Proceso
- Salida
Control de entrada
Sensor
Figura 2.29: Estructuras básicas en el control de sistemas: (a) Lazo abierto y (b) lazo cerrado.
r e y
+ k H(s)
-
1
H(s) = , (2.68)
s[(s + 4)2 + 16]
realimentado con lazo unitario, podemos establecer su ecuación caracterı́stica
como:
s[(s + 4)2 + 16] + k = 0 (2.69)
En la Fig. 2.32 mostramos la posición de las raı́ces de la ecuación caracterı́stica
y la respuesta ante una señal escalón con k = 1, k = 100 y k = 275.
86 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
x x
step response
1
Amplitude
0.5
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Time (secs)
proportional feedback, k =1
1
Amplitude
0.5
0
0 2 4 6 8 10 12 14
Time (secs)
proportional feedback, k =10
2
Amplitude
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)
proportional feedback, k =100
2
Amplitude
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)
Figura 2.31: Posición de los polos del sistema y respuesta escalón 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 las
raı́ces de la ecuación caracterı́stica pasen del semiplano negativo al positivo.
2.3.2 Sensibilidad
Podemos definir la sensibilidad como el cambio relativo de una magnitud respecto
a otra. La sensibilidad de la magnitud Y respecto a la magnitud X, se define ası́:
∂Y
Y Y X ∂Y
SX ≡ ∂X
= (2.70)
X
Y ∂X
kG(s)
H(s) = , (2.71)
1 + kG(s)
la sensibilidad de H respecto de K se define como:
H K ∂H 1
SK ≡= = → 0 si |KG| es elevado. (2.72)
H ∂K 1 + KG
2.3 Principios esenciales de la realimentación 87
step response
0.04
Amplitude
0.02
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Time (secs)
proportional feedback, k =1
1
Amplitude
0.5
0
0 20 40 60 80 100 120 140 160 180 200
Time (secs)
proportional feedback, k =100
2
Amplitude
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)
proportional feedback, k =275
2
Amplitude
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
Time (secs)
Figura 2.32: Posición de los polos del sistema y respuesta escalón para k = 1, k = 100 y k = 275.
R(s)
E(s) = (2.73)
1 + G(s)
Por otro lado, la entrada de referencia a un sistema toma, por norma general, la
forma:
tk
r(t) = 1(t) (2.74)
k!
1
R(s) = k+1 (2.75)
s
En la mayorı́a de los casos, la referencia de entrada no será constante sino que
puede ser aproximada por una función lineal en un periodo de tiempo suficiente para
que el sistema alcance el estado estacionario. Esto se conoce como error en estado
estacionario. El tipo de la entrada a un sistema depende del valor de k:
Tabla 2.2: Expresiones de los errores en régimen estacionario en función del tipo de entrada.
Las constantes representan el tipo de error: Kp es la constante de error de posición, Kv es la
constante del error de velocidad y Ka es la constante para el error de aceleración.
Entrada
Tipo Escalón Rampa Parábola Polinómico
1 2 1 k
1(t) t 2t kt
0 1/(1+Kp ) ∞ ∞ ∞
1 0 1/Kv ∞ ∞
2 0 0 ∞
....... . . . ∞
k 0 0 0 1/K0
con el tipo del sistema. Para realimentación no unitaria, el tipo del sistema se puede
definir con respecto a la entrada de referencia:
ep → Kp = limG(s) (2.80)
ev → Kv = limsG(s) (2.81)
ea → Ka = lims2 G(s) (2.82)
Teorema de Truxal
n Xm
1 d X 1 1
= − [lnT ]s=0 = − + (2.83)
Kv ds pi zj
i=1 j=1
• Cualquier entrada acotada produce una salida acotada (BIBO, “Bounded Input
Bouded Output”).
• TEOREMA. “La condición necesaria y suficiente para que un SLIT sea esta-
ble es que su respuesta g(t) a la entrada impulso sea absolutamente integrable”.
90 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
1. Marcar los polos de la función de transferencia en lazo abierto con aspas (‘X’)
y los ceros con cı́rculos (‘O’).
180o
X O X
O X X
Figura 2.34: Algunos ejemplos de polos y ceros sobre el eje real para dibujar el LGR.
donde el orden del polo o cero y l toma valores enteros: los ángulos están entre
±180o .
Consideremos, por ejemplo el sistema en lazo abierto siguiente:
s+1
G(S) = , (2.90)
s[((s + 2)2 + 4)(s + 5)]
7. Completar el dibujo: las ramas empiezan en los polos y acaban en los ceros o
94 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
en el ∞.
K G = 1 → K = Ka
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 ecuación, cuando el valor de K tiene el
valor del punto.
Figura 2.38: Situaciones tı́picas de puntos de ruptura (“breakway point”, “saddle point”).
1
G(s) = (2.92)
s[(s + 4)2 + 16]
Im(s)
x x
Re(s)
Punto de ruptura
Im(s)
Punto de ruptura
x
-1 Re(s)
orden 2
X
X O
X X
X
O
X
orden 2
K
1+ =0 (2.97)
s[(s + 4)2 + 16]
s3 + 8s2 + 32s + K = 0 (2.98)
d
[−1/G]s=s0 = 0 → 3s2 + 16s + 32 = 0 → s0 = −2.67 ± 1.89j (2.99)
ds
Como este s0 NO está en el LGR, no nos ha servido el proceso. Hay que
recordar que es una condición necesaria pero no suficiente.
7. Completamos el LGR. Ver Fig. 2.42d.
2.4 Método de diseño del lugar de las raı́ces (MLR) 99
(a) (b)
Im(s) p1 = 0 Im(s)
p2,3 = -4+4j
_
x
x 4 4
π/3
-2.67
x x
-4 -2 Re(s) -4 -2 Re(s)
−π/3=5π/3
x -4 x -4
(c) (d)
Im(s) Im(s) p1 = 0
φ2 5.66 p2,3 = -4+4j
_
x 90
4 x
4
φ1
90+45
x x
-4 -2 Re(s) -4 -2 Re(s)
45
90
φ3 x -4 x
-4
-5.66
p1 = 0 φ1
p2,3 = -4+4j
_ φ2 φ3
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 número impar de ceros + polos reales.
(s + 3)(s + 1 ± j3)
G(s) = (2.100)
s(s + 1)(s + 2)3 (s + 4)(s + 5 ± 2j)
10
2
Imag Axis
-2
-4
-6
-8
-10
-6 -5 -4 -3 -2 -1 0 1 2
Real Axis
Recordemos que:
• Adición de polos3 .
• Adición de ceros.
Compensación en adelanto
Figura 2.46: Lugar de las Raı́ces para la inclusión de un compensador por adelanto.
Figura 2.47: Lugar de las Raı́ces para la inclusión de un compensador por adelanto (s=-2) y un
polo (s=-20).
• Si el polo está demasiado cerca al cero, entonces el LGR se aleja hacia una
forma no compensada y el cero no hace su función.
con una barra fija en su capó y que oscila conforme el coche avanza y frena (Fig.
2.48).
u m
φ(s) 1
θ̈ + θ = u → s2 φ(s) − φ(s) = U (s) → = 2 (2.105)
φU (s) s −1
1.5
0.5
Imag Axis
Imag Axis
Imag Axis
0 0 0
-0.5
-1
-1.5
-2 -5 -5
-2 -1 0 1 2 -4 -2 0 2 -4 -2 0 2
Real Axis Real Axis Real Axis
Figura 2.49: Lugar de las raı́ces para (a) el sistema original, (b) compensador 1 y (c) compensador
2.
subplot(131),rlocus([1],[1 0 -1]),grid,title(’(a)’)
alpha = 2;beta = 3;
2.4 Método de diseño del lugar de las raı́ces (MLR) 105
+ s+α 1
u e
2
s+β s -1
-
Figura 2.50: Control mediante un compensador por adelanto del sistema coche+barra.
Compensación en atraso
• Una raı́z de lazo cerrado se queda muy cerca del cero de compensación por
retardo de –1, lo que corresponde a un transitorio muy lento. Esta lentitud
se debe a que el cero casi cancela el polo en la función de transferencia. Sin
embargo, este decaimiento es tan lento que este término puede aumentar el
valor del tiempo de establecimiento.
Figura 2.51: Lugar de las Raı́ces para la inclusión de un compensador por atraso con control de
velocidad.
1 + Ts s + T1
Gc (s) = Kc α = Kc 1 , 0 < α < 1. (2.108)
1 + αT s s + αT
Si el polo y el cero se colocan muy cerca entre si, s = s1 donde s1 es uno de los
polos dominantes de lazo cerrado por lo que s1 + 1/T y s1 + 1/βT son casi iguales y:
s + T1
|Gc (s)| = |Kc 1 | ≈ Kc . (2.110)
s + βT
s + T1
Gc (s) = Kc 1 . (2.113)
s + βT
• Trazar el LGR del sistema compensado. Poner los polos dominantes de l.c. en
el LGR. Poner los polos dominantes de l.c. deseados conforme a las especifica-
ciones de la respuesta transitoria.
Y (s)
= G(s) → G(jw) (2.115)
U (s)
110 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
Definimos:
Dado un sistema:
(s − z1 )(s − z2 )... Πm (s − zi )
KG(s) = K = K ni=1 (2.120)
(s − p1 )(s − p2 )... Πj=1 (s − pj )
Πm
i=1 (jwτi + 1)
→ KG(jw) = K0 n ; K0 = |KG(jw)|w<< (2.121)
Πj=1 (jwτj + 1)
y el de fase:
Todas las funciones de transferencia están compuestas por tres tipos de términos:
Se trata de una recta con pendiente n (20 db/dec) en una representación lo-
garı́tmica de la amplitud y añade una fase de n90o en el diagrama de fase:
Figura 2.53: Diagrama de Bode de (a) amplitud y (b) fase para términos de primer orden.
Por tanto, este término añade una linea con pendiente 0 para w << 1/τ y una
linea con pendiente ±1 para w > 1/τ . El punto de ruptura es w = 1/τ ya que
las 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 añaden ±90o cuando w > 1/τ .
jw 2 jw
• Término de segundo orden: [( w n
) + 2ξ w n
+ 1]±1 (Fig. 2.54).
Figura 2.54: Diagrama de Bode de (a) amplitud y (b) fase para términos de segundo orden.
grid
bode(20*[1 0.5],conv([1 10 0],[1 50]))
Figura 2.55: Diagramas de amplitud (a), fase (b) y una aproximación de la fase (c) para el
20(s+0.5)
sistema G(s) = s(s+10)(s+50) .
114 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
Bode Diagrams
From: U(1)
50
-50
-20
-40
-60
-80
To: Y(1)
-100
-120
-140
-160
-180
-200
-2 -1 0 1 2 3
10 10 10 10 10 10
Frequency (rad/sec)
20(s+0.5)
Figura 2.56: Diagramas de amplitud (a), fase (b) para el sistema G(s) = s(s+10)(s+50) mediante
bode.m de MATLAB.
1
G(s) = (2.127)
s(s + 1)2
1
Figura 2.58: Lugar de las raı́ces para els sistema G(s) = s(s+1)2 . Se observa que para K > 2 el
sistema se hace inestable.
1
Figura 2.59: Diagramas de Bode para el sistema G(s) = s(s+1)2 con K=1.
1 + KG(s) = 0, (2.129)
Bode Diagrams
-50
Phase (deg); Magnitude (dB)
-100
-50
-100
-150
-200
-250
-300
-2 -1 0 1
10 10 10 10
Frequency (rad/sec)
1
Figura 2.60: Diagramas de Bode para el sistema G(s) = s(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 hay
varios rodeos mientras evaluamos la función de transferencia se dice que el sistema
es inestable.
Un rodeo en el sentido de las agujas del reloj de -1 indica la presencia de un cero
en el semiplano derecho mientras que en sentido contrario indica la presencia de un
polo en el semiplano derecho. El número de rodeos en el sentido de las agujas del
reloj es:
N = Z − P. (2.130)
Z =N +P (2.131)
El lugar de las raı́ces muestra que el sistema es estable para cualquier valor de
K. El Diagrama de Nyquist se muestra para K = 1 y no encierra a -1. Como
G(s) sólo cruza el eje real negativo en G(s) = 0, nunca cruzará −1/K para
cualquier valor de K positivo.
1
Figura 2.61: Planta, LGR, Bode y Nyquist del Ejemplo 1: G(s) = (s+1)2 .
120 Capı́tulo 2. Introducción a los Sistemas Continuos de Control
1
Figura 2.62: Planta del Ejemplo 2: G(s) = s(s+1)2 .
1
Figura 2.63: Diagrama de Bode del Ejemplo 2: G(s) = s(s+1)2 .
1
Figura 2.64: Diagrama de Nyquist del Ejemplo 2: G(s) = s(s+1)2 .
resonancia, frecuencia del pico de resonancia y ancho de banda del sistema en lazo
cerrado. 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 MATLAB
nichols.m. Mediante la función de Matlab ngrid.m se muestran las lı́neas constantes
de fase y magnitud en un Diagrama de Nichols. En la Fig. 2.68 mostramos un
ejemplo de Diagrama de Nichols para el sistema:
s+1
G(s) = (2.135)
s(s + 3)(s + 5)
2.5.6 Compensación
Compensación en adelanto
s + T1
D(s) = Kc 1 , 0 < α < 1. (2.136)
s + αT
s+1
Figura 2.65: LGR, Bode y Nyquist del Ejemplo 3: G(s) = s
s( 10 −1)2 .
2.5 Método de diseño de la respuesta en frecuencia (MRF) 123
Figura 2.66: Definiciones de los márgenes de estabilidad (PM y GM) sobre un Diagrama de
Nyquist genérico.
• Con esa K trazar los Diagramas de Bode del sistema no compensado pero con
la ganancia determinada. Evaluar el margen de fase.
• Las frecuencias de cruce del compensador por adelanto son: CERO: w = 1/T ,
POLO: w = 1/αT .
• Kc = K/α.
Figura 2.67: Diagrama de Nyquist de un sistema complejo y definición del margen de vector.
2.5 Método de diseño de la respuesta en frecuencia (MRF) 125
Nichols Charts
From: U(1)
50
To: Y(1)
-100
-150
-200
-180 -160 -140 -120 -100 -80 -60
s+1
Figura 2.68: Ejemplo de Diagrama de Nichols para el sistema en l.a. G(s) = s(s+3)(s+5) .
Se nos pide que el sistema en lazo cerrado tenga un error en estado estacionario
menor del 10% ante una entrada rampa y un sobreimpulso Mp < 25%.
El error en estado estacionario viene dado por:
1
(∞) = lim = s R(s), (2.139)
s→∞ 1 + D(s)G(s)
donde R(s) = 1/s2 para la rampa unitaria, con lo que la expresión se reduce a:
1 1 1
(∞) = lim = 1 = D(0) = K α , 0 < α < 1. (2.140)
s→∞ s + D(s) s+1 c
1−α √
1+α ,wm = 1/ αT , Mp ≈ 2sin(P1 M/2) ), podemos concluir que necesitamos un
PM=45o para conseguir los requerimientos (Fig. 2.70). Ahora sólo queda expe-
rimentar con algunos valores de α y T para conseguir el compensador deseado:
s
2 +1
D(s) = 10 s (2.141)
10 + 1
Figura 2.70: Diagramas de Bode para el sistema sin compensar (trazo continuo) y compensado
(trazo discontinuo) mediante red de adelanto.
Compensador PD
Se comporta como un filtro pasa alta y se emplea situando z = −1/TD de forma que
el adelanto de fase se da cerca de wc , es decir, donde |D(s)G(s)| = 1, de forma que
aumente la ganancia (Fig. 2.71).
La magnitud del compensador continúa creciendo con la frecuencia. Esto no es
deseable ya que amplifica el ruido de alta frecuencia que está siempre presente en los
problemas reales. Esto ocurre para w > 1/TD .
2.5 Método de diseño de la respuesta en frecuencia (MRF) 127
Compensación en atraso
Ts + 1
D(s) = K , (2.143)
αT s + 1
donde ahora α es mayor que 1. La Fig. 2.72 muestra el diagrama de Bode de este
tipo de compensador.
La compensación por atraso aumenta la magnitud en frecuencias por debajo de
los dos puntos de ruptura y por tanto disminuye los errores en estado estacionario.
Básicamente se trata de un filtro pasa–baja ya que las frecuencias bajas se mantienen
inalteradas y las altas son atenuadas.
El diseño de compensadores en atraso sigue el siguiente protocolo:
• Kc = K/α.
Compensador PI
1 K 1
D(s) = K(1 + ) = (s + ) (2.145)
TI s s TI
El aspecto deseado de este compensador es la ganancia ∞ a frecuencia nula que
reduce el error estático. Esto se consigue con el coste de un decrecimiento de la
2.5 Método de diseño de la respuesta en frecuencia (MRF) 129
fase por debajo del punto de ruptura w = 1/TI . Por tanto, este punto se sitúa
normalmente a una frecuencia menor que la de cruce para que el PM no quede
afectado mucho. La Fig. 2.73 muestra el efecto de un compensador integral.
Toolbox de Control
E STE tema revisamos las funciones más útiles que contiene la Toolbox de Control
de Matlab 5.3 (Mathworks, 1997).
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.
num = [3 6 7];
den = [1 0 -4.2 8];
o mejor aún:
num = [0 3 6 7];
den = [1 0 -4.2 8];
3s2 + 6s + 7
G(s) = , (3.2)
(s + 2)(s2 + 2s + 1)
num = [0 3 6 7];
den = conv([1 2],[1 2 1]);
134 Capı́tulo 3. Toolbox de Control
Todas las Toolbox de Matlab llevan una ayuda muy extensa tanto en HTML como
en 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 conseguir
ayuda de cualquier función. Por ejemplo:
help rlocus
+-----+
---->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.
3.4 Herramientas de Control con Matlab en Internet 141
Overloaded methods
help lti/rlocus.m
help frd/rlocus.m
Introducción al Entorno
Simulink
Quick Start
Running a Demo Model . . . . . . . . . . . . . . . 2-2
Description of the Demo . . . . . . . . . . . . . . . . 2-3
Some Things to Try . . . . . . . . . . . . . . . . . . 2-4
What This Demo Illustrates . . . . . . . . . . . . . . 2-5
Other Useful Demos . . . . . . . . . . . . . . . . . 2-5
1 Start MATLAB. See your MATLAB documentation if you’re not sure how to
do 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 contains
this model.
When you open the model, Simulink opens a Scope block containing two plots
labeled Indoor vs. Outdoor Temp and Heat Cost ($), respectively.
3 To start the simulation, pull down the Simulation menu and choose the
Start command (or, on Microsoft Windows, press the Start button on the
Simulink toolbar). As the simulation runs, the indoor and outdoor
temperatures appear in the Indoor vs. Outdoor Temp plot and the
cumulative heating cost appears in the Heat Cost ($) plot.
2-2
4 To stop the simulation, choose the Stop command from the Simulation
menu (or press the Pause button on the toolbar). If you want to explore other
parts of the model, look over the suggestions in “Some Things to Try” on page
2-4.
5 When you’re finished running the simulation, close the model by choosing
Close from the File menu.
House subsystem
2-3
2 Quick Start
Thermostat subsystem
Both the outside and inside temperatures are converted from Fahrenheit to
Celsius by identical subsystems
When the heat is on, the heating costs are computed and displayed on the Heat
Cost ($) plot on the Thermo Plots Scope. The internal temperature is displayed
on the Indoor Temp Scope.
• Each Scope block contains one or more signal display areas and controls that
enable you to select the range of the signal displayed, zoom in on a portion of
the signal, and perform other useful tasks. The horizontal axis represents
time and the vertical axis represents the signal value. For more information
about the Scope block, see Chapter 8.
• The Constant block labeled Set Point (at the top left of the model) sets the
desired internal temperature. Open this block and reset the value to 80
degrees while the simulation is running. See how the indoor temperature
and heating costs change. Also, adjust the outside temperature (the Avg
Outdoor Temp block) and see how it affects the simulation.
• Adjust the daily temperature variation by opening the Sine Wave block
labeled Daily Temp Variation and changing the Amplitude parameter.
2-4
What This Demo Illustrates
This demo illustrates several tasks commonly used when building models:
2 Double-click on the Demos icon. The MATLAB Demos window appears. This
window contains several interesting sample models that illustrate useful
Simulink features.
2-5
2 Quick Start
To create the model, first type simulink in the MATLAB command window. On
Microsoft Windows, the Simulink Library Browser appears.
2-6
Building a Simple Model
To create a new model on UNIX, select Model from the New submenu of the
Simulink library window’s File menu. To create a new model on Windows,
select the New Model button on the Library Browser’s toolbar.
You might want to move the new model window to the right side of your screen
so 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 the
following Simulink block libraries:
You can copy a Sine Wave block from the Sources library, using the Library
Browser (Windows only) or the Sources library window (UNIX or Windows).
2-7
2 Quick Start
To copy the Sine Wave block from the Library Browser, first expand the
Library Browser tree to display the blocks in the Sources library. Do this by
clicking first on the Simulink node to display the Sources node, then on the
Sources node to display the Sources library blocks. Finally click on the Sine
Wave node to select the Sine Wave block. Here is how the Library Browser
should look after you have done this.
Simulink library
Sources library
Now drag the Sine Wave node from the browser and drop it in the model
window. Simulink creates a copy of the Sine Wave block at the point where you
dropped the node icon.
To copy the Sine Wave block from the Sources library window, open the Sources
window 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
2-8
Building a Simple Model
Simulink node in the Library Browser and then clicking the resulting Open
Library 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 libraries
into the model window. You can move a block from one place in the model
window to another by dragging the block. You can move a block a short distance
by selecting the block, then pressing the arrow keys.
2-9
2 Quick Start
With all the blocks copied into the model window, the model should look
something like this.
If you examine the block icons, you see an angle bracket on the right of the Sine
Wave block and two on the left of the Mux block. The > symbol pointing out of
a block is an output port; if the symbol points to a block, it is an input port. A
signal travels out of an output port and into an input port of another block
through a connecting line. When the blocks are connected, the port symbols
disappear.
Now it’s time to connect the blocks. Connect the Sine Wave block to the top
input port of the Mux block. Position the pointer over the output port on the
right side of the Sine Wave block. Notice that the cursor shape changes to cross
hairs.
Hold down the mouse button and move the cursor to the top input port of the
Mux block. Notice that the line is dashed while the mouse button is down and
that the cursor shape changes to double-lined cross hairs as it approaches the
Mux block.
2-10
Building a Simple Model
Now release the mouse button. The blocks are connected. You can also connect
the line to the block by releasing the mouse button while the pointer is inside
the icon. If you do, the line is connected to the input port closest to the cursor’s
position.
If you look again at the model at the beginning of this section (see “Building a
Simple Model” on page 2-6), you’ll notice that most of the lines connect output
ports of blocks to input ports of other blocks. However, one line connects a line
to the input port of another block. This line, called a branch line, connects the
Sine Wave output to the Integrator block, and carries the same signal that
passes 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 Mux
block.
2 Press and hold down the Ctrl key. Press the mouse button, then drag the
pointer to the Integrator block’s input port or over the Integrator block itself.
2-11
2 Quick Start
3 Release the mouse button. Simulink draws a line between the starting point
and the Integrator block’s input port.
Finish making block connections. When you’re done, your model should look
something like this.
Now, open the Scope block to view the simulation output. Keeping the Scope
window open, set up Simulink to run the simulation for 10 seconds. First, set
the simulation parameters by choosing Parameters from the Simulation
menu. On the dialog box that appears, notice that the Stop time is set to 10.0
(its default value).
2-12
Building a Simple Model
The simulation stops when it reaches the stop time specified in the Simulation
Parameters 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 and
location. That file contains the description of the model.
To terminate Simulink and MATLAB, choose Exit MATLAB (on a Microsoft
Windows system) or Quit MATLAB (on a UNIX system). You can also type
quit in the MATLAB command window. If you want to leave Simulink but not
terminate MATLAB, just close all Simulink windows.
This exercise shows you how to perform some commonly used model-building
tasks. These and other tasks are described in more detail in Chapter 3.
2-13
144 Capı́tulo 4. Introducción al Entorno Simulink
Capı́tulo 5
Prácticas
146 Capı́tulo 5. Prácticas
Práctica 0
Ejemplos sencillos, cuestiones y demos.
3s2 + 4s + 5
G(s) = , (5.1)
2s2 + 2s + 3
2. Ejemplo 2. Representa en una misma figura las respuestas del sistema ante-
rior al impulso, el escalón unitario, rampa unitaria y la función ‘sinc’ hasta un
tiempo t = 10.
3s8 + 1.44s5 + 5s + 3
G(s) = , (5.2)
(1.44s + 2.2)(4s7 + 2.44s4 + 3.3s3 + 3)
>> 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]))
147
0.4 1.8
Amplitude
Amplitude
To: Y(1)
To: Y(1)
0.2 1.7
0 1.6
-0.2 1.5
0 2 4 6 8 10 0 2 4 6 8 10
20 1.5
15 1
Amplitude
Amplitude
To: Y(1)
To: Y(1)
10 0.5
5 0
0 -0.5
0 2 4 6 8 10 0 2 4 6 8 10
Figura 5.1: Respuestas del sistema del ejemplo 01 al impulso, el escalón unitario, rampa unitaria
y la función ‘sinc’ hasta un tiempo t = 10.
s+1 1
Gc (s) = , G(s) = (5.4)
s+2 500s2
R(s) Y(s)
+ Gc(s) G(s)
-
1
G(s) = . (5.5)
s3 + s2 + 2s + 23
q(s) = s3 + s2 + 4s + K = 0, (5.6)
10. Ejemplo 10. Encuentra el rango de K para que las raı́ces del siguiente polino-
mio estén en el semiplano izquierdo. Comprueba gráficamente los resultados:
11. Ejemplo 11. Generar con la orden ord2 un sistema de segundo orden. Re-
presenta gráficamente su respuesta ante un impulso, el escalón unitario, rampa
unitaria y la función ‘sin’ hasta un tiempo t = 10. Dibujar el diagrama de
polos y ceros usando pzmap.
16. Ejemplo 16. Obtener el Diagrama de Bode del sistema de control con lazo
de realimentación unitario siguiente:
K
G(s) = , (5.8)
s(s + 2)(s + 50)
438
T (s) = , (5.9)
s3 + 52s2 + 100s + 438
se pide:
149
>> 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)
1
18. Ejemplo 18. Para un sistema G(s) = s(s+2) con una ganancia en serie K
y lazo de realimentación unitario, se pide calcular K para que la salida y(t)
tenga un sobrenivel menor del 10% ante la entrada escalón.
20. Ejemplo 20. ¿Para qué sirve el comando ltiview? Inspecciona durante unos
instantes sus propiedades.
21. Ejemplo 21. Considera un sistema con los siguientes polos (‘x’) y ceros (‘o’):
Im
1
Re
The system is
Figura 5.3: Diagrama de polos y ceros del ejemplo 21.
a) stable b) unstable c) stability cannot be determined
¿El sistema es estable, inestable o no se puede determinar?
7. For an nth-order system
8. A discrete-time system
Práctica 1
Controladores P/I/D/PID. Compensación dinámica.
A. Retroalimentación P, I, D, PID
Dado el sistema:
1
G(s) = (5.10)
s(s + 1)
• Supón una retroalimentación diferencia. ¿Afecta ésta por sı́ sola al error en
estado estacionario? ¿Y a la estabilidad?
Dado el sistema:
K((s + 1)2 ) + 1
KG(s) = (5.11)
s2 (s + 2)(s + 3)
• ¿Cuáles son los ángulos de llegada a los ceros complejos y los ángulos de salida
desde los polos?
• ¿Cuál es el cruce del LGR con el eje imaginario? Usa el Criterio de Routh para
verificar los puntos de cruce.
Dado el sistema:
K
KG(s) = , (5.12)
s(s2 + 6s + 12)
Dado el sistema:
K
G(s) = , (5.13)
s(s + 1)
y el compesador:
s+z
D(s) = , (5.14)
s+p
• Estudiar el efecto de una red de adelanto y atraso sobre el LGR y sobre los
parámetros de la respuesta transitoria, para diferentes valores de z, p y z/p.
R(s) + + Y(s)
K 1 1
s+1 s
- -
KT
Práctica 2
Análisis de la respuesta en frecuencia y diseño de compensadores.
se pide:
Práctica 3
Introducción 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. Además, veremos cómo las caracterı́sticas
dinámicas de un sistema pueden mejorarse mediante su adecuada realimentación.
a=1
numH1=[1]
denH1=[1/a 1]
freqs(numH1, denH1)
o también,
Bode(numH1, denH1)
step(numH1, denH1)
El equivalente discreto de este sistema puede obtenerse mediante el método 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 analógico y digital son equivalentes, representamos si-
multáneamente sus respuestas al escalón unitario (fig.1),
step(numH1, denH1)
hold on
plot([0:size(y,1)-1]*T, y,’o’)
1
Bibliografı́a. 157
P1. Introducción a los Sistemas de Control (I)
0.9
0.8
0.7
0.6
Amplitude
0.5
0.4
0.3
0.2
0.1
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)
Figura 1: Respuestas ante entrada escalón unitario del sistema de primer orden continuo
y de su discreto equivalente (obtenido con el método del bloqueador de orden cero y un
periodo de muestreo T =0.1 segundo).
zeta=0.1
numH2=[1]
denH2=[1 2*zeta 1]
Bode(numH2, denH2)
Q=1/(2*zeta)
20*log10(Q)
2
158 Bibliografı́a.
P1. Introducción a los Sistemas de Control (I)
ts=pi/zeta
Mp=100*exp(-pi*zeta/(1-zeta^2)^0.5)
step(numH2, denH2)
3. Realimentación
A continuación realimentaremos convenientemente el sistema de segundo orden para
modificar su dinámica, de forma que el sistema resultante no oscile y su tiempo de es-
s+ωz
tablecimiento sea menor. Utilizaremos una compensación de la forma C(s) = s+ω p
, con
ωz = 1rad/s y ωp = 100rad/s,
numC=[1 1]
denC=[1 100]
Bode(numGH, denGH)
−50
Gain dB
−100
−150 −1 0 1 2 3
10 10 10 10 10
Frequency (rad/sec)
90
0
Phase deg
−90
−180
−1 0 1 2 3
10 10 10 10 10
Frequency (rad/sec)
3
Bibliografı́a. 159
P1. Introducción 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 óptimo de aproximadamente 900 . En el diagrama de Bode
se observa que será necesaria una ganancia adicional de aproximadamente 60db ≡ 1000, lo
que comprobamos haciendo,
Bode(1000*numGH, denGH)
La ganancia de lazo definitiva será,
numGH=1000*numGH
Para establecer la realimentación y obtener el sistema en lazo cerrado haremos,
[numF, denF]=feedback(numGH, denGH, 1, 1)
Podemos ahora comparar las respuestas al escalón 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 más rápido y estable que el sistema de
segundo orden de partida.
1.8
1.6
1.4
1.2
0.8
0.6
0.4
0.2
0
0 5 10 15 20 25 30 35 40 45 50
4. Error Estático
Sin embargo, apreciamos un error estático ante la entrada escalón (error de posición),
que no tenı́a el sistema de segundo orden de partida. Para eliminar el error será necesario
que el sistema sea de tipo 1, es decir, que GH(s) tenga un polo en el origen. Multiplicamos
GH(s) por s+ω s , con ωz2 = 1rad/s,
z2
4
160 Bibliografı́a.
P1. Introducción a los Sistemas de Control (I)
Bode(numGH2, denGH2)
1.2
0.8
Amplitude
0.6
0.4
0.2
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)
Figura 4: Respuesta del sistema compensado ante entrada escalón unitario una vez elimi-
nado el error de posición.
5
Bibliografı́a. 161
P2. Introducción a los Sistemas de Control (II)
Práctica 4
Introducción a los Sistemas de Control (II)
100(s+2)
3. H3 (s) = s4 +42s3 +491s2 +1202s+4010
numH1=100
denH1=[1 3 103 101]
damp(roots(denH1))
denH1eq=poly(-1)
numH1eq=dcgain(numH1, denH1)/dcgain(1, denH1eq)
step(numH1, denH1)
hold on
step(numH1eq, denH1eq)
grid
k(s+10)
2. GH2 (s) = s2 (s+1)(s+100)
k(100−s)
3. GH3 (s) = s(s+1)
1
162 Bibliografı́a.
P2. Introducción a los Sistemas de Control (II)
0.9
0.8
0.7
0.6
Amplitude
0.5
0.4
0.3
0.2
0.1
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Time (secs)
ke−sT
4. GH4 (s) = s
Cuestión 3: En relación con el tercer caso anterior, justifica que la frecuencia de cruce
nunca puede ser mayor que la frecuencia natural del cero del semiplano derecho.
2
Bibliografı́a. 163
P2. Introducción a los Sistemas de Control (II)
3
164 Bibliografı́a.
P3. Diseño Clásico de Compensadores
Práctica 5
Diseño Clásico de Compensadores
En esta práctica se diseña el control del posicionamiento del cabezal de una impresora.
Para el diseño del compensador se utilizan las técnicas clásicas de inspección de diagramas
de Bode y del lugar geométrico de las raı́ces.
1. Introducción
Se pretende construir un sistema de posicionamiento del cabezal de escritura de una
impresora, tal y como se muestra en la fig.1. Se dispone de un motor de tensión continua
bidireccional cuya velocidad angular de giro es,
Km
ω(s) = vc (s) (1)
[τ s + 1] [(s/ω0 )2 + 2ζ(s/ω0 ) + 1]
siendo vc la tensión de entrada al motor (entre Vcc− = −15v y Vcc+ = 15v), Km su ganancia
tensión-velocidad angular, τ = 0.1s su constante de tiempo dominante, ζ = 0.1961 y ω0 =
1020rad/s.
Cuestión 1: Encontrar Km si la máxima velocidad del motor es ωmax = 10 vueltas/s
y ésta se tiene con vc = Vcc .
El cabezal se adhiere al motor, y solidario con su eje se coloca una rueda dentada (de
radio R = 1cm) que transforma su velocidad angular en desplazamiento lineal. Para sensar
la posición exacta del cabezal se distribuye un potenciómetro a lo largo de su recorrido (de
longitud L = 0.5m), entre cuyos extremos se aplica la tensión de alimentación (fig.1). La
tensión ası́ obtenida es proporcional a la posición a través de v = VLcc x. El diagrama de
bloques del sistema es el mostrado en la fig.2.
1
Bibliografı́a. 165
P3. Diseño Clásico de Compensadores
v ref ve vc Km ω x 1 x
C (s ) R
+ 1 + τs s
−
Vcc
L
figure(1);
hold on;
step(numGm, denGm);
step(numGmre, denGmre);
grid;
title(’Velocidad angular del motor ante un escalón unitario’);
hold off;
figure(2);
bode(numGm, denGm);
%Ganancia directa:
numG1=R*numGm;
denG1=[denGm, 0];
%Ganancia de realimentación:
H=Vcc/L;
2
166 Bibliografı́a.
P3. Diseño Clásico de Compensadores
50
0
Gain dB
−50
−100 −1 0 1 2 3 4
10 10 10 10 10 10
Frequency (rad/sec)
−90
Phase deg
−180
−270
−1 0 1 2 3 4
10 10 10 10 10 10
Frequency (rad/sec)
Figura 3: Diagrama de Bode del motor, donde se observa la posición del polo simple domi-
nante y los dos polos complejos.
figure(1);
Bode(numGH1, denGH1);
[numF1, denF1]=feedback(numG1, denG1, H, 1);
figure(2);
step(numF1, denF1);
grid;
title(’Respuesta al escalón sin compensar’);
4. Sistema Compensado
Lo primero que haremos será introducir los datos del compensador. Cancelaremos el polo
dominante del motor, quedando pendiente únicamente el ajuste de ganancia (supondremos
inicialmente que tenemos ganancia Kc = 1).
wcz=wpm;
3
Bibliografı́a. 167
P3. Diseño Clásico de Compensadores
0.03
0.025
0.02
Amplitude
0.015
0.01
0.005
0
0 0.5 1 1.5 2 2.5 3 3.5 4
Time (secs)
Figura 4: Respuesta en lazo cerrado del sistema sin compensar ante entrada escalón unitario.
Kc=1;
numC=Kc*poly(-wcz)/wcz;
denC=1;
rlocus(numGH2, denGH2);
K=rlocfind(numGH2, denGH2)
Kc=K;
numG2=K*numG2;
numGH2=K*numGH2;
4
168 Bibliografı́a.
P3. Diseño Clásico de Compensadores
margin(numGH2, denGH2);
damp(roots(denF2));
abs(residue(numF2, denF2))
1500
1000
500
Imag Axis
−500
−1000
−1500
−2000
−2000 −1500 −1000 −500 0 500 1000 1500 2000
Real Axis
Figura 5: Lugar de las raı́ces del sistema una vez compensado. Tendremos siempre dos
polos complejos y uno real.
5
Bibliografı́a. 169
P3. Diseño Clásico de Compensadores
50
Gain dB
−50
−100 −1 0 1 2 3 4
10 10 10 10 10 10
Frequency (rad/sec)
−90
Phase deg
−180
−270
−360 −1 0 1 2 3 4
10 10 10 10 10 10
Frequency (rad/sec)
Figura 6: Bode de la ganancia de lazo del sistema compensado, una vez ajustada la ganancia.
Se muestran los márgenes de ganancia y de fase, y las frecuencias de cruce por 1800 y 0db
0.03
0.025
0.02
Amplitude
0.015
0.01
0.005
0
0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04
Time (secs)
6
170 Bibliografı́a.
P4. Introducción a Simulink de Matlab
Práctica 6
Introducción a Simulink de Matlab
En esta práctica se diseña el control del posicionamiento del cabezal de una impresora.
Para el diseño del compensador se utilizan las técnicas clásicas de inspección de diagramas
de Bode y del lugar geométrico de las raı́ces.
1. Introducción
En una central lechera se utiliza un sistema automático para el control del proceso de
pasteurización de la leche. El proceso consiste en la repetición de ciclos de temperatura de la
leche, entre 100 C y 900 C en 1 minuto. Para ello (fig.1) se sensa la temperatura de la leche en
cada uno de los recipientes de la fábrica mediante termopares debidamente acondicionados.
La tensión proporcionada por cada termopar v es adquirida por un ordenador que centraliza
el control digital del proceso. El ordenador compara las señales sensadas con una referencia
de temperatura (que él mismo genera) e implementa la función de compensación. La salida
del ordenador constituye la señal de control vc de una fuente de corriente (implementada
mediante un convertidor Buck con control de corriente de pico). La carga resistiva R del
convertidor está distribuida en el interior del depósito, y la potencia que se disipa en ella
permite controlar la temperatura del mismo.
Vin i
vc R
T
v
C(z) Kv
- T
+
Vref
Ordenador
1
Bibliografı́a. 171
i(s) Ki
Hi (s) = = (3)
vc (s) τi s + 1
vref ve vc i P T
C(s) Hi(s) 2IR HT (s)
+
-
v
Hv (s)
2. Modelo Simulink
A continuación se construirá el diagrama de bloques del sistema y se implementará en
Simulink.
2
172 Bibliografı́a.
Bibliografı́a
Ljung, L. (1999). System identification. Theory for the user. (2nd ed.). PTR Prentice
Hall, Upper Saddle River, N.J.