Professional Documents
Culture Documents
Introducción:
Si y(t) es la (o una) variable de salida de un sistema, y x(t) la (o una) variable de entrada, entonces la
función de transferencia del sistema es G(s)Y(s)/X(s), donde X(s) y Y(s) son, respectivamente, las variables x
y y en el dominio de s.
Y ( s)
b m s m b m1s m1 b m 2 s m 2 ...b1s b 0
salida con condiciones iniciales 0
X (s) s n a n1s n1 a n 2 s n 2 ...a1s a 0 entrada
La función de transferencia (en adelante f.t.) sólo se define para un sistema lineal e invariante en el tiempo
(slit). Sin embargo, el enfoque de f.t. se usa extensamente en el análisis y el diseño de tales sistemas. La f.t. es
independiente de la entrada del sistema.
Usando el concepto de f.t. se puede representar la dinámica de un slit por ecuaciones algebraicas en s.
Dado que la función de transferencia es una fracción polinómica, hay muchas formas de expresarla: ya
sea en la forma común (polinomios decrecientes en el numerador y denominador), ya sea en forma factorizada o
expandiendo la fracción en fracciones parciales. La forma factorizada nos informa inmediatamente cuáles son los
polos (raíces del denominador de la f.t.), ceros (raíces del numerador de la f.t.) y ganancia (coeficiente de la mayor
potencia del numerador de la f.t.) del sistema, parámetros que determinan el comportamiento y estabilidad del
mismo. Por su parte, la forma en fracciones parciales facilita el cálculo de la respuesta en el tiempo del sistema,
puesto que a cada término en fracción parcial se le puede aplicar luego la transformada inversa de LaPlace.
Referencia Rápida:
El siguiente cuadro resume los nombres, uso y sintaxis de las funciones más frecuentemente utilizadas
en este laboratorio:
Nombre Uso Sintaxis
conv multiplica dos polinomios conv(a,b)
deconv divide dos polinomios [c,d]=deconv(a,b)
poly polinomio a partir de las raíces p=poly(r)
roots raíces a partir del polinomio r=roots(p)
poly2str despliega los coeficientes de un vector poly2str(a,'variable')
como un polinomio
printsys despliega los coeficientes de dos printsys(n1,d1,'variable')
vectores como una función de
transferencia
residue de una fracción polinómica a fracciones [r,p,k]=residue(num,den)
parciales
resi2 residue cuando hay polos repetidos resi2(num,den,polo,q,potencia)
tf2zp de la función de transferencia polinómica [z,p,k]=tf2zp(num,den)
a ella en polos y ceros
zp2tf de la función de transferencia en polos y [num,den]=zp2tf(z,p,k)
ceros a ella polinómica
Página 1 de 11
Laboratorio de Control
Procedimiento:
Sección 1: Polinomios y raíces
Para generar polinomios existen varias alternativas:
a) Guardar en un vector fila los coeficientes de las potencias del polinomio;
b) A partir de las raíces del polinomio;
c) A partir de dos o más polinomios existentes anteriormente (mediante convolución, lo veremos en la
Sección 2).
4 3
La primera alternativa es quizá la más obvia y sencilla. Por ejemplo, si el polinomio fuese s + 3s +
2
11s 7s 36, entonces el polinomio (llamémosle p) sería:
» p=[1 3 11 -7 -36]
p =
1 3 11 -7 -36
Deben anotarse en el vector a los coeficientes en orden decreciente. Veamos otro ejemplo:
» num=[1 20 -83 0 117 2549]
num =
1 20 -83 0 117 2549
5 4 3
Este vector corresponde al polinomio s + 20s 83s + 117s + 2549 (note que al polinomio le falta el término
2
s , y de allí la presencia del cero en el vector).
Para poder apreciar el vector como polinomio, se utiliza la función poly2str:
» poly2str(num,'s')
ans =
s^5 + 20 s^4 - 83 s^3 + 117 s + 2549
» poly2str(p,'s')
ans =
s^4 + 3 s^3 + 11 s^2 - 7 s - 36
La otra alternativa para generar polinomios es a partir de un vector cuyos elementos son las raíces del
polinomio. Digamos, por ejemplo, que las raíces de un polinomio son 1, 1+ j3, 1j3, 2 y 4. Entonces
generamos el vector de raíces (llamémosle r) y con la función poly generamos el polinomio:
» r=[-1 -1+3j -1-3j -2 4];
» pol=poly(r)
pol =
1 1 -2 -38 -116 -80
A su vez, pueden calcularse las raíces de un polinomio con la función roots, o sea que ella es la inversa de la
función poly. Usando el polinomio recién calculado:
» r1=roots(pol)
r1 =
4.0000
-1.0000 + 3.0000i
-1.0000 - 3.0000i
-2.0000
-1.0000
Página 2 de 11
Laboratorio de Control
La exactitud (o inexactitud) de roots y poly depende sobretodo de la información de entrada, pero también del
algoritmo interno de estas funciones. Note qué ocurre cuando tratamos de generar pol a partir de r1:
» pol=poly(r1)
pol =
1.0000 1.0000 -2.0000 -38.0000 -116.0000 -80.0000
Por lo tanto, cuando se trabaja con las raíces para generar el polinomio hay que procurar ser lo más
exactos posibles.
Sección 2: Convolución
La tercera alternativa para generar polinomios es multiplicando dos o más polinomios existentes. Ello
se logra con la función conv. Pongamos el caso de los polinomios (s + 3) y (2s + 7). El producto de los
2
polinomios es 2s + 13s + 21. Veamos como se procede en Matlab:
» 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, si n1, n2 y n3 son los tres polinomios, y n es el resultado, la convolución que da como
resultado n podría ser conv( conv( n1,n2 ), n3) (o la misma sintaxis con cualquier otro ordenamiento de n1, n2 y
n3).
La operación inversa (la división) se logra con la función deconv (de la palabra deconvolución). Para
esta función son necesarios dos argumentos de salida: el cociente y el residuo.
Cada vez que se haya definido el numerador y denominador de un bloque, puede usar la función printsys para
verificar que lo que escribió está correcto.
» printsys(n1,d1)
num/den =
5 s + 5
-----------------------
s^3 + 8 s^2 + 11 s + 18
» [z,p,k]=tf2zp(n1,d1)
z =
-1
Página 3 de 11
Laboratorio de Control
p =
-6.7676
-0.6162 + 1.5100i
-0.6162 - 1.5100i
k =
5
Matlab almacena en k la ganancia, en z los ceros, y en p los polos. Por tanto, la función de transferencia
factorizada (o en la forma polo-cero) es:
5( s 1)
( s 6.7676)( s 0.6162 j15100
. )( s 0.6162 j15100
. )
La función inversa a tf2zp (que es el mnemónico de "from transfer function to (2) zero-pole") es zp2tf:
» [n2,d2]=zp2tf(z,p,k)
n2 =
0 0 5 5
d2 =
1.0000 8.0000 11.0000 18.0000
La respuesta que devuelve zp2tf es tal que el vector del numerador tiene tantos elementos como el
denominador.
En Matlab, el grado del numerador debe ser siempre menor o igual al grado del numerador; en caso de
que esto no se cumpla, debe emparejarse el grado del denominador al del numerador ocupando las posiciones
con eps. Por ejemplo, si la función de transferencia fuese G(s)=s, el numerador sería [1 0]; pero el
denominador no podría ser [1] o [0 1], sino [eps 1]. Sin embargo, esto puede traer errores de cálculo cuando se
usa con algunas funciones, y en lo posible debe evitarse.
La representación en fracciones parciales de una función de transferencia puede lograrse mediante la
función residue. Consideremos nuevamente a 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 =
[]
Matlab averigua primero si la fracción es propia o impropia. De ser propia, K=[ ] (el conjunto vacío). De no serlo
(caso poco común pero que puede darse) K almacena los coeficiente del cociente entre numerador y
denominador, y el residuo (junto con el denominador) forman una fracción propia que se descompone en
fracciones parciales. Los valores de R y P son correspondientes: R(1) es la ganancia de la fracción cuyo
denominador es s P(1), y así sucesivamente. De esta forma, la descomposición en fracciones parciales de
n1/d1 es:
0.7188 0.3594 j01915
. 0.3594 j01915
.
s 6.7676 s 0.6162 j15100
. s 0.6162 j15100
.
Página 4 de 11
Laboratorio de Control
Si este resultado se va a utilizar para hallar la respuesta de un sistema a una entrada impulso, los residuos de
las fracciones con polos complejos deben transformarse a la forma polar. Para ello se puede usar la función
cart2pol (consulte el help de esta función en Matlab para más información):
» [angulo,magnitud]=cart2pol(real(R(2)),imag(R(2)))
angulo =
-0.4896 (El ángulo está dado en radianes)
magnitud =
0.4072
R =
0.7871 + 0.0000i
-0.3800 - 0.8400i
-0.3800 + 0.8400i
-0.0136 + 0.4668i
-0.0136 - 0.4668i
P =
-6.7676
0.0000 + 4.0000i
0.0000 - 4.0000i
-0.6162 + 1.5100i
-0.6162 - 1.5100i
(Ya sabíamos que la fracción es propia, por lo que no nos interesa saber K.)
» [ang1,mag1]=cart2pol(real(R(2)),imag(R(2)))
ang1 = -1.9956
mag1 = 0.9220
» [ang2,mag2]=cart2pol(real(R(4)),imag(R(4)))
ang2 = 1.5998
mag2 = 0.4670
Página 5 de 11
Laboratorio de Control
Asignación
1- Encuentre la expansión en fracciones parciales de las siguientes funciones:
1 s1
a) F( s) c) F( s)
s( s 2)( s 5) s( s 2)( s 2 6s 10)
b) F( s)
1 s1
d) F( s)
s( s 2 2s 10) ( s 2s 2)( s 2 6s 10)
2
2. Factorice los siguientes polinomios. Note que siempre que hay una potencia del polinomio con signo
negativo o que sea cero, al menos una raíz tiene parte real positiva o cero.
Página 6 de 11
Laboratorio de Control
Referencia Rápida:
Procedimiento:
Sección 1: del dominio de Laplace al espacio de estado
Las funciones tf2ss y zp2ss permiten pasar de una función de transferencia al espacio de estado.
Ejemplo 1: Para obtener una representación en el espacio de estado para las siguientes funciones de
transferencia
a) X(s) 5
U(s) (s 1) 2 (s 2)
Página 7 de 11
Laboratorio de Control
s4
b) Gs
s 3 6s 2 11s 6
A =
-1.0000 0 0
1.0000 -3.0000 -1.4142
0 1.4142 0
B =
1
0
0
C =
0 0 3.5355
D =
0
»
» %-----Parte b)-----
» num=[1 4]; %numerador
» den=[1 6 11 6]; %denominador
» [a,b,c,d]=tf2ss1(num,den)
a =
0 1 0
0 0 1
-6 -11 -6
b =
0
0
1
c =
4 1 0
d =
0
En el primer caso, se definen los ceros, polos y ganancias del sistema; en el se definen los coeficientes
del numerador y denominador de la función de transferencia.
Página 8 de 11
Laboratorio de Control
Sección 2: Modelo de un sistema en el espacio de estado. Cómo pasar del espacio de estado al
dominio de Laplace. Valores propios.
Problema ejemplo.
En la figura 1 se muestra un circuito RLC. Las variables de estado son vc(t) e i(t).
1- Hallar una representación en variables de estado.
2- Hallar la función de transferencia en forma:
a- polinómica
b- de polos y ceros
3- Halle los valores propios e indique si el sistema es estable o no.
R L
+ +
+ i(t) VC(t)
e1(t) C
Solución: para este sistema, aplicamos LVK y luego las relaciones voltaje-corriente para cada
elemento.
e(t) = VR(t) + VL(t) + VC(t)
di(t ) dV (t )
VR =R*i(t); VL (t ) L ; i(t ) C C
dt dt
Si elegimos a VC(t) y a i(t) como variables de estado, las ecuaciones diferenciales de primer
orden son:
dVC (t ) 1
i(t )
dt C
di(t ) 1 1
VL (t ) e(t ) VR (t ) VC (t )
dt L L
1 R 1
VC (t ) i(t ) e(t )
L L L
En forma matricial:
dVC (t ) 1
dt 0 0
C VC (t ) 1e(t )
di(t ) 1 R
i(t ) L
dt L L
Una vez se sepan los valores de R, L y C, y se definan las matrices A, B, C, D, en función de esos
parámetros, entonces podemos proceder a la resolución en Matlab:
» % PROBLEMA EJEMPLO
» R=1e3; L=1e-3; C=1e6; %Parámetros
» A=[0 1/C;-1/L -R/L];
» B=[0; 1/L];
» % Asumir como salida i(t).
» C=[0 1]; D=0;
Página 9 de 11
Laboratorio de Control
z =
0
p =
1.0e+005 *
0.0000
-10.0000
k =
1000
La función eig tiene varias aplicaciones, entre ellas calcular los valores propios de un sistema o los
valores propios de la matriz A.
» % eigenvalores (son los polos del sistema)
» eigenvalues=eig(A)
eigenvalues =
1.0e+005 *
0.0000
-10.0000
» eigenvalues(1)
ans =
-9.8953e-010
» eigenvalues(2)
ans =
-1.0000e+006
El saber los valores propios del sistema nos permite saber si el sistema es estable o inestable (en este
caso el sistema es estable).
Asignaciones
Conociendo estas cinco nuevas funciones, y combinándolas con las aprendidas anteriormente, es posible
resolver problemas un poco más complicados.
1- El diagrama de bloques mostrad es de un sistema automático de control de profundidad para un
robot submarino. La profundidad se mide mediante un transductor de presión. La ganancia del
Página 10 de 11
Laboratorio de Control
-4
actuador del alerón de popa es K=10 cuando la velocidad es de 8 m/s. El submarino tiene la función
de transferencia aproximada G( s)
s 0.2 2 y el transductor de retroalimentación es H(s)=1.
s 2
0.01
profundidad profundidad
deseada + 1
K G(s) C(s)
R(s) s
actuador
H(s)
medición de
presión
2- Para el siguiente diagrama de bloque, las variables de estado x1(t), x2(t) y x3(t) ahí indicadas.
X2(s) X1(s)
U(s) + 2 + 2
s3 s s 1
X3(s)
s
Página 11 de 11