Guia Control Matlab PDF
Guia Control Matlab PDF
PRACTICA 0.
Fundamentos de Matlab para el estudio y análisis de
sistemas de control
Profesores:
Teoría: Pablo Gil Vázquez, [email protected]
Prácticas: Andrés Úbeda Castellanos, [email protected]
José Luis Ramón Carretero, [email protected]
Por su versatilidad y su uso extendido el paquete de software MATLAB se presenta como una
herramienta potente para la resolución de problemas de ingeniería de control.
En esta práctica se va a presentar diferentes tipos de órdenes y funciones de las que dispone
MATLAB y que van a ser utilizadas frecuentemente en las diferentes metodologías y técnicas
que se usan para abordar el control de sistemas físicos, así como para simular el
comportamiento de éstos.
Una vez que se ha ejecutado el software MATLAB desde el sistema operativo empleado
haciendo click con el ratón sobre el icono correspondiente, apareceré la ventana de comandos
que se identifica por el indicador de ejecución de comandos >>. Este indicador avisa de que el
MATLAB esta preparado para recibir la ejecución algún comando o rutina.
El MATLAB dispone de un comando que muestra una ayuda sobre los diferentes comandos
disponibles. Para ejecutar este comando basta teclear la palabra help después del indicador de
ejecución y pulsar la tecla [INTRO]:
>> help
El MATLAB automáticamente crea siempre una variable llamada ans que guarda el resultado
de la última operación cuando no se indica ninguna variable donde guardar dicho resultado.
Si se ejecuta:
>> a=2
>> b=3
>> a*b
>> ans
ans =
6
Práctica 0. Fundamentos de Matlab para el estudio y análisis de sistemas de control
MATLAB también distingue entre mayúsculas y minúsculas y para ejecutar funciones y rutinas
predefinidas deben escribirse en minúsculas.
La forma más sencilla de salir de MATLAB es ejecutar el comando quit o exit en la ventana
de comandos. Al terminar una sesión de MATLAB las variables en el espacio de trabajo se
borran. Para guardar el espacio de trabajo, de modo que las variables definidas se mantengan
en próximas sesiones se ejecuta el comando save. El comando save guarda todas las
variables definidas en la sesión en un archivo llamado matlab.mat
Si lo que se desea es guardar solo algunas variables se puede utilizar parámetros con el
comando save indicando el nombre de las variables y el nombre del fichero en el que se
quieren guardar. Por ejemplo, la siguiente sentencia almacena en el fichero
misvariables.mat el contenido de las variables A B y C.
Por otro lado, si lo que se desea es volver a cargar las variables previamente guardadas bastaría
ejecutar uno de los siguientes comandos, en función de si lo que se desea es cargar el fichero
matlab.mat o el fichero misvariables.mat.
>> load
>> load misvariables
Si lo que se quiere es listar las variables disponibles en el entorno de trabajo, bastará con
ejecutar el comando who, o el comando whos si lo que se desea es ver información adicional
sobre dichas variables.
1. Introducción de datos.
1.1 Vectores.
El modo más sencillo de introducir una secuencia de datos en MATLAB es hacerlo mediante
una lista explícita de elementos, donde los elementos deben estar separados por espacios en
blanco o por comas, y se encuentran encerrados entre corchetes:
>> x=[1 2 3 4 5]
ó
>> x=[1,2,3,4,5]
x =
1 2 3 4 5
De ahí que el comando anterior creará un vector fila que contiene los elementos 1, 2, 3, 4 y 5. Si
lo que queremos es introducir los datos como un vector columna habría que haber puesto:
2
Fundamentos de Automática
ó
>> x=[1,2,3,4,5]’
x =
1
2
3
4
5
1.2 Matrices.
Para representar una matriz hay que tener en cuenta 3 reglas básicas, que son:
• Los elementos deben estar separados por comas o blancos.
• Los elementos deben estar encerrados entre corchetes.
• El final de cada fila se indica con un punto y coma (;) o mediante un retorno de carro.
>> A=[1 2 3; 4 5 6; 7 8 9]
ó
>> A=[1 2 3
4 5 6
7 8 9]
A =
1 2 3
4 5 6
7 8 9
Los elementos de una matriz pueden ser cualquier expresión matemática evaluable por
MATLAB. Un ejemplo podría ser:
B =
1.0000 0.9231
1.4142 2.0000
Cómo ya se vio en el apartado anterior, el apostrofe (‘) indica la traspuesta conjugada de una
matriz. Si la matriz es real, la traspuesta conjugada consiste en transponer los elementos de la
matriz, es decir cambiar filas por columnas.
>> C=A’
C =
3
Práctica 0. Fundamentos de Matlab para el estudio y análisis de sistemas de control
1 4 7
2 5 8
3 6 9
Para representar números complejos con MATLAB se utiliza la variable i o j. Por ejemplo, si se
quiere representar el número 1 + 2 j se procede de la siguiente manera:
>> x= 1+sqrt(2)*i
ó
>> x= 1+sqrt(2)*j
x =
1.0000 + 1.4142i
>> x=2+3*j
x =
2.0000 + 3.0000i
Si i y j se utilizan como variables, habría que renombrar la variable compleja como ii=sqrt(-
1) ó jj=sqrt(-1) y entonces el número 2+3*j se debería introducir como:
>> jj=sqrt(-1)
>> x=2+3*jj
jj =
0 + 1.0000i
x =
2.0000 + 3.0000i
Una matriz compleja no es más que una representación matricial como la vista en el apartado
1.2 en la que los elementos que la constituyen son números complejos como los vistos en el
apartado 1.4. Teniendo en cuenta esto, un ejemplo de matriz compleja podría ser:
X =
1.0000 0 + 1.0000i
2.0000 + 3.0000i 2.0000
4
Fundamentos de Automática
Si queremos obtener la traspuesta no conjugada de esta matriz bastaría con hacer Y=X’. Si por
el contrario queremos obtener la traspuesta conjugada se pondría Y=X.’ o Y=conj(X’).
Para sumar o restar con matrices hay que tener en cuenta que cada una de las matrices
operando deben tener las mismas dimensiones. Dadas dos matrices A y B.
>> A=[1 2 3; 4 5 6; 7 8 9]
>> B=[9 8 7; 6 5 4; 3 2 1]
>> C=A+B
C =
30 24 18
84 69 54
138 114 90
>> D=A-B
D =
-8 -6 -4
-2 0 2
4 6 8
Para multiplicar matrices hay que tener en cuenta que las columnas de una de las matrices
coinciden con el número de filas de la otra matriz. Dadas dos matrices A y X, donde el número
de columnas de A es igual al número de filas de X.
>> X=[ 1; 2; 3]
>> A=[9 8 7; 6 5 4; 3 2 1]
>>Y=A*X
5
Práctica 0. Fundamentos de Matlab para el estudio y análisis de sistemas de control
1 4 7
2 5 8
3 6 9
Para representar números complejos con MATLAB se utiliza la variable i o j. Por ejemplo, si se
quiere representar el número 1 + 2 j se procede de la siguiente manera:
>> x= 1+sqrt(2)*i
ó
>> x= 1+sqrt(2)*j
x =
1.0000 + 1.4142i
>> x=2+3*j
x =
2.0000 + 3.0000i
Si i y j se utilizan como variables, habría que renombrar la variable compleja como ii=sqrt(-
1) ó jj=sqrt(-1) y entonces el número 2+3*j se debería introducir como:
>> jj=sqrt(-1)
>> x=2+3*jj
jj =
0 + 1.0000i
x =
2.0000 + 3.0000i
Una matriz compleja no es más que una representación matricial como la vista en el apartado
1.2 en la que los elementos que la constituyen son números complejos como los vistos en el
apartado 1.4. Teniendo en cuenta esto, un ejemplo de matriz compleja podría ser:
X =
1.0000 0 + 1.0000i
2.0000 + 3.0000i 2.0000
4
Fundamentos de Automática
ans =
1.0000 1.0000
3.6056 2.0000
Además con la función angle(A) se obtienen los ángulos de fase en radianes de los elementos
de dicha matriz compleja. Esos ángulos estarán comprendidos entre [− π ,π ] . Para comprender
esto, veamos un ejemplo.
A =
2.0000 + 2.0000i 1.0000 + 3.0000i
4.0000 + 5.0000i 6.0000 - 1.0000i
>> M=abs(A)
M =
2.8284 3.1623
6.4031 6.0828
>> F=angle(A)
F =
0.7854 1.2490
0.8961 -0.1651
Al igual que con una matriz, si se quiere obtener el módulo y la fase de un número complejo
z = x + yj = r ⋅ e jϑ , se procede del siguiente modo:
r= abs(z)
theta= angle(z)
>> z=3+i*2
z=
3.0000 + 2.0000i
>>r=abs(z)
7
Práctica 0. Fundamentos de Matlab para el estudio y análisis de sistemas de control
r =
3.6056
>> theta=angle(z)
theta =
0.5880
2.6 Otras operaciones con matrices y vectores.
Si se desea obtener una matriz B donde cada uno de los elementos sea el cuadrado de los
elementos de una matriz A se utilizaría la instrucción siguiente:
B=A.^2
Si se desea multiplicar, uno a uno, los elementos correspondientes de dos matrices A y B (que
ocupan la misma posición de fila y columna) se ejecutaría la siguiente instrucción:
C=A.*B
Si se desea dividir, uno a uno, los elementos correspondientes de dos matrices A y B (que
ocupan la misma posición de fila y columna) se ejecutaría la siguiente instrucción:
C=A./B
C=B./A ó C=A.\B
La matriz identidad I es una matriz cuadrada de dimensiones nxn cuyos elementos son cero a
excepción de su diagonal cuyos valores son 1. Para definir una matriz identidad en MATLAB se
usa la sentencia eye(n), donde n indica las dimensiones de la matriz:
>> I=eye(5)
I =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Una matriz diagonal es una matriz cuadrada cuyos elementos son cero a excepción de su
diagonal cuyos valores son un número determinado m. Si x es un vector, la orden diag(x)
produce una matriz diagonal con x sobre la diagonal. Por ejemplo:
>> x=[1 2 3]
>> D=diag(x)
8
Fundamentos de Automática
D =
1 0 0
0 2 0
0 0 3
MATLAB dispone de un conjunto de rutinas para obtener diferentes tipos de salidas gráficas. El
modo de utilización de cada una de ellas es muy similar, siendo la única diferencia entre todas
ellas el modo en el que se escalan los ejes y el modo de visualización los datos.
9
Práctica 0. Fundamentos de Matlab para el estudio y análisis de sistemas de control
Para dibujar una gráfica a partir de dos vectores x e y de la misma longitud se procede de la
siguiente manera: plot(x,y)dibuja los valores de y frente a los valores de x. Por ejemplo:
>> x=[1 2 3 4 5 6 7]
>> y=[2 4 9 16 25 36 49]
>>plot(x,y)
Para dibujar varias curvas en una misma gráfica se utiliza la orden plot con múltiples
argumentos. Por ejemplo si se quiere dibujar n curvas cuyos valores se encuentran en los
vectores x e y de cada una de ellas, la rutina sería:
plot(x1,y1,x2,y2,x3,y3,...,xn,yn)
donde x1 e y1 son los vectores de los valores de la primera curva, x2 e y2 los vectores de los
valores de la segunda curva y así sucesivamente hasta n curvas.
Por ejemplo:
>> x=[1 2 3 4 5 6 7]
>> y=[1 4 9 16 25 36 49]
>> z=[1 8 27 64 125 216 343]
>>plot(x,y,x,z)
Otra forma de dibujar más de una curva en un único gráfico se consigue utilizando la orden
hold. Esta orden congela el gráfico actual e inhibe las acciones de borrado y escalado. De
modo, que usando esta orden, las curvas que se dibujen después de la ejecución de este
comando se dibujarán sobre la curva original, superponiendo unas sobre otras. Si se desea
10
Fundamentos de Automática
>> x=[1 2 3 4 5 6 7]
>> y=[1 4 9 16 25 36 49]
>> plot(x,y)
>> hold
>> z=[1 8 27 64 125 216 343]
>> plot(x,z)
Matlab permite representar varias subfiguras en una única figura. Para ello, se emplea el
comando subplot(m,n,p) donde el primer parámetro corresponde al número de filas, el
segundo parámetro al número de columnas y el tercer parámetro a la posición relativa en la
matriz de subfiguras.
Por ejemplo, si se desea representar tres señales en una misma fila se ejecutarían las siguientes
líneas de comandos:
>> subplot(1,3,1)
>> plot(señal1)
>> subplot(1,3,2)
>> plot(señal2)
>> subplot(1,3,3)
>> plot(señal3)
11
Práctica 0. Fundamentos de Matlab para el estudio y análisis de sistemas de control
4. Scripts y funciones.
Así, para llevar a cabo una tarea, en vez de escribir las instrucciones una por una en la línea de
comandos de MATLAB, se pueden escribir una detrás de otra en un fichero. Para ello se puede
utilizar el Editor integrado: icono “hoja en blanco” del menú de herramientas, opción “New M-
file” del Menú “File” o bien usando la orden
>> edit
Los scripts de MATLAB deben guardarse en un fichero con sufijo .m para ser reconocidos. Para
ejecutar un script que esté en el directorio de trabajo, basta escribir su nombre (sin el sufijo) en
la línea de comandos.
12
Fundamentos de Automática
D =
1 0 0
0 2 0
0 0 3
MATLAB dispone de un conjunto de rutinas para obtener diferentes tipos de salidas gráficas. El
modo de utilización de cada una de ellas es muy similar, siendo la única diferencia entre todas
ellas el modo en el que se escalan los ejes y el modo de visualización los datos.
9
Práctica 0. Fundamentos de Matlab para el estudio y análisis de sistemas de control
Ejercicios propuestos
Ejercicio 1
Apartado a
Realizar un script de Matlab llamado senoidal.m que represente una señal senoidal en función
de los siguientes parámetros de entrada: tiempo (T), frecuencia (F), amplitud (A) y fase (Ø). Los
parámetros de entrada deberán especificarse al principio del script. Este es el resultado que
debe mostrar la ejecución del script:
A continuación crear una función llamada fsenoidal.m que responda a la siguiente estructura
de llamada:
Apartado b
Realizar un script de Matlab senyales.m que represente una señal senoidal y una señal
cosenoidal en una misma figura. Los parámetros de ambas señales se definirán al principio del
script: tiempo (T), frecuencia (F), amplitud (A) y fase (Ø). El aspecto de la ejecución debe ser el
siguiente:
14
Fundamentos de Automática
Apartado c
Crear una función llamada ftipo.m que represente una señal de tipo senoidal, cosenoidal o
triangular en función de los siguientes parámetros de entrada: tipo de señal, tiempo (T),
frecuencia (F), amplitud (A) y fase (Ø).
Ayuda: se sugiere utilizar un condicional switch para discriminar el tipo de señal y la función
sawtooth para generar la señal triangular
Ejercicio 2
La transformada de Laplace es una herramienta matemática más usada en control. Ésta permite
obtener una solución simbólica que simplifica las ecuaciones físicas que modelan el
comportamiento del sistema continuo que se quiere someter a estudio. Aplicando
transformaciones como la de Laplace se consiguen funciones donde las relaciones causa-efecto
en un sistema son más fáciles de entender. Así, en definitiva, con la transformada de Laplace lo
que se consigue es simplificar las funciones que modelan el sistema convirtiendo ecuaciones
diferenciales de variable real en modelos algebraicos de variable compleja. En el caso de control
de sistemas discretos, se utiliza la transformada Z.
Apartado a
Apartado b
15
Fundamentos de Automática Curso 2017/2018
En control, existen diversas técnicas de análisis y diseño que necesitan obtener las raíces de los
polinomios numerador y denominador de la función de transferencia para conocer la
localización de sus polos y ceros, así como una constante denominada factor de ganancia. Los
polos se pueden definir matemáticamente como las raíces del polinomio del denominador y los
ceros como las raíces del numerador.
>> [z p k]=tf2zp(n,d)
z =
-4
p =
-2.0000 + 4.0000i
-2.0000 - 4.0000i
k =
5
donde z es un vector que contiene los valores de los ceros, p los valores de los polos y k el factor
de ganancia.
Fundamentos de Automática
>> x=[1 2 3 4 5 6 7]
>> y=[1 4 9 16 25 36 49]
>> plot(x,y)
>> hold
>> z=[1 8 27 64 125 216 343]
>> plot(x,z)
Matlab permite representar varias subfiguras en una única figura. Para ello, se emplea el
comando subplot(m,n,p) donde el primer parámetro corresponde al número de filas, el
segundo parámetro al número de columnas y el tercer parámetro a la posición relativa en la
matriz de subfiguras.
Por ejemplo, si se desea representar tres señales en una misma fila se ejecutarían las siguientes
líneas de comandos:
>> subplot(1,3,1)
>> plot(señal1)
>> subplot(1,3,2)
>> plot(señal2)
>> subplot(1,3,3)
>> plot(señal3)
11
Fundamentos de Automática
>> [r p k]=residue(n,d)
r =
-6.0000
-4.0000
3.0000
p =
-3.0000
-2.0000
-1.0000
k =
2
La salida p es un vector columna que contiene los polos, la salida r es otro vector columna que
contiene los residuos de los polos correspondientes y la salida k es un vector fila que contiene
los términos constantes.
Y (s) −6 −4 3
G (s) = = + + +2
U ( s ) ( s +·3) ( s +·2) ( s +·1)
>> [n,d]=residue(r,p,k);
n =
2.0000 5.0000 3.0000 6.0000
d =
1.0000 6.0000 11.0000 6.0000
3
Práctica 0. Fundamentos de Matlab para el estudio y análisis de sistemas de control
4. Scripts y funciones.
Así, para llevar a cabo una tarea, en vez de escribir las instrucciones una por una en la línea de
comandos de MATLAB, se pueden escribir una detrás de otra en un fichero. Para ello se puede
utilizar el Editor integrado: icono “hoja en blanco” del menú de herramientas, opción “New M-
file” del Menú “File” o bien usando la orden
>> edit
Los scripts de MATLAB deben guardarse en un fichero con sufijo .m para ser reconocidos. Para
ejecutar un script que esté en el directorio de trabajo, basta escribir su nombre (sin el sufijo) en
la línea de comandos.
12
Fundamentos de Automática
5
Fundamentos de Automática
A continuación se presentan varios ejemplos que ayudan a familiarizarse con la sintaxis de las
órdenes mostradas en la tabla 3.
Si se desea calcular por ejemplo la transformada de Laplace de una función f (t ) = sen(t ) − 2e −2t ;
en primer lugar se necesita declarar una variable de tipo simbólica con el uso de la instrucción
syms y después se ejecuta el comando de la transformada que se desea calcular pasando como
parámetro la función de la cual se quiere calcular su transformada. Por ejemplo, para este caso:
>> syms t
>> TL= laplace(sin(t)-2*exp(-2*t))
TL =
1/(s^2+1)-2/(s+2)
>> syms s
>> f=ilaplace(1/(s^2+1)-2/(s+2))
f =
sin(t)-2*exp(-2*t)
>> syms n
>> TZ= ztrans((-9*(0.9)^n+10)
TZ =
(10*z)/(z - 1) - (9*z)/(z - 9/10)
>> syms z
>> f=iztrans((10*z)/(z - 1) - (9*z)/(z - 9/10))
f =
10 - 9*(9/10)^n
13
Fundamentos de Automática
podrá introducir un determinado valor. En este caso, se pueden definir las características del
escalón unitario pinchando dos veces en el bloque (figura 5, izda).
Por último, mediante la opción Simulation -> Start, se puede simular el comportamiento del
sistema. La salida muestra tanto la entrada (escalón) como la salida del integrador (figura 5,
dcha).
Para utilizar funciones de transferencia en SIMULINK se debe incluir un bloque Continuous ->
Transfer Function. Como antes, los parámetros de dicho bloque se modifican pulsando dos
veces sobre el bloque. En el cuadro de diálogo que aparece, se introducen los polinomios
numerador y denominador, siguiendo la sintaxis seguida en la Sesión 1 de esta práctica. En el
siguiente esquema se puede ver un ejemplo:
El ejemplo anterior, muestra un sistema en lazo abierto, es decir, no existe una realimentación
de la salida a la entrada del sistema. Para introducir una realimentación se debe usar el bloque
Math Operations -> Sum. Este bloque puede variar su signo si se trata de una realimentación
positiva y negativa. Adicionalmente, se pueden introducir ganancias mediante el bloque Math
Operations -> Gain. En el siguiente ejemplo se muestra un sistema con todos estos elementos:
7
Práctica 1. Análisis de sistemas en el dominio del tiempo
Hemos visto un ejemplo de cómo introducir una entrada escalón unitario al sistema.
SIMULINK dispone de distintos elementos que pueden actuar como señal de entrada del
sistema. Estos elementos se encuentran en la sección Source. Los elementos de este apartado
son, esencialmente, generadores de señales predeterminadas: señal de valor constante
(Constant), señal escalón (Step), señal rampa (Ramp), señales senoidales (Sine Wave) y muchas
otras. También permite guardar el tiempo de simulación mediante el bloque denominado
Clock, que proporciona un vector con los instantes de simulación. Otra opción es introducir
señales provenientes directamente del workspace de MATLAB. Esta es una de las grandes
ventajas de interacción entre MATLAB y SIMULINK.
En el otro extremo, tenemos elementos que sólo reciben señales, sin producir ninguna salida.
Estos elementos se encuentran en el apartado Sinks. Entre estos elementos, encontramos los
visores, como el Scope ya empleado. Otro elemento interesante de este grupo es el bloque To
Workspace. Se trata de un bloque que almacena, en una variable cuyo nombre debemos
especificar, un vector conteniendo los valores que va tomando la señal que se recibe como
entrada del bloque, para cada instante de simulación. Permite, por tanto, guardar y procesar
posteriormente los resultados de la simulación.
2.5 Simulación.
8
Fundamentos de Automática
Para guardar un modelo se escoge la opción Save o Save as en el menú File. SIMULINK guarda
el modelo generando un archivo con extensión .mdl o .slx que contiene las ordenes de MATLAB
necesarias para reconstruir el modelo. Para abrir un modelo se escoge la opción Open del menú
File. Una vez guardado el diagrama de bloques, éste puede volver a ser llamado en sesiones
futuras simplemente introduciendo el nombre con el que se guardó sobre la línea de comandos
de MATLAB.
9
Práctica 1. Análisis de sistemas en el dominio del tiempo
Ejercicios propuestos
Ejercicio 1
Calcula, utilizando los comandos de Matlab feedback, series y parallel, la función de transferencia
equivalente de los siguientes diagramas de bloques:
Nota: en alguno de los ejercicios se deberá realizar algún cambio previo para poder resolverlo
G1=3
G2=1/s
G3=1/(s+3)
G4=2
H1=1
H2=1/2
G1=2
G2=1/(s+1)
G3=1/s
H1=1/2
H2=1/2
G1=4
G2=1/(s+2)
G3=2
G4=1/s
H1=1/2
H2=1
H3=1/4
10
Fundamentos de Automática
Ejercicio 2
A partir de los diagramas propuestos en el ejercicio anterior. Se pide:
Apartado a
Simular su comportamiento en Simulink y obtener la salida se los sistemas ante una entrada
escalón unitario.
Apartado b
Simular el comportamiento del sistema reducido en Simulink (función de transferencia
obtenida previamente) y comprobar si la reducción del sistema es correcta mediante la
visualización de su salida ante entrada escalón.
11
Práctica 1. Análisis de sistemas en el dominio del tiempo
Como ya hemos visto en los apartados anteriores, una función de transferencia es un modelo
matemático que a través de un cociente relaciona la respuesta de un sistema Y(s) con una señal
de entrada o excitación R(s).
En la teoría de control, a menudo se usan las funciones de transferencia para caracterizar las
relaciones de entrada y salida de componentes o de sistemas que se describen mediante
ecuaciones diferenciales lineales e invariantes en el tiempo.
Tomando como entrada del sistema la fuerza ejercida sobre el muelle (F) y como salida el
desplazamiento del mismo (X), se observa que la fuerza es proporcional al desplazamiento en
función de su constante elástica (K). Si se transforma al dominio de Laplace se obtiene que el
sistema puede definirse por una ganancia de valor 1/K.
donde la constante elástica K es 3 N/m. Por tanto, ante una entrada rampa unitaria (incremento
de fuerza constante en newtons, N) (señal amarilla) se obtendría una salida (desplazamiento en
metros, m), tres veces más pequeña que la fuerza ejercida (señal rosa).
12
Fundamentos de Automática
Ahora, vamos a suponer que, en lugar de un incremento constante, se aplica una fuerza variable
al muelle, como una senoidal con una amplitud de pico de 2 N y período de 1 segundo:
Como se puede observar una aplicación de fuerza oscilatoria como entrada se traduce en un
desplazamiento oscilatorio del muelle. En este caso, la fuerza aplicada nunca es negativa puesto
que el muelle, en reposo, sólo permite su elongación en una dirección.
Vamos a suponer ahora, que el efecto de aplicar fuerza en el muelle tiene cierto retardo sobre el
desplazamiento, debido a las propiedades mecánicas del mismo. Una forma de modelar este
retardo se muestra a continuación:
13
Práctica 1. Análisis de sistemas en el dominio del tiempo
De este modo, se pueden definir señales de todo tipo e incluso leer señales obtenidas de otros
procesos ejecutados previamente.
Además de calcular la función de transferencia global entre la entrada y la salida final del
sistema, es posible generar un diagrama de bloques desglosado a partir de las ecuaciones físicas
del mismo.
donde:
sustituyendo se obtiene:
una vez obtenida la ecuación diferencial que define el sistema se puede construir el diagrama
de bloques que relaciona las variables de entrada x (intensidad) con las variables de salida y
(voltaje). Para ello, transformamos a otra notación simbólica las variables derivadas e integradas
de la ecuación. Este paso, permite resolver de forma más intuitiva el diagrama:
14
Fundamentos de Automática
15
Práctica 1. Análisis de sistemas en el dominio del tiempo
Ejercicios propuestos
Ejercicio 3
Dado el circuito RLC en serie que se muestra a continuación:
Se pide:
16
Fundamentos de Automática Curso 2017/2018
La respuesta típica de estos sistemas no presenta sobreoscilación, esto quiere decir que nunca
llegan al valor exacto de la consigna y por lo tanto, son sistemas relativamente lentos. Un
ejemplo de ello es el calentamiento de un horno.
En el dominio de Laplace, los sistemas de primer orden están definidos por la siguiente función
de transferencia:
El valor de la constante de tiempo se obtiene sobre la gráfica, para ello se observa el tiempo
correspondiente a un valor del 63% ∆y.
Práctica 1. Análisis de sistemas en el dominio del tiempo
Un caso particular de los sistemas de primer orden, es un sistema de primer orden con retardo.
En este caso, la función de transferencia sería del siguiente modo:
donde T es el retardo en la respuesta del sistema. El aspecto de esta respuesta puede verse a
continuación:
En el caso de tener un sistema de primer orden con una ganancia K y una constante de tiempo τ
determinadas, en lazo abierto, nuestra salida va a tener un valor únicamente dependiente de los
parámetros intrínsecos del sistema, es decir, no vamos a poder saber cuál va a ser la amplitud
de su respuesta y si esta respuesta se va a ajustar a nuestra consigna. En el ejemplo de un horno,
que es un típico sistema de primer orden, el valor de la temperatura final será desconocido y
dependerá del comportamiento del sistema ante una consigna determinada, es decir, ante la
selección de una determinada temperatura deseada.
Por ejemplo, en el siguiente sistema de primer orden en lazo abierto, la salida alcanza un valor
de 1.2 ante entrada escalón unitario, debido a que la ganancia K del sistema es 1.2. Esta salida
sólo depende de la ganancia del sistema y por tanto, no se ajusta a la consigna introducida.
2
Fundamentos de Automática
Para poder controlar que la salida se ajuste a nuestros requerimientos se debe cerrar el bucle.
Siguiendo el caso anterior se obtiene:
La entrada de control del sistema en lazo cerrado depende de la salida obtenida en cada
momento, por lo que el sistema se reajusta para poder alcanzar la consigna. No obstante, ante la
ausencia de un controlador que ajuste los parámetros del sistema, se produce un error entre la
amplitud de salida y de entrada que se denomina error de posición en régimen permanente (ep)
y se puede calcular del siguiente modo:
En prácticas posteriores se verá en más detalle todos los aspectos relacionados con los errores
del sistema en régimen permanente.
3
Práctica 1. Análisis de sistemas en el dominio del tiempo
Ejercicios propuestos
Ejercicio 1
Apartado a
Identificar las funciones de transferencia de los sistemas cuya salida ante entrada escalón en
lazo abierto se proporciona en los archivos “P3a_sys1.mat”, “P3a_sys2.mat” y “P3a_sys3.mat”.
Representar los sistemas en lazo abierto en Simulink y comparar las salidas obtenidas ante
escalón unitario con las proporcionadas.
Nota: Los “.mat” tiene un formato de estructura con nombre sys con dos campos: data (el vector
de salida) y time (el vector de tiempo).
Apartado b
Obtener por línea de comandos los polos y la ganancia de los tres sistemas en el dominio
continuo. Comentar los resultados.
Apartado c
Dados los sistemas anteriores, obtener su error de posición (ep) en lazo cerrado. Representar en
simulink su respuesta ante entrada escalón unitario y comprobar que los errores obtenidos se
corresponden con los calculados.
Apartado d
Obtener la respuesta de los sistemas en lazo cerrado ante una rampa unitaria. Comentar los
resultados.
Ejercicio 2
Se sabe que un horno industrial se comporta como un sistema de primer orden. Para determinar
los parámetros K y τ se lleva a cabo un experimento en el cual se le aplica una señal de entrada
r(t)=2∗u(t) al sistema y se registran los datos de temperatura durante 10 horas con una
frecuencia de muestreo de 0,01. El cambio de temperatura, y (t), se proporciona en el archivo
“horno.mat”.
Nota: El archivo “horno.mat” tiene un formato de estructura con nombre horno con dos campos:
data (el vector de salida) y time (el vector de tiempo).
Apartado a
Determinar el valor de los parámetros K y τ.
Apartado b
Determinar el tiempo (en horas, minutos y segundos) que debe transcurrir para que y(t) alcance
el estado estable. Considerar estable el sistema cuando alcanza el 95% de su valor final.
4
Fundamentos de Automática Curso 2017/2018
La mayoría de los sistemas industriales se comportan como un sistema de este tipo, en el cual
posteriormente el control pretende limitar parámetros como la sobreoscilación, tiempo de
establecimiento y error en régimen permanente.
donde:
• ξ es el factor de amortiguamiento
Estas dos últimas constantes pueden obtenerse de la sobreoscilación δ y el tiempo de pico tp,
obtenidos a partir de la respuesta del sistema ante una entrada escalón:
Práctica 1. Análisis de sistemas en el dominio del tiempo
Ejercicios propuestos
Ejercicio 1
Apartado a
Identificar las funciones de transferencia de los sistemas cuya salida ante entrada escalón en
lazo abierto se proporciona en los archivos “P3b_sys1.mat” y “P3b_sys2.mat”. Representar los
sistemas en lazo abierto en Simulink y comparar las salidas obtenidas ante escalón unitario con
las proporcionadas.
Nota: Los “.mat” tienen un formato de estructura con nombre sys con dos campos: data (el
vector de salida) y time (el vector de tiempo).
Apartado b
Estudiar el comportamiento de los parámetros del sistema: ganancia (K), frecuencia natural del
sistema (ωn) y factor de amortiguamiento (ξ). Mostrar y comentar como varía la salida de un
sistema de 2º orden ante escalón unitario en función de estos parámetros.
Ejercicio 2
Un motor eléctrico de corriente continua se acopla a una polea para levantar cajas en una planta
industrial. Ante una entrada de tensión V(t) en el motor, la caja se elevará a una determinada
altura h(t). El resto de variables del sistema corresponderán al ángulo girado por el motor θ(t),
el par proporcionado por el motor τ(t), la intensidad que circula por el devanado del motor i(t),
la fuerza electromotriz inducida en el devanado del motor fm(t) y la velocidad angular del
motor ω(t). Una vez modelado el sistema se obtiene un esquema de control similar al mostrado
a continuación:
Se pide:
Apartado a
Obtener la función de transferencia equivalente y mostrar la salida ante una entrada escalón con
inicio en t=0. ¿Es estable el sistema? Desde un punto de vista físico, comentar el resultado.
Apartado b
Añadir un bloque multiplicador de ganancia KG al sistema reducido y posteriormente una
realimentación negativa.
Apartado c
Para un valor de KG=20, obtener la salida del sistema ante una entrada escalón unitario con
inicio en t=0.
Apartado d
¿Cuál es la ganancia en régimen permanente del sistema? ¿Qué ocurre con la ganancia si
variamos el valor de KG? ¿Qué sentido físico tiene el valor obtenido?
2
Fundamentos de Automática
Apartado e
Para el valor anterior de KG=20, calcular la sobreoscilación δ y el tiempo de pico tp. Estudiar
como afecta la variación del factor KG en el comportamiento del sistema en régimen transitorio.
Ejercicio 3
Dado el siguiente sistema continuo de segundo orden con un cero añadido al numerador:
• Evaluar el efecto de añadir un cero al numerador en s=2, s=0 y s=-2. Para ello, se debe
modificar el valor de τZ de forma adecuada y representar la salida ante entrada escalón
unitario con la función step.
• Dibujar los polos y los ceros en el plano complejo para cada caso y comentar el efecto
que se obtiene al variar la posición del cero sobre la salida del sistema.
• Evaluar el efecto de añadir un cero al numerador en s=2, s=0, s=-0.1 y s=-2. Para ello, se
debe modificar el valor de τZ de forma adecuada y representar la salida ante entrada
escalón unitario con la función step.
• Dibujar los polos y los ceros en el plano complejo para cada caso y comentar el efecto
que se obtiene al variar la posición del cero sobre la salida del sistema. ¿Qué diferencias
hay con el sistema analizado en el apartado anterior?
Si ahora se tiene el siguiente sistema de segundo orden con un polo añadido al denominador:
3
Fundamentos de Automática Curso 2017/2018
El cálculo del error en régimen permanente depende de la realimentación del sistema en bucle
cerrado. En este sentido, existen dos casos distintos:
En este caso, la salida y la entrada son de la misma naturaleza física, por tanto:
En el caso de sistemas con realimentación no unitaria, la señal de entrada debe ser adecuada
tanto en magnitud física como en rango dinámico para poder compararse con la señal de salida.
Esta relación viene determinada por el bloque de realimentación H(s).
Práctica 2. Herramientas de análisis de sistemas continuos
donde M(s) es la función de transferencia en lazo cerrado. Aplicando el teorema del valor final:
2
Fundamentos de Automática
Ejercicios propuestos
Ejercicio 1
Calcular el error de posición, velocidad y aceleración de los siguientes sistemas:
Sistema 1
Sistema 2
Representar en Simulink y comprobar que efectivamente se obtienen los errores calculados ante
entrada escalón unitario, rampa unitaria y parábola unitaria.
Nota: Para crear una parábola unitaria se puede utilizar el bloque From Workspace
Ejercicio 2
Calcular el error de posición, velocidad y aceleración del siguiente sistema con realimentación
no unitaria:
3
Fundamentos de Automática Curso 2017/2018
En general, un sistema dinámico se dice que es estable si tiene una respuesta acotada ante una entrada
acotada. Es decir, tiene una respuesta de magnitud limitada ante una entrada o perturbación limitada.
Un sistema lineal es estable si, y solamente si, el valor absoluto de su respuesta a una entrada impulsional
dentro de un intervalo finito, es finito. Es decir, la respuesta impulsional del sistema debe tender a cero
cuando el tiempo aumenta. Esto se denomina la condición de convergencia absoluta.
Existen diversas formas de analizar si un sistema es estable o no. La primera de ellas es analizar su respuesta
ante una entrada acotada, por ejemplo, una entrada escalón. En prácticas anteriores hemos visto como
modelar sistemas continuos conociendo su función de transferencia en Matlab con el comando G=tf(n,d).
Con la función [Y,T] = step(G,t) se podía obtener su respuesta ante una entrada acotada como la
entrada escalón. Otra forma de obtener la respuesta del sistema ante una entrada escalón es mediante el
modelado en Simulink.
Como se ha comentado, un sistema será estable si tiene una salida acotada ante una entrada acotada. Por
ejemplo, en el caso de los siguientes sistemas se obtendría:
Otra forma de analizar la estabilidad de un sistema es ver en que posición se encuentran los polos del mismo,
o lo que es lo mismo, analizar las raíces de su polinomio característico que se corresponde al denominador
de su función de transferencia.
Práctica 2. Herramientas de análisis de sistemas continuos
En el caso de sistemas continuos, un sistema es estable si todos sus polos se encuentran en el semiplano
izquierdo del eje imaginario. Para hallar los polos de un sistema continuo con Matlab se utiliza la función
ya vista en sesiones anteriores [z p k]=tf2zp(n,d).
Otros métodos
Cuando no es posible obtener de forma sencilla los polos del sistema porque el polinomio característico es
de un grado muy elevado, existen una serie de métodos de los que se puede derivar la estabilidad absoluta
de un sistema tanto continuo como discreto.
En el caso de sistemas continuos, entre otros, se puede aplicar el criterio de Routh-Hurwitz. Permite
determinar el número de polos en lazo cerrado de la ecuación característica que se sitúan en el semiplano
complejo derecho sin tener que factorizar el polinomio característico. Es decir, determina si existen o no
raíces inestables en una ecuación polinómica sin tener que calcular sus valores.
• Si todos los valores de la primera columna son positivos, entonces todas las raíces del polinomio serán
positivas y consecuentemente todos los polos estarán en el semiplano complejo izquierdo y el sistema
será estable.
• Si por el contrario se producen cambios de signo, entonces es posible asegurar que habrá tantas raíces
en el semiplano complejo derecho como cambios de signo se observen en la primera columna y el sistema
será inestable.
Existen, no obstante, casos especiales en los que hay que aplicar alguna aproximación para poder completar
la tabla de Routh:
1. Existe un 0 en la primera columna, lo que impide calcular el siguiente término al ser infinito, al
dividirse por 0.
Solución: Sustituir el término que vale 0 con un número positivo muy pequeño que tiende a cero
(ε). Y entonces, se continúa rellenando la tabla teniendo en cuenta es número ε. Los cambios de signo se
evalúan aproximando ε a un número muy pequeño.
2
Fundamentos de Automática
El comportamiento dinámico de un sistema de control viene dado por la posición de los polos y de los ceros
en el plano complejo. Un modo de estudiar la posición de éstos es mediante la técnica del lugar de las raíces.
En esta parte práctica, el objetivo es familiarizarse con las herramientas que permiten dibujar el lugar de las
raíces de sistemas de control, así como afianzar conceptos vistos en clase de teoría en relación a esta técnica.
El lugar de las raíces permite observar la evolución de las raíces de la ecuación característica (polos del
sistema en lazo cerrado), al variar K.
Para construir el lugar de las raíces, es necesario trabajar con la función de transferencia en lazo abierto con
la forma K(num/den). Utilizando la orden rlocus(num,den) se genera el lugar de las raíces de un sistema de
una entrada y una salida, donde num y den representan dos vectores de igual dimensión con los coeficientes
de la ecuación polinómica de numerador y denominador de la función de transferencia del sistema en lazo
abierto. La ganancia K es obtenida automáticamente si el comando se utiliza con la sintaxis
[r,K]=rlocus(num,den) donde r son las raíces y K todos los valores de ganancia que se obtienen para la
evolución de los polos en lazo cerrado.
Si se conoce un vector de ganancia K suministrado por el usuario, es decir todos los valores de ganancia
para los cuales los polos en lazo cerrado son calculados, se puede emplear el comando con la sintaxis
[r,K]=rlocus(num,den,K) donde r son las raíces y K todos los valores de ganancia que se obtienen para la
evolución de los polos en lazo cerrado. Este comando es especialmente útil cuando se producen errores en
el cálculo aproximado que hace MATLAB del lugar de las raíces. Supongamos que los valores de ganancia
se mueven entre [0 200], entonces puede interesar no dejar a MATLAB que calcule K aplicando un paso
automático. En este caso, uno definiría su propia manera de iterar K entre ambos valores. Supongamos que
se quiere definir un paso de iteración de por ejemplo 0.5, entonces se emplearía la instrucción K=[0:0.5:200].
También, puede darse el caso que dentro de ese rango se necesite aplicar dos intervalos distintos (por
ejemplo [0 10] y [10 200]) con pasos distintos (por ejemplo 0.1 y 0.5, respectivamente), entonces se podrían
definir ambos intervalos de la siguiente forma K1=0:0.1:10 y K2=10:0.5:200, y después definir K como K=[K1
K2]. Posteriormente ya se podría llamar a [r,K]=rlocus(num,den,K) para aplicar los intervalos definidos.
Por otro lado, la orden [K,p]=rlocfind(num,den) permite obtener el valor de K y el valor numérico de las raíces
en un punto específico del lugar de las raíces. En este caso, es posible controlar un cursor con forma de cruz
para seleccionar el punto del lugar de las raíces que se desea.
3
Práctica 2. Herramientas de análisis de sistemas continuos
Ejercicios propuestos
Ejercicio 1
Dados los sistemas continuos definidos por las siguientes funciones de transferencia:
Apartado a
Estudiar su estabilidad absoluta analizando su comportamiento ante una entrada escalón.
Apartado b
Estudiar su estabilidad absoluta analizando la posición de los polos del sistema (raíces del
polinomio característico). Utilizar la función tf2zp o la función roots.
Ejercicio 2
Dado el esquema de la figura, realiza un script en MATLAB que calcule el lugar de las raíces, así
como los polos y ceros de la ecuación característica de los siguientes cuatro sistemas, y muestre
dicha información en cuatro gráficas dentro de una misma figura.
a) b)
G(s)= (s2+1)/s(s+2) G(s)= (s+2)/(s2+2s+1)
H(s)=1 H(s)=1
c) d)
G(s)= 1/s(s2+4s+5) G(s)=
H(s)=1 s(s+5)/(s+2)(s+5)(s2+4s+7)
H(s)=1
Ejercicio 3
Para los sistemas del ejercicio anterior, se pide calcular, con las gráficas del lugar de las raíces
dibujadas y las instrucciones de MATLAB adecuadas, los siguientes datos:
- Valores de K para los que el sistema es inestable en cada caso, si los hubiera.
- Coordenadas de los puntos de ruptura y de dispersión, así como valor de K para ellos, si los
hubiera.
4
Fundamentos de Automática
Ejercicio Opcional
Apartado a
Realizar un script de Matlab (routh.m) que devuelva la tabla de Routh-Hurwitz correspondiente
al polinomio característico introducido como parámetro.
Apartado b
Mejorar el script para que tenga en cuenta los casos especiales
Apartado c
Mejorar el script para que determine además si el sistema es estable o no y lo muestre por pantalla
mediante un mensaje.
>>syms EPS
>>ra=routh([1 2 3 1],EPS)
ra =
[ 1, 3]
[ 2, 1]
[ 5/2, 0]
[ 1, 0]
>>syms EPS
>>ra=routh[1 1 2 2 3],EPS)
ra =
[ 1, 2, 3]
[ 1, 2, 0]
[ EPS, 3, 0]
[ (2*EPS - 3)/EPS, 0, 0]
[ 3, 0, 0]
5
Fundamentos de Automática Curso 2017/2018
Ejercicio
Dados los siguientes sistemas continuos:
5 − 15
1 =
+ + 8 − 60
5
2 =
+ 4 + 20
3 −6
3 =
+ 7 + 19 − 13
Apartado 1
Obtener su salida ante entrada escalón unitario durante 10 segundos y la representación del lugar
de las raíces. Muestra estas gráficas en una única figura de dimensiones 3x2 con la función subplot.
Apartado 2
Varía ahora la duración de la representación a 20 segundos. A la vista de los resultados comentar
la diferencias y semejanzas entre los diferentes sistemas continuos propuestos.
Apartado 3
Reducir los sistemas a un orden inferior siempre que sea posible. Representar de nuevo lo pedido
en al Apartado 1 y comentar los resultados.
Apartado 4
Desplazar el polo inestable del sistema 1 en dirección al eje imaginario y mostrar por pantalla la
salida del sistema junto con el lugar de las raíces para distintos valores. Comentar qué efecto tiene
sobre la salida del sistema.
Fundamentos de Automática Curso 2017/2018
Si se desea especificar el rango de magnitud para que se encuentre, entre dos valores
específicos, por ejemplo -45dB y 45dB es posible introducir líneas no visibles en -45dB y +45dB
con el siguiente ejemplo: dBmax=45*ones(1,100); dBmin=-45*ones(1,100); Después,
se pueden dibujar con la orden semilogx(w,magdB,’o’,w,magdB,’-‘,w,dBmax,’--
i’,w,dBmin,’:i’) donde el número de puntos de dBmax y dBmin deben coincidir con el
número de puntos de la frecuencia w. El resultado será una curva de magnitud magdB con
las marcas ‘o’ como elemento de píncel. El parámetro ‘i’ de la expresión hace que ciertas líneas
no se dibujen o lo hagan con una tinta invisible. Si la expresión se modifica por
semilogx(w,magdB,’o’,w,magdB,’-‘,w,dBmax,’--’,w,dBmin,’:’)entonces las
líneas de +45dB y -45dB se harán visibles en la pantalla. Los rangos para la magnitud,
normalmente, son múltiplos de 5dB, 10dB, 20dB o 50dB, aunque existen excepciones.
Si se desea especificar el rango de ángulo de fase, se procede de modo similar a como se hizo
para la magnitud. Por ejemplo para que se encuentre, entre dos valores específicos, tales como -
145º y 115º es posible introducir líneas no visibles en esos límites con el siguiente ejemplo:
fmax=115*ones(1,100); fmin=-145*ones(1,100); Después, se pueden dibujar con la
orden semilogx(w,fase,’o’,w,fase,’-‘,w,fmax,’--i’,w,fmin,’:i’) donde el
número de puntos de fmax y fmin deben coincidir con el número de puntos de la
frecuencia w. El resultado será una curva de fase fase con las marcas ‘o’ como elemento de
píncel. El parámetro ‘i’ de la expresión hace que ciertas líneas no se dibujen o lo hagan con una
tinta invisible. Si la expresión se modifica como se ha hecho antes entonces las líneas de +115º y
-145º se harán visibles en la pantalla. Los rangos para la fase, normalmente, son múltiplos de 5º,
10º, 50º o 100º, aunque también existen excepciones como para el caso de las magnitudes.
expresión genera un vector de 50 puntos espaciados logarítmicamente por igual entre las
décadas 10d1 y 10d2. La segunda de las expresiones genera n puntos espaciados
logarítmicamente por igual entre las décadas 10d1 y 10d2. Por ejemplo, para generar 100 puntos
entre una frecuencia de 1 rad/seg y otra frecuencia de 1000 rad/s, se introducirá la orden
logspace(0,3,100).
Ejercicios propuestos
Ejercicio 1
Dado el esquema de la figura, realiza un script en MATLAB que calcule el diagrama de Bode en
los siguientes casos.
a) b)
G(s)= 1/ (s2+4s+25) G(s)=(s2+0.2s+1)/s(s2+1.2s+9)
H(s)=1; K=25 H(s)=1; K=9
c) d)
G(s)= (s+1)/(s+2)(s+5) G(s)=(s+0.5)/ (s3+ s2+1)
H(s)=1; K=10 H(s)=1; K=1
Ejercicio 2
Dado el siguiente sistema:
Dibuja el diagrama de Bode con MATLAB y después analiza la información que se obtiene de él
sin llevar a cabo cálculos numéricos.
Se pide:
a) Indica los valores de las frecuencias de corte del diagrama de Bode asintótico, a partir
de la función de transferencia G(s) normalizada del sistema
b) A la vista del diagrama de Bode calculado por Matlab, determina el valor inicial y final
del diagrama de amplitudes y del diagrama de fases
c) A la vista del diagrama de Bode calculado por Matlab, determina la frecuencia de
resonancia del sistema y calcular el valor en magnitud para una década superior y para
una octava inferior
Frecuencia de resonancia:
d) ¿Entre que dos valores de frecuencia se observa principalmente el efecto del cero sobre
la respuesta en frecuencia del sistema?
e) Calcula el margen de fase y el margen de ganancia del sistema. A partir de los
resultados obtenidos, determina la estabilidad del sistema en bucle cerrado.
2
Fundamentos de Automática Curso 2017/2018
De forma parecida a los sistemas continuos, se pueden obtener los ceros, polos y ganancia de un
sistema discreto mediante:
[z,p,k] = tf2zpk(n,d)
También es posible pasar de un dominio a otro. Por ejemplo, si se quiere pasar de un sistema
continuo a un sistema discreto se utiliza:
[N,D] = d2cm(Nz,Dz,Ts,’metodo’)
>> figure
>> stem(T,Y)
>> grid
>> title('Respuesta ante entrada escalón')
>> xlabel('Tiempo(en segundos)')
1. Utilizar el bloque Discrete -> Discrete Transfer Function, donde los coeficientes de
numerador y denominador se introducen como vectores, al igual que en el caso de los
sistemas continuos. Además hay que especificar el período de muestreo.
2. Utilizar el bloque Discrete -> Discrete Filter, donde los coeficientes de numerador y
denominador se introducen como vectores, al igual que en el caso anterior, pero con la
particularidad de que se trabaja en potencias negativas de z.
2
Fundamentos de Automática
3
Práctica 3. Modelado y análisis de sistemas discretos
Ejercicios propuestos
Ejercicio 1
Dados los siguientes sistemas continuos:
a)
b)
c)
Se pide:
1. Discretizar los sistemas (Tm=0.1) con un bloqueador de orden 0 y uno de orden 1.
2. Obtener sus polos y ceros en el plano z.
3. Analizar la estabilidad de los sistemas propuestos en el domino discreto.
Ejercicio 2
Dado el siguiente sistema con Tm=0.1:
Se pide:
1. Calcular la función de transferencia del sistema en bucle cerrado en el dominio
continuo (utilizar el método ‘foh’ para convertir la función discreta en continua)
2. Calcular la función de transferencia del sistema en bucle cerrado en el dominio discreto
(utilizar el método ‘foh’ para convertir la función continua en discreta)
3. Obtener la respuesta del sistema ante entrada escalón para un tiempo de simulación de
10 segundos. ¿Es posible saber si el sistema es estable?
4. Obtener la respuesta del sistema para un tiempo de simulación de 50 segundos y
comentar.
Ejercicio 3
En este ejercicio se va a simular el funcionamiento de una fábrica de tablones. Supongamos que
a la fábrica llega a diario un suministro de madera sin tratar (materia prima) de la cuál un 80%
se convierte en tablones y el restante 20% se convierte en viruta, que tratada adecuadamente se
puede transformar en conglomerado que se puede reutilizar para hacer tablones. Este proceso
dura un día. Además, del stock de materia prima, un 20% de la madera se pudre y se pierde.
4
Fundamentos de Automática
Si modelamos el sistema con dos entradas: el suministro de madera sin tratar y el número de
tablones que se pide a la fábrica; y definimos como salida el comportamiento del stock de
madera de la fábrica, podemos simular el sistema del siguiente modo:
Se pide:
5
Fundamentos de Automática Curso 2016/2017
La mayoría de los sistemas industriales se comportan como un sistema de este tipo, en el cual
posteriormente el control pretende limitar parámetros como la sobreoscilación, tiempo de
establecimiento y error en régimen permanente.
donde:
• ξ es el factor de amortiguamiento
Estas dos últimas constantes pueden obtenerse de la sobreoscilación δ y el tiempo de pico tp,
obtenidos a partir de la respuesta del sistema ante una entrada escalón:
Práctica 3. Análisis de sistemas en el dominio del tiempo
Ejercicios propuestos
Ejercicio 1
a) Identificar las funciones de transferencia de los sistemas cuya salida ante entrada escalón en
lazo abierto se proporciona en los archivos “P3b_sys1.mat” y “P3b_sys2.mat. Representar los
sistemas en lazo abierto en Simulink y comparar las salidas obtenidas ante escalón unitario con
las proporcionadas.
Nota: Los “.mat” tienen un formato de estructura con nombre sys con dos campos: data (el
vector de salida) y time (el vector de tiempo).
b) Estudiar el comportamiento de los parámetros del sistema: ganancia (K), frecuencia natural
del sistema (ωn) y factor de amortiguamiento (ξ). Mostrar y comentar como varía la salida de un
sistema de 2º orden ante escalón unitario en función de estos parámetros.
Ejercicio 2
Un motor eléctrico de corriente continua se acopla a una polea para levantar cajas en una planta
industrial. Ante una entrada de tensión V(t) en el motor, la caja se elevará a una determinada
altura h(t). El resto de variables del sistema corresponderán al ángulo girado por el motor θ(t),
el par proporcionado por el motor τ(t), la intensidad que circula por el devanado del motor i(t),
la fuerza electromotriz inducida en el devanado del motor fm(t) y la velocidad angular del
motor ω(t). Una vez modelado el sistema se obtiene un esquema de control similar al mostrado
a continuación:
Se pide:
a) Obtener la función de transferencia equivalente y mostrar la salida ante una entrada escalón
con inicio en t=0. ¿Es estable el sistema? Desde un punto de vista físico, comentar el resultado.
b) Añadir un bloque multiplicador de ganancia K al sistema reducido y posteriormente una
realimentación negativa.
c) Para un valor de K=20, obtener la salida del sistema ante una entrada escalón unitario con
inicio en t=0.
d) ¿Cuál es la ganancia en régimen permanente del sistema? ¿Qué ocurre con la ganancia si
variamos el valor de K? ¿Qué sentido físico tiene el valor obtenido?
e) Para el valor anterior de K=20, calcular la sobreoscilación δ y el tiempo de pico tp. Estudiar
como afecta la variación del factor K en el comportamiento del sistema en régimen transitorio.
2
Fundamentos de Automática
Apartado e
Para el valor anterior de KG=20, calcular la sobreoscilación δ y el tiempo de pico tp. Estudiar
como afecta la variación del factor KG en el comportamiento del sistema en régimen transitorio.
Ejercicio 3
Dado el siguiente sistema continuo de segundo orden con un cero añadido al numerador:
• Evaluar el efecto de añadir un cero al numerador en s=2, s=0 y s=-2. Para ello, se debe
modificar el valor de τZ de forma adecuada y representar la salida ante entrada escalón
unitario con la función step.
• Dibujar los polos y los ceros en el plano complejo para cada caso y comentar el efecto
que se obtiene al variar la posición del cero sobre la salida del sistema.
• Evaluar el efecto de añadir un cero al numerador en s=2, s=0, s=-0.1 y s=-2. Para ello, se
debe modificar el valor de τZ de forma adecuada y representar la salida ante entrada
escalón unitario con la función step.
• Dibujar los polos y los ceros en el plano complejo para cada caso y comentar el efecto
que se obtiene al variar la posición del cero sobre la salida del sistema. ¿Qué diferencias
hay con el sistema analizado en el apartado anterior?
Si ahora se tiene el siguiente sistema de segundo orden con un polo añadido al denominador:
3
Fundamentos de Automática Curso 2017/2018
En esta práctica, se realizará el modelado de un sistema real para obtener su función de transferencia, y
posteriormente se realizará un breve análisis de su comportamiento. El modelo de un motor de corriente
continua se puede obtener analíticamente mediante la aplicación de principios mecánicos y eléctricos de
funcionamiento, como ya fue visto en la transparencia 18 del tema 1- sesión 2, y que aquí se repasa, viendo su
aplicación a un motor algo más complejo, que dispone de un tren de engranaje ensamblado en el eje de giro del
motor.
Sesión 1: Modelado del sistema analíticamente
= + + = + + (1)
= + = + (2)
Y la parte mecánica viene modelada por la ecuación que relaciona inercias y amortiguamiento viscoso, que se
obtiene por aplicación de segunda ley de Newton, y donde se relaciona el par aplicado de entrada con los
componentes mecánicos.
= + = + (3)
donde es el momento de inercia de la carga del motor, el rozamiento viscoso en el eje del motor (se
supone que la carga está en el eje y coinciden) y donde = es la velocidad de giro del eje del motor.
Además, la relación entre la parte eléctrica y continua en un motor de corriente continua viene dada por la
ecuación:
= (4)
Donde el par del motor, viene determinado por la intensidad del circuito eléctrico multiplicada por una
constante de proporcional, conocida por constante del par motor, y que se denota por , y por un parámetro
conocido como la eficiencia del motor que en condiciones ideales valdrá 1.
-1-
Fundamentos de Automática Curso 2017/2018
El cálculo del error en régimen permanente depende de la realimentación del sistema en bucle
cerrado. En este sentido, existen dos casos distintos:
En este caso, la salida y la entrada son de la misma naturaleza física, por tanto:
En el caso de sistemas con realimentación no unitaria, la señal de entrada debe ser adecuada
tanto en magnitud física como en rango dinámico para poder compararse con la señal de salida.
Esta relación viene determinada por el bloque de realimentación H(s).
Fundamentos de Automática Curso 2017/2018
Ejercicio 1 (Sesión 1)
(a) Obtener la función de transferencia del servomotor a partir de la ecuación (6). Comprobar que se trata de un
sistema de primer orden si se considera como salida la velocidad del eje de carga ' del motor, y como
entrada la tensión del circuito eléctrico con la que se alimenta el motor . (Nota: Considerar condiciones
iniciales nulas)
(b) Identifica la dependencia de los distintos parámetros que definen la función de transferencia del sistema de
primer orden (ganancia, constante de tiempo) con respecto a los parámetros que definen los elementos del
motor. ¿De qué parámetros del modelo analítico (elementos del motor) dependerá la ganancia? ¿Y la constante
de tiempo? (Ayuda: Utiliza el resultado de la cuestión anterior)
(c) Dados los valores numéricos de los parámetros que definen el motor, determina el valor de la ganancia y de
la constante de tiempo del apartado anterior, para ello emplea los valores de la Tabla 1. Además, se sabe que
; =0 + '1 , ; = 0 + ' 1 y que = y que =
$ $
.
-3-
Fundamentos de Automática Curso 2017/2018
(d) Calcula la ganancia del sistema en estado estacionario K, así como su constante de tiempo τ, ante una
entrada escalón de 3 unidades. Se sabe que la ganancia en estado estacionario se puede calcular como =
<== +<>
donde CD = C 0 e CFF = C ∞ y donde x(t) es la señal de entrada.
? @A +? B
(e) Calcula la respuesta temporal del sistema y(t) ante entrada escalón unitario, si al sistema cuya función de
transferencia ha sido obtenida en (b), se le añade un retardo. Proporciona la respuesta analítica y dibújala con
MATLAB.
(f) Calcula el diagrama de Bode del sistema a partir de la respuesta ante una entrada sinusoidal. Para poder
calcular el diagrama de Bode, es necesario obtener la respuesta del sistema y(t) ante una entrada sinusoidal en
la que se va variando la frecuencia de entrada de la señal sinusoidal y observando como varía la respuesta del
sistema y(t) para cada caso. Si se conoce la función de transferencia del sistema, la magnitud del diagrama de
L( N ,
Bode se puede calcular como |I J |=K K= y la fase como ∠I J = −atan W (Nota: Ver
O N P%QR
transparencia 17-Sesión 8 del tema 4).
-4-
Fundamentos de Automática Curso 2017/2018
Archivo Descripción
setup_srv02_exp01_mdl.m El script principal de MATLAB que establece los parámetros
del motor y del sensor, así como su configuración de los
parámetros del modelo. Es necesario ejecutar este archivo
para poder realizar los experimentos de esta práctica.
config_srv02.m Establece los parámetros de configuración del modelo del
servomotor SRV02: Rm, kt, km, Kg, eta_g, Beq, Jeq y eta_m; y
las constantes de calibración del sensor: K_POT, K_ENC y
K_TACH, y las limitaciones del amplificador VMAX_AMP
y IMAX_AMP.
calc_conversion_constants.m Para calcular las conversiones de unidades de los
parámetros calculados
q_srv02_mdl.mdl Archivo de SIMULINK que implementa un control en bucle
abierto para el sistema real SRV02 utilizando QUARC
Los pasos para llevar a cabo la configuración del motor y poder llevar a cabo la experimentación se detallan a
continuación:
1. Ejecuta MATLAB
2. Establece como carpeta actual de trabajo en MATLAB, el paquete de archivos proporcionados por el
profesor para esta práctica (donde está el archivo q_srv02_mdl.mdl).
3. Abrir (doble clic) el archivo q_srv02_mdl.mdl de SIMULINK en el cual se muestra el modelo del del
sistema SRV02-ET que representa el servomotor SRV02 que se emplea en la práctica.
-5-
Práctica 2. Herramientas de análisis de sistemas continuos
donde M(s) es la función de transferencia en lazo cerrado. Aplicando el teorema del valor final:
2
Fundamentos de Automática Curso 2017/2018
-7-
Fundamentos de Automática Curso 2017/2018
-8-
Fundamentos de Automática Curso 2017/2018
Ejercicio 2 (Sesión 2)
(a) Proceder como en la sección S2.2 e implementar un script (llamado ejercicio1) en MATLAB que genere un
gráfico con la respuesta del sistema junto con la simulada (ver Figura 2). La velocidad de salida del motor se
guardará en el workspace de Matlab en la variable w_l.
(b) En el mismo script, introduzca el código que calcule la ganancia en estado estacionario usando la respuesta
ante entrada escalón medida e introdúcela en la Tabla 3 de resultados. Calcula también la constante de tiempo
de la respuesta obtenida e introdúcela en la misma tabla. Compárala con los valores obtenidos en el ejercicio 1b
de la sesión 1.
Ejercicio 3 (Sesión 2)
(a) Modifique el paso 1 y 2 de la experimentación con el motor para ajustar la amplitud a 1V en vez 1,5V y el
Offset a 1,5V en vez de a 2V. Y repita los pasos del 3 al 5 para obtener las gráficas de entrada y de salida que
se implementaron en el ejercicio 1a (ejercicio anterior).
(b) Modifique el valor de ganancia K=1.25 (en lugar de K=1) y el valor de τ = 0,2 (en lugar del por defecto de de
τ = 0,1) en el workpsace de MATLAB. Para que los cambios surtan efecto, acuérdese de actualizar el
diagrama (opción Simulation Update Diagram). Represente las gráficas de entrada, salida real y simulada
y observe cómo cambia la simulación.
(c) Experimente variando los parámetros del modelo (ganancia y constante de tiempo) y en cada caso
represente las gráficas de entrada, salida real y simulada, y compárelas entre sí. ¿Cómo afectan la ganancia
y la constante de tiempo a la respuesta del sistema?
(d) Modifique y actualice el sistema a los valores de ganancia y constante de tiempo a los obtenidos en el
ejercicio 1b de la sesión 1 y repita la simulación, volviendo a representar la entrada y salida. ¿La respuesta
simulada obtenida se aproxima más o menos que la respuesta simulada en los casos anteriores
experimentados en el ejercicio?
Ejercicio 4 (Sesión 2)
(a) Proceder como en la sección S2.4, considerando una amplitud de señal de entrada de 2V y variando la
frecuencia y tomando mediciones de la velocidad del eje de carga, para introducirlas en la Tabla 4 de
resultados. (Nota: La medición puede realizarse directamente desde el plot. Alternativamente, se puede
-9-
Fundamentos de Automática Curso 2017/2018
utilizar el workspace de MATLAB para encontrar la velocidad máxima utilizando la variable wl, donde wl (:,
1) es el vector de tiempo, wl (:, 2) es la velocidad medida, y wl (:, 3) es la velocidad simulada).
Frecuencia (Hz) Amplitud (V) Máxima velocidad Ganancia |G(w)| Ganancia |G(w)|
(rad/s) rad/s/V rad/s/V, dB
0.0 2.0 (No es necesario)
1.0 2.0
2.0 2.0
3.0 2.0
4.0 2.0
5.0 2.0
6.0 2.0
7.0 2.0
8.0 2.0
Tabla 4. Tabla de datos de diagrama de Bode
(b) Modifique el paso 1 y 2 de la experimentación mostrada en S.2.4 para ajustar la amplitud a 2V y el Offset a
0V. Y repita los pasos del 3 al 5 para obtener las gráficas de señal de entrada y señal de salida. Represente
las gráficas de entrada, salida real y simulada.
(c) Mida la máxima velocidad positiva del eje para la frecuencia f = 1,0 Hz e introduzca el valor en la Tabla 4.
Al igual que se ha explicado antes, esta medición se puede hacer directamente con la variable guardada wl
en el workspace de MATLAB.
(d) Calcule la ganancia del sistema (en unidades lineales y dB) e introduce los resultados en la Tabla 4.
(e) Finalmente, modifique y actualice la frecuencia a f = 2.0 Hz ajustando el parámetro de frecuencia en el
bloque SRV02 Signal Generator. Mida la velocidad máxima y calcule la ganancia, repitiendo este paso para
cada uno de los valores de frecuencia de la Tabla 4.
(f) Construya un diagrama en magnitud de Bode a partir de las ganancias calculadas en dB y recogidas en la
tabla 4 (Nota: Ignora la entrada f=0Hz). Dibuje el diagrama de Bode teórico a partir de los datos analíticos
de la sección S1 (Ejercicio 1f) y compárelo con el obtenido aquí.
(g) Calcule la ganancia en estado estacionario K o ganancia máxima (Ver Sesión 8 del tema 4 de teoría), así
como la constante de tiempo τ usando el gráfico de Bode obtenido en el apartado anterior a partir de la
frecuencia de corte. Introduzca los datos en la última casilla de la Tabla 3, así como para el caso de la
ganancia en la fila f=0Hz de la Tabla 4 (Nota: Recordad que la frecuencia de corte en un sistema con polos
reales y sin ceros es la frecuencia en la que la ganancia es 3dB más pequeña que la ganancia máxima cuyo
valor es 20log|K|).
(h) Observando el diagrama de Bode, estime los valores de margen de amplitud y margen de fase, y determine
cómo es el sistema en cuanto a su estabilidad relativa (Ver Sesión 8 del tema 4, transparencias 37-40).
(Nota: utiliza el comando ginput para obtener valores de la gráfica en Matlab).
- 10 -