Está en la página 1de 21

Captulo 3: Aplicacin de la Transformada Z ...

- 77 -











Captulo 3.
APLICACIN DE LA TRANSFORMADA Z
A SISTEMAS DE CONTROL
GOBERNADOS POR ECUACIONES EN DIFERENCIAS.


Sistemas de Control en tiempo Discreto

- 78 -
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.


Captulo 3: Aplicacin de la Transformada Z ...

- 79 -
3.2 MTODO DE LA TRANSFORMADA Z PARA LA SOLUCIN
DE ECUACIONES EN DIFERENCIAS.

Sea un sistema de control gobernado por la siguiente ecuacin en diferencias
lineal de segundo orden, con coeficientes constantes, cuya entrada es una funcin u( k)
y cuya salida es una funcin x( k) :

> restart:
ecu := x(k+2) + a*x(k+1) + b*x(k) = u(k);

Se puede utilizar la transformada z para convertir la ecuacin anterior en una expresin
algebraica en la variable z:

> zecu:=ztrans(ecu, k, z);


> Xz := solve(zecu, ztrans(x(k), k, z));

:= ecu = + + ( ) x + k 2 a ( ) x + k 1 b ( ) x k ( ) u k
zecu z
2
( ) ztrans , , ( ) x k k z ( ) x 0 z
2
( ) x 1 z a ( ) z ( ) ztrans , , ( ) x k k z ( ) x 0 z + :=
b ( ) ztrans , , ( ) x k k z + ( ) ztrans , , ( ) u k k z =
:= Xz
+ + + ( ) x 0 z
2
( ) x 1 z a ( ) x 0 z ( ) ztrans , , ( ) u k k z
+ + z
2
a z b
Sistemas de Control en tiempo Discreto

- 80 -
Podemos especificar las condiciones iniciales x(0) e x(1) y la funcin de entrada del
sistema:

> subs(x(0)=0, x(1)=1, ztrans(u(k), k, z)=U(z), Xz);

En particular, si damos condiciones iniciales nulas obtenemos la funcin de
transferencia del sistema:

> X(z) := subs(x(0)=0, x(1)=0, ztrans(u(k), k, z)=U(z), Xz);

La funcin de transferencia del sistema es:

> G(z) := X(z)/U(z);

:= ( ) G z
1
+ + z
2
a z b
+ z ( ) U z
+ + z
2
a z b
:= ( ) X z
( ) U z
+ + z
2
a z b
Captulo 3: Aplicacin de la Transformada Z ...

- 81 -
3.2.1.- Funcin transferencia de pulso de un sistema de control discreto.

A continuacin se muestra un procedimiento llamado ztransfe2, que tiene como
argumentos de entrada los valores a, b, c y d, y obtiene como salida la funcin
transferencia de pulso de un sistema de control discreto gobernado por la siguiente
ecuacin en diferencias:

> ecu1 := x(k+2) + a*x(k+1) + b*x(k) = c*u(k+1) + d*u(k);

> ztransfe2 := proc (a, b, c, d) local ecu, zecu, Xz, X, U, G;
ecu := x(k+2) + a*x(k+1) + b*x(k) = c*u(k+1) + d*u(k);
zecu := ztrans(ecu, k, z);
Xz := solve(zecu, ztrans(x(k), k, z));
X(z) := subs(x(0)=0, x(1)=0, u(0)=0, ztrans(u(k), k, z)=U(z), Xz);
G(z) := simplify(X(z)/U(z));
end:

Probamos el procedimiento con un par de ejemplos.

> ztransfe2(a, b, c, d);



> ztransfe2(7, 8, 9, 10);

+ c z d
+ + z
2
a z b
+ 9 z 10
+ + z
2
7 z 8
:= ecu1 = + + ( ) x + k 2 a ( ) x + k 1 b ( ) x k + c ( ) u + k 1 d ( ) u k
Sistemas de Control en tiempo Discreto

- 82 -
3.2.2.- Funcin de salida de un sistema de control discreto.

A continuacin se muestra un procedimiento que se llama zent_sal2, que recibe
como entrada la funcin de transferencia de un sistema de control discreto de orden 2
(del tipo descrito en 3.2.1) y la funcin de entrada u( k) a este sistema (por ejemplo,
u( k) = 1, u( k) = k, etc.), as como el n de puntos que queremos pintar. Devuelve la
funcin de salida x( k) correspondiente. Se utiliza la funcin de Heaviside.

> 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)));
pe := plot(input, t=0..ptos, title=`entrada`, axes=frame);
ps := plot(x*aux, t=0..ptos, title= `salida`, axes=frame, discont=true);
printf(" Funcion Transf:");
printf(" Funcion Entrada:\n");
printf(" G(z) = %a", G);
printf(" u(t) = %a\n", input);
print(plots[display](array(1..2, [pe, ps])));
printf("Funcion de Salida x(t):");
print(x);
end:
Captulo 3: Aplicacin de la Transformada Z ...

- 83 -
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
recurrencias asociada a la entrada-salida del sistema:

> rsolve({x(k+2) + 3*x(k+1) + 2*x(k) = 1, x(0)=0, x(1)=1}, x);



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.

+
1
2
( ) -1
k
2
3
( ) -2
k
1
6
Sistemas de Control en tiempo Discreto

- 84 -
> zent_sal2(1/z, sin(t), 10);
Funcion Transf: Funcion Entrada:
G(z) = 1/z u(t) = sin(t)

Funcion de Salida x(t):





OBSERVACIONES: En la ecuacin de la funcin de salida, aparece la funcin
charfcn
n
(t), que equivale a la funcin delta de Kronecker:

1, para k = n
=
0, para

Dicha funcin coincide con la funcin impulso unitario o delta de Dirac.
( )
n
k T
k n
+ .84140 ( ) charfcn
0
t .84140 e
( ) .53405 10
-9
t
( ) cos t .54028 e
( ) .53405 10
-9
t
( ) sin t
Captulo 3: Aplicacin de la Transformada Z ...

- 85 -
> plot(charfcn[0](t), t=-2..2, axes=frame, style=point);
plot(Dirac(t), t=-2..2, axes=frame, style=point);


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 charfcn
0
(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.

Sistemas de Control en tiempo Discreto

- 86 -
Ahora comprobamos el teorema de traslacin dando como funcin de transferencia
4
1
z

para que se aprecie mejor el retardo.


> zent_sal2(z^(-4), sin(t), 20);
Funcion Transf: Funcion Entrada:
G(z) = 1/z^4 u(t) = sin(t)

Funcion de Salida x(t):

.75667 ( ) charfcn
0
t .14108 ( ) charfcn
1
t .90926 ( ) charfcn
2
t .84140 ( ) charfcn
3
t + + +
.75681 e
( ) .53405 10
-9
t
( ) cos t .65359 e
( ) .53405 10
-9
t
( ) sin t +
Captulo 3: Aplicacin de la Transformada Z ...

- 87 -
Aqu tambin se obtiene la funcin de entrada retardada.

> zent_sal2(1/z, 1, 10);
Funcion Transf: Funcion Entrada:
G(z) = 1/z u(t) = 1
Funcion de Salida x(t):


Vemos otro ejemplo en el cual la salida no sigue a la entrada. Eso es debido a que la

funcin de transferencia no es estable.


> zent_sal2(1/(z^2+1), exp(-t), 10);
Funcion Transf: Funcion Entrada:
G(z) = 1/(z^2+1) u(t) = exp(-t)

Funcion de Salida x(t):


+ 1. ( ) charfcn
0
t 1.
+ .32402 ( ) sin 1.5708 t .88078 ( ) cos 1.5708 t .88078 e
( ) 1. t
1
+ z
2
1
Sistemas de Control en tiempo Discreto

- 88 -
A continuacin se construye un bucle con distintas funciones de transferencia y
de entrada, y sus correspondientes salidas. En g1 tenemos las funciones de
transferencia, y en l1 las de entrada. Para ver alguna ms, slo hay que aadirla a la lista
correspondiente, y Maple hace el resto. De nuevo se puede apreciar que, cuando la
funcin de transferencia es 1/z, la entrada experimenta un retardo, cumplindose el
teorema de traslacin.

> g1 := [1/z, 1/(z^2+1)];
l1 := [1,t, exp(-t), sin(t)];




> ZTransfEntSal := proc(g, l) local i, j;
for i from 1 to nops(g) do
for j from 1 to nops(l) do
print(zent_sal2(g[i], l[j], 10));
printf("\n\n\n");
od;
od;
end:
:= g1

(
(
(
,
1
z
1
+ z
2
1
:= l1 [ ] , , , 1 t e
( ) t
( ) sin t
Captulo 3: Aplicacin de la Transformada Z ...

- 89 -
> ZTransfEntSal(g1, l1);

F u n c i o n Tr a n s f : F u n c i o n En t r a d a : F u n c i o n Tr a n s f : F u n c i o n En t r a d a :
G(z) = 1/z u(t) = 1 G(z) = 1/(z^2+1) u(t) = 1






Funcion de Salida x(t): Funcion de Salida x(t):



F u n c i o n Tr a n s f : F u n c i o n En t r a d a : Fu n c i o n Tr a n s f : Fu n c i o n En t r a d a :
G(z) = 1/z u(t) = t G(z) = 1/(z^2+1) u(t) = t







Funcion de Salida x(t): Funcion de Salida x(t):

(contina)









+ 1. ( ) charfcn
0
t 1.
+ ( ) charfcn
0
t 1. t
.50000 .50000 ( ) cos 1.5708t .50000 ( ) sin 1.5708t
+ + .50000 .50000 t .50000 ( ) cos 1.5708 t
Sistemas de Control en tiempo Discreto

- 90 -

F u n c i o n Tr a n s f : F u n c i o n En t r a d a : Fu n c i o n Tr a n s f : Fu n c i o n En t r a d a :
G(z) = 1/z u(t) = exp(-t) G(z) = 1/(z^2+1) u(t) = exp(-t)








Funcion de Salida x(t): Funcion de Salida x(t):



F u n c i o n Tr a n s f : F u n c i o n En t r a d a : Fu n c i o n Tr a n s f : Fu n c i o n En t r a d a :
G(z) = 1/z u(t) = sin(t) G(z) = 1/(z^2+1) u(t) = sin(t)







Funcion de Salida x(t): Funcion de Salida x(t):
+ 2.7183 ( ) charfcn
0
t 2.7183 e
( ) 1. t
+ .32402 ( ) sin 1.5708t .88078 ( ) cos 1.5708t .88078e
( ) 1. t
.84140 ( ) charfcn
0
t .84140e
( ) .5340510
-9
t
( ) cos t
.54028e
( ) .5340510
-9
t
( ) sin t +
.77867 ( ) cos 1.5708t .77867e
( ) .5340510
-9
t
( ) cos t
.50000e
( ) .5340510
-9
t
( ) sin t +
Captulo 3: Aplicacin de la Transformada Z ...

- 91 -
3.3 EJERCICIOS.

> restart: Digits:=5:

3.3.1.- Considerando la ecuacin en diferencias
donde x(0) = 0 y x(1) = 1, obtenga la solucin general x(k) en forma cerrada.

> ecu := x(k+2) = 2*x(k+1) - x(k);

Se resuelve para X(z): tomamos la transformada z de la ecuacin, la resolvemos y
sustituimos los datos iniciales, dando como resultado:

> zecu := ztrans(ecu, k, z);

> X(z) := solve(zecu, ztrans(x(k), k, z));

> X(z) := subs(x(0)=0, x(1)=1, X(z));

=
( ) x
+
k 2

2 ( ) x
+
k 1 ( ) x k
:= ecu = ( ) x + k 2 2 ( ) x + k 1 ( ) x k
zecu z
2
( ) ztrans , , ( ) x k k z ( ) x 0 z
2
( ) x 1 z = :=
2 z ( ) ztrans , , ( ) x k k z 2 ( ) x 0 z ( ) ztrans , , ( ) x k k z
:= ( ) X z
z ( ) + ( ) x 0 z ( ) x 1 2 ( ) x 0
+ z
2
2 z 1
:= ( ) X z
z
+ z
2
2 z 1
Sistemas de Control en tiempo Discreto

- 92 -
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):

> x(k) := invztrans(X(z), z, k);
plot(x(k), k=1..10);


3.3.2.- Resolver la siguiente ecuacin en diferencias:
donde

> restart: Digits:=5:

u(k) es la funcin de Heaviside.

> ecu := 2*x(k) - 2*x(k-1) + x(k-2) = Heaviside(k);

:= ecu = + 2 ( ) x k 2 ( ) x k 1 ( ) x k 2 ( ) Heavisidek
=
( ) u k {
0
<
k 0
1 "k entero positivo o cero"
= +
2 ( ) x k 2 ( ) x

k 1 ( ) x

k 2 ( ) u k
:= ( ) x k k
Captulo 3: Aplicacin de la Transformada Z ...

- 93 -
Tomamos la transformada z de la ecuacin en diferencias dada.

> zecu := ztrans(ecu, k, z);

Al resolver sta ltima ecuacin para X(z) se obtiene:

> X(z) := factor(solve(zecu, ztrans(x(k), k, z)));

> solve(2*z^2-2*z+1=0);
evalf(abs(1/2+1/2*I));

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).

> x(k) := invztrans(X(z), z, k);

:= zecu = + 2 ( ) ztrans , , ( ) x k k z 2
( ) ztrans , , ( ) x k k z
z
( ) ztrans , , ( ) x k k z
z
2
z
z 1
:= ( ) X z
z
3
( ) z 1 ( ) + 2 z
2
2 z 1
:= ( ) x k 1
1
2
|
\

|
.
|
|
|
|
|
||

= ( ) RootOf + 2 2 _Z _Z
2
|
\

|
.
|
|
1

, +
1
2
1
2
I
1
2
1
2
I
.70710
Sistemas de Control en tiempo Discreto

- 94 -
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));

> xx := x(k):
plot([seq([k, xx], k=0..25)], style=point);

1. .50000 e
( ) .34657 k
( ) cos .78540 k .50000 e
( ) .34657 k
( ) sin .78540 k +
.50000
I ( ) + .50000 e
( ) .34657 k
( ) cos .78540 k .50000 e
( ) .34657 k
( ) sin .78540 k
.50000
I ( ) .50000 e
( ) .34657 k
( ) cos .78540 k .50000 e
( ) .34657 k
( ) sin .78540 k
Captulo 3: Aplicacin de la Transformada Z ...

- 95 -
3.3.3.- Considerando la ecuacin en diferencias
x( k+2) = x( k+1) +x( k)
donde x(0) = 0 y x(1) = 1, obtenga la solucin general x(k) en forma
cerrada.

> restart: Digits:=5:

> ecu := x(k+2) = x(k+1) + x(k);

> zecu := ztrans(ecu, k, z);

> X(z) := solve(zecu, ztrans(x(k), k, z));

> X(z) := subs(x(0)=0, x(1)=1, X(z));

> fsolve(z^2-z-1=0);
:= ecu = ( ) x + k 2 + ( ) x + k 1 ( ) x k
zecu z
2
( ) ztrans , , ( ) x k k z ( ) x 0 z
2
( ) x 1 z = :=
+ z ( ) ztrans , , ( ) x k k z ( ) x 0 z ( ) ztrans , , ( ) x k k z
:= ( ) X z
z ( ) + ( ) x 0 z ( ) x 1 ( ) x 0
z
2
z 1
:= ( ) X z
z
z
2
z 1
, -.61803 1.6180
Sistemas de Control en tiempo Discreto

- 96 -
:= ( ) x k

= ( ) RootOf + + 1 _Z _Z
2
|
\

|
.
|
|
|
|
|
|
1
5
2
|
\

|
.
|
|
1

k
|
\

|
.
|
|
1

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) := invztrans(X(z), z, k);





Se obtiene una expresin semejante a la del ejercicio anterior. Si se utiliza el mtodo
numrico:

> evalf(x(k));

Esta expresin en forma cerrada tampoco vale, ya que aparecen nmeros complejos. La
secuencia de puntos correspondiente sera la mostrada a continuacin:

> seq(eval(subs(k=n, x(k))), n=0..10);

> xx := x(k):
plot([seq([k, xx], k=0..10)], style=point);
.44722 e
( ) .48121 k
( ) cos 3.1416 k .44722 I e
( ) .48121 k
( ) sin 3.1416 k +
.44722 1.6180
k

, , , , , , , , , , 0 1 1 2 3 5 8 13 21 34 55
Captulo 3: Aplicacin de la Transformada Z ...

- 97 -
3.4 REFERENCIAS.

[REF. 1] R. Aracil Santonja, A. Jimnez Avello,
Sistemas Discretos de Control,
Ctedra de Automtica, 1987

[REF. 2] K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2 edicin, 1996

También podría gustarte