Sei sulla pagina 1di 29

Captulo 2: Discretizacin de una Seal

Captulo 2. DISCRETIZACIN DE UNA SEAL.

- 47 -

Sistemas de Control en Tiempo Discreto

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.

2.2 MUESTREO MEDIANTE IMPULSOS.


Dada una seal analgica f ( t ) su discretizacin mediante impulsos que se producen en intervalos de longitud T, consiste en sustituir dicha funcin f ( t ) por una sucesin f ( n T ) con n = 0, 1, 2, ... Ejemplo: Primero definimos la funcin f ( t ) = 2 + s i n ( 4 t ) , y la mostramos a continuacin.

> restart; > f := t -> 2 + sin(4*t); plot(f(t), t = 0.1..10);


f := t 2 + sin( 4 t )

- 48 -

Captulo 2: Discretizacin de una Seal

Ahora sustituimos dicha funcin por una sucesin f ( n T ) en los instantes de muestreo n = 0, 1, 2, ..., 10 y la dibujamos, aprecindose que ambas funciones se asemejan: las flechas sealan el valor de la funcin en los instantes de muestreo, y si uniramos dichos valores, se obtendra la funcin original. La funcin de Maple 'with(plottools)' sirve para trabajar con una serie de utilidades, entre las que se encuentra la opcin 'arrow'. Le ponemos un punto y coma para que se aprecien dichas utilidades.

> 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

> for j from 0 to 10 do l[j] := plots[display](arrow([j,0], [j,f(j)], .05, .3, .05, color=green)) od: > plots[display](seq(l[j],j=0..10),color=green);

- 49 -

Sistemas de Control en Tiempo Discreto

2.3 DISCRETIZACIN POR INVARIANZA AL IMPULSO.


Dada una funcin de transferencia continua F(s) (transformada de Laplace de f(t)) se llama discretizacin por invarianza al impulso a la transformada z, Fd(z), tal que la inversa de Laplace de F(s) y la inversa z de Fd(z) coinciden en los instantes de muestreo t = k T , donde T es el perodo de muestreo. Eso quiere decir que la respuesta de la funcin continua a un impulso es igual a la respuesta de la funcin discreta a un impulso, en los instantes de muestreo k T . [REF. 1].

L (F ( s) )t =k T = Z

-1

-1

(Fd (z ) )
F ( s) z z e sT

Fd (z ) = Z

(F ( s) )t =k T

residuo de

en los polos de F(s)

Nota del autor: En ocasiones se realiza un abuso de notacin, haciendo la siguiente simplificacin:

Z L

(F ( s) )t =k T

= Z

(F (s) )

La funcin de Maple 'with(inttrans)' sirve para trabajar con una serie de utilidades, entre las que se encuentra la transformada de Laplace, y la inversa de la transformada de Laplace. Le ponemos un punto y coma para que se aprecien dichas utilidades.

- 50 -

Captulo 2: Discretizacin de una Seal

Ejemplo: Sea F es la transformada de Laplace de una funcin f ( t ) .

> restart: with(inttrans);


[ addtable, fourier, fouriercos, fouriersin, hankel, hilbert, invfourier, invhilbert, invlaplace, invmellin, laplace, mellin, savetable ]

> F := 2*(s^2+16+2*s)/(s*(s^2+16));
F := 2 2 s + 16 + 2 s 2 s ( s + 16 )

Ahora calculamos F d ( z ) , la transformada z de f ( k T ) . La funcin se obtiene con la inversa de Laplace de F, y a continuacin sustituimos t = k T para obtener la transformada z de f ( k T ).

> ztrans(subs(t=k*T, invlaplace (F, s, t)), k , z);


2 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 -

Sistemas de Control en Tiempo Discreto

> combine(%, trig);


3 2 2 2 z 2 z + 4 z cos( 4 T ) z sin( 4 T ) + z sin( 4 T ) 3 2 2 z z + 2 z cos( 4 T ) + 1 + z 2 z cos( 4 T )

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

Esta ltima expresin F d ( z ) es la discretizacin de F ( s ) que se obtiene por invarianza al impulso. A continuacin se muestra la funcin f ( t ) original, y la funcin f d ( k T ) , para T =

1 , que es la transformada z inversa de F d ( z ) . Observamos que las funciones 8

f ( t ) y f d ( k T ) coinciden en losinstantes de muestreo.

> plot(invlaplace (F, s, t), t=0..Pi);

> Fd1 := subs(T=1/8, Fd): fd1 := invztrans(Fd1, z, k):

- 52 -

Captulo 2: Discretizacin de una Seal

Esta es la seal discretizada (fd1), que coincide con la continua f ( t ) en los instantes de muestreo
k 8

> plot([seq([k/8, fd1], k=0..24)], style=point);

En las siguientes sentencias de Maple vamos a construir un procedimiento que resume los pasos anteriores. La entrada es una funcin racional F ( s ) y un periodo de muestreo T, y cuya salida es la discretizacin de F ( s ) por invarianza al impulso.

> Discret_imp := proc(F, T) local aux; aux := ztrans(subs(t=k*T, invlaplace(F, s, t)), k, z): factor(combine(aux, trig)); end:

Lo aplicamos a la funcin F anterior, para comprobar su correcto funcionamiento. Dejamos el periodo de muestreo T sin especificar.

> Fd := Discret_imp(F, T);


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

Fd :=

- 53 -

Sistemas de Control en Tiempo Discreto

2.4 DISCRETIZACIN POR INVARIANZA AL ESCALN.


Dada una funcin de transferencia continua F(s) se llama discretizacin por invarianza al escaln a la transformada z, F d ( z ) , tal que la inversa de Laplace de

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

F( s ) s
t =k T

-1 Fd( z ) z

z1

entonces

Fd( z ) z z1

F( s ) s
t =k T

entonces

Fd(z)

z1 z

F( s ) s
t =k T

(ec.1)

Siendo L

la transformada inversa de Laplace, y Z

-1

la transformada z inversa.

- 54 -

Captulo 2: Discretizacin de una Seal

Ejemplo:

. 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

Llamamos F s ( t ) a la inversa de Laplace de

F( s )

sistema estable, y se puede apreciar que la salida sigue a la entrada escaln.

> restart: with(inttrans):

>F

:= s -> 1/(s+1);

fs := invlaplace(convert(F(s)/s, parfrac, s), s, t); plot(fs, t=0..2*Pi); Fd := simplify(((z-1)/z)*ztrans(subs(t=k*T, fs), k, z)); Fd1 := subs(T=1/4, Fd): fd1 := invztrans(Fd1*z/(z-1), z, k): plot([seq([k/4, fd1], k=0..24)], style=point);
1 s+1

F := s

fs := 1 e

( t )

Fd :=

1 + e

T ze 1

- 55 -

Sistemas de Control en Tiempo Discreto

NOTA del autor: En el siguiente ejemplo se puede comprobar que cuando

Maple no sabe calcular las races del denominador de la funcin racional F d ( z ) de forma exacta, la funcin inversa que devuelve hay que aproximarla (con el comando
evalf ) para conocer sus valores y poder representarla grficamente, y esto puede dar

problemas en los resultados debido a las aproximaciones numricas.

> with(inttrans):

> F := 2*(s^2+16+2*s)/(s*(s^2+16));
F := 2 2 s + 16 + 2 s 2 s ( s + 16 )

> ((z-1)/z)*ztrans(subs(t=k*T, invlaplace (F/s, s, t)), k , z);


4 2 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

> combine(%, trig): Fde := factor(%);


Fde := 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 -

Captulo 2: Discretizacin de una Seal

> invlaplace (F/s, s, t);


2t+ 1 4 1 4 cos( 4 t )

Seal continua.

> plot(invlaplace (F/s, s, t), t=0..2*Pi);

Puede apreciarse que la salida no sigue a la entrada escaln, ya que el sistema no es estable. Lo mismo ocurre para la funcin discreta. Estabilidad.

> Fd2 := subs(T=1/4, Fde);


Fd2 := 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 ) )

> fd2:=invztrans(Fd2*(z/(z-1)), z, k);


1 1 fd2 := + k 4 2 8 _ 2 _ = RootOf( _Z 2 _Z cos( 1 ) + 1 ) 1 1

Puede apreciarse que no se obtiene una expresin cerrada con la trasnformada z inversa. Para conseguirla, hay que usar evalf.

- 57 -

Sistemas de Control en Tiempo Discreto

> Digits:=10:

> evalf(fd2);
.2500000000 + .5000000000 k .2500000000 e ( .8050000000 10 -16 k) cos( 1.000000000 k )

Seal discreta.

> plot([seq([k/4, fd2], k=0..25)], style=point);

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.

> plot([seq([k/4, fd2], k=0..100)], style=point);

- 58 -

Captulo 2: Discretizacin de una Seal

Comprobamos que aumentando la precisin se corrigen los errores numricos.

> Digits:=50: > evalf(fd2):

> plot([seq([k/4, fd2], k=0..200)], style=point);

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:

> Digits := 10: Fd3 := subs(T=Pi/4, Fde): fd3 := invztrans(Fd3*(z/(z-1)), z, k): > plot([seq([k*Pi/4, fd3], k=0..148)], style=point);

- 59 -

Sistemas de Control en Tiempo Discreto

> Fd4 := subs(T=Pi/8, Fde): fd4 := invztrans(Fd4*(z/(z-1)), z, k):

> plot([seq([k*Pi/8, fd4], k=0..148)], style=point);

A continuacin escribimos un procedimiento cuya entrada es una funcin racional F(s) y un periodo de muestreo T y cuya salida es la discretizacin de F(s) por 1 invarianza al escaln. Lo aplicamos al ejemplo F( s ) = , para comprobar su correcto 2 s funcionamiento.

> Discret_esc := proc(F, T); ((z-1)/z)*ztrans(subs(t=k*T, invlaplace(F/s, s, t)) , k, z); end:

> Fs := 1/s^2; Fd := Discret_esc(Fs, T);


Fs := 1 s 2

Fd :=

2 1 T (1 + z) 2 (z 1) 2

- 60 -

Captulo 2: Discretizacin de una Seal

2.5 EJERCICIOS.

> restart: with(inttrans): with(plottools):

2.5.1.- Muestrear mediante impulsos la funcin f ( t ) = c o s ( t ) + s i n ( 7 t )

> f := t -> cos(t) + sin(7*t); plot(f(t), t=0..10);


f := t cos( t ) + sin( 7 t )

> for j from 0 to 10 do l[j] := plots[display](arrow([j,0], [j,f(j)], .05, .3, .15, color=red)) od:

- 61 -

Sistemas de Control en Tiempo Discreto

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

quiere reproducir, aunque coincida en los instantes de muestreo.

> plots[display](seq(l[j], j=0..10), color=red);

Para que se aprecie mejor que estas funciones coinciden en los instantes de muestreo, las dibujamos juntas, y aumentando el nmero de puntos.

> f1 := plot(f(t), t=0..20, color=wheat): for j from 0 to 20 do l[j] := plots[display](arrow([j,0], [j,f(j)], .05, .3, .15, color=magenta)) od: f2 := plots[display](seq(l[j],j=0..20), color=magenta, style=line): se := seq([j, f(j)], j=0..20): f3 := plot([se], style=line, color=blue):

- 62 -

Captulo 2: Discretizacin de una Seal

> plots[display]([f1, f2, f3]);

2.5.2.- Discretizar por invarianza al impulso F(s) = 1/s. Utilizar el procedimiento Discret_imp. Considerar el perodo de muestreo T = 1

Volvemos a mostrar aqu el procedimiento Discret_imp, del apartado 2.3:

> Discret_imp := proc(F, T) local aux; aux := ztrans(subs(t=k*T, invlaplace(F, s, t)), k, z): factor(combine(aux, trig)); end:

- 63 -

Sistemas de Control en Tiempo Discreto

> F1 := 1/s; Fd := Discret_imp(F1, 1);


F1 := Fd := 1 s z z1

Esta es la seal continua.

> plot(invlaplace(F1, s, t), t=0..Pi);

Seal muestreada. Obsrvese que el sistema es crticamente estable (tiene un polo en el crculo unitario z = 1, y la inversa se mantiene estable en el infinito, pero no tiende a cero). Estabilidad.

> fd1 := invztrans(Fd, z, k): plot([seq([k, fd1], k=0..3)], style=point);

- 64 -

Captulo 2: Discretizacin de una Seal

2.5.3.- Discretizar por invarianza al impulso F( s ) =

. 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 8 4 z e z e

> plot(invlaplace(F2, s, t), t=0..Pi);

La inversa tiende a cero: el sistema es estable. Estabilidad.

- 65 -

Sistemas de Control en Tiempo Discreto

> fd2 := invztrans(Fd, z, k): plot([seq([k/8, fd2], k=0..24)], style=point);

2.5.4.- Discretizar por invarianza al impulso

F( s ) =

3 ( s + 20 ) ( s + 11 ) ( s + 7 )

Utilizar el procedimiento Discret_imp. Considerar el perodo de muestreo


T= 1 6

> F3 := 3/((s+20)*(s+11)*(s+7)); Fd := simplify(Discret_imp(F3, 1/6));


F3 := 3 1 ( s + 20 ) ( s + 11 ) ( s + 7 )

Fd :=

-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 ze ze ze

- 66 -

Captulo 2: Discretizacin de una Seal

> plot(invlaplace(F3, s, t), t=0..Pi, axes=frame);

La inversa tiende a cero: el sistema es estable. Estabilidad.

> fd3 := invztrans(Fd, z, k): plot([seq([k/6, fd3], k=0..18)], style=point);

2.5.5.- Discretizar por invarianza al impulso F( s ) = como perodo de muestreo.

1 2 s 3

. Considerar T =

1 2

> F4 := 1/(s^2-3); Fd := simplify(Discret_imp(F4, 1/2));


F4 := 1 2 s 3

Fd :=

1 6 1 2 z e

3 z (e 3

( 3)

1) 3

1 2 1 z e

- 67 -

Sistemas de Control en Tiempo Discreto

> plot(invlaplace(F4, s, t), t=0..Pi, axes=frame);

Puede verse que la inversa no tiende a cero, ya que el sistema es inestable. Estabilidad.

> fd4 := evalf(invztrans(Fd, z, k)): plot([seq([k/2, fd4], k=0..6)], style=point);

2.5.6.- Discretizar por invarianza al escaln F(s) = 1/s. Utilizar el procedimiento Discret_esc. Considerar T = 1 como perodo de muestreo.

Volvemos a mostrar aqu el procedimiento Discret_esc, del apartado 2.4:

> Discret_esc := proc(F, T); ((z-1)/z)*ztrans(subs(t=k*T, invlaplace(F/s, s, t)), k, z); end:

- 68 -

Captulo 2: Discretizacin de una Seal

> F1; Fd := Discret_esc(F1, 1);


F1 := 1 s

Fd :=

1 z1

Esta es la seal continua.

> plot(invlaplace(F1/s, s, t), t=0..2*Pi);

Seal discretizada. El sistema discreto tiene un polo en z = 1, por lo que es crticamente estable. Puede apreciarse que la salida no sigue a la entrada escaln. Estabilidad.

> fd1 := invztrans(Fd*(z/(z-1)), z, k): plot([seq([k, fd1], k=0..6)], style=point);

- 69 -

Sistemas de Control en Tiempo Discreto

2.5.7.- Discretizar por invarianza al escaln F( s ) = procedimiento Discret_esc. Considerar T =


1 4

1 (s + 2) (s + 5)

. Utilizar el

como perodo de muestreo.

> F2; Fd := simplify(Discret_esc(F2, 1/4));


F2 :=
1 2 5 4

1 (s + 2) (s + 5)
7 4 1 2 5 4

Fd :=

1 2ze 30

5ze

+3+3e

z5e

+2e

1 5 2 4 z e 1 1 z e

> plot(invlaplace(F2/s, s, t), t=0..2*Pi);

Comprobamos ahora el teorema del valor final para sistemas continuos [REF. 2]:
lim x( t ) = lim s X( s ) t s0

- 70 -

Captulo 2: Discretizacin de una Seal

Como se trata de un sistema estable, el valor de la funcin de transferencia del sistema, tiende a cero en el infinito. Estabilidad.

> limit(x(t), t=infinity) := limit(s*F2, s=0);


lim x( t ) := 0 t

Se trata de un sistema estable, en el que la salida sigue a la entrada en escaln.

> fd2 := invztrans(Fd*(z/(z-1)), z, k): plot([seq([k/4, fd2], k=0..24)], style=point);

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.

> limit(x(k*T), k=infinity) = limit((1-z^(-1))*Fd, z=1);


lim x( k T ) = 0 k

- 71 -

Sistemas de Control en Tiempo Discreto

2.5.8.- Discretizar por invarianza al escaln

F( s ) =

3 ( s + 20 ) ( s + 11 ) ( s + 7 ) 1 6

Utilizar el procedimiento Discret_esc. Considerar T = muestreo.

como perodo de

> F3; Fd := simplify(Discret_esc(F3, 1/6));


3 1 ( s + 20 ) ( s + 11 ) ( s + 7 )

Fd :=

1 60060

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 2 6 6 6 2 2 3 2 z + 495 z e 455 z e + 77 z e 572 z e 378 e 9 19 2 3 2 3 z + 40 e z 117 e z + 117 572 e + 7 11 10 6 6 3 1 z e 1 1 z e z e

> plot(invlaplace(F3/s, s, t), t=0..2*Pi);

- 72 -

Captulo 2: Discretizacin de una Seal

Se trata de un sistema estable, en el que la salida sigue a la entrada en escaln. Estabilidad.

> fd3 := invztrans(Fd*(z/(z-1)), z, k): plot([seq([k/6, fd3], k=0..36)], style=point);

2.5.9.- Discretizar por invarianza al escaln F( s ) = Considerar T =


1 2

1 s 3 2

. Utilizar Discret_esc.

como perodo de muestreo.

> F4; Fd := simplify(Discret_esc(F4, 1/2));


1 2 s 3
1 2 3 3 1 2 3 3

Fd :=

1 ze 6

( 3)

2ze

+e

( 3)

+z2e 1 2

+1

1 2 2 z e

ze

( 3)

z+e

- 73 -

Sistemas de Control en Tiempo Discreto

> plot(invlaplace(F4/s, s, t), t=0..2*Pi, axes=frame);

Se trata de un sistema inestable, por lo que la salida no sigue a la entrada en escaln. Estabilidad.

> fd4 := evalf(invztrans(Fd*(z/(z-1)), z, k)): plot([seq([k/2, fd4], k=0..12)], style=point);

- 74 -

Captulo 2: Discretizacin de una Seal

2.6 REFERENCIAS.
[REF. 1] K. Ogata, Sistemas de Control en Tiempo Discreto, Prentice-Hall, 2 edicin, 1996 [REF. 2] A.V.Openheim, A.S.Willsky, con la colaboracin de I.T. Young, Seales y sistemas, Prentice-Hall, 1994

- 75 -

Potrebbero piacerti anche