Documente Academic
Documente Profesional
Documente Cultură
-i-
explicando cul es el tema que se va a tratar. Los siguientes apartados son el desarrollo
en s del captulo en cuestin, y en ellos se muestran los conocimientos tericos, as
como algunos ejemplos y aplicaciones prcticas para mejorar la comprensin.
Finalmente, un apartado de ejercicios con sus soluciones y otro con la bibliografa
utilizada para el captulo.
Todos los ejemplos, aplicaciones y ejercicios del curso se realizan con la
aplicacin Maple V. En la hoja de trabajo de Maple V (worksheet), se pueden aadir
nuevos grupos de ejecucin antes o despus de uno dado.
Cuando se ejecuta en el entorno Maple V un determinado grupo de ejecucin, el
cursor salta hacia el siguiente. Si entre ambos hay mucho texto, hay que volver hacia
atrs para leerlo. Para evitar esto, a lo largo de todo el Trabajo hay numerosos grupos de
ejecucin que no tienen ninguna instruccin, y estn colocados con el propsito de
impedir que el cursor salte al siguiente, sin que el alumno haya ledo el texto sito entre
ambos. Tambin sirve para que el cursor no salte a la solucin de un ejercicio antes de
que el alumno quiera verlo. En la presente memoria, estos grupos de ejecucin vacos se
han omitido, y todos los que contienen algo estn recuadrados, adems de tener el color
correspondiente: rojo para las instrucciones Maple, azul para la respuesta.
A lo largo de los distintos captulos del curso hay numerosos enlaces
denominados 'HyperLinks', que son fcilmente distinguibles al estar en color verde y
subrayados. Estos enlaces permiten saltar directamente a otra parte del Trabajo,
relacionada con lo que se indica en el texto. Esto sirve para moverse con rapidez a lo
largo de los distintos captulos. En la memoria, estos enlaces se pueden distinguir a su
vez por estar en color verde y subrayados. Ejemplo: hyperlink. As mismo, y con
idntica intencin, cada captulo tiene una serie de marcas denominadas 'bookmarks',
que permiten moverte entre los distintos apartados de dicho captulo. Para utilizar estas
marcas hay que entrar en el men: [View / Bookmarks]. En el ndice de Maple V
(archivo llamado sctd.mws), se encuentran todos los captulos y sus correspondientes
apartados, todos ellos con su propio enlace, para poder ir directamente a donde interese.
- ii -
- iii -
Mensaje que indica el lugar donde se debe obtener la solucin, dando las
indicaciones oportunas sobre si hay que usar algn procedimiento previo
o si hay que llamar algn paquete, etc..
- iv -
-v-
- vi -
- vii -
- viii -
16 Mb de RAM.
- ix -
-x-
Captulo 1: La Transformada Z
Captulo 1.
LA TRANSFORMADA Z.
-1-
1.1 INTRODUCCIN.
La transformada Zeta es una herramienta til en teora de control en tiempo
discreto y su papel es anlogo al que juega la transformada de Laplace en tiempo
continuo.
Una seal en tiempo continuo es aquella que se define sobre un intervalo
continuo de tiempo. Una seal analgica es una seal definida en un intervalo continuo
de tiempo, cuya amplitud puede adoptar un intervalo continuo de valores. En cambio,
una seal en tiempo discreto es una seal definida slo en valores discretos de tiempo.
En una seal en tiempo discreto, si la amplitud puede adoptar valores en un intervalo
continuo, entonces la seal se denomina seal de datos muestreados. Una seal de
datos muestreados se puede generar muestreando una seal analgica en valores
discretos de tiempo. Para ms informacin, [REF. 5], [REF. 6].
Se denominan variables de entrada, a todas las que es posible manipular a la
entrada del sistema, y que influyen sobre su comportamiento. Las variables de salida
son las respuestas medibles del sistema. Las variables de estado de un sistema son el
conjunto ms pequeo de variables que sirven para describir en su totalidad el
comportamiento de un sistema. Una perturbacin o ruido es una seal que afecta
adversamente al valor de salida de un sistema. Si una perturbacin se genera dentro del
sistema, se la denomina interna, dando lugar a las variables internas del sistema. Si la
perturbacin se genera fuera del sistema se considera externa, y constituye una entrada.
Los sistemas de control en tiempo discreto son aquellos sistemas en los cuales
una o ms de las variables pueden cambiar slo en valores discretos de tiempo. Estos
instantes, los que se denotarn mediante k T (k = 0, 1, 2, ..., T = periodo de muestreo),
pueden especificar los tiempos en los que se lleva a cabo alguna medicin de tipo fsico,
o los tiempos en los que se extraen los datos de la memoria de una computadora digital.
El intervalo de tiempo entre dos instantes discretos consecutivos se supone lo
-2-
Captulo 1: La Transformada Z
x(t) = u(t-1)
x( t ) = u ( t ) - u ( t + 1 )
no es causal.
-3-
-4-
Captulo 1: La Transformada Z
b0 z
X( z ) =
+ b1 z
n
z + a1 z
(m 1)
(n 1)
+ .. + bm
( m n)
+ .. + an
Los puntos en los que la funcin X ( z ) es igual a cero son las races del numerador (los
ceros de X ( z ) ). As mismo, los puntos en los que la funcin tiende a infinito son las
races del denominador (los polos de X ( z ) ). [REF. 5]. Estabilidad.
El principal objetivo de este captulo es presentar las definiciones de la
transformada z, los teoremas bsicos asociados con ella, y los mtodos para encontrar la
transformada z inversa.
-5-
1.2 LA TRANSFORMADA Z.
Al considerar la transformada z de una funcin del tiempo x ( t ) , slo se tienen
en cuenta los valores muestreados de dicha funcin: x ( 0 ) , x ( T ) , x ( 2 T ) , ... siendo
T el perodo de muestreo.
La transformada z de una funcin del tiempo x ( t ) , donde t es positivo, o de la
secuencia de valores x ( k T ) , donde k adopta valores mayores o iguales que cero
y T es el perodo de muestreo, se define mediante la siguiente expresin [REF. 5]:
X( z ) = ( x( t ) ) = ( x( k T ) ) =
x( k T ) z
( k )
k=0
X( z ) = ( x( k ) ) =
x( k ) z
( k )
k=0
x( k ) z
X(z) =
k=0
( k )
=z
=1
-6-
Captulo 1: La Transformada Z
X( z ) = ( x( t ) ) = ( x( k T ) ) =
x( k T ) z
( k )
k =
X( z ) = ( x( k ) ) =
x( k ) z
( k )
k =
-7-
Ejemplos:
Trabajamos
ahora
con
las
funciones
de
Maple
disponibles. 'restart'
> restart:
z
( a T )
( a T )
-8-
Captulo 1: La Transformada Z
> simplify(%);
z ( 1 + e
(z 1) (z e
(a T )
(a T)
1)
La funcin delta de Dirac( t ) toma el valor cero en todos sus puntos excepto para
t = 0, donde hay una singularidad. Podra considerarse como la versin discreta de la
funcin impulso. Tiene la propiedad de que
Dirac( t ) dt = 1
-9-
> restart:
( k T ) ( a k T )
,e
, sin( k T ), cos( k T ) ]
- 10 -
Captulo 1: La Transformada Z
at
( a t )
sin( t )
cos( t )
X(z)
x(kT)
z1
z
(z 1)
kT
za
z
ze
( a )
z sin( )
2
(k T )
( a k T )
sin( k T )
z 2 z cos( ) + 1
( z cos( ) ) z
2
cos( k T )
z 2 z cos( ) + 1
- 11 -
z1
Tz
(z 1)
z + a
(a T)
ze
(a T)
ze
1
z sin( T )
2
z 2 z cos( T ) + 1
( z + cos( T ) ) z
2
z + 2 z cos( T ) 1
X(z)
( f( k T ) + g( k T ) ) = ( f( k T ) ) + ( g( k T ) )
( f( k T ) + g( k T ) ) = F( z ) + G( z )
a k T x(k T ) = X (a 1 z )
- 12 -
Captulo 1: La Transformada Z
( x(t n T )) = z n X ( z )
y
n1
( x(t + n T )) = z n X ( z ) x(k T ) z k
k =0
e at x(t )
X ( z e aT )
x(0) = lim X ( z )
z
- 13 -
z 1
Ejemplos.
> restart:
- 14 -
Captulo 1: La Transformada Z
Ejemplo 1.
Encontrar las transformadas z de una funcin escaln unitario que est retrasada
un perodo de muestreo y cuatro perodos de muestreo, respectivamente, mediante el
teorema de traslacin real. A continuacin se muestran dichas funciones, y sus
respectivas transformadas inversas. En el 'plot' se utiliza la opcin 'axes=frame', para
que sea ms fcil apreciar en el grfico los valores de la funcin que son cero (estn en
el eje).
transform2 =
1
z1
1
3
z (z 1)
- 15 -
las
1
z1
1
3
z (z 1)
Ejemplo 2.
Dada la transformada z de sin( t ) , obtener la transformada z de e - a t sin( t )
mediante el uso del teorema de traslacin compleja.
( sin( k T ) ) :=
( e
( a k T )
sin( k T ) ) :=
z sin( T )
2
z + 2 z cos( T ) 1
ze
(a T)
sin( T )
(a T)
2 (2 a T)
cos( T ) 1
z e
+2ze
- 16 -
Captulo 1: La Transformada Z
:= simplify(numer(trans)*exp(2*a*T)):
denominador := expand(denom(trans)*exp(2*a*T)):
simplify(numerador/denominador, radical, exp);
ze
(a T )
sin( T )
(a T)
2 (2 a T)
cos( T ) 1
z e
+2ze
Ejemplo 3.
Determinar el valor inicial x ( 0 ) si la transformada z de x ( t ) es
X ( z) =
(1 e T ) z 1
(1 z 1 ) (1 e T z 1 )
- 17 -
1
T
e
x( 0 ) = 0
Ejemplo 4.
Mediante el teorema del valor final, determinar el valor x( ) de
X ( z) =
1
1 z 1
1
1 e aT z 1
a>0
- 18 -
Captulo 1: La Transformada Z
a
T
(
)
x( ) = 1
NOTA del autor: "assume" sirve para especificar que T y a son mayores que cero,
lo cual es imprescindible para poder calcular el lmite. Al hacer esto, ambos apareceran
de aqu en adelante con el siguiente smbolo: T~, a~. Para evitar esto (por
comodidad), utilizamos la sentencia unassign, dejando T y a como estaban. Lo
vemos ahora como ejemplo.
> assume(T>0):
assume(a>0):
T;
a;
unassign('T'):
unassign('a'):
T;
a;
T~
a~
T
a
- 19 -
> x[1](k) := 0;
x[2](k) := sin(k*Pi);
plot({x[1](k), x[2](k)}, k = 0..4, axes=frame, color=[green, red]);
x 1( k ) := 0
x 2( k ) := sin( k )
- 20 -
Captulo 1: La Transformada Z
2
T
es la frecuencia de
0( k T ) =
para k = 0
para k 0
- 21 -
G( z ) =
X( z )
U( z )
.4673 z .3393
2
z 1.5327 z + .6607
2
( z 1.5327 z + .6607 ) X( z ) = ( .4673 z .3393 ) U( z )
X ( z)
X( z ) se expande en la suma de trminos sencillos de primer o
z
- 22 -
Captulo 1: La Transformada Z
= 1 ( X ( z ) )
Ejemplos:
2 2
k T
- 23 -
T 4
+4
+
z1
2
3
(z 1)
(z 1)
2 2
(2 + k ) T
suc :=
2
_ = RootOf( _Z + 1 )
- 24 -
Captulo 1: La Transformada Z
> plot(sucf,n=0..30,style=point);
- 25 -
Otro ejemplo. En esta ocasin, la transformada z inversa s que nos da una expresin
cerrada, por lo que no es necesario hacer lo anterior.
Si se quieren los valores aproximados, para ver mejor lo que representan, basta con
utilizar la funcin evalf. Se muestran las dos formas de hacerlo, para comprobar que dan
idntico resultado.
- 26 -
Captulo 1: La Transformada Z
C( z )
R( z )
G( z )
1 + G( z )
- 27 -
Dada dicha funcin, se denominan ceros del sistema de control a las races de la
ecuacin G(z) = 0 (raz del numerador). As mismo, se denominan polos del sistema a
las races de la ecuacin caracterstica 1 + G(z) = 0 (raz del denominador). Recordar
que para un sistema dado hay una sola ecuacin caracterstica. Esto significa que la
ecuacin caracterstica de una funcin de transferencia dada, es la misma
independientemente de cul sea la seal de entrada. [REF. 4].
lazo cerrado deben presentarse en el plano z dentro del crculo unidad (el mdulo del
polo debe ser menor que uno). Si alguno est fuera de dicho crculo, el sistema es
inestable. [REF. 5].
2. Si un polo simple (multiplicidad 1) se presenta en el crculo unidad (en
- 28 -
Captulo 1: La Transformada Z
G( z ) =
1
z
Las funciones de
transferencia continua que tienen ceros en el semiplano derecho (ceros inestables), son
funciones de transferencia de fase no mnima. De forma anloga, las funciones de
transferencia discreta cuyos ceros son estables en el plano z (dentro del crculo unidad)
son de fase mnima. Y las funciones de transferencia discreta con ceros inestables (fuera
del crculo unidad en el plano z) son de fase no mnima.
- 29 -
z
,
z p
origen y un polo real simple, al que damos valores dentro, fuera, y en el crculo
unidad.
Representamos la transformada z inversa como una funcin continua, uniendo
los puntos de la secuencia, para que se aprecie mejor. Implementamos el procedimiento
'Dibf', que calcula la transformada z inversa de una funcin en z dada, y la secuencia
- 30 -
Captulo 1: La Transformada Z
pto = 1.5,
pto = -1.5
En el crculo:
pto = 1,
pto = -1
Dentro:
pto =0.5,
pto = -0.5
- 31 -
:= array(1..3, 1..2):
:= subs(pto=1.5, fun):
(p=1.5), (p=-1.5)
Dibf(f, m):
p[1,1] := plot(secu, title = `z/(z-1.5), inestable`):
f
:= subs(pto=(-1.5), fun):
Dibf(f, m):
p[1,2] := plot(secu, title = `z/(z+1.5), inestable`):
# polo en el circulo unidad
f
(p=1), (p=-1)
:= subs(pto=1, fun):
Dibf(f, m):
p[2,1] := plot(secu, title = `z/(z-1), crticamente estable`):
f
:= subs(pto=(-1), fun):
Dibf(f, m):
p[2,2] := plot(secu, title = `z/(z+1), crticamente estable`):
# polo dentro del circulo unidad
f
(p=0.5), (p=-0.5)
:= subs(pto=0.5, fun):
Dibf(f, m):
p[3,1] := plot(secu, title = `z/(z-0.5), estable`):
f
:= subs(pto=(-0.5), fun):
Dibf(f, m):
p[3,2] := plot(secu, title = `z/(z+0.5), estable`):
display(p);
end:
- 32 -
Captulo 1: La Transformada Z
Comportamiento de la inversa de
z
2
z 2 z cos( b ) e + e
(2 a)
, que tiene un
cero en el origen y dos polos complejos conjugados entre s, a los que damos valores
dentro, fuera, y en el crculo unidad.
NOTA del autor: Utilizamos la representacin trigonomtrica de un nmero
- 33 -
Fuera:
a = 1, b =
En el crculo: a = 0, b =
Dentro:
a = -1, b =
- 34 -
a = 1, b =
a = 0, b =
a = -1, b =
Captulo 1: La Transformada Z
local p, f;
p := array(1..3, 1..2):
f := subs(a=1, b=Pi/2, fun):
Dibf(f, m):
p[1,1] := plot(secu, title = `b=Pi/2, a=1, fuera crculo`):
f := subs(a=1, b=Pi/4, fun):
Dibf(f, m):
p[1,2] := plot(secu, title = `b=Pi/4, a=1, fuera crculo`):
# polos en el circulo unidad
- 35 -
Para el caso b =
Comportamiento de la inversa de
a
z ( z e cos( b ) )
2
z 2 z cos( b ) e + e
(2 a)
ceros y dos polos complejos conjugados entre s, a los que damos valores dentro, fuera,
y en el crculo unitario. Esta es la funcin que se le pasa al procedimiento 'Estab3'. Los
valores de a y b que se usan dentro del procedimiento son los mismos que en el caso
anterior.
Representamos la inversa como una funcin continua, uniendo los puntos de la
secuencia, para que se aprecie mejor.
- 36 -
Captulo 1: La Transformada Z
local p, f;
p := array(1..3, 1..2):
f := subs(a=1, b=Pi/2, fun):
Dibf(f, m):
p[1,1] := plot(secu, title = `b=Pi/2, a=1, fuera crculo`):
f := subs(a=1, b=Pi/4, fun):
Dibf(f, m):
p[1,2] := plot(secu, title = `b=Pi/4, a=1, fuera crculo`):
# polos en el circulo unidad
- 37 -
1.6 EJERCICIOS.
Tal y como se explica en la introduccin de la memoria, en el tutorial de Maple
se incluyen una serie de ejercicios que se han elaborado con la finalidad de que el
alumno compruebe su grado de comprensin sobre el tema tratado. En todos ellos hay
un espacio reservado para que el alumno intente resolverlos por s mismo. Y todos ellos
estn convenientemente resueltos para que se puedan mirar y comparar los resultados.
Para ello, slo hay que abrir el grupo de ejecucin del ejercicio correspondiente.
- 38 -
Captulo 1: La Transformada Z
> restart:
y de k T a
((k 1) T )
( z + a )
( a t )
1 e
1.6.2.- Obtener la transformada z de x( t ) =
a
- 39 -
((k 1) T )
(k T )
+ 3
1
2
2
1 z ( 11 z 3 4 z + 10 z 2 + 2
2
( z 1 ) ( z +
2)
2)
Heaviside( t 5 ) +
1
3
1
3
t Heaviside( t 2 )
Heaviside( t 5 ) t
- 40 -
2
3
Heaviside( t 2 )
Captulo 1: La Transformada Z
zT
kT.
en los instantes
z)
T (a ) k a
( T )
z (z + 2)
(z 1)
kT.
- 41 -
en los instantes
at
( a t )
2
t
3
t
X(z)
x(kT)
z1
z
(z 1)
kT
z + a
z
z + e
( a )
z (z + 1)
(z 1)
2
z (z + 1 + 4 z)
(z 1)
(k T)
( a k T )
2 2
k T
3 3
k T
- 42 -
z1
Tz
(z 1)
z + a
(a T)
ze
(a T)
ze
1
2
T z ( z + 1 )
(z 1)
3
2
T z ( z + 1 + 4 z )
4
(z 1)
X(z)
Captulo 1: La Transformada Z
Semejante a los procedimientos del apartado 1.5.1 (estabilidad), pero este debe valer
para cualquier funcin. Aprovechamos el procedimiento Dibf, ya realizado, hacindole
una pequea modificacin: la variable 'inversa' la definimos como variable global, para
que se pueda utilizar dentro del procedimiento 'Estab'.
- 43 -
sin( 1.570796327 k )
( 1. k )
cos( .7853981634 k )
- 44 -
Captulo 1: La Transformada Z
1.7 REFERENCIAS.
[REF. 1]
[REF. 2]
R.C. Dorf,
Sistemas Modernos de Control. Teora y Prctica,
Addison-Wesley Iberoamericana, 2 edicin, 1989
[REF. 3]
K. Ogata,
Discrete-Time Control Systems,
Prentice-Hall, 1987
[REF. 4]
K. Ogata,
Ingeniera de Control Moderna,
Prentice-Hall, 1980
[REF. 5]
K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2 edicin, 1996
[REF. 6]
Seales y sistemas,
Prentice-Hall, 1994
[REF. 7]
C. Torres Blanc,
Aproximacin a la Unificacin de Sistemas Lineales Continuos y Discretos,
- 45 -
Captulo 2.
DISCRETIZACIN
DE UNA SEAL.
- 47 -
2.1 INTRODUCCIN.
Los sistemas de control en tiempo discreto pueden operar en parte en tiempo
discreto, y en parte en tiempo continuo. De esta manera, en dichos sistemas de control,
algunas seales aparecen como funciones en tiempo discreto (a menudo en la forma de
una secuencia de nmeros o un cdigo numrico), y otras seales como funciones en
tiempo continuo. Al analizar sistemas de control en tiempo discreto, la teora de la
transformada z juega un papel importante. [REF. 1].
El objetivo de este captulo es presentar las formas de discretizacin ms usadas
en teora de control: por invarianza al impulso y por invarianza al escaln.
> restart;
> f := t -> 2 + sin(4*t);
plot(f(t), t = 0.1..10);
f := t 2 + sin( 4 t )
- 48 -
> with(plottools);
arc, arrow, circle, cone, cuboid, curve, cutin, cutout , cylinder, disk
dodecahedron, ellipse, ellipticArc, hemisphere, hexahedron, homothety
hyperbola, icosahedron, line, octahedron, pieslice, point , polygon
project , rectangle, reflect , rotate, scale, semitorus, sphere, stellate
tetrahedron, torus, transform , translate, vrml
- 49 -
-1
L (F ( s) )t =k T = Z
-1
(Fd (z ) )
residuo de
F ( s) z
z e sT
Fd (z ) = Z
(F ( s) )t =k T
Z L
(F ( s) )t =k T
= Z
(F (s) )
- 50 -
Ejemplo:
Sea F es la transformada de Laplace de una funcin f ( t ) .
> F := 2*(s^2+16+2*s)/(s*(s^2+16));
F := 2
2
s + 16 + 2 s
2
s ( s + 16 )
z
z1
+4
2
( 1 + 2 cos( T ) ) z cos( T ) sin( T )
4
2
2
1 2 z + z + 16 z cos( T ) 16 z cos( T )
- 51 -
> Fd := factor(%);
Fd :=
2
z ( 2 2 z + 4 z cos( 4 T ) z sin( 4 T ) + sin( 4 T ) )
2
( z 1 ) ( 1 z + 2 z cos( 4 T ) )
1
, que es la transformada z inversa de F d ( z ) . Observamos que las funciones
8
- 52 -
Esta es la seal discretizada (fd1), que coincide con la continua f ( t ) en los instantes de
muestreo
k
8
Fd :=
2
z ( 2 + 2 z 4 z cos( 4 T ) + z sin( 4 T ) sin( 4 T ) )
2
( z 1 ) ( 1 + z 2 z cos( 4 T ) )
- 53 -
F (s)
Fd ( z ) z
y la transformada z inversa de
coinciden en los instantes de muestreo
s
z 1
t = k T , donde T es el perodo de muestreo. Eso quiere decir que la respuesta de la
funcin continua a un escaln es igual a la respuesta de la funcin discreta a un escaln,
en los instantes de muestreo k T . [REF. 1]. Resaltar que la discretizacin por invarianza
al escaln es equivalente a discretizar con un muestreador y mantenedor de orden cero.
Para calcular F d ( z ) hacemos lo siguiente:
Como
Fd( z ) z
Siendo L
F( s )
s
t =k T
z1
Fd(z)
z1
z
-1 Fd( z ) z
entonces
z1
F( s )
F( s )
- 54 -
entonces
t =k T
-1
t =k T
(ec.1)
la transformada z inversa.
Ejemplo:
F( s )
. Obtenemos F d ( z ) aplicando la
s
z Fd( z )
Frmula anterior (ec.1). Hallamos la transformada inversa de
, la pintamos, y
z1
comprobamos que equivale a la funcin f s ( t ) en los instantes de muestreo. En
1
concreto, lo hacemos para el periodo de muestreo T = .
4
OBSERVACIN: La funcin de transferencia F ( s) =
1
corresponde a un
s +1
>F
:= s -> 1/(s+1);
F := s
1
s+1
fs := 1 e
Fd :=
( t )
- 55 -
1 + e
T
ze 1
> with(inttrans):
> F := 2*(s^2+16+2*s)/(s*(s^2+16));
F := 2
2
s + 16 + 2 s
2
s ( s + 16 )
Tz
1 z
1
( z 1 8 cos( T ) + 8 cos( T ) ) z
(z 1) 2
+
2 4 z1 4
2
2
4
1 2 z + z + 16 z cos( T ) 16 z cos( T )
(z 1)
z
2
2
2
1 8 T z + z cos( 4 T ) z + 16 T z cos( 4 T ) + 1 8 T cos( 4 T )
4
2
( z 1 ) ( 1 z + 2 z cos( 4 T ) )
- 56 -
1
4
1
4
cos( 4 t )
Seal continua.
2
2
1 3 z + z cos( 1 ) + 4 z cos( 1 ) 1 cos( 1 )
4
2
( z 1 ) ( 1 z + 2 z cos( 1 ) )
1
1
fd2 := + k
4 2
8
_
2
_ = RootOf( _Z 2 _Z cos( 1 ) + 1 )
1
Puede apreciarse que no se obtiene una expresin cerrada con la trasnformada z inversa.
Para conseguirla, hay que usar evalf.
- 57 -
> Digits:=10:
> evalf(fd2);
.2500000000 + .5000000000 k
.2500000000 e
( .8050000000 10
-16
k)
cos( 1.000000000 k )
Seal discreta.
NOTA del autor: Cuidado con las aproximaciones numricas que hace Maple. En la
siguiente grfica vemos que al pedirle que dibuje ms puntos la seal discreta ya no se
comporta igual que la seal continua, lo cual no es cierto y es slo debido a errores de
aproximacin que comete MAPLE.
- 58 -
> Digits:=50:
> evalf(fd2):
Vamos a comprobar que tomando un periodo de muestreo T para el cual el coseno que
aparece en la funcin Fde(z), es decir c o s ( 4 T ) , es exacto, no hay problemas
numricos aunque la precisin sea pequea:
- 59 -
> Fs := 1/s^2;
Fd := Discret_esc(Fs, T);
Fs :=
1
s
Fd :=
2
1 T (1 + z)
2
(z 1)
- 60 -
2.5 EJERCICIOS.
- 61 -
2
Obsrvese que al muestrear con esa frecuencia de muestreo s =
= 2 ,
T
no se cumple el teorema de muestreo, por lo que la funcin resultante no es la que se
Para que se aprecie mejor que estas funciones coinciden en los instantes de
muestreo, las dibujamos juntas, y aumentando el nmero de puntos.
- 62 -
- 63 -
> F1 := 1/s;
Fd := Discret_imp(F1, 1);
F1 :=
Fd :=
1
s
z
z1
- 64 -
. Utilizar el
(s + 2) (s + 5)
1
procedimiento Discret_imp. Considerar el perodo de muestreo T =
8
> F2 := 1/((s+2)*(s+5));
Fd := simplify(expand(Discret_imp(F2, 1/8)));
F2 :=
1
(s + 2) (s + 5)
Fd :=
-5
-1
4
8
z e
+e
3
-5
-1
z
z
e
e
- 65 -
F( s ) =
3
( s + 20 ) ( s + 11 ) ( s + 7 )
1
6
> F3 := 3/((s+20)*(s+11)*(s+7));
Fd := simplify(Discret_imp(F3, 1/6));
F3 := 3
Fd :=
1
( s + 20 ) ( s + 11 ) ( s + 7 )
-7
-11
-10
-9
-31
( -3 )
6
6
3
2
6
z4e
z + 13 e
1 z 9 z e
+ 13 e
4e
9e
156
-10
-11
-7
3
6
6
z
z
z
e
e
- 66 -
1
2
s 3
. Considerar T =
> F4 := 1/(s^2-3);
Fd := simplify(Discret_imp(F4, 1/2));
F4 :=
Fd :=
1
2
s 3
3 z (e
6 1
2
z e
( 3)
1)
1 z e
- 67 -
1
2
Puede verse que la inversa no tiende a cero, ya que el sistema es inestable. Estabilidad.
- 68 -
> F1;
Fd := Discret_esc(F1, 1);
F1 :=
Fd :=
1
s
1
z1
- 69 -
1
4
1
(s + 2) (s + 5)
. Utilizar el
> F2;
Fd := simplify(Discret_esc(F2, 1/4));
F2 :=
Fd :=
1 2ze
30
1
2
5ze
5
4
1
(s + 2) (s + 5)
+3+3e
7
4
z5e
1
2
+2e
5
4
z e
1
1 z e
Comprobamos ahora el teorema del valor final para sistemas continuos [REF. 2]:
lim x( t ) = lim s X( s )
t
s0
- 70 -
Comprobamos ahora el teorema del valor final para sistemas discretos. Como se trata de
un sistema estable, el valor de la funcin de transferencia del sistema, tiende a cero en el
infinito.
- 71 -
F( s ) =
3
( s + 20 ) ( s + 11 ) ( s + 7 )
1
6
como perodo de
> F3;
Fd := simplify(Discret_esc(F3, 1/6));
3
Fd :=
1
60060
1
( s + 20 ) ( s + 11 ) ( s + 7 )
10
11
7
10
7
3
6
6
3
6
378 z e
40 z e
+ 455 e
495 e
77 e
9
11
31
31
6
2
6
2
2 3
2
z
+ 495 z e
455 z e
+ 77 z e 572 z e
378 e
9
19
3
2
z
z
z
572
40
117
117
e
e
e
+
+
11
10
6
3
1 z e
1
1 z e
z e
- 72 -
. Utilizar Discret_esc.
s 3
> F4;
Fd := simplify(Discret_esc(F4, 1/2));
1
2
s 3
Fd :=
1 ze
6
( 3)
2ze
2 2
z e
+e
ze
- 73 -
( 3)
( 3)
+z2e
z+e
+1
- 74 -
2.6 REFERENCIAS.
[REF. 1]
K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2 edicin, 1996
[REF. 2]
- 75 -
Captulo 3.
APLICACIN DE LA TRANSFORMADA Z
A SISTEMAS DE CONTROL
GOBERNADOS POR ECUACIONES EN DIFERENCIAS.
- 77 -
3.1 INTRODUCCIN.
Las ecuaciones en diferencias de la forma
x ( k + n ) + a 1 x ( k + n - 1 ) + .. + a n x ( k ) = b 1 u ( k + n - 1 ) + .. + b n u ( k )
o de la forma
x ( k ) + a 1 x ( k - 1 ) + .. + a n x ( k - n ) = b 1 u ( k - 1 ) + .. + b n u ( k - n )
se pueden resolver mediante el uso de una computadora digital, siempre que se
proporcionen los valores numricos de todos los coeficientes y los parmetros. Sin
embargo, las expresiones en forma cerrada para x ( k ) no se pueden obtener a partir de
la solucin por computadora, excepto para casos muy especiales. La utilidad del mtodo
de la transformada z es que permite obtener la expresin en forma cerrada para x ( k ) .
[REF. 2].
El computador en un sistema de control permite mejorar la calidad de ste, por
cuanto es capaz de realizar funciones de control, sin apenas ninguna limitacin en
cuanto a complejidad. Adems tiene la ventaja de que, en cuanto a precisin, las
operaciones con un computador digital son ms exactas que las efectuadas con
dispositivos analgicos. [REF. 1].
El objetivo de este captulo es mostrar la utilidad del mtodo de la transformada
z, que se puede aprovechar para los sistemas de control digital, que son los gobernados
por un ordenador.
- 78 -
> restart:
ecu := x(k+2) + a*x(k+1) + b*x(k) = u(k);
ecu := x( k + 2 ) + a x( k + 1 ) + b x( k ) = u( k )
2
x( 0 ) z + x( 1 ) z + a x( 0 ) z + ztrans( u( k ), k , z )
2
z +az+b
- 79 -
Podemos especificar las condiciones iniciales x(0) e x(1) y la funcin de entrada del
sistema:
U( z )
2
z +az+b
1
2
z +az+b
- 80 -
cz+d
2
z +az+b
- 81 -
> zent_sal2 := proc(G, input, ptos) local U, x, pe, ps, aux, den;
if (numer(G) <> 1) then aux := 1;
elif (G = (1/z)) then aux := Heaviside(t-1);
else
den := sort(denom(G));
if (op(0, den) = `^`) and (op(1, den) = z)
then aux := Heaviside(t-op(2, den));
else aux := 1;
fi;
fi;
U := ztrans(input, t, z);
x
:= simplify(evalf(invztrans(G*U, z, t)));
Funcion Transf:");
- 82 -
NOTA del autor: Para resolver ecuaciones en diferencias en Maple, tambin se puede
utilizar la funcin 'rsolve'. Se podra utilizar una vez
obtenida la ecuacin de
k 2
k 1
( -1 ) ( -2 ) +
2
3
6
Ejemplos:
Disminuimos el nmero de dgitos para que se aprecie mejor la salida:
> Digits := 5:
Al tener como funcin de transferencia z - 1 , este ejemplo nos sirve para ver que se
cumple el teorema de traslacin, obteniendo en la salida la misma funcin de entrada,
pero con un retardo de un instante de muestreo.
- 83 -
Funcion Entrada:
G(z) = 1/z
u(t) = sin(t)
( .53405 10
-9
t)
cos( t ) + .54028 e
( .53405 10
-9
t)
sin( t )
1,
para k = n
0,
para k n
n( k T ) =
- 84 -
Como vemos Maple no las pinta bien, ya que al pintarla como funcin continua
no tiene en cuenta el valor en t = 0. Maple tiene una opcin en el plot (discont=true)
para pintar funciones con discontinuidades, pero aqu no vale.
Si hacemos un plot de la funcin charfcn0(t), Maple la pinta como la funcin
constante 0, sin tener en cuenta el punto en el cual vale 1. De esta forma, si pintamos la
funcin de salida del ejemplo anterior, sin multiplicarla por la funcin de Heaviside
(funcin auxiliar del procedimiento), la funcin que nos pinta Maple en t = 0 tiene un
valor negativo, en vez de 0, pudindonos inducir a error. En realidad Maple lo que est
haciendo es retrasar la entrada (la funcin seno), sin tener en cuenta que nuestra entrada
vale 0 para t < 0.
- 85 -
1
z4
Funcion Entrada:
u(t) = sin(t)
( .53405 10
-9
t)
cos( t ) .65359 e
- 86 -
( .53405 10
-9
t)
sin( t )
u(t) = 1
1. charfcn0( t ) + 1.
Vemos otro ejemplo en el cual la salida no sigue a la entrada. Eso es debido a que la
funcin de transferencia
1
2
no es estable.
z +1
u(t) = exp(-t)
- 87 -
( 1. t )
1
1
g1 := ,
z 2
z +1
l1 := [ 1, t , e
( t )
, sin( t ) ]
- 88 -
G(z) = 1/z
Funcion Transf:
u(t) = 1
1. charfcn0( t ) + 1.
Funcion Entrada:
G(z) = 1/(z^2+1)
Funcion Transf:
G(z) = 1/z
G(z) = 1/(z^2+1)
u(t) = t
charfcn0( t ) 1. + t
u(t) = 1
Funcion Entrada:
u(t) = t
- 89 -
Funcion Transf:
G(z) = 1/z
G(z) = 1/(z^2+1)
u(t) = exp(-t)
Funcion Entrada:
( 1. t )
Funcion Transf:
G(z) = 1/z
G(z) = 1/(z^2+1)
u(t) = sin(t)
.84140charfcn0( t ) .84140e
+ .54028e
-9
( .5340510 t )
u(t) = exp(-t)
( .5340510
( 1. t )
Funcion Entrada:
u(t) = sin(t)
-9
t)
cos( t )
sin( t )
- 90 -
-9
( .5340510 t )
-9
( .5340510 t )
sin( t )
cos( t )
3.3 EJERCICIOS.
> restart: Digits:=5:
3.3.1.- Considerando la ecuacin en diferencias
x( k + 2 ) = 2 x( k + 1 ) x( k )
z ( x( 0 ) z + x( 1 ) 2 x( 0 ) )
2
z 2z+1
z
2
z 2z+1
- 91 -
Por tanto X(z) tiene un polo doble en z = 1, que har inestable la salida x(k), como
se puede ver obteniendo la transformada z inversa de X(z):
u( k ) = {
k< 0
donde
- 92 -
ztrans( x( k ), k , z )
z
ztrans( x( k ), k , z )
z
z
z1
2
(z 1) (2 z 2 z + 1)
> solve(2*z^2-2*z+1=0);
evalf(abs(1/2+1/2*I));
1
2
1
2
I,
1
2
1
2
.70710
Polo simple en z = 1, y dos polos complejos conjugados dentro del crculo unidad. Por
tanto la salida x(k) ser crticamente estable. Obtenemos la transformada z inversa de
X(z) para obtener x(k).
1
x( k ) := 1
2
2
_ = RootOf( 2 2 _Z + _Z )
- 93 -
_
_
En este ejercicio no se puede obtener una forma cerrada para x(k). Hay que usar el
mtodo numrico dado en los ejemplos del captulo 1.5.
> evalf(x(k));
1. .50000 e
( .34657 k )
( .34657 k )
sin( .78540 k )
.50000
I ( .50000 e
( .34657 k )
( .34657 k )
sin( .78540 k ) )
.50000
I ( .50000 e
( .34657 k )
> xx := x(k):
plot([seq([k, xx], k=0..25)], style=point);
- 94 -
( .34657 k )
sin( .78540 k ) )
z ( x( 0 ) z + x( 1 ) x( 0 ) )
2
z z1
z
2
z z1
> fsolve(z^2-z-1=0);
-.61803, 1.6180
- 95 -
Tiene un polo en z = 1.618, es decir, fuera del crculo unidad, luego es inestable. x(k) es
la transformada z inversa de X(z):
x( k ) :=
2
_ = RootOf( 1 + _Z + _Z )
k
k
1
1
1 _
5
_
> evalf(x(k));
.44722 e
( .48121 k )
.44722 1.6180
( .48121 k )
sin( 3.1416 k )
Esta expresin en forma cerrada tampoco vale, ya que aparecen nmeros complejos. La
secuencia de puntos correspondiente sera la mostrada a continuacin:
> xx := x(k):
plot([seq([k, xx], k=0..10)], style=point);
- 96 -
3.4 REFERENCIAS.
[REF. 1]
[REF. 2]
K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2 edicin, 1996
- 97 -
Captulo 4.
ESTABILIDAD.
CRITERIO DE JURY.
- 99 -
4.1 INTRODUCCIN.
A continuacin analizaremos la estabilidad de los sistemas de control en tiempo
discreto lineales e invariantes con el tiempo. En concreto, nos centraremos en el criterio
de estabilidad de Jury, que es un mtodo para saber si las races de un polinomio estn
dentro, fuera o en el crculo unidad, sin necesidad de calcular dichas races.
Uno de los temas ms importantes dentro de la teora de control es el anlisis de
la estabilidad de los sistemas, ya que uno de los primeros objetivos que se pretenden
alcanzar al disear un sistema de control, es que dicho sistema sea estable.
Se dice que un sistema discreto es estable si, ante cualquier secuencia de entrada
acotada, la secuencia de salida es tambin acotada. Si existe alguna secuencia acotada
de entrada ante la cual la secuencia de salida no lo es, el sistema ser inestable.
[REF. 1].
El objetivo de este captulo es mostrar el criterio de estabilidad de Jury, e
implementarlo como una funcin de Maple. El algoritmo en cuestin se puede encontrar
en [REF. 2].
- 100 -
donde a0 > 0
Entonces la tabla de Jury se construye como se muestra a continuacin:
Fila
2 n 5
2 n 4
2 n 3
an
an 1
an 2
an 3
...
a2
a1
a0
a1
a2
a3
...
an 2
an 1
bn 1
bn 2
bn 3
bn 4
...
b1
b0
b0
b1
b2
b3
...
bn 2
bn 1
cn 2
cn 3
cn 4
cn 5
...
c0
c0
c1
c2
c3
...
cn 2
p3
p2
p1
p0
p0
p1
p2
p3
q2
q1
q0
- 101 -
(n 1)
...
(n 2)
n
z
a0
an
Los elementos de la primera fila estn formados por los coeficientes en P(z)
ordenados en orden de potencias ascendentes de z. Los elementos de la segunda fila son
los mismos, pero en orden inverso (potencias descendentes de z). Los elementos de las
dems filas se obtienen mediante los siguientes determinantes:
an
bk = det
a
0
an 1 k
ak + 1
bn 1
ck = det
b
0
k = 0, 1, 2, ..., n-1
bn 2 k
bk + 1
k = 0, 1, 2, ..., n-2
p3
qk = det
p
0
p2 k
pk + 1
k = 0, 1, 2
Ntese que la ltima fila de la tabla est formada por tres elementos. Para
sistemas de segundo orden, 2 n 3 = 1 y la tabla de Jury est formada por una sola
fila, de tres elementos. Los elementos de las filas pares son los mismos que los de la fila
impar anterior, pero en orden inverso.
- 102 -
(n 1)
n
P ( z ) = a 0 z + a1 z
donde a0 > 0, es estable (todas sus races dentro del crculo unitario), si todas las
condiciones siguientes se satisfacen:
1.
an
< a0
2.
P(1)
> 0
3.
P(-1)
P(-1)
4.
bn 1
> b0
cn 2
>
c0
.
.
q2
>
q0
Esta ltima condicin slo hay que probarla para sistemas de tercer orden o
superiores: para un sistema de segundo orden, la tabla de Jury consta de una sola fila.
- 103 -
- 104 -
# tabla de estabilidad
for ind from 0 to n do
a[ind,1]
:= coeff(p, z, ind);
(val < 0)
then printf("p(1) no cumple condicion 2\n");
estab := -1;
else printf("p(1) cumple condicion 2\n");
fi;
(contina)
- 105 -
( ((val<0)
and
(1=Es_Par(n)))
or
((val>0)
and
(0=Es_Par(n))) )
- 106 -
a[0, renglon-1]
a[cont-ind, renglon-1];
a[ind, renglon+1] := a[cont-ind, renglon]
od;
cont := cont -1;
od;
cont := n-1;
(contina)
- 107 -
- 108 -
Ejemplos.
> Estabilidad_Jury(z^4-1.2*z^3+0.07*z^2+0.3*z-0.08);
El sistema es de orden 4
Cumple condicion 1
p(1) = .09
p(1) cumple condicion 2
p(-1) = 1.89
p(-1) cumple condicion 3
Cumple condicion 4
Es Estable
> Estabilidad_Jury(z^3-1.1*z^2-0.1*z+0.2);
El sistema es de orden 3
Cumple condicion 1
p(1) = 0
Condicion 2: polo en z = 1
p(-1) = -1.8
p(-1) cumple condicion 3
Cumple condicion 4
Criticamente Estable
- 109 -
4.4 EJERCICIOS.
3
2
P( z ) = z 1.3 z .08 z + .24 = 0
> Estabilidad_Jury(z^3-1.3*z^2-0.08*z+0.24);
El sistema es de orden 3
Cumple condicion 1
p(1) = -.14
p(1) no cumple condicion 2
p(-1) = -1.98
p(-1) cumple condicion 3
Cumple condicion 4
No es Estable
- 110 -
=
1 .6 z
( 1 )
.81 z
( 2 )
+ .67 z
( 3 )
equivalente a
z
4
3
2
z .6 z .81 z + .67 z .12
> Estabilidad_Jury(z^4-.6*z^3-.81*z^2+.67*z-.12);
El sistema es de orden 4
Cumple condicion 1
p(1) = .14
p(1) cumple condicion 2
p(-1) = 0
Condicion 3: polo en z = -1
Cumple condicion 4
Criticamente Estable
- 111 -
.12 z
( 4 )
> Estabilidad_Jury(2*z^2-.17);
El sistema es de orden 2
Cumple condicion 1
p(1) = 1.83
p(1) cumple condicion 2
p(-1) = 1.83
p(-1) cumple condicion 3
No hay condicion 4
Es Estable
Las races de la ecuacin caracterstica son las mostradas, y puede verse que dos
de ellas estn dentro del crculo unitario, y la otra est en dicho crculo (polo en z = -1).
Por lo tanto, el sistema es crticamente estable. Estabilidad.
- 112 -
- 113 -
fi;
# Comprobamos tercera condicion
val := subs(z=-1,p);
if (val = 0)
then if (estab = 1) then estab := 0 fi;
elif ( ((val<0) and (1=Es_Par(n))) or ((val>0) and (0=Es_Par(n))) )
then estab := -1;
fi;
# completo tabla de estabilidad
if ((n > 2)) then cont := n-1;
for renglon from 3 by 2 to 2*n-3 do
for ind from 0 to cont do
a[cont-ind, renglon] := a[cont+1, renglon-1] *
a[ind+1, renglon-1] - a[0, renglon-1] *
a[cont-ind, renglon-1];
a[ind, renglon+1] := a[cont-ind, renglon]
od;
cont := cont -1;
od;
cont := n-1;
(continua)
- 114 -
La funcin 'time' indica el tiempo de CPU total usado desde que se inici la
sesin de Maple. Para saber cuando tiempo se invierte en una funcin determinada, se
ejecuta 'time()' antes y despus de dicha funcin, y se restan sus valores.
- 115 -
> expr := 40.2 - 118.4*z^6 + 487.1*z^2 + 245.3*z^4 + 59.9*z^5 219.5*z - 535.2*z^3 + z^10 - 5.9*z^9 + 4.9*z^8 + z^12 40.5*z^7 - 0.8*z^18 + 1.5*z^27:
st := time():
solve(expr = 0, z);
Tiempo := time() - st;
-1.3183, -1.2753 .33560 I, -1.2753 + .33560 I, -1.1517 .63885 I
-1.1517 + .63885 I, -.94866 .91626 I, -.94866 + .91626 I, -.67598 1.1358 I
-.67598 + 1.1358 I, -.34244 1.2608 I, -.34244 + 1.2608 I, .024849 1.2842 I
.024849 + 1.2842 I, .37439 1.1934 I, .37439 + 1.1934 I, .41697 .73820 I
.41697 + .73820 I, .50394 .28124 I, .50394 + .28124 I, .51927
.71329 .98893 I, .71329 + .98893 I, .99057 .72406 I, .99057 + .72406 I
1.1574 .37218 I, 1.1574 + .37218 I, 1.2242
Tiempo := .15
> st := time():
Estabilidad_Jury(expr);
Tiempo := time() - st;
No es Estable
Tiempo := .01
- 116 -
4.5 REFERENCIAS.
[REF. 1]
[REF. 2]
K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2 edicin, 1996
- 117 -
Captulo 5.
ANLISIS DE RESPUESTA TRANSITORIA.
- 119 -
5.1 INTRODUCCIN.
En este captulo estudiaremos las carctersticas de la respuesta transitoria de los
sistemas de control en lazo cerrado. La respuesta transitoria corresponde a aquella parte
de la respuesta debida a los ceros del sistema en lazo cerrado, y la respuesta en estado
permanente corresponde a aquella parte de la respuesta debida a los polos de la funcin
de entrada o excitacin.
Con frecuencia, los sistemas de control en tiempo discreto son analizados
mediante entradas "estndar", como son entradas escaln, entradas rampa o entradas
senoidales. Esto es debido a que la respuesta del sistema a una entrada arbitraria puede
ser estimada a partir de su respuesta correspondiente a dichas entradas estndar. En este
captulo, consideraremos la respuesta del sistema de control en tiempo discreto a
entradas en el dominio del tiempo, como son entradas escaln. [REF. 2].
- 120 -
( 1.0002 k T )
( 1. + k T ) ( .33088 k T )
e
- 121 -
td = k d T
- 122 -
> kd := proc(sec)
local i, f, mitad;
i
:= 1:
:= nops(sec):
- 123 -
tr = k r T
Ejemplo:
Se implementan los procedimientos kr y tr, que dada la secuencia de puntos de
una expresin, y un perodo de muestreo T, calculan el intervalo y el tiempo de subida.
> kr := proc(sec)
local i, f, vfinal;
i := 1:
f := nops(sec):
vfinal := sec[f, 2];
while (sec[i,2] < vfinal) do
i:=i+1:
od:
i-1:
end:
- 124 -
tp = k p T
- 125 -
Ejemplo:
Se implementa el procedimiento tp, que dada la secuencia de puntos de una
expresin, y un perodo de muestreo T, calcula el tiempo de pico. Para ello nos
ayudamos del procedimiento kp, que calcula el intervalo de pico.
> kp := proc(sec)
local i, max, ind, f;
f
:= nops(sec):
max := sec[1,2]:
ind
:= 1:
for i from 1 to f do
if (sec[i,2] > max)
then max := sec[i,2]:
ind := i:
fi:
od:
ind-1:
end:
:= []:
(contina)
- 126 -
resp := kp(sec):
printf("\nTiempo de Pico: tp = %.3g\n", resp*T);
printf("
end:
1
10
x( tp ) x( )
x( )
100%
- 127 -
Mp =
x( kp ) x( )
x( )
100%
Ejemplo:
Se implementa el procedimiento Mp, que dada una expresin, y un perodo de
muestreo T, calcula el sobreimpulso mximo.
:= evalf(inv):
sec
:= []:
:= nops(sec):
x1
:= sec[kp(sec)+1, 2]:
x2
:= sec[f, 2]:
resp
:= (x1-x2)*100/x2:
- 128 -
ts = k s T
- 129 -
Ejemplo:
> ks := proc(sec, p)
local i, x2, ref, f;
if (p<2) or (p>5)
then ERROR(`invalid porcentaje`, p)
fi:
f
:= nops(sec):
x2
:= sec[f, 2]:
ref
:= x2*p/100:
:= 1:
- 130 -
:= []:
- 131 -
Las especificaciones en el dominio del tiempo que se acaban de dar son muy
importantes, ya que la mayor parte de los sistemas de control son sistemas en el
dominio del tiempo: deben mostrar respuestas aceptables en el tiempo. Lo que significa
que el sistema de control bajo diseo deber ser modificado hasta que la respuesta
transitoria sea satisfactoria.
No todas las especificaciones se aplican necesariamente a un caso concreto. Por
ejemplo, para un sistema sobreamortiguado, el tiempo de pico y el sobreimpulso
mximo no son aplicables. [REF. 2].
- 132 -
5.3 EJERCICIOS.
Para poder realizar los ejercicios, es imprescindible haber ejecutado los
procedimientos de los apartados anteriores. Por eso aqu no utilizamos 'restart'.
, z, k
exp1 := invztrans
2
( z 1 ) ( z + .3505 z .2642 )
- 133 -
- 134 -
1 e
7t
10
+ t
2 10
+ 3t e
para T = 3/5
Primero la dibujamos, para que se aprecie que es una funcin que nunca llega a
1 (se queda por encima de dicho valor).
1e
k T
10
k T
10
2 2
k T
+3e
- 135 -
para T = 2/5
- 136 -
Esta funcin, tras estar por encima de uno, vuelve a decrecer, llegando a tener
valor negativo, y luego vuelve a subir, llegando al uno por debajo. Discretizamos y
definimos la secuencia de puntos correspondiente.
(k T )
+ 10.150 .36788
(k T)
k T 6.4400 .36788
- 137 -
(k T) 2 2
k T +1
1 e
10
para T = 4/5
1e
1
k
10
- 138 -
Anlisis de respuesta transitoria. Al no ser una funcin con picos, sino que va creciendo
progresivamente, puede apreciarse que el Sobreimpulso Mximo Porcentual es de 0%,
ya que su valor nunca llega al uno.
(t )
2 ( t )
2t e
para T = 1/2
- 139 -
( k T )
2e
( k T ) 2 2
k T
En las grficas anteriores puede observarse que exp5 tiene una oscilacin oculta,
que no se ve en el grfico de la funcin discreta.
Anlisis de respuesta transitoria. Como nunca alcanza al uno, Mp = 0%.
- 140 -
- 141 -
5.4 REFERENCIAS.
[REF. 1]
K. Ogata,
Ingeniera de Control Moderna,
Prentice-Hall, 1980
[REF. 2]
K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2 edicin, 1996
[REF. 3]
- 142 -
Captulo 6.
DISEO DE CONTROL
POR ESTABLECIMIENTO FINITO
(DEAD BEAT).
- 143 -
6.1 INTRODUCCIN.
En esta seccin presentamos un mtodo de diseo analtico para controladores
digitales que obligar a la secuencia de error, cuando quede sujeta a un tipo especfico
de entrada en el dominio del tiempo, a llegar a cero despus de un nmero finito de
perodos de muestreo y, de hecho, a convertirse y mantenerse a cero despus del menor
nmero posible de perodos de muestreo.
El control Deadbeat de sistemas muestreados tiene la caracterstica especfica de
que establece la seal de error a cero en un nmero finito de pasos discretos; para
conseguir esto se impone que los polos del sistema en lazo cerrado, o bien estn en el
origen z = 0, o bien sean ceros estables de la seal de entrada, de forma que se cancelen.
Estabilidad.
Los estudios que siguen estn limitados a la determinacin de algoritmos de
control o de funciones de transferencia de pulso de controladores digitales, para
sistemas de entrada nica y salida nica (sistemas SISO), dadas las caractersticas
deseadas de respuesta ptima.
Debido a que el control Deadbeat requiere una respuesta Deadbeat slo en los
instantes de muestreo, puede haber oscilaciones no decrecientes en la respuesta
permanente entre los instantes de muestreo, incluso si el sistema de control es
internamente estable.
El objetivo del control Deadbeat es establecer la seal de error a cero en todo
instante de tiempo despus de un tiempo; es decir, eliminar cualquier tipo de
oscilaciones entre instantes de muestreo.
Para ms informacin sobre la parte terica de este tema, consultar [REF. 3] y
[REF. 4].
- 144 -
fig. (6-a)
La seal de error e( t ), que es la diferencia entre la entrada de referencia r ( t )
y la salida x ( t ), se muestrea en cada instante de tiempo T. La entrada al controlador
digital es la seal de error e ( k T ). La salida del controlador digital es la seal de control
u ( k T ). Dicha seal de control es aplicada a la planta. Se desea disear un controlador
digital GC( z ) tal que el sistema de control en lazo cerrado tenga como tiempo de
establecimiento el mnimo posible, con un error en estado permanente cero, en respuesta
a una entrada escaln, rampa o aceleracin. Se requiere que la salida no presente
componentes oscilatorias entre las muestras, despus de haber alcanzado el estado
permanente. Si se requiere, el sistema deber satisfacer cualquier otra especificacin,
como es la correspondiente a la constante de error de velocidad esttica.
El mantenedor sirve para reconstruir los valores de la funcin entre los puntos de
muestreo. La forma ms sencilla es mediante un mantenedor de orden cero (ZOH), que
reproduce la seal en forma de escalera. Su funcin de transferencia viene dada por la
ecuacin
Gh ( s ) =
1 e T s
s
- 145 -
G (z ) = Z
(1 e T s ) G ( s )
G ( s)
p
z 1 p
= Z
= z s
s
(6.2.0)
-1
fig. (6-b)
- 146 -
GC ( z ) G ( z )
X ( z)
=
= F ( z)
R ( z ) 1 + GC ( z ) G ( z )
(6.2.1)
a0 z N + a1 z N 1 + K + a N
F ( z) =
zN
es decir
F ( z ) = a0 + a1 z 1 + K + a N z N
(6.2.2)
y se tiene que cumplir que el orden del sistema, n, sea menor o igual que N (n N ) .
Ntese que F( z ) no debe tener ningn trmino con potencias positivas en z, ya que
dichos trminos en la expansin en series de F( z ) implicara que la salida antecede a la
entrada, lo que no es posible en un sistema fsicamente realizable.
Si se tiene el desarrollo en serie en potencias de z -1 de F( z ), como el de la
ecuacin (6.2.2), entonces f ( k ) = a k, siendo f ( k ) la transformada z inversa de F( z ), es
decir, la salida en el instante k-simo.
El mtodo de diseo consiste en construir la funcin transferencia de pulso del
controlador digital GC( z ), de forma que la funcin transferencia de pulso en lazo
cerrado satisfaga la ecuacin (6.2.1). Despejando GC( z ) en dicha ecuacin obtenemos
- 147 -
GC ( z ) =
F ( z)
G ( z ) (1 F ( z ) )
(6.2.3)
El sistema diseado debe ser fsicamente realizable. Las condiciones para que
esto ocurra imponen ciertas limitaciones a la funcin transferencia de pulso en lazo
cerrado F(z) y a la funcin transferencia de pulso del controlador digital GC( z ). A
continuacin se comentan las condiciones para que sean fsicamente realizables:
1. El grado del numerador de GC( z ) debe ser menor o igual que el grado del
denominador. De no ser as, el controlador requiere que sean datos de entrada futuros
los que produzcan la salida actual.
2. Si la planta Gp( s ) incluye un retraso de transporte e L S entonces el sistema en
lazo cerrado diseado debe involucrar por lo menos la misma magnitud de retraso de
transporte. De no ser as, el sistema en lazo cerrado tendra que responder antes de que
se le diera una entrada, lo que es imposible de realizar en un sistema fsico.
3. Si G( z ) se expande en una serie en potencias de z -1 y la primera potencia de
z -1 es r, con r 0 , entonces en la expresin en serie de F( z ) la primera potencia de z -1
debera ser como mnimo r. Por ejemplo, si la expansin de G( z ) en una serie en z -1
empieza con el trmino z -1, entonces el primer trmino de F( z ) de la ecuacin (6.2.2),
que es a 0, deber ser cero, quedando
F ( z ) = a1 z 1 + K + a N z N
- 148 -
finita; es decir, si la expansin en serie de G(z) empieza con un trmino z -1, entonces la
respuesta se presenta con un retraso de por lo menos un perodo de muestreo.
Adems de las condiciones de la posibilidad fsica de realizacin, tenemos que
poner atencin en aspectos de estabilidad del sistema. De manera especfica, debemos
evitar la cancelacin de un polo inestable de la planta mediante un cero del controlador
digital. Si se intenta este tipo de cancelacin, cualquier error en la cancelacin entre
polos y ceros generar una divergencia conforme pasa el tiempo y el sistema se har
inestable. En forma similar, la funcin transferencia de pulso del controlador digital no
deber incluir polos inestables para cancelar ceros de la planta que ocurran fuera del
crculo unitario.
Ahora investiguemos lo que ocurrir con la funcin transferencia de pulso en
lazo cerrado, F( z ), si G( z ) incluye un polo inestable (o crticamente estable), esto es, un
polo z = exterior al crculo unidad (o bien sobre l). La discusin siguiente se aplica
de la misma manera, si G(z) incluye dos o ms polos inestables (o crticamente
estables). Definamos
G( z) =
G1 ( z )
z
GC ( z ) G ( z )
X ( z)
=
=
R ( z ) 1 + GC ( z ) G ( z )
GC ( z ) G1 ( z )
= F ( z)
GC ( z ) G1 ( z )
( z ) 1 +
- 149 -
(6.2.4)
En vista de que requerimos que ningn cero de GC( z ) cancele el polo inestable
de G( z ) en z = , debemos tener
1 F ( z) =
GC ( z ) G1 ( z )
1
=
G ( z ) G1 ( z )
G ( z ) G1 ( z )
1+ C
( z ) 1 + C
z
z
cancelarse con polos de GC( z ). Sin embargo, los ceros de G( z ) que ocurran sobre o
fuera del crculo unidad, no deben cancelarse con polos de GC( z ). Por lo tanto, todos los
ceros de G( z ) que se presenten sobre o fuera del crculo unidad debern ser incluidos en
F( z ) como ceros.
Ahora seguiremos con el diseo. Dado que
E ( z ) = R ( z ) X ( z ) = R ( z ) (1 F ( z ) )
- 150 -
(6.2.5)
si t < 0
si t 0
1( t ) =
Esto significa que las seales slo toman valores distintos de cero a partir de k = 0.
Note que para una entrada escaln unitario r( t ) = 1( t ),
R( z ) =
1
1 z 1
R( z) =
T z 1
(1 z )
1 2
R( z) =
t 2 1(t )
,
2
T 2 z 1 (1 + z 1 )
2 1 z 1
- 151 -
R( z) =
P( z )
(6.2.6)
(1 z )
1 q +1
donde P(z) es un polinomio en z -1. Para una entrada escaln unitario, P(z) = 1 y q = 0;
para una entrada rampa unitaria, P( z ) = T z -1 y q = 1; y para una entrada aceleracin
unitaria,
T 2 z 1 (1 + z 1 )
P( z ) =
2
y q = 2.
E( z) =
P ( z ) (1 F ( z ))
(1 z )
1 q +1
(6.2.7)
1 F ( z ) = (1 z 1 ) q +1 N ( z )
- 152 -
(6.2.8)
E ( z ) = P( z ) N ( z )
(6.2.9)
que es un polinomio en z -1 con un nmero finito de trminos. Esto significa que la seal
de error se convierte en cero en un nmero finito de perodos de muestreo.
Del anlisis anterior, la funcin transferencia de pulso del controlador digital
puede determinarse como sigue. Si se supone primero que F(z) satisface la posibilidad
fsica de realizacin y las condiciones de estabilidad, y a continuacin se sustituye la
ecuacin (6.2.8) en la ecuacin (6.2.3), obtenemos
GC ( z ) =
F ( z)
G ( z ) (1 z 1 ) q +1 N ( z )
(6.2.10)
para t nT
x'( t ) = constante,
para t nT
x''( t ) = constante,
para t nT
- 153 -
Comentarios:
1. Dado que la funcin transferencia de pulso en lazo cerrado F( z ) es un
polinomio en z -1, todos los polos en lazo cerrado estn en el origen z = 0. El polo
mltiple en lazo cerrado en el origen es muy sensible a las variaciones de parmetros
del sistema. [REF. 3].
2. Aunque un sistema de control digital diseado para presentar un tiempo de
- 154 -
Ejemplo:
G p (s) =
1
s ( s + 1)
Se quiere disear un controlador digital GC( z ), tal que el sistema en lazo cerrado
muestre respuesta sin oscilaciones a una entrada escaln unitario. (En una respuesta sin
oscilaciones el sistema no mostrar componentes oscilatorias entre muestras en la
salida, una vez alcanzado el tiempo de establecimiento). El perodo de muestreo T se
supone de 1seg.
- 155 -
G (z ) = Z
= (1 z 1 ) 2
= 2
+
s
(
s
1
)
s
(
s
1
)
1
s (s + 1)
1
, y sustituimos el perodo
s ( s + 1)
2
z 1
.
z
.36788 z + .26424
2
1. z + 1.3679 z .36788
> factor(G(z));
.36788 z + .26424
( z 1. ) ( z .36787 )
- 156 -
G( z) =
0.36788 (1 + 0.71828 z 1 ) z 1
(1 z 1 ) (1 0.36787 z 1 )
F ( z) =
GC ( z ) G ( z )
X ( z)
=
1 + GC ( z ) G ( z ) R ( z )
F ( z ) = a 1 z 1 + a 2 z 2
(6.2.12)
Dado que la entrada es una funcin escaln, de la ecuacin (6.2.8) requerimos que
1 F ( z ) = (1 z 1 ) N ( z )
(6.2.13)
- 157 -
U ( z ) = b + b1 z 1 + b z 2 + z 3 + L
0
1
(un integrador es un aparato cuya salida es la derivada de la
s
entrada [REF. 2]), b deber ser cero. De lo contrario, la salida no podra conservarse
constante a partir de t = 2 T. En consecuencia tenemos
U ( z ) = b0 + b1 z 1
- 158 -
Se demuestra a continuacin:
Siendo (1(k ) ) =
1
1 z
= 1 + z 1 + z 2 + z 3 + L
supongamos
U ( z ) = b0 + b1 z 1 + b z 2 + z 3 + L = b0 + b1 z 1 + b z 2 1 + z 1 + z 2 + L =
= b0 + b1 z
+b z
b0 + (b1 b0 ) z 1 + (b b1 ) z 2
1
=
1 z 1
1 z 1
X ( z) = G( z) U ( z)
) 1 1z
a1 (1 a 2 z 1 ) z 1 b0 + (b1 b0 ) z 1 + (b b1 ) z 2
X ( z) = G( z) U ( z) =
(1 z 1 ) (1 a1 z 1 )
1 z 1
(1 z )
1 2
1
1 z 1
- 159 -
U ( z) =
X ( z ) X ( z ) R( z )
R( z )
=
= F ( z)
G ( z ) R( z ) G ( z )
G( z)
= F ( z)
(1 z 1 ) (1 0.36788 z 1 )
1 z 1 0.36788 (1 + 0.7183 z 1 ) z 1
= F ( z)
1 0.36788 z 1
0.36788 (1 + 0.7183 z 1 ) z 1
Para que U(z) sea una serie en z -1 con slo dos trminos, F( z ) debe ser de la
siguiente forma:
F ( z ) = (1 + 0.7183 z 1 ) z 1 F1
(6.2.14)
U ( z) =
1
(1 0.36788 z 1 ) F1
0.36788
(6.2.15)
- 160 -
1 a1 z 1 a 2 z 2 = (1 z 1 ) N ( z )
El primer miembro de esta ltima ecuacin deber ser divisible entre 1 - z -1. Si
dividimos el primer miembro entre 1 - z -1, el cociente es 1 + (1 a1 ) z 1 y el resto es
(1 a1 a 2 ) z 2 . Por lo tanto, N( z ) se determina como
N ( z ) = 1 + (1 a1 ) z 1
F ( z ) = a1 z 1 + a 2 z 2 = (1 + 0.7183 z 1 ) z 1 F1
Por lo tanto,
a1 + a 2 z 1 = (1 + 0.7183 z 1 ) F1
- 161 -
(6.2.16)
(6.2.17)
F1 = a1
y
a 2 0.7183 a1 = 0
(6.2.18)
a1 = 0.582 ,
a 2 = 0.418
F ( z ) = 0.582 z 1 + 0.418 z 2
(6.2.19)
F1 = 0.582
La ecuacin (6.2.16) da
N ( z ) = 1 + 0.418 z 1
- 162 -
(6.2.20)
GC ( z ) =
F ( z)
G ( z ) (1 z 1 ) N ( z )
(1 + 0.7183 z 1 ) z 1 0.582
0.36788 (1 + 0.7183 z 1 ) z 1 (1 z 1 ) (1 + 0.418 z 1 )
(1 z 1 ) (1 0.36788 z 1 )
1.582 0.582 z 1
=
1 + 0.418 z 1
X ( z)
= F ( z ) = 0.582 z 1 + 0.418 z 2
R( z)
0.582 ( z + 0.7183)
z2
- 163 -
) 1 1z
X ( z ) = F ( z ) R ( z ) = 0.582 z 1 + 0.418 z 2
= 0.582 z 1 + z 2 + z 3 + L
x(0) = 0
Por lo tanto,
x(1) = 0.582
x( k ) = 1
k = 2, 3, 4, ...
U ( z) =
1
(1 0.36788 z 1 ) 0.582 = 1.582 0.582 z 1
0.36788
- 164 -
G ( z 1 ) =
B ( z 1 )
A( z 1 )
(6.3.1)
bn1 z n1 + L + b1 z +b 0
B( z )
=
G( z) = n
n 1
z + a n1 z + L + a1 z + a0 A( z )
con gradoz(B) < gradoz(A).
- 165 -
GC ( z 1 ) =
Q( z 1 )
P ( z 1 )
(6.3.2)
donde P y Q son polinomios coprimos, y tal que el sistema presente una respuesta
Deadbeat, es decir, que la salida tenga un tiempo de establecimiento finito con error
permanente nulo, para una seal de referencia definida por
K ( z 1 )
R( z ) =
H ( z 1 )
1
(6.3.3)
que
sea
causal.
Adems
suponemos que H tiene todos sus ceros en z en el exterior, o sobre el crculo unidad del
plano complejo, ya que las seales de referencia son funciones no decrecientes en el
tiempo, tales como la funcin escaln, rampa o exponencial.
- 166 -
F ( z 1 ) =
GC ( z 1 ) G ( z 1 )
QB
=
1 + GC ( z 1 ) G ( z 1 ) P A + Q B
(6.3.4)
y el error es
E ( z 1 ) = R ( z 1 )
P A
K
P A
=
P A+QB H P A+QB
(6.3.5)
- 167 -
A = Ae A i
(6.3.6)
B = Be Bi
(6.3.7)
K = Ke Ki
(6.3.8)
As i
Hs
Ai
(6.3.9)
Q = Ae Q p
(6.3.10)
S=PA+QB
(6.3.11)
- 168 -
S = P Ae Ai + Ae Qp B
= Ae ( P Ai + Qp B )
(6.3.12)
P = B e Pp
(6.3.13)
S = Ae ( Be Pp Ai + Qp Be Bi )
= Ae Be ( Pp Ai + Qp Bi )
S = Ae Be Sp
(6.3.14)
notar que S es el polinomio caracterstico del sistema en lazo cerrado; por tanto, S p
debe tener todos sus ceros dentro del crculo unidad para que el sistema sea estable.
- 169 -
E=
K Be Pp A S
H
K Pp A s i
Hs Sp
(6.3.15)
Para que E sea un polinomio finito es necesario que se cumplan las siguientes
condiciones:
1) Hs divide a
2) Sp divide a
K Pp As i
K Pp As i
Pp = Hs Pn
(6.3.16)
Sp = Hs Pn Ai + Qp Bi
(6.3.17)
E=
K Pn As i
(6.3.18)
Sp
- 170 -
Sp = Ke
(6.3.19)
E = K i Pn As i
(6.3.20)
Hs Pn Ai + Qp Bi = Ke
(6.3.21)
U ( z 1 ) =
Q
E ( z 1 )
P
(6.3.22)
U=
U=
Q Ki Pn As i
P
Ae Q p Ki As i
Be Hs
- 171 -
Ae Qp Ki Pn As i
Be Hs Pn
(6.3.23)
Y ( z 1 ) =
B
U ( z 1 )
A
(6.3.24)
Y=
Y=
B Ae Qp Ki As i
A Be Hs
Bi Q p Ki
B A Qp Ki
A Be H
(6.3.25)
- 172 -
- 173 -
grado( Pn ) <
grado( Bi )
grado( Qp ) <
grado( Ai ) + grado( Hs )
Notar que como grado(Pn ) debe ser menor que grado(Bi ) nos interesa cancelar todos
los ceros estables de la planta, ya que de esta forma minimizamos el grado de Bi .
- 174 -
- la planta Gp( s )
- la seal de referencia R(s)
- el perodo de muestreo T
Condiciones de entrada:
Paso 1: calcular G ( z 1 ) =
B
A
y R ( z 1 ) =
K
H
A = Ae A i
B = Be Bi
K = Ke Ki
- 175 -
Ai
H
Pn Ai Hs + Qp Bi = Ke
G D ( z 1 ) =
Ae Q p
Q
=
P H s Be Pn
- 176 -
Ejemplo:
G p ( s) =
1
s ( s + 1)
1
s (s + 1)
- 177 -
1
2
s ( s + 1)
, y sustituimos el perodo de
.36788 z + .26424
( z 1. ) ( z .36787 )
1
R( s) = ,
s
R( z) =
R(w) := 1/(1-w);
z1
z
z1
R( w ) :=
z
K
= ,
z 1 H
R(z) = K/H;
B
y la seal de referencia es
A
R( z ) :=
K
H
1
1w
- 178 -
R ( z 1 ) =
1
1 z 1
Puede apreciarse que B y H son coprimos, ya que no tienen ceros comunes, por
lo que existe un Controlador Deadbeat para este proceso.
NOTA del autor: Como Maple trabaja siempre en funcin de 'z', y el algoritmo es en
- 179 -
:= numer(polz):
den
:= denom(polz):
gradod
:= degree(den, z):
polwn
:= 1:
polwd
:= 1:
fac1
:= 1:
fac2
:= 1:
pot
:= 1:
# transformamos el numerador
AuxC(num, gradod):
polwn := polw:
# transformamos el denominador
oper := op(0, den):
if (oper = `^`)
then fac1 := op(1, den):
pot
:= op(2, den):
- 180 -
> Conversion(G(z)):
B := polwn;
A := polwd;
G(w) := B/A;
B := .26424 ( w + 1.3922 ) w
A := ( 1 1. w ) ( 1 .36787 w )
G( w ) := .26424
( w + 1.3922 ) w
( 1 1. w ) ( 1 .36787 w )
- 181 -
> Conversion(R(z)):
poli := polwn/polwd;
K := numer(poli);
H := denom(poli);
poli :=
1
1w
K := -1
H := 1 + w
:= 1:
- 182 -
(contina)
if (grado>1)
then raiz := r[1]:
else raiz := r:
fi:
if (abs(raiz) <= 1)
then faci := fac^pot:
else face := fac^pot:
fi:
fi:
end:
> Factoriz := proc(poli)
local p, oper, fac, opp, grado, pot, polin, maxi, j, fac1, fac2, ne, ni;
global pe, pi;
p
:= 1:
pe
:= 1:
pi
:= 1:
ne
:= 1:
ni
:= 1:
pot
:= 1:
fac1 := 1:
fac2 := 1:
polin := poli:
oper := op(0, poli):
fac
:= op(1, poli):
opp
:= op(0, fac):
(contina)
- 183 -
if (
(oper = `integer` or
oper = `Float`
or
oper= `*`)
and
(opp = `integer`
then pi
or
opp = `Float`) )
:= pi*fac:
maxi := nops(poli):
for j from 2 to maxi do
p := p*op(j, poli):
od:
polin := p:
fi:
oper := op(0, polin):
if (oper = `^`)
then fac1 := op(1, polin):
pot
:= op(2, polin):
:= pe*face:
pi
:= pi*faci:
if (fac2 <> 1)
then ne := pe:
ni := pi:
(contina)
- 184 -
Factoriz(fac2):
pe := pe*ne:
pi := pi*ni:
fi:
end:
> B;
Factoriz(B):
Be := pe;
Bi := pi;
.26424 ( w + 1.3922 ) w
Be := w + 1.3922
Bi := .26424 w
> A;
Factoriz(A):
Ae := pe;
Ai := pi;
( 1 1. w ) ( 1 .36787 w )
Ae := 1 .36787 w
Ai := 1 1. w
- 185 -
> K;
Factoriz(K):
Ke := pe;
Ki := pi;
-1
Ke := 1
Ki := -1
Asi Ai 1 z 1
=
=
=1
H s H 1 z 1
Asi := -1.
Hs := 1
- 186 -
Pn Ai Hs + Qp Bi = Ke
grado( Pn ) = grado( Bi ) - 1
grado( Qp ) = grado( Ai ) + grado( Hs ) - 1 = 1 + 0 - 1
1 .36787 w
- 187 -
w + 1.3922
Ae Q p
Q
=
P H s Be Pn
= 0
= 0
Hacemos otra transformacin, para dejarlo en funcin de z (en la variable global 'polz').
:= numer(polw):
den
:= denom(polw):
grado
:= degree(num, w):
gradod
:= degree(den, w):
- 188 -
# transformamos el denominador
AuxD(den, gradod):
polzd := mulz:
polz := factor(polzn)/factor(polzd):
end:
> G[C](w);
DesConv(%):
G[C](z) := polz;
3.7844
GC( z ) :=
1 .36787 w
w + 1.3922
3.7844 z 1.3922
1.3922 z + 1.0000
En funcin de z quedara:
> DesConv(E(w)):
E(z) := polz;
E( z ) := 1.
- 189 -
Ae Q p K i Asi
Be H s
U( z ) :=
1 .36787 w
w + 1.3922
3.7844 z 1.3922
1.3922 z + 1.0000
Bi Q p K i
H
Y( z ) := 1.0000
w
1 + w
1
z + 1
- 190 -
> iR
:= invztrans(R(z), z, k):
iG
:= invztrans(G(z), z, k):
:= invztrans(E(z), z, k):
iY
:= invztrans(Y(z), z, k):
iU
:= invztrans(U(z), z, k):
> sE := []:
for i from 0 to 10 do
sE := [op(sE), [i, subs(k=i, iE)], [i+1, subs(k=i, iE)]]:
od:
dE := plot(sE, title=`Error e(k)`, axes= frame):
sU := []:
for i from 0 to 10 do
sU := [op(sU), [i, subs(k=i, iU)], [i+1, subs(k=i, iU)]]:
od:
dU := plot(sU, title=`Control u(k)`, axes=normal):
- 191 -
La salida continua del sistema puede tener oscilaciones que no se ven en los
instantes de muestreo. Una forma de detectar las oscilaciones es calcular la salida
continua entre los instantes de muestreo. Para ello se puede utilizar el Mtodo de la
Transformada Z Modificada. Para ms informacin, [REF. 3] y [REF. 4].
- 192 -
6.4 EJERCICIOS.
> restart: with(inttrans): with(plots): Digits:=5:
Primero hay que haber ejecutado los procedimientos implementados en el apartado
anterior: AuxC, Conversion, AuxF, Factoriz, AuxD, DesConv.
G p( s ) =
1
s+ 2
> Gp := s->1/(s+2);
Gp := s
1
s+2
1
2.7183 z .36787
- 193 -
B
A
> Conversion(G(z)):
B
:= polwn;
:= polwd;
G(w) := B/A;
B := 1.1752 w
A := 2.7183 .36787 w
G( w ) := 1.1752
w
2.7183 .36787 w
> R(s)
:= 1/s^2;
:= numer(poli);
:= denom(poli);
R(w) := K/H;
1
R( s ) :=
K := w
H := ( 1 + w )
R( w ) :=
w
( 1 + w )
- 194 -
Se puede ver que B y H son coprimos: existe un Controlador DeadBeat para este
proceso. Calculamos los siguientes polinomios:
> B;
Factoriz(B):
Be := pe;
Bi := pi;
factor(A);
Factoriz(A):
Ae := pe;
Ai := pi;
K;
Factoriz(K):
Ke := pe;
Ki := pi;
elto := simplify(Ai/H);
Asi := numer(elto);
Hs := denom(elto);
elto :=
1.1752 w
2.7183 .36787 w
Be := 1
Ae := 2.7183 .36787 w
Ke := 1
Asi := 1
Bi := 1.1752 w
Ai := 1
Ki := w
Hs := ( 1 + w )
- 195 -
( 1 + w )
2
> gcdex(c1,c2,w,'Pn','Qp'):
Pn := Pn*Ke;
Qp := Qp*Ke;
Pn := 1
Qp := 1.7018 .85092 w
GC( z ) := 4.6260
( 1 + w )
( z .13533 ) ( z .50001 )
(z 1)
- 196 -
1
z
U( z ) := 4.6260
( z .13533 ) ( z .50001 )
z (z 1)
- 197 -
2
w ( 1.7018 .85092 w )
( 1 + w )
Y( z ) :=
2.0000 z 1.0000
z (z 1)
:= invztrans(G(z), z, k):
:= invztrans(E(z), z, k):
iY
:= invztrans(Y(z), z, k):
iU
:= invztrans(U(z), z, k):
- 198 -
> sR
:= []:
for i from 0 to 10 do
sE := [op(sE), [i, subs(k=i, iE)], [i+1, subs(k=i, iE)]]:
od:
dE := plot(sE, title=`e(k)`, axes=normal):
sY := [seq([k, iY], k=0..10)]:
dY := plot(sY, title=`y(t)`, axes=normal):
sU := []:
for i from 0 to 10 do
sU := [op(sU), [i, subs(k=i, iU)], [i+1, subs(k=i, iU)]]:
od:
dU := plot(sU, title=`u(k)`, axes=normal):
- 199 -
G p( s ) =
1
1 2
s
2
> Gp := s->1/(s-(1/2))^2;
Gp := s
1
1 2
s
2
- 200 -
B
A
> Conversion(G(z)):
B
:= factor(polwn);
:= polwd;
G(w) := B/A;
B := .055398 ( w + .89895 ) w
A := ( 1 1.1618 w )
G( w ) := .055398
( w + .89895 ) w
( 1 1.1618 w )
- 201 -
> R(s)
:= 1/s^3;
:= numer(poli);
:= denom(poli);
R(w) := K/H;
R( s ) :=
1
s
K := w ( .045000 + .045000 w )
H := ( 1 + w )
R( w ) :=
w ( .045000 + .045000 w )
( 1 + w )
Se puede ver que B y H son coprimos: existe un Controlador DeadBeat para este
proceso. Calculamos los siguientes polinomios:
- 202 -
> B;
K;
Factoriz(B):
Factoriz(K):
Be := pe;
Ke := pe;
Bi := pi;
Ki := p1;
factor(A);
elto := simplify(Ai/H);
Factoriz(A):
Asi := numer(elto);
Ae := pe;
Hs := denom(elto);
Ai := pi;
.055398 ( w + .89895 ) w
w ( .045000 + .045000 w )
Be := 1
Ke := 1
Bi := w ( .055398 w + .049800 )
Ki := w ( .045000 + .045000 w )
1.3498 ( w .86073 )
Asi := .40000 10
Ae := 1
Ai := ( 1 1.1618 w )
-7 ( 5000. + 5809. w )
elto := .40000 10
3
( 1. + w )
Hs := ( 1. + w )
-7
( 5000. + 5809. w )
- 203 -
> gcdex(c1,c2,w,'Pn','Qp'):
Pn := Pn*Ke;
Qp := Qp*Ke;
Pn := 1.0000 1.0736 w
4
3
2
Qp := 26.158 w 122.65 w + 228.13 w 207.51 w + 85.327
Por lo tanto, la funcin de transferencia del controlador es la que se muestra a
continuacin:
4
3
2
26.158 w 122.65 w + 228.13 w 207.51 w + 85.327
3
( 1. + w ) ( 1.0000 1.0736 w )
GC( z ) := 85.327
2
2
( z 1.1773 z + .37165 ) ( z 1.2546 z + .82486 )
( z + 1.0736 ) ( z 1. )
-7
E( z ) := .045000
- 204 -
-7
4
3
2
( 26.158 w 122.65 w + 228.13 w 207.51 w + 85.327 ) w
2
3
( .045000 + .045000 w ) ( 5000. + 5809. w ) )
( 1. + w )
2
2
U( z ) := 3.8397 ( ( z + 1.0000 ) ( z 1.1771 z + .37155 ) ( z 1.2548 z + .82480 )
2
5
3
( z ( z 1. ) )
( z 2.3236 z + 1.3503 ) )
Y( z ) := .19122 (
2
2
( z + 1.1125) ( z + .99994) ( z 1.1774 z + .37169) ( z 1.2545 z + .82478) )
5
3
(z (z 1) )
- 205 -
> iR
:= invztrans(R(z), z, k):
iG
:= invztrans(G(z), z, k):
:= invztrans(E(z), z, k):
iY
:= invztrans(Y(z), z, k):
iU
:= invztrans(U(z), z, k):
> sR
:= []:
for i from 0 to 10 do
sE := [op(sE), [i, subs(k=i, iE)], [i+1, subs(k=i, iE)]]:
od:
dE := plot(sE, title=`e(k)`, axes=normal):
sY := [seq([k, iY], k=0..10)]:
dY := plot(sY, title=`y(t)`, axes=normal):
sU := []:
for i from 0 to 10 do
sU := [op(sU), [i, subs(k=i, iU)], [i+1, subs(k=i, iU)]]:
od:
dU := plot(sU, title=`u(k)`, axes=normal):
- 206 -
- 207 -
6.5 REFERENCIAS.
[REF. 1]
[REF. 2]
[REF. 3]
K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2 edicin (1996)
[REF. 4]
J. Rebollo Rodrguez,
SECAD: Mdulo de Diseo de Controladores,
U.P.M., Escuela Superior de Ingenierios de Telecomunicaciones,
curso 1990-91
- 208 -
Captulo 7.
ANLISIS DE RESPUESTA
EN FRECUENCIAS.
- 209 -
7.1 INTRODUCCIN.
El concepto de respuesta en frecuencia juega un poderoso papel en los sistemas
de control digital, de la misma forma que lo hace en los sistemas de control en tiempo
continuo. Por respuesta en frecuencia, se entiende la respuesta en estado de rgimen
permanente de un sistema ante una entrada senoidal.
A menudo han sido utilizados los mtodos de respuesta en frecuencia en el
diseo de compensadores. La razn bsica es la sencillez de los mtodos. Al llevar a
cabo pruebas de respuesta en frecuencia sobre un sistema muestreado, es importante que
el sistema continuo tenga un filtro de paso bajo (generalmente un mantenedor de orden
cero) antes del muestreador, de tal manera que las bandas laterales estn filtradas. De
esta forma dado un sistema lineal e invariante en el tiempo y dada una entrada senoidal,
el sistema conserva la frecuencia y modifica solamente la amplitud y la fase de la seal
de entrada. Por lo tanto, las dos nicas cantidades que debern ser manejadas, sern la
amplitud y la fase.
Ahora analizaremos la respuesta a una entrada senoidal de un sistema discreto
lineal e invariante en el tiempo; ese anlisis ser confirmado mediante la definicin de
la funcin transferencia de pulso senoidal.
A continuacin estudiaremos el diseo en el plano w de un sistema de control en
tiempo discreto mediante la utilizacin de un diagrama de Bode.
- 210 -
La seal muestreada u ( k T ) es u ( k T ) = s i n ( k T )
> restart:
- 211 -
z sin( T )
(z e
j T
) ( z e j T )
(z e
a +b j
) (z e
a b j
)=
)(
= z 2 2 e a cos(b) z + e 2a
- 212 -
X ( z ) = G ( z )U ( z ) = G ( z )
az
z e
j T
z sin( T )
( z e j T ) ( z e j T )
aa z
z e j T
z e j T
Al multiplicar ambos miembros de la ecuacin por
obtenemos
z
G( z)
aa ( z e j T ) z e j T trminos debidos a
sin( T )
a
=
+
+
los polos de G(z)
z
z e j T
z e j T
j T
j T
j T
. Luego el segundo y
sin( T )
a = G ( z )
z e j T z =e
j T
G (e j T )
=
2 j
- 213 -
j T
. As
G (e j T )
aa =
2 j
Escribiendo G (e j T ) = M e j , con M = G (e j T )
Entonces
y = ngulo G (e j T ) .
G (e j T ) = M e j .
X ( z) =
trminos debidos a
M e j
z
M e j
z
j T
j T
2 j
2 j
ze
ze
los polos de G ( z )
X ( z) =
e j z
M e j z
2 j z e j T z e j T
o bien
- 214 -
trminos debidos a
+
los polos de G ( z )
x( k T ) =
trminos debidos a
M
e j e jk T e j e jk T + 1
2 j
los polos de G ( z )
x ss ( k T ) =
M
e j( k T + ) e j( k T + )
2 j
= M sin(k T + )
M = M ( ) = G (e j T )
= ( ) = ngulo G (e j T )
- 215 -
x ss (k T ) = G (e j T ) sin k T + ngulo G (e j T )
))
j +
T
e T
= e j T e j2 = e j T
Ejemplo:
x(k T ) = u (k T ) + a x((k 1) T ),
0 < a <1
- 216 -
X ( z ) = U ( z ) + a z 1 X ( z )
Al definir G ( z ) =
X ( z)
, tenemos
U ( z)
G( z) =
1
X ( z)
=
U ( z ) 1 a z 1
1
1
G( e
(I T)
a
z
) :=
1
1 a ( cos( T ) I sin( T ) )
- 217 -
La amplitud de G (e j T ) es
G (e j T ) = M =
1
1 + a 2 2 a cos( T )
y el ngulo de fase de G (e j T ) es
a sin( T )
ngulo G (e j T ) = = arctan
1 a cos( T )
x ss ( k T ) = A M sin(k T + ) =
a sin( T )
sin k T arctan
2
a
T
1
cos(
1 + a 2 a cos( T )
A
- 218 -
7.3 LA TRANSFORMACIN W.
Sea un sistema de control en tiempo continuo cuya funcin de transferencia es
G( s ), y cuya respuesta en frecuencias viene dada por G( s ) en s = j (ver [REF. 2]), es
decir, G( j ). Supongamos que discretizamos el sistema por invarianza al escaln, de
forma que obtenemos la siguiente funcin transferencia de pulso:
1 e sT
G D ( z ) =
G ( s)
w T
2
z=
w T
1
2
1+
- 219 -
w=
2 z 1
T z +1
con s =
2
T
tan
,
T
2
2
frecuencia de muestreo.
T
- 220 -
s
2
Para
=0
y para
s
2
tan(0) = 0
tan =
2
Luego para el rango de frecuencia real s , s , la frecuencia ficticia recorre
2 2
toda la recta ( , ) . Por tanto, hay una distorsin de frecuencias.
Notar que si en la ecuacin anterior T es pequeo, entonces equivale a . Esto
significa que para T pequeos las funciones de transferencia G( s ) y GD( w ) se
parecen una a la otra, siendo G( s ) la funcin de transferencia del sistema continuo del
cual proviene GD( z ).
que estn en el
semiplano derecho de w. La situacin de los ceros del semiplano derecho depende del
perodo de muestreo T, ya que los ceros son generados por la operacin de muestreo y
retencin. El efecto de estos ceros sobre la respuesta se vuelve menor cuando el perodo
de muestreo disminuye. [REF. 4].
- 221 -
Ejemplo:
10
por invarianza al escaln:
s + 10
La transformada z de G( s ) es
(1 e T s ) 10
G D ( z ) =
s ( s + 10)
10
= (1 z 1 )
s ( s + 10)
- 222 -
1
2.718 z 1.
w T
2 = 1 + 0.5 w
Mediante la transformacin bilineal z =
w T 1 0.5 w
1
2
1+
1.718
2.718
1 + .05 w
1 .05 w
GD( w ) := 1.718
1.
1. + .05000 w
1.718 + .1859 w
1 0.05 w
.
w + 9.242
- 223 -
A continuacin vamos a obtener los polos de la planta Gp( s ) y los polos en el plano w:
> solve(s+10=0);
solve(denom(G[D](w))=0);
-10
-9.242
> solve(numer(G[D](w))=0);
20.
2
= 20 , a pesar de que la planta no tiene
T
ningn cero. Conforme se hace ms pequeo el perodo de muestreo T, el cero del plano
w en w =
2
se acerca a en el semiplano derecho del plano w.
T
- 224 -
10
s 0 s + 10
lim G D ( w) = lim
w0
Este hecho es muy til para verificar los clculos numricos para la transformacin de
G( s ) en GD( w ), tras haber discretizado el sistema continuo en GD( z ).
Es importante notar que puede existir una diferencia en las magnitudes en alta
frecuencia para [G ( s )]s = j y [G D ( w)]w= j . La asntota de alta frecuencia de la curva
de magnitud logartmica para GD( j ) puede ser una lnea constante a ciertos decibelios
(que es lo mismo que una lnea horizontal). Por otra parte, si lim G ( s ) = 0 entonces la
s
lim G D ( j ) = 0.4621
- 225 -
lim
10
es
s + 10
10
=0
j + 10
1
2
s , con s =
frecuencia de muestreo, lo que corresponde a
T
2
corresponde
corresponde a
a =
lim
1
s
2
en el
plano s, se
10
, que es una constante. Es importante sealar que estos
j + 10
- 226 -
GD ( z) =
b0 z m + b1 z m1 + L + bm
z n + a1 z n1 + L + a n
mn
w T
2
z=
w T
1
2
1+
- 227 -
G D ( w) =
o w n + 1 w n1 + L + n
0 w n + 1 w n1 + L + n
donde las i y las i son constantes (algunas de ellas pueden ser cero). Entonces,
GD( w ) es un cociente de polinomios en w, donde los grados del numerador y del
denominador pueden ser o no iguales. Sustituyendo en GD( w ), w = j , dado que
GD( j ) es una funcin racional de , se puede aplicar el criterio de estabilidad de
Nyquist para sistemas continuos a GD( j ) [REF. 2]. Este criterio da condiciones para
saber cundo las races estn en el semiplano izquierdo. En trminos del diagrama de
Bode, se aplican a GD( j ) la aproximacin convencional de lnea recta a la curva de
magnitud, as como el concepto del margen de fase y el margen de ganancia.
j T
- 228 -
1
. La frecuencia
2
2
T
tan
. Por lo tanto, la
T
2
s
2
es
2.
3.
2
en la
T
4.
2
no sera cierto.
T
2
2
. El cero en w =
genera distorsin en la respuesta en
T
T
2
.
T
- 229 -
En vista de que
2
T
tan
T
2
T
2
y, por lo tanto,
2
T
, tan
se aproxima a 1, o bien
T
2
2 T
1
Como ya se indic, = s = es la frecuencia ms alta que consideramos en
T
2
la respuesta del sistema de control en tiempo discreto o digital. Por lo
tanto, =
s
4
T
2
2
, que
T
Debe hacerse notar que el mtodo del diagrama de Bode en el plano w se utiliza
con frecuencia, y muchos sistemas de control digital de xito han sido diseados
mediante este procedimiento.
- 230 -
si
G ( s ) = G1 ( s ) G2 ( s )
G ( j ) = G1 ( j ) G2 ( j )
Adems se dispone de un mtodo simple para realizar una curva aproximada del
logaritmo de la amplitud, basado en la aproximacin asinttica. Este mtodo por lneas
rectas asntotas es suficiente si slo se necesita una informacin aproximada sobre las
caractersticas de respuesta en frecuencia.
- 231 -
G (s) =
K ( s a1 ) L ( s a m1 ) ( s a m )
s N ( s b1 ) ( s b2 ) L ( s bn N )
mn
se dice que es un sistema tipo N (nmero de polos en s = 0). Para una entrada cuya
funcin de transferencia es R(s), se llama error de estado estacionario a
R( s )
ess = lim
s 0 1 + G ( s )
1 z 1
ess = lim
R( z )
z 1 1 + G ( z )
se muestran una serie de definiciones, que sern tiles para comprender los apartados
posteriores [REF. 2]:
- Ganancia: Se llama K a la ganancia del sistema.
- Ganancia en altas frecuencias:
lim G ( j )
lim G ( j )
- 232 -
K p = lim G ( s )
s 0
K p = lim G ( z )
z 1
K v = lim s G ( s )
s 0
K v = lim z G ( z )
z 1
K a = lim s 2 G ( s )
s 0
K a = lim z 2 G ( z )
z 1
Escaln
Rampa
r (t ) = 1
r (t ) = t
Tipo 0
1
1+ K p
Tipo 1
1
Kv
Tipo 2
1
Ka
Aceleracin
r (t ) =
1 2
t
2
G ( j 1 ) = 1
20 log10 G ( j 1 ) = 0
- 233 -
ngulo(G ( j 2 ) ) = 180
= 180 +
con
= ngulo(G ( j 1 ) )
Kg =
1
en dB
G( j 2 )
20 log10 G ( j 2 ) dB
20 log10
G( j c )
1 + G( j c )
G( j c )
= 3 dB
1 + G( j c )
- 234 -
= 3 en dB, es decir
10
s ( s + 1) ( s + 5)
1
s (s + 1) (s + 5)
G ( j ) , los ndices del eje 'x', y la constante que se pintar como recta en el diagrama
de magnitudes (0 dB en lazo abierto, -3 dB en lazo cerrado).
-
= 10 fr .
- 235 -
radianes 180
- 236 -
# magnitud de G
mag := w -> abs(subs(omega=w, f)):
m
# fase de G
arg
:= plot(evalf(arg(10^w)*180/Pi), w=ind1..ind2,
color=blue, axes=FRAME, title=`fase de G`):
# diagramas
p1
p2
print(p1);
print(p2);
end:
- 237 -
Puede verse que en ambos diagramas el eje de frecuencias (eje 'x') es el mismo. Esto
ser muy til para calcular las frecuencias de cruce, como se ver ms adelante.
La ganancia K del sistema es 10. Se calculan ahora las constantes de error estticas:
- 238 -
> Kp := limit(G(s),
Kv := limit(s*G(s),
s=0, right);
s=0);
Ka := limit(s^2*G(s), s=0);
Kp :=
Kp :=
Kv := 2
Ka := 0
Para calcular los siguientes valores, ampliamos la zona del diagrama de Bode que nos
interesa.
- 239 -
Del mismo modo, se ve que la frecuencia de cruce de fase es = 10 0.35 = 2.24 . Por lo
que el margen de ganancia es de 10 dB (mirando el diagrama de Bode, se traza una lnea
vertical desde el punto donde la fase es -180, hasta el punto correspondiente de la
magnitud, y el valor se multiplica por -1).
> evalf(-20*log[10](mag(10^0.35)));
9.563028400
> Gc := abs(G(I*omega)/(1+G(I*omega))):
ecu := evalf(20*log[10](Gc)) = -3:
solve(ecu, omega[c]);
Debido a los complejos clculos que debe realizar Maple, este mtodo no sirve para
determinar la frecuencia de corte en lazo cerrado. Lo hacemos con el diagrama de Bode.
- 240 -
G( j c )
= 3 dB, se ve que fr = 0.3, y por lo tanto
1 + G( j c )
- 241 -
7.4.2.- Ventajas del mtodo del diagrama de Bode para el diseo en w. El mtodo
2.
- 242 -
1 e sT
G D ( z ) =
G ( s )
s
T
w
2
z=
T
1 w
2
1+
G D ( w) = G D ( z )
T
1+ 2 w
z= T
1 w
2
- 243 -
cuya respuesta en frecuencias, como ya hemos visto (transformacin w), viene dada por
GD( w ) en w = j , es decir, GD( j ).
Tal y como se indic antes, los mtodos convencionales de respuesta en
frecuencia en el plano s se aplican a las funciones de transferencia en el plano w.
Recordamos que el diagrama de Bode para una funcin GD( j ) consiste en dos trazas
por separado, la magnitud logartmica G D ( j )
- 244 -
GC ( w) = K
1+ w
1 + w
0 < <1
GC ( w) G D ( w) = K
1+ w
G D ( w)
1 + w
1+ w
G D1 ( w)
1 + w
- 245 -
K v = lim w GC ( w) G D ( w)
w 0
2.-
3.-
4.-
sin( m ) =
1
1+
- 246 -
5.-
m =
m.
6.-
7.-
el rango de altas frecuencias para un margen de fase suficiente para el sistema. Las
caractersticas del atraso de fase no tienen consecuencias en la compensacin mediante
atraso.
Ejemplo:
- 247 -
GC ( w) = K
1+ w
,
1 + w
1<
GC ( w) G D ( w) = K
1+ w
G D ( w)
1 + w
1+ w
G D1 ( w)
1 + w
- 248 -
K v = lim w GC ( w) G D ( w)
w 0
2.-
3.-
1
.
t
- 249 -
Ejemplo:
Se vuelve a utilizar el ejemplo del apartado 7.6, pero diseando un controlador para un
margen de fase de 45.
El compensador de atraso tiene la forma:
GC ( w) =
1+ w
1 + w
>1
> T := 1/5:
i1 := subs(t=T*t, simplify(invlaplace((K/(s^2*(s+1))), s, t))):
G[D](z) := evalf(simplify((z-1)/z*ztrans(i1, t, z))):
- 250 -
1+w
1+ w
2 = K v = lim ( w GC ( w) G D ( w))
w 0
K =2
Sustituimos K = 2 en GD( w ).
( 10. + w ) ( w + 299.19 )
( w + .99667 ) w
- 251 -
- 252 -
Margen de Fase: 30
0.51
= 10
= 10
fr = 0.5
- 253 -
54.17
.63096
Frecuencia de esquina =
- 254 -
> evalf(20*log[10](magGd(10^(-0.2))));
beta := magGd(10^(-0.2));
8.5744
:= 2.6836
> 1/(beta*tau);
.023511
1 + 15.849 w
1 + 42.532 w
- 255 -
1
= 0.02
Diagrama de Bode:
- 256 -
-130 + 180 = 50
- Margen de ganancia:
-(-23 dB)
- 257 -
= 23 dB.
- 258 -
Datos:
Transformar G D ( z ) =
G p ( s) GD( w ) mediante la transformacin
s
bilineal
w T
2
z=
w T
1
2
1+
- 259 -
G ( s)
.
1 + G(s)
Paso 2: Determinar la ganancia del sistema para satisfacer la especificacin del error
GC ( w) =
1+ w
1 + w
w=
2 z 1
T z +1
- 260 -
computacional.
Ejemplo:
- 261 -
> T := 1/5:
i1 := subs(t=T*t, simplify(invlaplace( (K/(s^2*(s+1))), s, t))):
G[D](z) := factor(evalf(simplify((z-1)/z*ztrans(i1, t, z))));
GD( z ) := .81873
K ( .022880 z + .021400 )
( z 1. ) ( z .81873 )
GC( w ) tiene una ganancia unitaria para el intervalo de baja frecuencia y la forma
siguiente, con 0 < < 1 :
1+w
1+w
- 262 -
> eval(G[C](w)*G[D](w));
GD( w ) := 1.6375
2 = K V = lim (w GC ( w) G D ( w) )
w 0
K =2
( 10. + w ) ( w + 299.17 )
- 263 -
( w + .99670 ) w
'magGd', 'argGd'.
- magnitud y fase de GC ( j ):
'magGc', 'argGc'.
- magnitud y fase de GC ( j ) G D ( j ):
'magGcGd', 'argGcGd'.
- 264 -
cm, ca, mGd, mGc, mGcGd, aGd, aGc, aGcGd, v, p1, p2;
global
with(plots):
if (cont<1) or (cont>3)
then ERROR(`invalid cont`, cont);
fi;
# rectas adicionales
cm := plot(cte, v=ind1..ind2, color=wheat, axes=FRAME):
ca := plot(-180, v=ind1..ind2, color=wheat, axes=FRAME):
# magnitud de Gd
magGd := v -> abs(subs(nu=v, f1)):
mGd
:= plot(20*log[10](magGd(10^v)), v=ind1..ind2,
color=blue, axes=FRAME):
# fase de Gd
argGd
aGd
:= plot(evalf(argGd(10^v)*180/Pi), v=ind1..ind2,
color=blue, axes=FRAME):
(contina)
- 265 -
if (cont>1) then
# magnitud de Gc
magGc := v -> abs(subs(nu=v, f2)):
mGc := plot(20*log[10](magGc(10^v)), v=ind1..ind2,
color=black, axes=FRAME, style=point):
# fase de Gc
argGc := v -> argument(subs(nu=v, f2)) (signum(argument(subs(nu=v, f2)))+1) *Pi;
aGc := plot(evalf(argGc(10^v)*180/Pi), v=ind1..ind2,
color=black, axes=FRAME, style=point):
# magnitud de GcGd
magGcGd := v -> abs( subs(nu=v, f1) * subs(nu=v, f2) ):
mGcGd
:= plot(20*log[10](magGcGd(10^v)), v=ind1..ind2,
color=black, axes=FRAME):
# fase de GcGd
argGcGd := v -> argument( subs(nu=v, f1)*subs(nu=v, f2)) (signum(argument( subs(nu=v, f1)*subs(nu=v, f2)))+1) *Pi;
aGcGd := plot(evalf(argGcGd(10^v)*180/Pi), v=ind1..ind2,
color=black, axes=FRAME):
fi:
(contina)
- 266 -
# DIAGRAMAS
if (cont=1) then
p1 := display({mGd, cm},
labels=[fr, dB],
title=`MAGNITUD DE G`,
p2 := display({aGd, ca},
tickmarks=[10,15]):
labels=[fr, grados],
title=`FASE DE G`,
tickmarks=[10,15]):
labels=[fr, dB],
tickmarks=[10,15]):
labels=[fr, grados],
tickmarks=[10,15]):
else
p1 := display({mGd, mGcGd, mGc, cm},
title=`MAGNITUDES`,
tickmarks=[10,15]):
labels=[fr, dB],
labels=[fr, grados],
tickmarks=[10,15]):
fi:
print(p1);
print(p2);
end:
- 267 -
- 268 -
-150 + 180 = 30
fr = 0.5 = 10 0.5
-(-14) = 14 dB
- 269 -
sin( m ) =
> ecu
1
1+
:= sin(28*Pi/180) = (1-alpha)/(1+alpha);
- 270 -
y =
1
del compensador de adelanto. Para ello, primero notamos
. La cantidad de modificacin en la
1 + j
1 + j
1 + j
es
1 + j
> 1/sqrt(alpha):
-20*log(%);
-4.4246
- 271 -
Mediante prueba y error con Maple parece que la frecuencia sera 1.7:
> evalf(20*log[10](magG(10^0.25)));
evalf(20*log[10](magG(10^0.23)));
10^0.23;
-5.0596
-4.3694
1.6982
se tiene:
1.7 = 1.6643
- 272 -
1+ w
1 + w
1 + .95844 w
1 + .34601 w
Las curvas de magnitud y de ngulo de fase para GC( j ) y las curvas de magnitud y de
ngulo de fase de la funcin de transferencia en lazo abierto se muestran mediante
curvas slidas en el diagrama de Bode.
- 273 -
Ampliando la zona que nos interesa, vemos que el margen de fase es de 50 y el margen
de ganancia es de 14 dB.
- 274 -
w=
z 1
2 z 1 2 z 1
=
= 10
T z +1 1 z +1
z +1
5
26461. z 21461.
44601. z 24601.
La funcin transferencia de pulso en lazo cerrado del sistema que hemos diseado es
GC ( z ) G D ( z )
C ( z)
=
R( z ) 1 + GC ( z ) G D ( z )
131.
.22300 10
11 3
11 2
11
11
z .50876 10 z + .40876 10 z .11575 10
- 275 -
7.7 EJERCICIOS.
0.6321
.
z 0.3679
j T
en GD( z ):
.6321
1
z .3679
1
cos( T ) + I sin( T ) .3679
- 276 -
> M := simplify(evalc(abs(G[D](exp(I*omega*T)))));
M := 63.210
1
7358. cos( T ) + 11354.
Por
lo
tanto,
la
salida
en
estado
permanente
se
puede
escribir
como
A M sin(k T + ) .
- 277 -
1 e Ts
1
= (1 z 1 )
G D ( z ) = 2
2
s ( s + 2)
+
s
(
s
2
)
> T := 1/10:
subs(t=T*t, invlaplace(1/(s^2*(s+2)), s, t)):
G[D](z) := factor(evalf((1-z^(-1))*ztrans(%, t, z)));
GD( z ) := .0046627
z + .94338
( z 1. ) ( z .81836 )
- 278 -
T w
2
z=
T w
1
2
1+
7
( 20. + w ) ( .19434 10 + 2831. w )
( 90820. + 45459. w ) w
GC( w ) :=
donde a =
y b=
K 1 +
a
1+
w
b
1
. La funcin de transferencia en lazo abierto es
> simplify(G[C](w)*G[D](w));
.0011657
7
K ( a + w ) b ( 20. + w ) ( .19434 10 + 2831. w )
a ( b + w ) ( 90820. + 45459. w ) w
- 279 -
> K[v] := 5;
ecu
:= solve(ecu, K);
Kv := 5
ecu := 5 = .49888 K
K := 10.022
1 + .50150 w
1 + .080000 w
> simplify(G[C](w)*G[D](w));
.00014571
7
( 2000. + 1003. w ) ( 20. + w ) ( .19434 10 + 2831. w )
( 25. + 2. w ) ( 90820. + 45459. w ) w
- 280 -
- 281 -
- 282 -
es fr = 1.25, = 10
= 17.78.
> -(evalf(20*log[10](magGGD(10^1.2))));
13.297
w=
2 z 1
T z +1
1103. z 903.
13. z 3.
> simplify(G[C](z)*G[D](z));
.0011657
- 283 -
1
s2
plano w, tal que el margen de fase sea de 50, y el margen de ganancia sea por lo
menos 10 dB. El perodo de muestreo es T = 0.1. Despus de disear el controlador,
obtenga la constante de error esttico de velocidad Kv.
> T := 1/10:
subs(t=T*t, invlaplace(1/(s^3), s, t)):
G[D](z) := evalf(simplify((1-z^(-1))*ztrans(%, t, z)));
GD( z ) := .0050000
z + 1.
( z 1. )
T w
2
z=
T w
1
2
1+
- 284 -
20. + w
w
- 285 -
- 286 -
> evalf(argG(10^0)*180/Pi)+180;
-2.86
Observe que el margen de fase es de aproximadamente -3. Ser necesario aadir una
red de adelanto para conseguir el margen de fase y el margen de ganancia requeridos.
Mediante la aplicacin de una tcnica convencional de diseo, puede verse que la red de
adelanto siguiente satisface los requisitos:
1+w
1+
GC( w ) := 64
1
16
1+w
16 + w
- 287 -
1+
m = arcsin
- 288 -
> evalf(argGcGd(10^0.6)*180/Pi);
-129.33
> evalf(argGcGd(10^0.6)*180/Pi);
13.909
w=
2 z 1
T z +1
21 z 19
9z1
- 289 -
> simplify(G[C](z)*G[D](z));
.080000
( 21. z 19. ) ( z + 1. )
( 9. z 1. ) ( z 1. )
(1 z 1 ) GC ( z ) G D ( z )
z 1
T
K v = lim
Kv := Float( )
- 290 -
7.8 REFERENCIAS.
[REF. 1]
[REF. 2]
K. Ogata,
Ingeniera de Control Moderna,
Prentice-Hall, 1980
[REF. 3]
K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2 edicin (1996)
[REF. 4]
J. Rebollo Rodrguez ,
SECAD: Mdulo de Diseo de Controladores,
U.P.M., Escuela Superior de Ingenierios de Telecomunicaciones,
curso 1990-91
- 291 -