Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introducción
Para comprender y controlar sistemas complejos, hay que obtener modelos matemáticos cuantitativos de
ellos. Por tanto, es necesario analizar las relaciones entre las variables del sistema y obtener un modelo
matemático. Como los sistemas considerados son de naturaleza dinámica, las ecuaciones descriptivas son
generalmente ecuaciones diferenciales. Además, si estas ecuaciones pueden linealizarse, entonces se puede
utilizas la transformada de Laplace para simplificar el método de solución. En la práctica, por la complejidad
de los sistemas y el desconocimiento de todos los factores relevantes es necesario introducir hipótesis sobre
la operación del sistema. Por tanto, a veces será útil considerar el sistema físico, delinear algunas hipótesis
necesarias y linealizar el sistema. Luego, empleando las leyes físicas que describen el sistema lineal
equivalente, se pueden obtener un conjunto de ecuaciones diferenciales lineales Finalmente, utilizando
herramientas matemáticas, como la transformada de Laplace, se obtiene una solución que describe la
operación del sistema. En resumen, el tratamiento de los problemas de sistemas dinámicos puede
establecerse como sigue:
1. Definir el sistema y sus componentes
2. Formular el modelo matemático y enumerar las suposiciones necesarias
3. Escribir las ecuaciones diferenciales que describen el modelo
4. Resolver las ecuaciones para las variables de salida deseadas
5. Examinar las soluciones y las hipótesis
6. Si es necesario, volver a analizar o diseñar el sistema.
Otra herramienta importante para describir un sistema de control es la representación por diagrama de
bloques, la cual consiste en bloques operacionales y unidireccionales que representan la función de
transferencia de las variables de interes.
MATLAB se puede utilizar con sistemas descritos en la forma de función de transferencia. Este laboratorio
tiene como objetivo enseñar a los estudiantes a utilizar MATLAB para generar funciones de transferencias,
analizar dichas funciones y representarlas en sus respectivos diagramas de bloques. Específicamente, con
este laboratorio aprenderán a escribir polinomios y funciones de transferencias, obtener raíces de polinomios
(polos y ceros), transformar cualquier representación en función de transferencia al espacio de estado, y
viceversa y reducir diagrama de bloques.
Como la función de transferencia es una razón de polinomios, se comienza por investigar como MATLAB
maneja polinomios. En esta herramienta, los polinomios se representan como vectores filas que contienen
coeficientes del polinomio en orden descendente. Por ejemplo, 𝑝(𝑠) = 𝑠 3 + 3𝑠 2 + 4 se escribe en MATLAB
como 𝑝 = [1 3 0 4]. Observe que si un término de 𝑠 no aparece en el polinomio, entonces su coeficiente debe
ser igual a 0 en el vector fila correspondiente.
Ejemplo: Considere los polinomios 𝑝(𝑠) = 𝑠 4 + 3𝑠 3 + 11𝑠 2 − 7𝑠 − 36 y 𝑞(𝑠) = 𝑠 5 + 20𝑠 4 − 83𝑠 3 + 117𝑠 +
2549, los polinomios en Matlab se escriben como:
» p=[1 3 11 -7 -36]
p =
1 3 11 -7 -36
q =
1 20 -83 0 117 2549
Note que al polinomio 𝑞(𝑠) le falta el término 𝑠 2 , y de allí la presencia del cero en el vector.
Para poder transformar el vector a polinomio, se utiliza la función poly2str. Tomando en cuenta el ejemplo
anterior, obtenemos:
» poly2str(p,'s')
ans =
s^4 + 3 s^3 + 11 s^2 - 7 s - 36
» poly2str(q,'s')
ans =
s^5 + 20 s^4 - 83 s^3 + 117 s + 2549
Las raíces de los polinomios se obtienen mediante la función roots y genera un vector columna con la
solución. Inversamente, se puede obtener los coeficientes de las raíces de un polinomio utilizando la función
poly. Ingrese el siguiente ejemplo en la ventana de comandos.
>> p=[1 3 0 4];
>> r=roots(p)
r =
-3.3553 + 0.0000i
0.1777 + 1.0773i
0.1777 - 1.0773i
>> p=poly(r)
p =
1.0000 3.0000 0.0000 4.0000
Otra forma de generar polinomios es multiplicando dos o más polinomios existentes. Ello se logra con la
función “conv”. Veamos el caso de los polinomios (𝑠 + 3) 𝑦 (2𝑠 + 7). El producto de los polinomios es 2𝑠 2 +
13𝑠 + 21, en Matlab sería:
» conv([1 3],[2 7])
ans =
2 13 21
Cuando se quiera multiplicar más de dos polinomios, entonces se puede realizar la convolución de una
convolución, por ejemplo 𝑐𝑜𝑛𝑣(𝑐𝑜𝑛𝑣(𝑝, 𝑞), 𝑚). La operación inversa (la división) se logra con la función
𝑑𝑒𝑐𝑜𝑛𝑣, que representa la deconvolución. Para esta función son necesarios dos argumentos de salida: el
cociente y el residuo.
Para obtener el valor de un polinomio con respecto a un valor dado de la variable 𝑠, se utiliza el comando
polyval como se observa en el siguiente ejemplo.
>> n=[3 14 9 4];
n =
3 14 9 4
>> value=polyval(n,-5)
value =
-66
Una función de transferencia polinómica consta del polinomio del numerador y del denominador, donde el
grado del numerador debe ser menor o igual que el del denominador. Cuando se hayan definido el numerador
y el denominador, puede usar la función printsys para desplegar los coeficientes los vectores como una
función de transferencia.
5𝑠+5
Ejemplo: Si la función de transferencia es 𝑠3 +8𝑠2 +11𝑠+18, entonces ella se escribe así:
» n1=[5 5];
» d1=[1 8 11 18];
» FT=printsys(n1,d1)
FT=
5 s + 5
-----------------------
s^3 + 8 s^2 + 11 s + 18
Otra opción para crear una función de transferencia a partir de polinomios es la función 𝑡𝑓(𝑛𝑢𝑚, 𝑑𝑒𝑛).
Utilizando el ejemplo anterior, obtenemos:
» n1=[5 5];
» d1=[1 8 11 18];
»FT=tf(n1,d1)
FT =
5 s + 5
-----------------------
s^3 + 8 s^2 + 11 s + 18
MATLAB permite realizar operaciones con funciones de trasferencias, como son la suma, resta, multiplicación
y división. En el siguiente ejemplo considere el caso donde se suman las siguientes funciones de
transferencias:
10 1
𝐺1 (𝑠) = 𝑦 𝐺2 (𝑠) =
𝑠2 + 2𝑠 + 5 𝑠+1
Para obtener los polos y ceros asociados a una función de transferencia en MATLAB se utilizan las funciones
pole y zero, respectivamente. Los polos y ceros pueden graficarse utilizando la función pzmap como se
observa en el siguiente ejemplo.
sys =
s^2 + 12 s + 15
---------------------
s^3 + 3 s^2 + 7 s + 5
Continuous-time transfer function.
>> p=pole(sys)
p =
-1.0000 + 2.0000i
-1.0000 - 2.0000i
-1.0000 + 0.0000i
>> z=zero(sys)
z =
-10.5826
-1.4174
pzmap(sys)
Pole-Zero Map
1
Imaginary Axis (seconds-1 )
-1
-2
También se puede hallar la ganancia, ceros y polos de la función de transferencia con la función tf2zp. Matlab
almacena en k la ganancia, en z los ceros, y en p los polos, como se puede observar en el siguiente ejemplo:
» [z,p,k]=tf2zp(n1,d1)
z =
-1
p =
-6.7676
-0.6162 + 1.5100i
-0.6162 - 1.5100i
k =
5
n2 =
00 5 5
d2 =
1.0000 8.0000 11.0000 18.0000
La representación en fracciones parciales de una función de transferencia puede lograrse
mediante la función 𝑟𝑒𝑠𝑖𝑑𝑢𝑒. Usamos n1 y d1:
» [R,P,K]=residue(n1,d1)
R =
-0.7188
0.3594 - 0.1915i
0.3594 + 0.1915i
P =
-6.7676
-0.6162 + 1.5100i
-0.6162 - 1.5100i
K =
[]
Asignación:
1) Construya la función de transferencia en forma polinómica, dados los siguientes datos
a) k=7; ceros: 2.5; polos: 1.33, 0.577.
b) k=1; ceros: ninguno; polos: 2, 0.40.
c) numerador: s(s + 0.21) y denominador: (s2 + 6s + 30 )(s – 1).
d) numerador: s+1 y denominador s(s+2)( s2 + 6s + 10)
Función Descripción
tf2ss Convierte de una función de transferencia polinómica al espacio de estado (forma
canónica asociada)
ss2tf Convierte del espacio de estado a una función de transferencia polinómica
zp2ss Convierte de una función de transferencia en polos y ceros al espacio de estado
ss2zp Convierte el espacio de estado a una función de transferencia en polos y ceros
poly2str Despliega los coeficientes de un vector como un polinomio
eig cálculo de los valores propios
Las funciones tf2ss y zp2ss permiten pasar de una función de transferencia en representación
de polinomios o ceros-polos al espacio de estado.
Ejemplo 1: Obtener la representación en el espacio de estado para la siguiente función de
transferencia.
5
a) (𝑠+1)2 (𝑠+2)
» z=[]; %No hay ceros
» p=[-1 -1 -2]'; %Polos
» k=5; %Ganancia
» [A,B,C,D]=zp2ss(z,p,k)
-1.0000 0 0
A= 1.0000 -3.0000 -1.4142
0 1.4142 0
B =
1
0
0
C =
0 0 3.5355
D =
0
s+4
b) 𝑠3 +6𝑠2 +11s+6)
Las funciones ss2tf y ss2zp permiten pasar del espacio de estado a una función de transferencia
en representación de polinomios o ceros-polos. Tomando los ejemplos anteriores, tenemos:
a) >> [b,a] = ss2zp(A,B,C,D)
b =
0×1 empty double column vector
a =
-1
-2
-1
b) >> [b,a] = ss2tf(a,b,c,d)
b =
0 0 1 4
a =
1.0000 6.0000 11.0000 6.0000
>> printsys(b,a)
num/den =
s + 4
----------------------
s^3 + 6 s^2 + 11 s + 6
Asignación:
1) Obtenga las variables de estado de las siguientes funciones de trasferencias.
1
a) 𝐺(𝑠) = 𝑠+10
3𝑠2 +10𝑠+1
b) 𝐺(𝑠) = 𝑠2 +8𝑠+5
Función Descripción
series reduce dos bloques en serie
parallel reduce dos bloques en paralelo
cloop reduce un bloque retroalimentado unitariamente
feedback reduce un bloque retroalimentado
poly2str despliega los coeficientes de un vector como un polinomio
printsys despliega los coeficientes de dos vectores como una función de transferencia
MATLAB permite interconectar componentes para formar sistemas de control más complejos. Se
utilizarán funciones para efectuar transformaciones del diagrama de bloques.
1 𝑠+1
𝐺(𝑠) = 𝑦 𝐹(𝑠) =
500𝑠 2 𝑠+2
Se puede emplear la función 𝑠𝑒𝑟𝑖𝑒𝑠 para poner en serie o cascada dos funciones de transferencia
y la función parallel para poner en paralelo dos funciones de transferencia. Considere el ejemplo
de las funciones de transferencia 𝐺(𝑠) y 𝐹(𝑠)
>> numg=[1];deng=[500 0 0]
>> sysg=tf(numg,deng);
>> numf=[1 1];denf=[1 2]
>> sysf=tf(numf,denf);
%Conexion serie
>> S=series(sysg,sysf)
S =
s + 1
------------------
500 s^3 + 1000 s^2
Continuous-time transfer function.
%Conexion paralelo
>> P=parallel(sysg,sysf)
P =
500 s^3 + 500 s^2 + s + 2
-------------------------
500 s^3 + 1000 s^2
Continuous-time transfer function.
Retroalimentación
Se puede introducir una señal de retroalimentación en el sistema de control cerrando el lazo con
una retroalimentación unitaria o una retroalimentación de función 𝐻(𝑠). Para ello, MATLAB utiliza
la función feedback y cloop. Si se omite la entrada de signo en la función, entonces MATLAB
supone que la retroalimentación es negativa. En el siguiente ejemplo vemos la implementación
de la función feedback.
>> numg=[1];deng=[500 0 0]
>> sysg=tf(numg,deng);
>> numf=[1 1];denf=[1 2]
>> sysf=tf(numf,denf);
%Conexion serie
>> S=series(sysg,sysf)
S =
s + 1
------------------
500 s^3 + 1000 s^2
Continuous-time transfer function.
%Retroalimentación unitaria
>> Sys=feedback(S,[1])
Sys =
s + 1
--------------------------
500 s^3 + 1000 s^2 + s + 1
Continuous-time transfer function.
Asignación:
1) Encuentre la función de transferencia de Y(s)/U(s).
U(s) + + + Y(s)
Y(s
1 s 1
ss))
s+1 − s2 + 2s + 7 s
− +
3
1
s
1 5
s2 + 3s + 10