Está en la página 1de 297

INTRODUCCIN

Este Trabajo ha sido realizado con la intencin de tratar de forma entendible el


anlisis y diseo de sistemas de control en tiempo discreto. Este curso interactivo ha
sido desarrollado con el ordenador en el Sistema de Computacin Matemtica (S.C.M.)
'Maple V', para que el alumno avance en los conocimientos tericos sobre la materia, al
mismo tiempo que se familiariza con el uso de esta aplicacin.
Los autores hemos tenido la oportunidad de estar vinculados con profesores de
otras escuelas de la U.P.M. pudiendo contrastar experiencias sobre la utilizacin de
paquetes de matemticas en asignaturas propiamente de ingeniera. Por ejemplo, en la
E.T.S. de ingenieros de telecomunicaciones llevan muchos aos utilizando el programa
MatLab en asignaturas de control y robtica. Nosotros hemos preferido utilizar el
programa Maple V por ser ms adecuado para la manipulacin simblica, ya que
MatLab est orientado fundamentalmente a aplicaciones numricas.
El entorno Maple V se incluye dentro de los sistemas de computacin
matemtica, es decir, es un sistema de software diseado para el tratamiento y
resolucin de problemas matemticos. Aunque su caracterstica fundamental es su
capacidad simblica, tambin incluye programas de tratamiento numrico y programas
para dibujar y manejar grficos. Adems, incluye paquetes y libreras especficos para
problemas de carcter menos general, como por ejemplo de lgebra Lineal, de Variable
Compleja, de Ecuaciones Diferenciales, etc.
Otra de las caractersticas fundamentales de Maple V, es que incluye un lenguaje
de programacin de alto nivel que nos permite crear nuestras propias funciones y
procedimientos. Al estar orientado este curso a alumnos de postgrado, su formacin
como programador debe facilitarle el manejo de este lenguaje.
Estructura del curso. Este Trabajo se ha divido en siete captulos, que se
componen a su vez de varios apartados. Un primer apartado a modo de introduccin,

-i-

Sistemas de Control en Tiempo Discreto

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 -

Tambin se ha realizado un glosario de trminos en un archivo llamado glosario.mws,


en el cual se tienen todos los enlaces por orden alfabtico, de forma que en cualquier
momento podemos acceder a una determinada definicin o propiedad sin ms que
buscarla en el glosario. Al final de cada captulo de Maple V se encuentran enlaces al
captulo anterior, al siguiente, al glosario y al ndice, que llamaremos Men Principal.
Se puede acceder a ellos a travs del correspondiente bookmark: Enlaces. Otra forma
de acceder a un determinado captulo es a travs del Explorador de Windows.
Conocimientos previos del programa Maple V. A lo largo de todo el curso se
han ido mostrando y explicando las distintas sentencias de Maple utilizadas, porque el
principal objetivo de este curso es ayudar al alumno a comprender los sistemas discretos
a travs de las herramientas que nos proporciona la aplicacin Maple. Se supone que el
alumno tiene conocimiento del manejo del programa Maple a nivel de iniciacin. Sin
embargo, su formacin como programador debe facilitarle la rpida incorporacin en
este programa, que incluye un lenguaje de programacin de alto nivel. De todas formas
Maple incorpora una extensa ayuda, muy til para familiarizarse con su funcionamiento.
Conforme se va avanzando en la teora, el entorno Maple se va haciendo cada
vez ms til y necesario, ya que los clculos de los ejemplos y ejercicios aumentan en
complejidad. Su uso se hace ms ameno y productivo, debido a que sirve para ir
comprobando los conocimientos que se adquieren con la teora.
Al final de cada captulo hay una seccin de ejercicios resueltos que el
estudiante puede o bien resolverlos l mismo y luego comparar los resultados o
directamente ver las soluciones. El alumno tendr que escribir algunas funciones y
procedimientos, para lo cual tendr que tener un mnimo conocimiento sobre
programacin en Maple V, esta destreza se ir exigiendo gradualmente a lo largo del
curso, por eso se recomienda que el alumno que no tenga muchos conocimientos de
Maple V, empiece el curso por el principio, aunque s tenga conocimientos previos de
sistemas de control.

- iii -

Sistemas de Control en Tiempo Discreto

Ejercicios. En el caso concreto de los ejercicios aparece su enunciado, y una vez


realizado el ejercicio se abrir la seccin correspondiente para comprobar el resultado.
Para resolver algunos ejercicios habr que utilizar funciones y procedimientos que
aparecen en el tema correspondiente y para ello es necesario ejecutar las lneas de
comando correspondientes, para tener disponibles dichas funciones y procedimientos.
Tambin habr que ejecutar las lneas de comando correspondientes a las llamadas a
paquetes y libreras necesarias para la realizacin de los ejercicios. El diseo de los
ejercicios es el siguiente:

Enunciado del ejercicio

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

Solucin. Al pinchar aqu con el ratn aparecen los pasos a seguir

para resolver el ejercicio.


Contenido terico. Toda la parte terica del Trabajo ha sido realizada tomando
como referencias los libros sobre la materia que se muestran en la bibliografa. Las
observaciones y notas del autor, y todos los clculos realizados con Maple, as como
algunos de los ejercicios, estn hechos por el autor del presente Trabajo.
Aunque el tratamiento del curso usando la aplicacin Maple desde el principio
es innovador, sin embargo los temas elegidos en este curso son los temas clsicos que se
incluyen en un curso de sistemas de control en tiempo discreto en cualquier escuela de
ingeniera. Los contenidos a aprender estn incluidos dentro de cada hoja de trabajo
(worksheets) de Maple. Dependiendo de la worksheet estos contenidos son:
Captulo 1: "La Transformada Z". Se muestra que es una herramienta til en
teora de control en tiempo discreto. Se define la Transformada Z, as como algunos
teoremas bsicos asociados con ella.

- iv -

Captulo 2: "Discretizacin de una Seal". Los sistemas de control en tiempo


discreto pueden operar en parte en tiempo discreto, y en parte en tiempo continuo. Este
captulo muestra cmo discretizar las seales que aparecen como funciones en tiempo
continuo, y el importante papel que juega la transformada Z.
Captulo 3: "Aplicacin de la Transformada Z a Sistemas de Control
Gobernados por Ecuaciones en Diferencias". Este mtodo permite obtener una
expresin en forma cerrada para la seal de salida x ( k ) . Aqu se muestra la utilidad de
dicha aplicacin.
Captulo 4: "Estabilidad. Criterio de Jury". Se define y analiza la estabilidad de
los sistemas de control en tiempo discreto, lineales e invariantes en el tiempo, ya que
uno de los primeros objetivos al disear un sistema de control es que sea estable. En
concreto, se implementa el criterio de estabilidad de Jury.
Captulo 5: "Anlisis de Respuesta Transitoria". En este captulo se estudian las
caractersticas de la respuesta transitoria de los sistemas de control en lazo cerrado.
Captulo 6: "Diseo de Control por Establecimiento Finito (DeadBeat)". Este
captulo presenta un mtodo de diseo analtico para controladores digitales que obliga
a la secuencia de error a ser cero tras un nmero finito de perodos de muestreo (el
menor posible).
Captulo 7: "Anlisis de Respuesta en Frecuencias". Se analiza la respuesta a
una entrada senoidal de un sistema lineal en tiempo discreto invariante en el tiempo. Se
desarrolla el diseo de un sistema de control en tiempo discreto en el plano w, y la
utilizacin del diagrama de Bode.

-v-

Sistemas de Control en Tiempo Discreto

OBJETIVOS DEL CURSO


El objetivo de este Trabajo Fin de Carrera es el de realizar un curso interactivo
de sistemas discretos, orientado al diseo de sistemas de control en tiempo discreto. Se
pretende desarrollar el anlisis y diseo de sistemas de control en tiempo discreto de
forma comprensible. Al mismo tiempo se aprende a utilizar de forma prctica la
aplicacin matemtica Maple, de cara a facilitar la labor del alumno a la hora de realizar
toda serie de clculos matemticos.
Con este curso nos hemos marcado los siguientes objetivos desde el punto de
vista de la metodologa o didctica de las matemticas:

Utilizacin de Maple V como calculadora cientfica para resolver


problemas y verificar la solucin de problemas resueltos con
anterioridad.

Desarrollo y programacin de los mtodos y algoritmos estudiados en las


clases tericas como estrategia idnea para su comprensin.

Aplicacin de los conceptos y herramientas al diseo de sistemas de


control.

Conforme se va avanzando en la teora, el entorno Maple se va haciendo cada


vez ms til y necesario, ya que los clculos de los ejemplos y ejercicios aumentan en
complejidad. Su uso se hace ms ameno y productivo, debido a que sirve para ir
comprobando los conocimientos que se adquieren con la teora.
En cuanto a los objetivos propios de cada uno de los diferentes captulos, en el
primer captulo se pretende presentar las definiciones de la transformada Z, los teoremas
bsicos asociados a ella, y los mtodos para encontrar la transformada z inversa.
El objetivo del segundo captulo es el de presentar las formas de discretizacin
ms usadas en teora de control: por invarianza al impulso y por invarianza al escaln.

- vi -

El objetivo del tercer 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.
El objetivo del cuarto captulo es analizar la estabilidad de los sistemas de
control en tiempo discreto, mostrar el criterio de estabilidad de Jury, e implementarlo
como una funcin de Maple.
El objetivo del quinto captulo es analizar la respuesta transitoria de los sistemas
de control en tiempo discreto, y considerar la respuesta del sistema de control en tiempo
discreto a entradas en el dominio del tiempo, como son entradas escaln.
El objetivo del sexto captulo es presentar el mtodo de diseo analtico
DeadBeat, su desarrollo terico, el algoritmo por el que se rige, as como su desarrollo
prctico.
El objetivo del sptimo captulo es el de analizar la respuesta en frecuencia en
los sistemas de control digital, as como el diseo de un sistema de control en tiempo
discreto en el plano w, mediante la utilizacin de un diagrama de Bode.

- vii -

Sistemas de Control en Tiempo Discreto

USO DE LA APLICACIN MAPLE


Generalmente los problemas de la ciencia y de la tcnica se formalizan en
trminos matemticos. La solucin de muchos de estos problemas requiere no slo
clculos numricos, sino tambin manipulaciones simblicas y algebraicas, porque es
necesario manejar frmulas y los clculos han de hacerse de modo exacto.
Por otra parte, es frecuente que la solucin a ciertos problemas, aunque conocida
de modo terico, resulte difcil de obtener en la prctica, debido a la complejidad de los
clculos necesarios.
En la ltima dcada han aparecido diferentes entornos de software que se
encuentran dentro de los denominados Sistemas de Computacin Matemtica (S.C.M.),
orientados al clculo simblico. Algunos son de propsito general, como Derive, Maple,
Mathematica, Macsyma, etc. Otros son de propsito especfico, como f(z), Fields &
Operators, etc.
Dentro de los primeros, los ms extendidos son Maple y Mathematica, los cuales
tienen caractersticas similares tanto en prestaciones como en requisitos de memoria.
Maple parece superior en el ncleo de clculo simblico.
Tambin hay software para el clculo numrico. El ms utilizado por los
ingenieros de control es el Matlab, que sirve de soporte en cursos de lgebra lineal,
teora de matrices y clculo numrico. Recientemente se ha integrado tambin en los
paquetes de clculo simblico, incorporando el Kernel de Maple.

- viii -

Maple es uno de los sistemas de clculo cientfico (simblico, numrico y


grfico) ms capaces y difundidos en la actualidad. Se usa en todo tipo de mquinas
(MS-DOS, Windows, Macintosh, UNIX), y para mltiples aplicaciones cientficas,
tcnicas, investigadoras, docentes, etc. Las principales caractersticas de Maple son:

Maple es un sistema interactivo: el usuario introduce expresiones, el


sistema las evala, muestra el resultado correspondiente y queda a la
espera de nuevas instrucciones.

La sintaxis de Maple, prxima a la notacin matemtica, es muy


apropiada para expresar algoritmos matemticos.

Maple usa un lenguaje de programacin sencillo, de alto nivel y con


estructuras de control de tipo tradicional, que han sido utilizadas
anteriormente por muchos alumnos.

Requisitos mnimos para el funcionamiento. Los requisitos mnimos para


poder ejecutar el curso son los siguientes:

Ordenador PC con procesador Pentium I superior.

16 Mb de RAM.

Ms de 20 Mb de espacio libre en disco duro.

Microsoft Windows 95 superior, Windows NT Windows XP.

Maple V Release 5.1 superior.

La presentacin de este curso se realiza con Maple 7. En esta versin los


nmeros en coma flotante se denominan como Float, mientras que en la versin de
Maple V.5 se denominan como float. Este cambio afecta al procedimiento Factoriz
del Captulo 6. Si se quiere ejecutar el curso con la versin de Maple V.5, habra que
cambiar dicho procedimiento, escribiendo float donde corresponda.

- ix -

Sistemas de Control en Tiempo Discreto

Funcionamiento del curso. En primer lugar se abre el archivo de Maple


sctd.mws (sistemas de control en tiempo discreto) que ejecutar el programa Maple V.
El estudiante puede ver una pantalla donde aparecen todos los captulos con sus
diferentes secciones, incluido ejercicios propuestos con soluciones y bibliografa. Cada
seccin tiene un enlace para acceder a ella directamente. A esta pantalla le llamaremos
men principal.
Una vez seleccionada una de estas secciones, Maple abre su worksheet
correspondiente. Esta hoja de trabajo contiene los comandos de Maple y la leccin que
el estudiante debe aprender con las instrucciones necesarias para realizar dicho
aprendizaje. Cuando el estudiante finaliza estos apartados, debe realizar ciertos
ejercicios que le sirvan para contrastar su conocimiento sobre la materia tratada. Una
vez realizados los ejercicios puede desplegar la solucin para contrastar los resultados.
Si a una seccin se ha accedido desde un enlace del men principal, con la
flecha que aparece en la barra de herramientas tambin se vuelve al men principal.
Si se ha ejecutado algn grupo de ejecucin antes de utilizar dicha flecha, aparecer en
pantalla un mensaje preguntando si se desea salvar el archivo. Si nos hemos movido
entre enlaces de un mismo captulo, habra que decir que no para poder volver a donde
se estaba antes.
Al final de cada captulo aparecen enlaces al captulo anterior, al siguiente, al
men principal y otro al glosario. Con [Ctrl + fin] vamos al final del captulo. Con
[View / Bookmarks] vamos a las distintas secciones de un mismo captulo. En cualquier
momento se puede acceder a cualquier tema a travs de los enlaces. Por eso en la
mayora de los apartados se empieza ejecutando una lnea de comando que inicializa la
aplicacin Maple y carga las libreras necesarias para trabajar.

-x-

Captulo 1: La Transformada Z

Captulo 1.
LA TRANSFORMADA Z.

-1-

Sistemas de Control en Tiempo Discreto

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

suficientemente corto, como para aproximar el dato de dichos instantes discretos


consecutivos con una interpolacin sencilla.
Se dice que un sistema es causal si su salida en cualquier instante de tiempo
depende slo de los valores de la entrada en el tiempo presente y en el pasado. A estos
sistemas tambin se les llama sistemas no anticipativos, ya que la salida del sistema no
anticipa valores futuros de la entrada. Un sistema es estrictamente causal si la salida
slo depende de los valores de la entrada en los instantes de tiempo pasado.

A modo de ejemplo, el sistema definido por la ecuacin

x(t) = 2u(t) + u(t-1)

es causal. Y el sistema definido por la ecuacin

x(t) = u(t-1)

es estrictamente causal. Sin embargo, el sistema definido por la ecuacin

x( t ) = u ( t ) - u ( t + 1 )

no es causal.

-3-

Sistemas de Control en Tiempo Discreto

Se dice que un sistema es subamortiguado cuando su salida en el dominio del


tiempo se estabiliza alcanzando el valor uno, tras una serie de oscilaciones. Si alcanza
dicho valor sin oscilaciones, el sistema tiene amortiguamiento crtico. Se dice que un
sistema es sobreamortiguado cuando su salida acaba alcanzando el valor uno sin
oscilaciones. Para comprender mejor estos conceptos, dibujamos dichas funciones en el
dominio del tiempo.

Si la funcin que define cada elemento de la secuencia de salida es lineal, el


sistema se denomina as mismo lineal. Si los coeficientes que definen el sistema son
constantes, el sistema lineal es invariante en el tiempo. Dichos sistemas se pueden
representar mediante ecuaciones en diferencias lineales con coeficientes constantes.
[REF. 6].
En un sistema de control en tiempo discreto, una ecuacin en diferencias lineal
con coeficientes constantes caracteriza la dinmica del sistema, relacionando la entrada
con la salida. Si se quiere determinar la respuesta del sistema a una entrada dada, hay
que resolver dicha ecuacin en diferencias. Para ello utilizamos el mtodo de la

-4-

Captulo 1: La Transformada Z

transformada Z, transformando las ecuaciones en diferencias lineales e invariantes en el


tiempo en ecuaciones algebraicas en el plano z (la variable compleja). De igual manera,
para sistemas continuos la transformada de Laplace transforma las ecuaciones
diferenciales en ecuaciones algebraicas en s (variable compleja). [REF. 1].
Polos y ceros en el plano z. Dado un sistema discreto lineal e invariante en el
tiempo, y causal, el mtodo de la transformada z da lugar a una funcin X( z ) que puede
tener la siguiente forma:

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-

Sistemas de Control en Tiempo Discreto

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

Para una secuencia de nmeros x ( k ) , la transformada z se define como:

X( z ) = ( x( k ) ) =

x( k ) z

( k )

k=0

La transformada z definida mediante estas ecuaciones se conoce como


transformada z unilateral. La transformada z viene representada por el smbolo
Z. En la transformada z unilateral, se supone que x ( t ) = 0, x ( k ) = 0, para valores
negativos de t y k. As mismo, z es una variable compleja.
Por ejemplo, la transformada z de la secuencia impulso que viene definida
por x ( 0 ) = 1, x ( 1 ) = 0, x ( 2 ) = 0, ... ser:

x( k ) z
X(z) =
k=0

( k )

=z

=1

-6-

Captulo 1: La Transformada Z

Es importante resaltar que, cuando se trata con una secuencia de tiempo


x ( k T ) obtenida mediante muestreo, la transformada z, X ( z ) , involucra al periodo
de muestreo T. Por otro lado, para una secuencia de tiempo x ( k ) , la transformada no
incluye explcitamente a T.
La transformada z de x ( t ) , para - < t < , o de x ( k ) , donde k adopta
cualquier valor entero o cero, se define mediante las siguientes ecuaciones:

X( z ) = ( x( t ) ) = ( x( k T ) ) =

x( k T ) z

( k )

k =

X( z ) = ( x( k ) ) =

x( k ) z

( k )

k =

La transformada z definida mediante estas ecuaciones se conoce como


transformada z bilateral, en la que se supone que x ( t ) es distinta de cero y que la
secuencia x ( k ) tiene valores distintos de cero, para valores negativos de t y k.
A partir de ahora, cuando hablemos de la transformada z, nos referiremos a la
transformada z unilateral, ya que al referirnos a secuencias en el tiempo, t no tiene
valores negativos.

-7-

Sistemas de Control en Tiempo Discreto

Ejemplos:
Trabajamos

ahora

con

las

funciones

de

Maple

disponibles. 'restart'

inicializa el sistema. 'ztrans' es la funcin que realiza la transformada z, y


mostramos ahora algunos ejemplos de su funcionamiento:

> restart:

Sin tener en cuenta el periodo de muestreo:

> ztrans(t^2, t, z);


z (z + 1)
(z 1)

Considerando el periodo de muestreo:

> ztrans((k*T)^2, k, z);


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

> ztrans(1-exp(-a*k*T), k, z);


z
z1

z
( a T )

( a T )

-8-

Captulo 1: La Transformada Z

> simplify(%);
z ( 1 + e
(z 1) (z e

(a T )

(a T)

1)

> ztrans(Dirac(k*T), k, z);


Dirac( 0 )

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-

Sistemas de Control en Tiempo Discreto

1.3 TRANSFORMADA Z DE FUNCIONES ELEMENTALES.


El objetivo de esta seccin es el manejo de la funcin 'ztrans' para aprender a
obtener la transformada z de una funcin, y ver las diferencias entre la transformada z
de una seal x ( t ) y otra x ( k T ) . A continuacin se presentar la transformada z de
varias funciones elementales. Hemos escogido las que consideramos ms bsicas
(funcin escaln unitario, rampa unitaria, exponencial, seno y coseno), pues el resto se
pueden representar como combinaciones de stas.
l1 es una lista de funciones elementales sin tener en cuenta el perodo de
muestreo. Considerando dicho perodo T, creamos la lista de funciones l2. Se presenta
ahora un array en el que se pueden apreciar dichas funciones y sus correspondientes
transformadas, observando la diferencia entre Z ( x ( t ) ) y Z ( x ( k T ) ) . Para ver alguna
funcin ms, slo hay que aadirla en la lista, y ejecutar nuevamente las instrucciones
Maple.

> restart:

> l1 := [1, t, a^t, exp(-a*t), sin(omega*t), cos(omega*t)];


t ( a t )
l1 := [ 1, t , a , e
, sin( t ), cos( t ) ]

> l2 := [1, k*T, a^(k*T), exp(-a*k*T), sin(omega*k*T), cos(omega*k*T)];


l2 := [ 1, k T, a

( k T ) ( a k T )
,e
, sin( k T ), cos( k T ) ]

- 10 -

Captulo 1: La Transformada Z

> array(1..nops(l1)+1, 1..4, [ [`x(t)`, `X(z)`, `x(kT)`, `X(z)`],


seq( [l1[j], simplify(ztrans(l1[j], t, z), radical),
l2[j], simplify(ztrans(l2[j], k, z))], j=1..nops(l1) )]);
x(t)

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)

Sistemas de Control en Tiempo Discreto

1.4 PROPIEDADES DE LA TRANSFORMADA Z.


En esta seccin se presentan las herramientas bsicas de Maple necesarias para
estudiar las propiedades ms importantes y los teoremas tiles de la transformada z, tal
y como vienen descritas en [REF. 5]. Se supone que la funcin del tiempo x ( t ) tiene
transformada z, y que x ( t ) = 0 para valores negativos de t. As mismo, se considera
X ( z ) como la transformada z de x ( t ) .
1.4.1.- Linealidad de la transformada z.
Si f ( k T ) y g ( k T ) tienen transformada z, y y son escalares, siendo T el
periodo de muestreo, entonces

( f( k T ) + g( k T ) ) = ( f( k T ) ) + ( g( k T ) )

Considerando F(z) y G(z) las respectivas transformadas z de f ( k T ) y g ( k T ) ,


tenemos

( f( k T ) + g( k T ) ) = F( z ) + G( z )

1.4.2.- Multiplicacin por a k T .


Si X(z) es la transformada z de x ( k T ) entonces

a k T x(k T ) = X (a 1 z )

- 12 -

Captulo 1: La Transformada Z

1.4.3.- Desplazamiento: Teorema de traslacin real.


Siendo n un entero no negativo (positivo o cero), entonces

( 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

1.4.4.- Teorema de traslacin compleja.


Si x ( t ) tiene la transformada z, X ( z ) , entonces la transformada z de

e at x(t )

viene dada por

X ( z e aT )

1.4.5.- Teorema del valor inicial.


Si x ( t ) tiene por transformada z, X ( z ) , y si el lim X (z ) existe, entonces el
z

valor inicial x ( 0 ) de x ( t ) x ( k ) est dado por

x(0) = lim X ( z )
z

- 13 -

Sistemas de Control en Tiempo Discreto

El teorema del valor inicial es conveniente para verificar la incidencia de posibles


errores en el clculo de la transformada z. Debido a que x ( 0 ) se suele conocer,
comprobar su valor mediante el lmite ayuda a descubrir errores en la transformada z, si
stos se producen.
1.4.6.- Teorema del valor final.
Suponemos que x ( k T ) , siendo T el periodo de muestreo, tiene la transformada
z, X ( z ) , con x ( k T ) = 0 para valores negativos de k, y que todos los polos de
X ( z ) estn dentro del crculo unitario, con la posible excepcin de un slo polo en
z = 1. Esta es la condicin para la estabilidad de X ( z ) , es decir, la condicin para que
x ( k T ) (k = 0, 1, 2...) permanezca finita. Entonces el valor final de x ( k T ) , que es su
valor conforme el tiempo tiende a infinito, puede obtenerse mediante

lim x(k T ) = lim(1 z 1 ) X ( z )

z 1

El teorema del valor final es muy til para determinar el comportamiento de


x ( k ) a medida que k tiende a infinito, a partir de su transformada z, X ( z ) .

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

> f1 := k -> piecewise(k<1 ,0 , 1):


f2 := k -> piecewise(k<4, 0, 1):
transform1 = ztrans(f1(k), k, z);
plot({f1(k), f2(k)}, k=0.1..7, axes=frame);
transform2 = ztrans(f2(k), k, z);
transform1 =

transform2 =

1
z1

1
3
z (z 1)

Ahora aplicamos el teorema de traslacin, comprobando que se obtienen


transformadas anteriores:

- 15 -

las

Sistemas de Control en Tiempo Discreto

> trans1 = z^(-1)*ztrans(1, t, z);


trans2 = z^(-4)*ztrans(1, t, z);
trans1 =
trans2 =

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.

> ZETA(sin(omega*k*T)) := ztrans(sin(omega*k*T), k, z);


ZETA(exp(-a*k*T)*sin(omega*k*T)) :=
simplify(subs(z=z*exp(a*T), %), radical, exp);

( 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

Ahora aplicamos directamente la transformada z, para comprobar el resultado.


Las operaciones matemticas que se realizan, son para dejar la ecuacin exactamente
igual. Lo nico que se hace es calcular la transformada, y multiplicar numerador y
denominador por e 2 a T , para que quede como la anterior.

- 16 -

Captulo 1: La Transformada Z

> trans := simplify(ztrans(exp(-a*k*T)*sin(omega*k*T), k, z),


radical, exp):
numerador

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

mediante el teorema del valor inicial.

> X(z) := (1-exp(-T))*z^(-1) / ((1-z^(-1))*(1-exp(-T)*z^(-1))):


x(0) = limit(X(z), z=infinity);
x( 0 ) = 0

- 17 -

Sistemas de Control en Tiempo Discreto

Ahora comprobamos que el valor es correcto, hallando la transformada z inversa de


X(z). Para ello se utiliza la funcin 'invztrans', que se encuentra en la librera estndar
de Maple.

> invztrans(X(z), z, n);


x(0) = subs(n=0, %);
1 n

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

> X(z) := (1/(1-z^(-1))-1/(1-exp(-a*T)*z^(-1))):


limit(x(k*T), k = infinity) = limit((1-z^(-1))*X(z), z=1);
lim x( k T ) = 1
k

- 18 -

Captulo 1: La Transformada Z

Ahora comprobamos que el valor es correcto, hallando la transformada z inversa de


X(z).

> assume(T>0): assume(a>0):


invztrans(X(z), z, n);
x(infinity) = limit(%, n=infinity);
unassign('T'): unassign('a'):
1 n

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 -

Sistemas de Control en Tiempo Discreto

1.5 LA TRANSFORMADA Z INVERSA.


Utilizamos Maple para el clculo y estudio de la transformada z inversa. La
transformada z inversa de X ( z ) da como resultado la correspondiente secuencia de
tiempo x ( k T ) .
Se debe observar que a partir de la transformada inversa slo se obtiene la
secuencia de tiempo en los instantes de muestreo. Por lo tanto, la transformada z inversa
de X ( z ) da como resultado una nica x ( k T ) , pero no una nica x ( t ) , ya que no dice
nada de los valores de x ( t ) en los instantes de tiempo no muestreados. Esto significa
que puede haber distintas funciones de tiempo xi (t ) con la misma x ( k T ) . A
continuacin se muestra un ejemplo, con el perodo de muestreo T =

> restart: Digits := 5:

> 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

NOTA: En el ejemplo anterior no se cumple el teorema de muestreo, el cual exige que


2 M < s , para la seal continua x ( t ) , d o n d e s =

2
T

es la frecuencia de

muestreo y M es la frecuencia ms alta presente en la seal. En este caso, con el


periodo de muestreo T = , s = 2 . [REF. 6], [REF. 7]. Con esta frecuencia de
muestreo, dos seales distintas son muestreadas de igual modo. En este caso, las
oscilaciones de x2( k ) que no se ven en x1( k ) por estar entre instantes de muestreo se
denominan oscilaciones ocultas.

Existen diferentes mtodos para calcular la transformada z inversa. Un mtodo


obvio es referirse a una tabla de transformadas z, pero es laborioso (si se utiliza una
tabla de transformadas z no muy extensa, es necesario expresar una transformada z
complicada como una suma de transformadas z ms sencillas). ste es el mtodo que
usa Maple (expansin en fracciones parciales). Existen cuatro mtodos para obtener la
transformada z inversa [REF. 5]:

1.- Mtodo de la divisin directa. En este mtodo la transformada z inversa se

obtiene mediante la expansin de X ( z ) en una serie infinita de potencias de z - 1 . Este


mtodo es til cuando es difcil obtener una expresin en forma cerrada para la
transformada z inversa, o se desea encontrar slo algunos de los primeros trminos de
x(k).

2.- Mtodo computacional. En este mtodo, la transformada z inversa se obtiene

utilizando la funcin delta de Kronecker 0( k T ), donde

0( k T ) =

para k = 0

para k 0

- 21 -

Sistemas de Control en Tiempo Discreto

Suponiendo que u ( k ) , la entrada al sistema G ( z ) es la entrada Delta de Kronecker, la


transformada z de la entrada delta de Kronecker es U ( z ) = 1. Lo vemos con un
ejemplo, con el enfoque de la ecuacin en diferencias, para la ecuacin

G( z ) =

X( z )
U( z )

.4673 z .3393
2
z 1.5327 z + .6607

Dicha ecuacin se puede escribir como

2
( z 1.5327 z + .6607 ) X( z ) = ( .4673 z .3393 ) U( z )

Esta ecuacin se puede convertir en una ecuacin en diferencias como sigue:

x( k + 2 ) 1.5327 x( k + 1 ) + .6607 x( k ) = .4673 u( k + 1 ) .3393 u( k )

donde u( 0 ) = 1 y u( k ) = 0 para k 0 , x( k ) = 0 para k < 0. [u( k ) es la entrada


Delta de Kronecker]. Encontrar la transformada z inversa se convierte ahora en el
problema de resolver la ecuacin en diferencias para u( k ) .
3.- Mtodo de expansin en fracciones parciales. Es el mtodo que utiliza

Maple. Es idntico al que se utiliza en la transformada de Laplace, y requiere que todos


los trminos de la expansin en fracciones parciales se puedan reconocer fcilmente en
la tabla de pares de transformadas z. Si X( z ) tiene uno o ms ceros en el origen (z = 0),
entonces

X ( z)
X( z ) se expande en la suma de trminos sencillos de primer o
z

segundo orden mediante la expansin en fracciones parciales, y se emplea una tabla de


transformadas z para encontrar la funcin del tiempo correspondiente para cada uno de
los trminos expandidos.

- 22 -

Captulo 1: La Transformada Z

4.- Mtodo de la integral de inversin. El mtodo de la integral de inversin,

basado en la integral de inversin, est basado en la teora de variable compleja, siendo


necesario tambin revisar el teorema de los residuos [REF. 5]. La ecuacin que da la
transformada z inversa en trminos de los residuos se puede obtener como sigue:

x(k T ) = k1 + k 2 + L + k m = residuo de X ( z ) z k - 1 en el polo z = z i de X ( z ) z k - 1


i =1

= 1 ( X ( z ) )

Para calcular la transformada z inversa, se puede usar la funcin 'invztrans' de


Maple que opera calculando la descomposicin en fracciones simples de la funcin
racional F(z) y despus obtiene directamente de las tablas la transformada inversa de
cada fraccin simple.

Ejemplos:

> ztrans((k*T)^2, k, z);


invztrans(%, z, k);
2
T z (z + 1)
(z 1)

2 2
k T

- 23 -

Sistemas de Control en Tiempo Discreto

> ztrans(((k+2)*T)^2, k, z);


factor(invztrans(%, z, k));
z
z
z (z + 1)
2

T 4
+4
+
z1
2
3
(z 1)
(z 1)

2 2
(2 + k ) T

> suc := invztrans(z/(z^2+1), z, n);

suc :=

2
_ = RootOf( _Z + 1 )

Esta es la expresin de la transformada z inversa en su forma ms general. Puede


apreciarse que no hay una expresin cerrada para la transformada z inversa. Para
obtenerla, hay que aproximarla utilizando la funcin Maple 'evalf'. Lo hacemos a
continuacin.

> sucf := evalf(suc);


sucf := 1.0000 sin( 1.5708 n )

Si la dibujamos, vemos la funcin continua correspondiente.

- 24 -

Captulo 1: La Transformada Z

> plot(sucf, n=0..30);

Si intentamos dibujar la secuencia correspondiente, el resultado es el que se muestra a


continuacin.

> plot(sucf,n=0..30,style=point);

Y si lo que queremos son los valores de la seal muestreada en los instantes de


muestreo, la forma de hacerlo es a travs de la secuencia de puntos obtenida al aplicar la
transformada z inversa sin aproximarla con evalf:

> seq(suc, n=0..10);


0, 1, 0, -1 , 0, 1, 0, -1 , 0, 1, 0

> plot([seq([n,suc], n=0..30)], style=point);

- 25 -

Sistemas de Control en Tiempo Discreto

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.

> suc2 := invztrans(z/((z-3/10)*(z+9/10)), z, n);


5 3 n 5 -9 n
suc2 :=
6 10
6 10

> suc2f := evalf(suc2);


n
n
suc2f := .83333 .30000 .83333 ( -.90000 )

La secuencia resultante es:

> seq(suc2, n=1..10);


1,

-3 63 -27 4941 -22113 398763 -89667 32286681 -145280223


,
,
,
,
,
,
,
,
5 100 50 10000 50000 1000000 250000 100000000 500000000

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.

> seq(evalf(suc2), n=1..10);


seq(suc2f, n=1..10);
1., -.60000 , .63000, -.54000 , .49410, -.44226 , .39876, -.35867 , .32287, -.29056

1.0000, -.60000 , .63000, -.54000 , .49410, -.44225 , .39876, -.35867 , .32287,


-.29057

- 26 -

Captulo 1: La Transformada Z

> plot([seq([n,suc2], n=1..50)], style=point);

1.5.1 Ceros y Polos. Estabilidad.

Para un sistema de control en tiempo discreto lineal e invariante en el tiempo,


como el que se muestra a continuacin,

consideramos la siguiente funcin de transferencia en lazo cerrado:

C( z )
R( z )

G( z )
1 + G( z )

Una funcin de transferencia se define para un sistema lineal y estacionario (no


vara con el tiempo). La funcin de transferencia es la relacin entre las transformadas z
de la entrada y la salida, considerando cero todas las condiciones iniciales. De forma
anloga se podra definir para sistemas continuos [REF. 2].

- 27 -

Sistemas de Control en Tiempo Discreto

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

Sistema de control en lazo cerrado y en lazo abierto:

Un sistema de control de lazo cerrado es aquel en el que la seal de salida tiene


efecto directo sobre la accin de control. La figura anterior es un claro ejemplo de dicho
sistema. En otras palabras, los sistemas de control de lazo cerrado son sistemas de
control con realimentacin.
Por contra, un sistema de control de lazo abierto es aquel en el que la salida no
tiene efecto sobre la accin de control, lo que significa que no tiene realimentacin.
[REF. 4].
1. Para que el sistema de control en lazo cerrado sea estable, todos los polos en

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

z = 1 z = -1), entonces el sistema se convierte en crticamente estable. Tambin es


crticamente estable si un solo par de polos complejos conjugados se presentan sobre el
crculo unidad en el plano z. Cualquier polo mltiple en lazo cerrado sobre el crculo
unidad hace al sistema inestable.

- 28 -

Captulo 1: La Transformada Z

3. Los ceros en lazo cerrado no afectan a la estabilidad absoluta, y por lo tanto

pueden quedar localizados en cualquier parte del plano z.


Ejemplo.

Considere la siguiente funcin de transferencia del sistema:

G( z ) =

1
z

El sistema tiene un solo polo en z = 0, por lo que el sistema es estable.


Si un sistema es estable, su transformada z inversa tiende a cero en el infinito. Y
la salida del sistema siempre sigue a la entrada.
Si un sistema es inestable, su transformada z inversa tiende a infinito en el
lmite. Y la salida del sistema siempre va a infinito.
Y si un sistema es crticamente estable, no ocurre ninguna de estas dos cosas. O
el lmite es una constante distinta de cero, o no existe (como ejemplo, los senos,
cosenos, y la funcin ( - 1 ) k ) . En estos sistemas, hay algunas entradas que no son
seguidas por la salida (ver ejercicio 2.5.6 del captulo 2).
Sistemas de fase mnima y sistemas de fase no mnima. [REF. 4]. Las funciones
de transferencia continua que no tienen ceros en el semiplano derecho s (todos sus ceros
son estables), son funciones de transferencia de fase mnima.

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 -

Sistemas de Control en Tiempo Discreto

Pasamos ahora a utilizar las herramientas de Maple para estudiar y comprender


mejor el comportamiento de distintas funciones, en funcin de la localizacin de sus
ceros y polos [REF. 3].
La funcin de Maple 'with(plots)' sirve para trabajar con una serie de utilidades,
entre las que se encuentra la opcin 'display'. Le ponemos un punto y coma para que se
aprecien dichas opciones. Otra forma de utilizarlas sin tener que cargar la librera,
escribiendo 'plots[display]'.

> restart: with(plots);


animate, animate3d, animatecurve, arrow, changecoords, complexplot
complexplot3d, conformal, conformal3d, contourplot , contourplot3d, coordplot
coordplot3d, cylinderplot , densityplot , display, display3d, fieldplot , fieldplot3d
gradplot , gradplot3d, implicitplot , implicitplot3d, inequal, listcontplot
listcontplot3d, listdensityplot , listplot , listplot3d, loglogplot , logplot , matrixplot
odeplot , pareto, pointplot , pointplot3d, polarplot , polygonplot , polygonplot3d
polyhedra_supported , polyhedraplot , replot , rootlocus, semilogplot , setoptions
setoptions3d, spacecurve, sparsematrixplot , sphereplot , surfdata, textplot
textplot3d, tubeplot

Comportamiento de la transformada z inversa de

z
,
z p

que tiene un cero en el

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

correspondiente, para el n de puntos indicado.

- 30 -

Captulo 1: La Transformada Z

> Dibf := proc(f, m)


local inv, i, k;
global secu;
inv := simplify(evalf(invztrans(convert(f, parfrac, z), z, k))):
secu := [];
for i from 0 to m do
secu := [op(secu), [i, subs(k=i, inv)]];
od;
end:

Implementamos ahora el procedimiento 'Estab1', a la que se le pasa la funcin


antes mencionada, con un cero en el origen y un polo real y el nmero de puntos que se
quieren pintar. Este procedimiento calcula la inversa de dicha funcin, considerando los
casos en los que la raz est fuera, en el crculo unidad, o dentro del crculo unidad. En
concreto, los valores del polo son:
Fuera:

pto = 1.5,

pto = -1.5

En el crculo:

pto = 1,

pto = -1

Dentro:

pto =0.5,

pto = -0.5

Se dibujan las respectivas inversas para el nmero de puntos 'm' indicado.

- 31 -

Sistemas de Control en Tiempo Discreto

> Estab1 := proc(fun, m) local p, f;


# polo fuera del circulo unidad
p

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

> Estab1(z/(z-pto), 10);

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

complejo z1: z1 = e a (cos(b) + j sin(b) ) , donde e a es el mdulo, y b es el argumento


del nmero complejo. En realidad sera cos( b T ) y sin( b T ) , pero consideramos como
incluido el perodo T.
El conjugado de dicho complejo es z 2 = e a (cos(b) j sin(b) )

- 33 -

Sistemas de Control en Tiempo Discreto

Si tenemos dos polos complejos conjugados ( z - z 1 ) ( z - z 2 ) y operamos en su forma


exponencial, obtenemos el denominador que vamos a utilizar. Ntese que en Maple se
utiliza ' I ' para el nmero complejo

1 que nosotros en este texto llamamos ' j '.

Tambin se denomina como ' i '.

> den := (z-exp(a)*(cos(b)+I*sin(b))) * (z-exp(a)*(cos(b)-I*sin(b))):


simplify(den);
(2 a)
a
2
z 2 z e cos( b ) + e
a
El mdulo del nmero complejo es e :

a > 0 implica que el complejo est fuera del crculo unidad.


a = 0 implica que el complejo est en el crculo unidad.
a < 0 implica que el complejo est dentro del crculo unidad .
Representamos la inversa como una funcin continua, uniendo los puntos de la
secuencia, para que se aprecie mejor. Implementamos ahora el procedimiento 'Estab2',
parecido al anterior. En este caso, la funcin antes mencionada 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. En concreto, los valores son:

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

> Estab2 := proc(fun, m)

local p, f;

# polos fuera del circulo unidad

(a=1, b=Pi/2), (a=1, b=Pi/4)

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

(a=0, b=Pi/2), (a=0, b=Pi/4)

f := subs(a=0, b=Pi/2, fun):


Dibf(f, m):
p[2,1] := plot(secu, title = `b=Pi/2, a=0, en crculo unidad`):
f := subs(a=0, b=Pi/4, fun):
Dibf(f, m):
p[2,2] := plot(secu, title = `b=Pi/4, a=0, en crculo unidad`):
# polos dentro del circulo unidad

(a=-1, b=Pi/2), (a=-1, b=Pi/4)

f := subs(a=-1, b=Pi/2, fun):


Dibf(f, m):
p[3,1] := plot(secu, title = `b=Pi/2, a=-1, dentro crculo`):
f := subs(a=-1, b=Pi/4, fun):
Dibf(f, m):
p[3,2] := plot(secu, title = `b=Pi/4, a=-1, dentro crculo`):
display(p);
end:

- 35 -

Sistemas de Control en Tiempo Discreto

> Estab2(z/(z^2-2*z*cos(b)*exp(a)+exp(2*a)), 10);

Para el caso b =

, los polos tienen parte real cero, es decir, son nmeros


2
complejos imaginarios puros. Su respuesta en los casos a = 0 y a = 1 son ms
oscilatorias.

Comportamiento de la inversa de

a
z ( z e cos( b ) )
2

z 2 z cos( b ) e + e

(2 a)

, que tiene dos

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

> Estab3 := proc(fun, m)

local p, f;

# polos fuera del circulo unidad

(a=1, b=Pi/2), (a=1, b=Pi/4)

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

(a=0, b=Pi/2), (a=0, b=Pi/4)

f := subs(a=0, b=Pi/2, fun):


Dibf(f, m):
p[2,1] := plot(secu, title = `b=Pi/2, a=0, en crculo unidad`):
f := subs(a=0, b=Pi/4, fun):
Dibf(f, m):
p[2,2] := plot(secu, title = `b=Pi/4, a=0, en crculo unidad`):
# polos dentro del circulo unitario

(a=-1, b=Pi/2), (a=-1, b=Pi/4)

f := subs(a=-1, b=Pi/2, fun):


Dibf(f, m):
p[3,1] := plot(secu, title = `b=Pi/2, a=-1, dentro crculo`):
f := subs(a=-1, b=Pi/4, fun):
Dibf(f, m):
p[3,2] := plot(secu, title = `b=Pi/4, a=-1, dentro crculo`):
display(p);
end:

- 37 -

Sistemas de Control en Tiempo Discreto

> Estab3( z*(z-exp(a)*cos(b)) / (z^2-2*z*cos(b)*exp(a)+exp(2*a)) , 20);

En los 3 procedimientos que hemos visto, puede apreciarse que la transformada


z inversa tiende a cero cuando el sistema es estable (polos dentro del crculo unidad). La
transformada z inversa es inestable cuando los polos estn fuera del crculo unidad, y
crticamente estable cuando estn sobre dicho crculo unidad.

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:

1.6.1.- Obtener la transformada z de ( k T )

y de k T a

((k 1) T )

> ztrans((k*T)^2, k, z);


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

> simplify(ztrans(k*T*a^((k-1)*T), k, z));


Tz
T

( z + a )

( a t )
1 e
1.6.2.- Obtener la transformada z de x( t ) =
a

> simplify(ztrans((1/a)*(1-exp(-a*t)), t, z));


a
z ( 1 + e )
a
a (z 1) (z e 1)

- 39 -

Sistemas de Control en Tiempo Discreto

1.6.3.- Obtener la transformada z de x( k T ) = 9 k T 2

((k 1) T )

k = 0, 1, 2... siendo el periodo de muestreo T =

(k T )

+ 3

1
2

> factor(ztrans(9*k/2*2^((k-1)/2)-2^(k/2)+3, k, z));

2
1 z ( 11 z 3 4 z + 10 z 2 + 2
2

( z 1 ) ( z +

2)

2)

1.6.4.- Obtener la transformada z de la siguiente funcin:

Se crea como combinacin de la funcin de Heaviside, y despus se realiza el


clculo de su transformada. 'piecewise' crea la funcin dibujada a partir de sus valores,
y 'convert' la transforma en funcin de Heaviside.

NOTA del autor: A la funcin de Heaviside se la suele llamar escaln unitario, y se


suele notar 1(t).

> convert(piecewise(t<2, 0, t>5, 1, (t-2)/3 ), Heaviside);


5
3

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

> x := t-> 5/3*Heaviside(t-5) + 1/3*t*Heaviside(t-2) - 2/3*Heaviside(t-2)


- 1/3*Heaviside(t-5)*t:
simplify(ztrans(x(t), t, z));
2
1 z +z+1
3 4
z (z 1)

zT

1.6.5.- Obtener la transformada z inversa de X( z ) =


(a

kT.

en los instantes

z)

> combine(invztrans(z/((-z+a)^2), z, k), power);


T

T (a ) k a

( T )

1.6.6.- Obtener la transformada z inversa de X( z ) =

z (z + 2)
(z 1)

kT.

> subs(k=k*T, invztrans(z*(z+2)/(z-1)^2, z, k));


1+3kT

- 41 -

en los instantes

Sistemas de Control en Tiempo Discreto

1.6.7.- Suprimir de las listas l1 y l2 del apartado 1.3 las funciones s i n ( w t ) y


c o s ( w t ) , y aadir las funciones t 2 y t 3 , comprobando sus transformadas.

> l1:=[1, t, a^t, exp(-a*t), t^2, t^3]:


l2:=[1, k*T, a^(k*T), exp(-a*k*T), (k*T)^2, (k*T)^3]:
array(1..nops(l1)+1, 1..4, [ [`x(t)`, `X(z)`,
`x(kT)`, `X(z)`], seq( [l1[j],
simplify(ztrans(l1[j], t, z), radical),l2[j],
simplify(ztrans(l2[j], k, z))],
j=1..nops(l1) )]);
x(t)

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

1.6.8.- Realizar un procedimiento que calcule y pinte la inversa de una funcin


determinada para poder estudiar su estabilidad. Decir el nmero de puntos
que se quiere ver.

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

> Dibf := proc(f, m)


local i, k;
global secu, inversa;
inversa := simplify(evalf(invztrans(convert(f, parfrac, z), z, k))):
secu := [];
for i from 0 to m do
secu := [op(secu), [i, subs(k=i, inversa)]];
od;
end:

> Estab := proc(f, m)


local p;
p := plot(Dibf(f, m));
print(inversa);
print(p);
end:

- 43 -

Sistemas de Control en Tiempo Discreto

> Estab(z/(z+1.5), 10);


Estab(z/(z^2-2*z*cos(Pi/2)*exp(0)+exp(0)), 15);
Estab(z*(z-exp(-1)*cos(Pi/4)) / (z^2-2*z*cos(Pi/4)*exp(-1)+exp(-2)) ,9);
k ( .4054651081 k )
( -1. ) e

sin( 1.570796327 k )

( 1. k )

cos( .7853981634 k )

> Estab(1/z, 5);


Estab(1/(z^2+1), 20);
charfcn1( k )

charfcn0( k ) 1. cos( 1.570796327 k )

- 44 -

Captulo 1: La Transformada Z

1.7 REFERENCIAS.
[REF. 1]

R. Aracil Santonja, A. Jimnez Avello,


Sistemas Discretos de Control,
Ctedra de Automtica, 1987

[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]

A.V. Openheim, A.S. Willsky, con la colaboracin de I.T. Young,

Seales y sistemas,
Prentice-Hall, 1994
[REF. 7]

C. Torres Blanc,
Aproximacin a la Unificacin de Sistemas Lineales Continuos y Discretos,

Tsis Doctoral, captulo 1: Formas de Discretizacin,


U.P.M., Facultad de Informtica, 2000

- 45 -

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

-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

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

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 -

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

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 )

la transformada inversa de Laplace, y Z

- 54 -

entonces

t =k T

-1

t =k T

(ec.1)

la transformada z inversa.

Captulo 2: Discretizacin de una Seal

Ejemplo:

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

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

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

F := s

1
s+1

fs := 1 e

Fd :=

( t )

- 55 -

1 + e

T
ze 1

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

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

Fd :=

2
1 T (1 + z)
2

(z 1)

- 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

z
z
e
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

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 -

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 =

> 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

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

Fd :=

1
s

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

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

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

Utilizar el procedimiento Discret_esc. Considerar T =


muestreo.

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

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

. Utilizar Discret_esc.

s 3

como perodo de muestreo.

> 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

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 -

Captulo 3: Aplicacin de la Transformada Z ...

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

- 77 -

Sistemas de Control en tiempo Discreto

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 -

Captulo 3: Aplicacin de la Transformada Z ...

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


2
2
zecu := z ztrans( x( k ), k , z ) x( 0 ) z 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 := solve(zecu, ztrans(x(k), k, z));


Xz :=

2
x( 0 ) z + x( 1 ) z + a x( 0 ) z + ztrans( u( k ), k , z )
2
z +az+b

- 79 -

Sistemas de Control en tiempo Discreto

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


z + U( z )
2
z +az+b

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


X( z ) :=

U( z )
2
z +az+b

La funcin de transferencia del sistema es:

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


G( z ) :=

1
2
z +az+b

- 80 -

Captulo 3: Aplicacin de la Transformada Z ...

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


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

cz+d
2
z +az+b

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


9 z + 10
2
z +7z+8

- 81 -

Sistemas de Control en tiempo Discreto

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("
printf("

G(z) = %a", G);


u(t) = %a\n", input);

print(plots[display](array(1..2, [pe, ps])));


printf("Funcion de Salida x(t):");
print(x);
end:

- 82 -

Captulo 3: Aplicacin de la Transformada Z ...

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


1

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 -

Sistemas de Control en tiempo Discreto

> zent_sal2(1/z, sin(t), 10);


Funcion Transf:

Funcion Entrada:

G(z) = 1/z

u(t) = sin(t)

Funcion de Salida x(t):

.84140 charfcn0( t ) .84140 e

( .53405 10

-9

t)

cos( t ) + .54028 e

( .53405 10

-9

t)

sin( t )

OBSERVACIONES: En la ecuacin de la funcin de salida, aparece la funcin


charfcnn(t), que equivale a la funcin delta de Kronecker:

1,

para k = n

0,

para k n

n( k T ) =

Dicha funcin coincide con la funcin impulso unitario o delta de Dirac.

- 84 -

Captulo 3: Aplicacin de la Transformada Z ...

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

Sistemas de Control en tiempo Discreto

Ahora comprobamos el teorema de traslacin dando como funcin de transferencia

1
z4

para que se aprecie mejor el retardo.

> zent_sal2(z^(-4), sin(t), 20);


Funcion Transf:
G(z) = 1/z^4

Funcion Entrada:
u(t) = sin(t)

Funcion de Salida x(t):

.75667 charfcn0( t ) + .14108 charfcn1( t ) + .90926 charfcn2( t ) + .84140 charfcn3( t )


+ .75681 e

( .53405 10

-9

t)

cos( t ) .65359 e

- 86 -

( .53405 10

-9

t)

sin( t )

Captulo 3: Aplicacin de la Transformada Z ...

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

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

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

.32402 sin( 1.5708 t ) .88078 cos( 1.5708 t ) + .88078 e

- 87 -

( 1. t )

Sistemas de Control en tiempo Discreto

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

1
1

g1 := ,

z 2
z +1

l1 := [ 1, t , e

( 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:

- 88 -

Captulo 3: Aplicacin de la Transformada Z ...

> ZTransfEntSal(g1, l1);


Funcion Transf: Funcion Entrada:

G(z) = 1/z

Funcion Transf:

u(t) = 1

Funcion de Salida x(t):

1. charfcn0( t ) + 1.

Funcion Entrada:

G(z) = 1/(z^2+1)

Funcion de Salida x(t):

.50000 .50000cos( 1.5708t ) .50000sin( 1.5708t )

Funcion Transf: Funcion Entrada:

Funcion Transf:

G(z) = 1/z

G(z) = 1/(z^2+1)

u(t) = t

Funcion de Salida x(t):

charfcn0( t ) 1. + t

u(t) = 1

Funcion Entrada:

u(t) = t

Funcion de Salida x(t):

.50000 + .50000 t + .50000 cos( 1.5708 t )


(contina)

- 89 -

Sistemas de Control en tiempo Discreto

Funcion Transf: Funcion Entrada:

Funcion Transf:

G(z) = 1/z

G(z) = 1/(z^2+1)

u(t) = exp(-t)

Funcion de Salida x(t):

2.7183 charfcn0( t ) + 2.7183 e

Funcion Entrada:

Funcion de Salida x(t):

( 1. t )

.32402sin( 1.5708t ) .88078cos( 1.5708t ) + .88078e

Funcion Transf: Funcion Entrada:

Funcion Transf:

G(z) = 1/z

G(z) = 1/(z^2+1)

u(t) = sin(t)

Funcion de Salida x(t):

.84140charfcn0( t ) .84140e
+ .54028e

-9
( .5340510 t )

u(t) = exp(-t)

( .5340510

( 1. t )

Funcion Entrada:

u(t) = sin(t)

Funcion de Salida x(t):

-9

t)

cos( t )

.77867 cos( 1.5708t ) .77867e


+ .50000e

sin( t )

- 90 -

-9
( .5340510 t )

-9
( .5340510 t )

sin( t )

cos( t )

Captulo 3: Aplicacin de la Transformada Z ...

3.3 EJERCICIOS.
> restart: Digits:=5:
3.3.1.- Considerando la ecuacin en diferencias
x( k + 2 ) = 2 x( k + 1 ) x( k )

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


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


2
2
zecu := z ztrans( x( k ), k , z ) x( 0 ) z x( 1 ) z =
2 z ztrans( x( k ), k , z ) 2 x( 0 ) z ztrans( x( k ), k , z )

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


X( z ) :=

z ( x( 0 ) z + x( 1 ) 2 x( 0 ) )
2
z 2z+1

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


X( z ) :=

z
2
z 2z+1

- 91 -

Sistemas de Control en tiempo Discreto

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);
x( k ) := k

3.3.2.- Resolver la siguiente ecuacin en diferencias:


2 x( k ) 2 x( k 1 ) + x( k 2 ) = u( k )

u( k ) = {

k< 0

"k entero positivo o cero"

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 ) = Heaviside( k )

- 92 -

Captulo 3: Aplicacin de la Transformada Z ...

Tomamos la transformada z de la ecuacin en diferencias dada.

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


zecu := 2 ztrans( x( k ), k , z ) 2

ztrans( x( k ), k , z )
z

ztrans( x( k ), k , z )
z

z
z1

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

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


X( z ) :=

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

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

1
x( k ) := 1
2

2
_ = RootOf( 2 2 _Z + _Z )

- 93 -

_
_

Sistemas de Control en tiempo Discreto

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 )

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

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

- 94 -

( .34657 k )

sin( .78540 k ) )

Captulo 3: Aplicacin de la Transformada Z ...

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


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

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


2
2
zecu := z ztrans( x( k ), k , z ) x( 0 ) z x( 1 ) z =
z ztrans( x( k ), k , z ) x( 0 ) z + ztrans( x( k ), k , z )

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


X( z ) :=

z ( x( 0 ) z + x( 1 ) x( 0 ) )
2
z z1

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


X( z ) :=

z
2
z z1

> fsolve(z^2-z-1=0);
-.61803, 1.6180

- 95 -

Sistemas de Control en tiempo Discreto

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

x( k ) :=

2
_ = RootOf( 1 + _Z + _Z )

k
k

1
1

1 _

5
_

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


numrico:

> evalf(x(k));
.44722 e

( .48121 k )

.44722 1.6180

cos( 3.1416 k ) + .44722 I e

( .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:

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


0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55

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

- 96 -

Captulo 3: Aplicacin de la Transformada Z ...

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

- 97 -

Captulo 4: Estabilidad. Criterio de Jury

Captulo 4.
ESTABILIDAD.
CRITERIO DE JURY.

- 99 -

Sistemas de Control en Tiempo Discreto

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

4.2 CRITERIO DE ESTABILIDAD DE JURY.


La prueba de estabilidad de Jury es un algoritmo que se aplica directamente
sobre los coeficientes de un polinomio, sin tener que resolver las races. Dicho
polinomio ser la ecuacin caracterstica P(z) = 0. Esta prueba revela la existencia de
cualquier raz inestable (races en el plano z que se presentan fuera del crculo unitario).
Sin embargo, no da la localizacin de las races inestables. Se limita a comprobar si las
races de la ecuacin caracterstica P(z) = 0 estn dentro del crculo unidad.

- 100 -

Captulo 4: Estabilidad. Criterio de Jury

Al aplicar la prueba de estabilidad de Jury a una ecuacin caracterstica dada


P(z) = 0, construimos una tabla cuyos elementos se basan en los coeficientes de P(z).
Supongamos que la ecuacin caracterstica P(z) es un polinomio en z como el siguiente:
(n 1)
n
P ( z ) = a 0 z + a1 z

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

Sistemas de Control en Tiempo Discreto

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

y as sucesivamente hasta llegar a

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 -

Captulo 4: Estabilidad. Criterio de Jury

Criterio de estabilidad mediante la prueba de Jury. Un sistema con la


ecuacin caracterstica P(z) = 0 dada en potencias de z de la forma

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

> 0 para n par

P(-1)

< 0 para n impar

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 -

Sistemas de Control en Tiempo Discreto

4.3 IMPLEMENTACIN DEL CRITERIO DE ESTABILIDAD DE


JURY.
Primero implementamos la funcin Es_Par, que nos indica si el grado del
polinomio es par (retorna 1) o impar (retorna 0).

> restart: Digits:=5:


> Es_Par := proc (n) local ret;
ret := 0;
if ((n mod 2) = 0) then ret := 1 fi;
ret;
end:
Se implementa ahora el procedimiento Estabilidad_Jury, que dada la ecuacin
caracterstica P(z) = 0 nos dice si el sistema es estable, crticamente estable, o inestable,
mirando de una en una las condiciones del criterio.

> Estabilidad_Jury := proc (p)


local n, a, ind, cond4, renglon, val, estab, cont;
estab := 1;
n := degree(p, z);
printf("El sistema es de orden %d\n\n", n);
if (n < 2) then ERROR(`invalid n`, n) fi;
(contina)

- 104 -

Captulo 4: Estabilidad. Criterio de Jury

# tabla de estabilidad
for ind from 0 to n do
a[ind,1]

:= coeff(p, z, ind);

a[n-ind, 2] := coeff(p, z, ind)


od;
# Comprobamos primera condicion
if (abs(a[0,1]) >= a[n,1])
then estab := -1;
printf("No cumple condicion 1\n")
else printf("Cumple condicion 1\n")
fi;
# Comprobamos segunda condicion
val := subs(z=1, p);
printf(" p(1) = %g\n", val);
if (val = 0)
then if (estab = 1)
then estab := 0
fi;
printf("Condicion 2: polo en z = 1\n");
elif

(val < 0)
then printf("p(1) no cumple condicion 2\n");
estab := -1;
else printf("p(1) cumple condicion 2\n");

fi;
(contina)

- 105 -

Sistemas de Control en Tiempo Discreto

# Comprobamos tercera condicion


val := subs(z=-1, p);
printf(" p(-1) = %g\n", val);
if (val = 0)
then if (estab = 1)
then estab := 0
fi;
printf("Condicion 3: polo en z = -1\n");
elif

( ((val<0)

and

(1=Es_Par(n)))

or
((val>0)

and

(0=Es_Par(n))) )

then estab := -1;


printf("p(-1) no cumple condicion 3\n")
else printf("p(-1) cumple condicion 3\n")
fi;
(contina)

- 106 -

Captulo 4: Estabilidad. Criterio de Jury

# 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;
(contina)

- 107 -

Sistemas de Control en Tiempo Discreto

# Comprobamos cuarta condicion


cond4 := 1;
for renglon from 3 by 2 to 2*n-3 do
if (abs(a[0, renglon]) <= abs(a[cont, renglon]))
then printf(" Falla condicion 4");
cond4 := 0
fi;
cont := cont -1;
od;
if (cond4 = 1)
then printf("Cumple condicion 4")
else printf("\nNo cumple condicion 4");
estab := -1
fi;
else printf("No hay condicion 4")
fi;
# Analizamos la estabilidad
if (estab = 1)
then printf("\n\nEs Estable")
elif (estab = 0)
then printf("\n\nCriticamente Estable")
else printf("\n\nNo es Estable")
fi;
end:

- 108 -

Captulo 4: Estabilidad. Criterio de Jury

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

En este ejemplo se observa que p ( 1 ) = 0 (el sistema tiene un polo en z = 1).


Como se cumplen el resto de condiciones, el sistema es crticamente 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 -

Sistemas de Control en Tiempo Discreto

4.4 EJERCICIOS.

> restart: Digits:=5:

Para poder realizarlos es indispensable haber ejecutado primero el procedimiento


'Estabilidad_Jury', del apartado anterior.

4.4.1.- Determinar la estabilidad del sistema de control gobernado por la siguiente


ecuacin caracterstica:

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 -

Captulo 4: Estabilidad. Criterio de Jury

4.4.2.- Considere el sistema descrito por


y( k ) .6 y ( k 1 ) .81 y ( k 2 ) + .67 y ( k 3 ) .12 y ( k 4 ) = x( k )

donde x ( k ) es la entrada y la salida del sistema es y ( k ) . Determine la


estabilidad de dicho sistema.

La funcin transferencia de pulso para el sistema es


Y( z )
X( z )

=
1 .6 z

( 1 )

.81 z

( 2 )

+ .67 z

( 3 )

equivalente a
z

4
3
2
z .6 z .81 z + .67 z .12

por lo que tenemos


4
3
2
P( z ) = 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 )

Sistemas de Control en Tiempo Discreto

4.4.3.- Determinar la estabilidad del sistema de control gobernado por la siguiente


2
ecuacin caracterstica:
P( z ) = 2 z .17

> 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

4.4.4.- Realizar el clculo explcito de las races de la ecuacin caracterstica


4
3
2
P( z ) = z .6 z .81 z + .67 z .12
del ejercicio 4.4.2 mediante el uso de la funcin 'solve' de Maple, y
compararlo con el mtodo de Jury empleado en dicho ejercicio.

> solve(z^4-.6*z^3-.81*z^2+.67*z-.12 = 0, z);


-1., .30000, .50000, .80000

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 -

Captulo 4: Estabilidad. Criterio de Jury

A simple vista da la impresin de que ambos mtodos son igualmente vlidos.


Pero, cul es la razn para usar el criterio de Jury en vez de calcular las races con
solve? Conforme aumenta la complejidad de la ecuacin caracterstica, se hace ms

difcil calcular las races, hacindose ms necesario un mtodo para analizar la


estabilidad sin calcularlas.
Vemos ahora un ejemplo con una ecuacin caracterstica compleja, y calculamos
el tiempo invertido en cada uno de los dos mtodos, mediante la funcin time. Para
hacerlo ms real, volvemos a implementar la funcin Estabilidad_Jury, pero sin los
mensajes de informacin que se imprimen, ya que stos consumen un tiempo que no
tiene nada que ver con los clculos en s.

> Estabilidad_Jury := proc (p) local n, a, ind, cond4,


renglon, val, estab, cont;
estab := 1;
n := degree(p, z);
# tabla de estabilidad
for ind from 0 to n do
a[ind,1] := coeff(p, z, ind);
a[n-ind, 2] := coeff(p, z, ind)
od;
# Comprobamos primera condicion
if (abs(a[0,1]) >= a[n,1])
then estab := -1;
fi;
(contina)

- 113 -

Sistemas de Control en Tiempo Discreto

# Comprobamos segunda condicion


val := subs(z=1,p);
if (val = 0)
then if (estab = 1) then estab := 0 fi;
elif (val < 0)

then estab := -1;

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 -

Captulo 4: Estabilidad. Criterio de Jury

# Comprobamos cuarta condicion


cond4 := 1;
for renglon from 3 by 2 to 2*n-3 do
if (abs(a[0, renglon])<=abs(a[cont, renglon]))
then cond4 := 0
fi;
cont := cont -1;
od;
if (cond4 <> 1) then estab := -1 fi;
fi;
# Analizamos la estabilidad
if (estab = 1)
then printf("\n\nEs Estable")
elif (estab = 0)
then printf("\n\nCriticamente Estable")
else printf("\n\nNo es Estable")
fi;
end:

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 -

Sistemas de Control en Tiempo Discreto

> 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

Con ambos mtodos se llega a la conclusin de que el sistema no es estable. Sin


embargo, mientras que se tarda 0.15 sg. en calcular las races, con el criterio de Jury
slo se tardan 0.01 sg. Cuanto ms compleja sea la ecuacin, ms diferencia de tiempo
habr.

- 116 -

Captulo 4: Estabilidad. Criterio de Jury

4.5 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

- 117 -

Captulo 5: Anlisis de Respuesta Transitoria

Captulo 5.
ANLISIS DE RESPUESTA TRANSITORIA.

- 119 -

Sistemas de Control en Tiempo Discreto

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

5.2 ESPECIFICACIONES DE LA RESPUESTA TRANSITORIA.


En muchos casos prcticos, las caractersticas de diseo deseadas de los sistemas
de control, sean en tiempo continuo o en tiempo discreto, se especifican en trminos de
cantidades en el dominio del tiempo. Esto ocurre debido a que los sistemas con
almacenamiento de energa no pueden responder de forma instantnea, y siempre que
estn sujetos a entradas o perturbaciones mostrarn algunas respuestas transitorias.
Con frecuencia, las caractersticas de diseo de un sistema de control estn
especificadas en trminos de su respuesta transitoria a una entrada escaln unitario, ya
que dicha entrada es fcil de generar, y sirve para proporcionar informacin til de las
caractersticas de la respuesta transitoria. [REF. 2].

- 120 -

Captulo 5: Anlisis de Respuesta Transitoria

La respuesta transitoria de un sistema a una entrada escaln unitario depende de


las condiciones iniciales. Por comodidad, al comparar respuestas transitorias de varios
sistemas, es frecuente utilizar la condicin inicial estndar: el sistema est inicialmente
en reposo, y la salida y todas sus derivadas con respecto al tiempo son cero. Las
caractersticas de respuesta pueden entonces compararse sin dificultad.
La respuesta transitoria de un sistema de control, donde la seal de salida es en
tiempo continuo, a menudo muestra oscilaciones amortiguadas antes de llegar al estado
permanente. Igual que en el caso de los sistemas de control en tiempo continuo, la
respuesta transitoria de un sistema de control digital puede caracterizarse no slo por el
factor de amortiguamiento relativo y la frecuencia natural amortiguada [REF. 1], sino
por los parmetros que se muestran a continuacin.
Primero definimos expr, que es la funcin con la que vamos a trabajar ahora.
NOTA del autor: Aunque mostramos la expresin en funcin de k T , expr slo est en
funcin de k. A los procedimientos que describiremos a continuacin, se les pasar
como argumentos dicha expresin y su perodo de muestreo correspondiente. En este
caso concreto, T = 0.1. Tambin se le pasar el parmetro max, que es el nmero
mximo de puntos que tiene la secuencia.

> restart: Digits:=5:


f := (.13157e-1*z^3+1.1407*z^2+.13822*z-.20587) /
((z-1)*(z^2+0.3505*z-0.2642)):
expr := simplify(evalf(invztrans(f, z, k))):
subs(k=k*T, expr);
.77922 charfcn0( k T ) + .00022383 e
+ .99992 + .20778 ( -1. )

( 1.0002 k T )

( 1. + k T ) ( .33088 k T )
e

- 121 -

Sistemas de Control en Tiempo Discreto

Y ahora la pintamos, teniendo en cuenta el perodo de muestreo:

> plot([seq([k/10, subs(k=k/10,expr)], k=0..20)], style=point,


xtickmarks=10);

5.2.1 Tiempo de retardo td


El tiempo de retardo es el tiempo que tarda la respuesta en alcanzar o superar por
primera vez un valor mayor o igual que la mitad del valor final. [REF. 1].
Ejemplo:
Se define el intervalo de retardo kd como el ndice del primer elemento de la
secuencia de salida con valor mayor o igual a la mitad del valor final de sta. En los
sistemas discretos de control la salida es una respuesta temporal, por lo que el tiempo de
retardo t d se define como:

td = k d T

El procedimiento kd recibe como parmetro la secuencia de puntos de la salida y


calcula el intevalo de retardo kd . El procedimiento td calcula el tiempo de retardo
correspondiente. Sus parmetros, como ya se ha indicado, son expr, el perodo de
muestreo T y el nmero max de puntos de la secuencia.

- 122 -

Captulo 5: Anlisis de Respuesta Transitoria

> kd := proc(sec)
local i, f, mitad;
i

:= 1:

:= nops(sec):

mitad := sec[f, 2]/2;


while (sec[i,2] < mitad) do i := i+1:
od:
i-1:
end:

> td := proc(inv, T, max)


local sec, resp, i, invf;
invf := evalf(inv):
sec := []:
for i from 0 to max do
sec := [op(sec), [i, eval(subs(k=i, invf))]]:
od:
resp := kd(sec);
printf("\nTiempo de Retardo: td = %.3g\n", resp*T);
end:

> td(expr, 1/10, 20);


Tiempo de Retardo: td = .1

En el grfico de la funcin (mostrado antes) puede comprobarse visualmente este


resultado.

- 123 -

Sistemas de Control en Tiempo Discreto

5.2.2 Tiempo de crecimiento o subida t r


El tiempo de crecimiento en sistemas continuos es el tiempo requerido para que
la respuesta crezca del 10% al 90%, del 5% al 95%, o del 0% al 100% de su valor final,
segn la situacin. Para sistemas de segundo orden subamortiguados, por lo general se
utiliza el tiempo de crecimiento de 0% a 100%. Para sistemas sobreamortiguados se
suele utilizar el tiempo de crecimiento de 10% a 90%. (Ver amortiguamiento).
[REF. 1].
Se define el intervalo de subida k r como el ndice del primer elemento de la
secuencia de salida con valor mayor o igual al valor final de sta. En los sistemas
discretos de control la salida es una respuesta temporal, por lo que el tiempo de
crecimiento o subida t r se define como [REF. 3]:

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 -

Captulo 5: Anlisis de Respuesta Transitoria

> tr := proc(inv, T, max)


local resp, i, sec, invf;
invf := evalf(inv):
sec := []:
for i from 0 to max do
sec := [op(sec), [i, eval(subs(k=i, invf))]]:
od:
resp := kr(sec):
printf("\nTiempo de Crecimiento: tr = %.3g\n", resp*T);
end:
> tr(expr, 1/10, 20);
Tiempo de Crecimiento: tr = .1

En el grfico de la funcin puede comprobarse visualmente este resultado.


5.2.3 Tiempo de pico t p
El tiempo de pico es el tiempo requerido por la respuesta para alcanzar el primer
pico del sobreimpulso. [REF. 1].
Se define el intervalo de pico k p como el ndice correspondiente al elemento de
la secuencia de salida de valor mximo. [REF. 3]. Como se seal anteriormente,
teniendo en cuenta la particularidad en los sistemas discretos de control, se puede
definir el tiempo de pico como el instante en que el valor de la secuencia es mximo:

tp = k p T

- 125 -

Sistemas de Control en Tiempo Discreto

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:

> tp := proc(inv, T, max)


local resp, i, sec, invf;
invf := evalf(inv):
sec

:= []:

for i from 0 to max do


sec := [op(sec), [i, eval(subs(k=i, invf))]]:
od:

(contina)

- 126 -

Captulo 5: Anlisis de Respuesta Transitoria

resp := kp(sec):
printf("\nTiempo de Pico: tp = %.3g\n", resp*T);
printf("

Valor maximo = %.3g\n", sec[resp+1, 2]);

end:

> tp(expr, 0.1, 20);


Tiempo de Pico: tp = .1
Valor maximo = 1.149

En el dibujo se aprecia que el primer pico se obtiene en t = k T con k = 1 y T =

1
10

5.2.4 Sobreimpulso mximo Mp


El mximo sobreimpulso es el valor pico mximo de la curva de respuesta,
medido a partir de la unidad. Si el valor final en estado permanente (estabilizado) de la
respuesta difiere de la unidad, entonces es comn utilizar el sobreimpulso porcentual
mximo, definido por la relacin:

Sobreimpulso mximo porcentual =

x( tp ) x( )
x( )

100%

Siendo x( k T ) la funcin de salida o respuesta.


El valor del mximo sobreimpulso (en porcentaje), indica en forma directa la
estabilidad relativa del sistema. [REF. 1].

- 127 -

Sistemas de Control en Tiempo Discreto

Tambin se define el mximo sobreimpulso como el valor del elemento de la


secuencia de salida x( k T ) , de ndice k p , [REF. 3], por lo que entonces se define el
mximo sobreimpulso como un valor relativo en tanto por ciento del valor final:

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.

> Mp := proc(inv, T, max)


local x1, x2, resp, f, i, sec, invf;
invf

:= evalf(inv):

sec

:= []:

for i from 0 to max do


sec := [op(sec), [i, eval(subs(k=i, invf))]]:
od:
f

:= nops(sec):

x1

:= sec[kp(sec)+1, 2]:

x2

:= sec[f, 2]:

resp

:= (x1-x2)*100/x2:

printf("\nSobreimpulso Mximo Porcentual:");


printf(" Mp = %.3f%c\n", resp, "%");
printf(" Sube un %.3f%c sobre el ", resp, "%");
printf("valor final %.3g\n", x2);
printf(" Se puede apreciar en el dibujo.\n");
end:

- 128 -

Captulo 5: Anlisis de Respuesta Transitoria

> Mp(expr, 0.1, 20);


Sobreimpulso Mximo Porcentual: Mp = 14.961%
Sube un 14.961% sobre el valor final 1
Se puede apreciar en el dibujo.

5.2.5 Tiempo de establecimiento t s


El tiempo de establecimiento es el tiempo requerido por la curva de respuesta
para alcanzar y mantenerse dentro de determinado rango alrededor del valor final de un
tamao especificado, en funcin de un porcentaje absoluto de valor final, por lo general
2% 5%. El tiempo de establecimiento est relacionado con la constante de tiempo de
mayor valor en el sistema de control. El criterio para la fijacin del porcentaje de error a
usar depende de los objetivos de diseo del sistema en cuestin. [REF. 1]. En nuestro
ejemplo pasamos el porcentaje como parmetro del procedimiento, debiendo estar entre
2% y 5%.
Se define el intervalo de establecimiento k s como el ndice del primer elemento
de la secuencia de salida a partir del cual sta se mantiene en la banda del ms/menos
p% del valor final [REF. 3], siendo p el parmetro que se le pasa al procedimiento.
Asimismo, puede definirse el tiempo de establecimiento t s como:

ts = k s T

- 129 -

Sistemas de Control en Tiempo Discreto

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:

while ( (abs(sec[i,2]-c2) > ref) and (i <= f) ) do


i:=i+1:
od:
if (i=22)
then ERROR(`invalid ks`, i-1)
fi:
i-1:
end:

- 130 -

Captulo 5: Anlisis de Respuesta Transitoria

> ts := proc(inv, T, max, p)


local resp, valor, i, sec, invf;
invf := evalf(inv):
sec

:= []:

for i from 0 to max do


sec := [op(sec), [i, eval(subs(k=i, invf))]]:
od:
resp := ks(sec, p):
valor := resp*T:
printf("\nTiempo de Establecimiento:");
printf(" ts = %.3g\n", valor);
printf(" Tarda %d iteraciones en ", resp);
printf("alcanzar la banda del\n");
printf(" +/- %.3g%c del valor final.\n", p, "%");
end:

> ts(expr, 1/10, 20, 4.8);


Tiempo de Establecimiento: ts = .5
Tarda 5 iteraciones en alcanzar la banda del
+/- 4.8% del valor final.

- 131 -

Sistemas de Control en Tiempo Discreto

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 -

Captulo 5: Anlisis de Respuesta Transitoria

5.3 EJERCICIOS.
Para poder realizar los ejercicios, es imprescindible haber ejecutado los
procedimientos de los apartados anteriores. Por eso aqu no utilizamos 'restart'.

5.3.1.- Anlisis de respuesta transitoria de la siguiente expresin:


.050914 z 3 1.2230 z 2 .03125 z .15655

, z, k
exp1 := invztrans
2

( z 1 ) ( z + .3505 z .2642 )

para T = 1/5. Implementar primero un procedimiento que se encargue de


realizar todo el anlisis de respuesta transitoria.
Primero se realiza el procedimiento que calcula los tiempos de retardo,
crecimiento, pico y establecimiento, as como el sobreimpulso mximo porcentual.

> AnaliTrans := proc(expr, T, max, p);


td(expr, T, max);
tr(expr, T, max);
tp(expr, T, max);
Mp(expr, T, max);
ts(expr, T, max, p);
end:

- 133 -

Sistemas de Control en Tiempo Discreto

Se pinta la funcin discreta para el perodo de muestreo T = 1/5

> exp1 := invztrans((.50914e-1*z^3+1.2230*z^2-.3125e-1*z-.15655) /


((z-1)*(z^2+0.3505*z-0.2642)), z, k):
plot([seq([1*k/5, subs(k=1*k/5, exp1)], k=0..20)], style=point,
xtickmarks=10);

Anlisis de respuesta transitoria.

> AnaliTrans(exp1, 1/5, 20, 5);


Tiempo de Retardo: td = .2
Tiempo de Crecimiento: tr = .2
Tiempo de Pico: tp = .2
Valor maximo = 1.256
Sobreimpulso Mximo Porcentual: Mp = 25.687%
Sube un 25.687% sobre el valor final .999
Se puede apreciar en el dibujo.
Tiempo de Establecimiento: ts = 1.2
Tarda 6 iteraciones en alcanzar la banda del
+/- 5% del valor final.

- 134 -

Captulo 5: Anlisis de Respuesta Transitoria

5.3.2.- Anlisis de respuesta transitoria de la siguiente funcin:

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

> fun2 := 1-exp(-7/10*t)+3*t^2*exp(-7/10*t):


plot({fun2, 1, 4}, t=0..15, color=[wheat, wheat, red]);

Ahora la convertimos en una expresin discreta:

> exp2 := invztrans(ztrans(fun2, t, z), z, k):


simplify(subs(k=k*T, exp2));
plot([seq([3*k/5, subs(k=3*k/5, exp2)], k=0..20)], style=point);

1e


k T
10


k T
10
2 2
k T
+3e

- 135 -

Sistemas de Control en Tiempo Discreto

Anlisis de respuesta transitoria. Ntese que, a diferencia del ejercicio anterior,


en esta ocasin el tiempo de pico no coincide con los de retardo y crecimiento.

> AnaliTrans(evalf(exp2), 3/5, 20, 5);


Tiempo de Retardo: td = .6
Tiempo de Crecimiento: tr = .6
Tiempo de Pico: tp = 1.8
Valor maximo = 4.184
Sobreimpulso Mximo Porcentual: Mp = 317.960%
Sube un 317.960% sobre el valor final 1.001
Se puede apreciar en el dibujo.
Tiempo de Establecimiento: ts = 8.4
Tarda 14 iteraciones en alcanzar la banda del
+/- 5% del valor final.

5.3.3.- Anlisis de respuesta transitoria de la siguiente expresin:


2 ( t )
( 1 + 10.15 t 6.44 t ) e
+ 1

para T = 2/5

> fun3 := (-1+10.15*t-6.44*t^2)*exp(-t)+1:


plot({fun3, 1}, t=0..10, color=[wheat, red]);

- 136 -

Captulo 5: Anlisis de Respuesta Transitoria

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.

> exp3 := invztrans(ztrans(fun3, t, z), z, k):


subs(k=k*T, exp3);
plot([seq([2*k/5, subs(k=2*k/5,exp3)], k=0..20)], style=point,
xtickmarks=10);
1.0000 .36788

(k T )

+ 10.150 .36788

(k T)

k T 6.4400 .36788

Anlisis de respuesta transitoria:

> AnaliTrans(exp3, 2/5, 20, 5);


Tiempo de Retardo: td = .4
Tiempo de Crecimiento: tr = .4
Tiempo de Pico: tp = .4
Valor maximo = 1.997
Sobreimpulso Mximo Porcentual: Mp = 99.700%
Sube un 99.700% sobre el valor final 1
Se puede apreciar en el dibujo.
Tiempo de Establecimiento: ts = 4
Tarda 10 iteraciones en alcanzar la banda del
+/- 5% del valor final.

- 137 -

(k T) 2 2
k T +1

Sistemas de Control en Tiempo Discreto

5.3.4.- Anlisis de respuesta transitoria de la siguiente expresin:

1 e

10

para T = 4/5

> fun4:= 1-exp(-t/10):


plot({fun4, 1}, t=0..40, color=[wheat, red]);

Esta funcin va ascendiendo poco a poco hasta alcanzar su valor final,


acercndose a uno. En esta ocasin, tomamos 40 puntos de la secuencia al discretizar.

> exp4 := invztrans(ztrans(fun4, t, z), z, k):


simplify(subs(k=k*T, exp4));
plot([seq([4*k/5, exp4], k=0..40)], style=point);

1e

1

k
10

- 138 -

Captulo 5: Anlisis de Respuesta Transitoria

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.

> AnaliTrans(exp4, 4/5, 20, 5);


Tiempo de Retardo: td = 4.8
Tiempo de Crecimiento: tr = 16.0
Tiempo de Pico: tp = 16.0
Valor maximo = .865
Sobreimpulso Mximo Porcentual: Mp = 0.000%
Sube un 0.000% sobre el valor final .8665
Se puede apreciar en el dibujo.
Tiempo de Establecimiento: ts = 14.4
Tarda 18 iteraciones en alcanzar la banda del
+/- 5% del valor final.

5.3.5.- Anlisis de respuesta transitoria de la siguiente expresin:


1 e

(t )

2 ( t )
2t e

para T = 1/2

> fun5 := 1-exp(-t)-2*t^2*exp(-t):


plot({fun5, 1}, t=0..10, color=[wheat, red]);

- 139 -

Sistemas de Control en Tiempo Discreto

> exp5 := invztrans(ztrans(fun5, t, z), z, k):


simplify(subs(k=k*T, exp5));
plot([seq([k/2, subs(k=k/2,exp5)], k=0..20)],
style=point, xtickmarks=10);
1e

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

Captulo 5: Anlisis de Respuesta Transitoria

> AnaliTrans(exp5, 1/2, 20, 5);


Tiempo de Retardo: td = 2.5
Tiempo de Crecimiento: tr = 9.5
Tiempo de Pico: tp = 9.5
Valor maximo = 1
Sobreimpulso Mximo Porcentual: Mp = 0.000%
Sube un 0.000% sobre el valor final 1
Se puede apreciar en el dibujo.
Tiempo de Establecimiento: ts = 4
Tarda 8 iteraciones en alcanzar la banda del
+/- 5% del valor final.

- 141 -

Sistemas de Control en Tiempo Discreto

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]

J.M. Prez Oria, S. Arnltes Gmez,


Introduccin a los Sistemas de Control con Computador,
Editorial Ciencia 3 Distribucin S.A., 1993

- 142 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

Captulo 6.
DISEO DE CONTROL
POR ESTABLECIMIENTO FINITO
(DEAD BEAT).

- 143 -

Sistemas de Control en Tiempo Discreto

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 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

6.2 DISEO DE CONTROLADORES DIGITALES PARA UN


TIEMPO DE ESTABLECIMIENTO MNIMO CON UN
ERROR CERO EN ESTADO PERMANENTE.
Se considera el sistema de control digital que se muestra a continuacin:

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 -

Sistemas de Control en Tiempo Discreto

y la correspondencia entre los planos s y z viene dada por la transformacin z = e T s .


Sea la transformada z de la planta, precedida por el mantenedor de orden cero, la
siguiente:

G (z ) = Z

(Gh (s) G p (s) )t =kT

(1 e T s ) G ( s )
G ( s)
p

z 1 p
= Z
= z s
s

(6.2.0)

-1

Se observa que se ha realizado un abuso de notacin, eliminando L . Este


proceso equivale a la discretizacin por invarianza al escaln.
Entonces la funcin transferencia de pulso en lazo abierto es GC( z ) G ( z ), tal y
como se muestra en la siguiente figura:

fig. (6-b)

- 146 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

A continuacin se forma la funcin transferencia de pulso en lazo cerrado y la


llamamos F(z):

GC ( z ) G ( z )
X ( z)
=
= F ( z)
R ( z ) 1 + GC ( z ) G ( z )

(6.2.1)

Dado que es necesario que el sistema tenga un tiempo de establecimiento finito


con un error en estado permanente cero, el sistema deber mostrar una respuesta
impulso finita. Por lo tanto, la funcin transferencia de pulso en lazo cerrado deseado
debe ser de la forma siguiente:

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 -

Sistemas de Control en Tiempo Discreto

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

donde n N y n es el orden del sistema. Esto significa que la planta no puede


responder en forma instantnea cuando se aplica una seal de control de magnitud

- 148 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

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

Donde G1 ( z ) no incluye un trmino que se cancele con z - . Entonces la


funcin transferencia de pulso en lazo cerrado se convierte en

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)

Sistemas de Control en Tiempo Discreto

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

Esto es, 1 - F( z ) debe tener como cero a z = . Tambin, notar de la ecuacin


(6.2.4) que si ceros de G(z) no son cancelados por polos de GC( z ), los ceros de G( z ) se
convierten en ceros de F( z ). ( F( z ) puede incluir ceros adicionales).
Resumamos lo que se ha dicho sobre la estabilidad:
1. Dado que el controlador digital GC( z ) no debe cancelar los polos inestables
(o crticamente estables) de G( z ), todos los polos inestables (o crticamente estables) de
G( z ) debern incluirse en 1 - F( z ) como ceros.
2.

Los ceros de G( z ) que se presenten dentro del crculo unidad pueden

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(kT ) = r (kT ) x(kT ) ,

refirindonos a la ecuacin (6.2.1) tenemos

E ( z ) = R ( z ) X ( z ) = R ( z ) (1 F ( z ) )

- 150 -

(6.2.5)

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

NOTA del autor: Las siguientes funciones se multiplican por el escaln


0

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

Para una entrada rampa unitaria r (t ) = t 1(t ) ,

R( z) =

T z 1

(1 z )

1 2

Y para una entrada aceleracin unitaria r (t ) =

R( z) =

t 2 1(t )
,
2

T 2 z 1 (1 + z 1 )

2 1 z 1

- 151 -

Sistemas de Control en Tiempo Discreto

Por lo tanto, en general, las transformadas z en estas entradas polinomiales en el


dominio de tiempo se pueden escribir como

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.

Al sustituir la ecuacin (6.2.6) en la ecuacin (6.2.5) obtenemos

E( z) =

P ( z ) (1 F ( z ))

(1 z )

1 q +1

(6.2.7)

Para asegurarnos de que el sistema llega al estado permanente en un nmero


finito de perodos de muestreo y mantiene un error cero en estado permanente, E( z )
deber ser un polinomio en z -1 con un nmero finito de trminos. Entonces,
refirindonos a la ecuacin (6.2.7), escogemos que la funcin 1 - F( z ) tenga la forma

1 F ( z ) = (1 z 1 ) q +1 N ( z )

- 152 -

(6.2.8)

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

donde N( z ) es un polinomio en z -1 con un nmero finito de trminos. Entonces

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)

La ecuacin (6.2.10) da la funcin transferencia de pulso del controlador digital,


que producir un error cero en estado permanente, despus de un nmero finito de
perodos de muestreo.
Para una planta estable Gp( s ), la condicin para que la salida no muestre
componentes oscilatorios entre instantes de muestreo despus del tiempo de
establecimiento, se puede escribir como sigue:
x( t ) = constante,

para t nT

para entradas escaln

x'( t ) = constante,

para t nT

para entradas rampa

x''( t ) = constante,

para t nT

para entradas aceleracin

- 153 -

Sistemas de Control en Tiempo Discreto

Dicha condicin deber ser tenida en cuenta cuando se disee el sistema o el


controlador. Al disear el sistema de control, la condicin sobre x( t ), x'( t ) o x''( t )
deber interpretarse en trminos de u( t ). Notar que la planta est en tiempo continuo y
la entrada a la planta es u( t ), que es una funcin en tiempo continuo; por lo tanto, para
no tener componentes oscilatorias en la salida x( t ), la seal de control u( t ) en estado
permanente debe ser constante o de un incremento montono (o decreciendo
montonamente) para los casos de entrada escaln, rampa y aceleracin.

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

establecimiento mnimo, con un error cero en estado permanente, en respuesta a un tipo


especfico de entrada tenga caractersticas excelentes de respuesta transitoria para la
entrada para la cual fue diseado, puede mostrar caractersticas de respuestas
transitorias inferiores o algunas veces inaceptables para otros tipos de entrada. Esto es
siempre cierto tratndose de sistemas de control ptimo: un sistema de control ptimo
mostrar las mejores caractersticas de respuesta para el tipo de entrada para el que fue
diseado, pero no tendr caractersticas de respuesta ptima para otro tipo de entradas.
3. En el caso en el que un controlador analgico es discretizado, un incremento

en el perodo de muestreo modifica la dinmica del sistema, lo que puede llevar a la


inestabilidad del mismo. Por otra parte, el comportamiento del sistema de control digital
que diseamos en esta seccin no depende de la seleccin del perodo de muestreo. En
vista de que las entradas r( t ) aqu consideradas son entradas en el dominio del tiempo
(escaln, rampa, aceleracin...), el perodo de muestro T puede ser escogido de manera

- 154 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

arbitraria. Para un perodo de muestreo menor, el tiempo de respuesta (que es un


mltiplo entero del perodo de muestreo T) se hace menor. Sin embargo, para un
perodo de muestreo T muy pequeo, la magnitud de la seal de control se convertir en
excesivamente grande, con el resultado de que en el sistema aparecern fenmenos de
saturacin, y el mtodo de diseo presentado en esta seccin ya no ser aplicable. Por lo
tanto, el perodo de muestreo T no debe ser demasiado pequeo. Por otra parte, si el
perodo de muestreo T se coge demasiado grande, el sistema puede comportarse de
manera no satisfactoria, o incluso puede hacerse inestable cuando est sujeto a entradas
variables en el tiempo, como son entradas en el dominio de la frecuencia. De ah que sea
necesario un trmino medio. Una regla prctica sera escoger el perodo de muestreo T
ms pequeo para que no ocurra ningn fenmeno de saturacin en la seal de control.

Ejemplo:

Considere el sistema de control mostrado en la figura (6-a), donde la funcin de


transferencia de la planta Gp( s ) est dada por

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 -

Sistemas de Control en Tiempo Discreto

El primer paso en el diseo es determinar la transformada z de la planta que est


precedida por un mantenedor de orden cero: [REF. 3].

G (z ) = Z

(Gh (s) G p (s) )t =kT


1 e T s

= (1 z 1 ) 2

= 2

+
s
(
s
1
)
s
(
s
1
)

> restart: with(inttrans): Digits:=5:


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

1
s (s + 1)

Calculamos primero la transformada z de

1
, y sustituimos el perodo
s ( s + 1)
2

de muestreo T = 1 tras multiplicar la transformada por 1 z 1 =

z 1
.
z

> G(z) := evalf(subs(T=1, simplify(((z-1)/z)*


ztrans(subs(t=k*T, invlaplace(1/s*Gp(s), s, t)), k, z))));
G( z ) := 1.

.36788 z + .26424
2
1. z + 1.3679 z .36788

> factor(G(z));
.36788 z + .26424
( z 1. ) ( z .36787 )

- 156 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

Si multiplicamos ambos trminos de la fraccin por z -2, se obtiene la expresin


en funcin de z -1. Y dicha expresin es:

G( z) =

0.36788 (1 + 0.71828 z 1 ) z 1
(1 z 1 ) (1 0.36787 z 1 )

Recordamos ahora la ecuacin (6.2.1):

F ( z) =

GC ( z ) G ( z )
X ( z)
=
1 + GC ( z ) G ( z ) R ( z )

Se Observa de la expresin anterior de G( z ) que si G( z ) se expande a una serie en


potencias de z -1 el primer trmino ser en z -1. Por lo tanto, F( z ) deber empezar con un
trmino en z -1.
Al referirnos a la ecuacin (6.2.2) y observar que el sistema es de segundo orden
(n = 2) suponemos que F(z) tiene la siguiente forma:

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)

Dado que G(z) tiene un polo crticamente estable en z = 1, el requisito de


estabilidad define que 1 - F ( z ) debe tener un cero en z = 1. Sin embargo la funcin
1 - F ( z ) ya tiene un trmino 1 - z -1, por lo que el requisito est satisfecho.

- 157 -

Sistemas de Control en Tiempo Discreto

En vista de que el sistema no deber mostrar componentes oscilatorias entre


muestras y la entrada es una funcin escaln, necesitamos que x (t 2 T ) sea
constante. Si observamos que u( t ), la salida del mantenedor de orden cero, es una
funcin en tiempo continuo, una constante x(t 2 T ) requiere que u( t ) tambin sea
constante para t 2 T . En trminos de la transformada z, U( z ) debe ser del tipo
siguiente en potencias de z -1:

U ( z ) = b + b1 z 1 + b z 2 + z 3 + L
0

donde b es una constante. Dado que la funcin de transferencia de la planta G p (s )


involucra un integrador

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 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

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)

La salida x(t) tiene que ser constante a partir de t 2 T . Luego su transformada z,

) 1 1z

X(z), ser de la forma c1 z 1 + c 2 z 2

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

En G(z) ya se tiene el trmino


X(z) se tendra

(1 z )

1 2

1
1 z 1

luego no se puede tener en U(z), ya que si no en

y X(z) no podra ser constante a partir de t = 2T. Por lo tanto

b = 0 y adems en U(z) tiene que aparecer el trmino (1 a1 z 1 ) .

- 159 -

Sistemas de Control en Tiempo Discreto

U ( z ) se puede calcular de la siguiente manera:

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)

donde F1 es una constante. Entonces U( z ) se puede escribir como sigue:

U ( z) =

1
(1 0.36788 z 1 ) F1
0.36788

(6.2.15)

Esta ecuacin da U( z ) en trminos de F1. Una vez que se determine la


constante F1, U( z ) se puede dar como una serie en z -1 con slo dos trminos.

- 160 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

Ahora determinaremos N( z ), F( z ) y F1. Si se sustituye la ecuacin (6.2.12) en la


ecuacin (6.2.13) obtenemos

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

y el resto deber ser cero. Esto requiere que 1 a1 a 2 = 0 a1 + a 2 = 1 .


Tambin de las ecuaciones (6.2.12) y (6.2.14) tenemos

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)

Sistemas de Control en Tiempo Discreto

La divisin del primer miembro de esta ltima ecuacin entre 1 + 0.7183 z 1 da


el Cociente a1 y el resto (a 2 0.7183 a1 ) z 1 . Al igualar el cociente con F1 y el resto
con cero, obtenemos

F1 = a1
y

a 2 0.7183 a1 = 0

(6.2.18)

Si se resuelven las ecuaciones (6.2.17) y (6.2.18) en funcin de a1 y a2 da

a1 = 0.582 ,

a 2 = 0.418

Entonces, F(z) se determina en la forma

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)

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

La funcin transferencia de pulso del controlador digital GC( z ) es determinada a


continuacin a partir de la ecuacin (6.2.10) como sigue. Refirindonos a las ecuaciones
(6.2.11), (6.2.14) y (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

Con el controlador digital as diseado, la funcin transferencia de pulso en lazo


cerrado se convierte en:

X ( z)
= F ( z ) = 0.582 z 1 + 0.418 z 2
R( z)

0.582 ( z + 0.7183)
z2

- 163 -

Sistemas de Control en Tiempo Discreto

La salida del sistema en respuesta a una entrada escaln unitario r( t ) = 1 se puede


obtener como sigue:

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

Observe que la sustitucin de 0.582 en lugar de F1 en la ecuacin (6.2.15) da


como resultado

U ( z) =

1
(1 0.36788 z 1 ) 0.582 = 1.582 0.582 z 1
0.36788

Por lo tanto, la seal de control u( k ) se convierte en cero para k 2 tal y como


se requiere. No existe componente oscilatoria entre muestras en la salida una vez
alcanzado el tiempo de establecimiento.

- 164 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

6.3 DISEO DE UN ALGORITMO.


A continuacin se describe el algoritmo para el diseo del controlador digital,
con tiempo de establecimiento mnimo, y error cero en estado permanente. [REF. 4].
6.3.1 Definicin del problema.

Consideremos el sistema descrito por la siguiente funcin de transferencia:

G ( z 1 ) =

B ( z 1 )
A( z 1 )

(6.3.1)

donde A( z 1 ) y B ( z 1 ) son polinomios coprimos (no tienen ceros comunes), con


grado(B) = grado(A) (para asegurar que la planta sea causal) y B(0) = 0 (es decir, la
planta se caracteriza por un exceso de polos ceros igual a uno, debido al proceso de
discretizacin de la planta). Es decir, estamos suponiendo

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

La funcin de transferencia dada representa la dinmica de la planta, incluyendo


un dispositivo de retencin, un proceso continuo lineal y un muestreador en serie (de
perodo T). La planta continua se describe por una funcin de transferencia
~
B (s)
~
~
estrictamente propia G p ( s ) = ~ , con gra do s ( B ) < gra do s ( A) .
A( s )

- 165 -

Sistemas de Control en Tiempo Discreto

Se quiere encontrar un controlador causal estabilizador de grado mnimo,


definido por la funcin de transferencia

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)

donde H y K son polinomios coprimos y H( 0 ) 0 para

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 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

6.3.2 Ecuaciones de diseo.

La funcin de transferencia del sistema en lazo cerrado es la siguiente:

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)

Para asegurar que el sistema alcanza el estado permanente en un nmero finito


de perodos de muestreo y tiene un error permanente nulo, la secuencia de error e( k ),
correspondiente a E ( z 1 ) , debe desaparecer despus de un nmero finito de instantes de
muestreo. Eso quiere decir que el polinomio E ( z 1 ) debe tener un nmero finito de
trminos. Entonces, el problema consiste en determinar los polinomios P ( z 1 ) y
Q( z 1 ) que hacen que la secuencia de error sea finita. [REF. 4].

Se supone que el estado inicial de la planta es nulo, de forma que se pueda


definir un controlador cancelador.

- 167 -

Sistemas de Control en Tiempo Discreto

Factorizamos los polinomios A( z 1 ) , B( z 1 ) y K ( z 1 ) de la siguiente forma:

A = Ae A i

(6.3.6)

B = Be Bi

(6.3.7)

K = Ke Ki

(6.3.8)

donde Ae , Be , Ke son factores estables de A, B, y K; es decir, tienen todos sus ceros


dentro del crculo unidad. Tambin, para permitir la posibilidad de que Ai y H tengan
ceros comunes, definimos los polinomios coprimos Asi y Hs tales que

As i
Hs

Ai

(6.3.9)

Expresamos Q( z 1 ) de la siguiente manera:

Q = Ae Q p

(6.3.10)

siendo Ae el mximo comn divisor de Q y A. Entonces, Qp y A son coprimos ( Ae


representa los polos estables de la planta que son cancelados por ceros del controlador).
Definimos el polinomio S de la forma

S=PA+QB

(6.3.11)

- 168 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

sustituyendo (6.3.10) en (6.3.11) y utilizando (6.3.6) obtenemos

S = P Ae Ai + Ae Qp B
= Ae ( P Ai + Qp B )

(6.3.12)

Expresamos P de la siguiente forma:

P = B e Pp

(6.3.13)

siendo Be el mximo comn divisor de P y B. Entonces, Pp y Bi son


coprimos
( B representa los ceros estables de la planta que son cancelados por polos del
e
controlador).
Sustituyendo (6.3.13) en (6.3.12) y utilizando (6.3.7) queda

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 -

Sistemas de Control en Tiempo Discreto

Sustituyendo (6.3.11) en (6.3.5) y utilizando (6.3.14) obtenemos

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

La primera condicin implica que Hs debe dividir a Pp , ya que Hs es


coprimo con K y As i ; por lo tanto, Pp es de la forma

Pp = Hs Pn

(6.3.16)

sustituyendo (6.3.16) en (6.3.14) obtenemos

Sp = Hs Pn Ai + Qp Bi

(6.3.17)

y sustituyendo (6.3.16) en (6.3.15) queda

E=

K Pn As i

(6.3.18)

Sp

- 170 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

La segunda condicin implica que Sp debe dividir a K, ya que Sp es coprimo


con Ai (porque Qp y Bi son coprimos con A ) y adems es coprimo con Pn
i
(porque Qp y Bi son tambin coprimos con Pn ). Por lo tanto, Sp es de la forma

Sp = Ke

(6.3.19)

ya que Sp debe ser causal y estable. Sustituyendo (6.3.19) en (6.3.18) obtenemos

E = K i Pn As i

(6.3.20)

Sustituyendo (6.3.19) en (6.3.17) queda

Hs Pn Ai + Qp Bi = Ke

(6.3.21)

El control est relacionado con el error mediante la siguiente expresin

U ( z 1 ) =

Q
E ( z 1 )
P

(6.3.22)

Sustituyendo (6.3.20) en (6.3.21) y utilizando (6.3.10), (6.3.13) y (6.3.16) obtenemos

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)

Sistemas de Control en Tiempo Discreto

Para el mismo sistema, la relacin entre la salida y el control es

Y ( z 1 ) =

B
U ( z 1 )
A

(6.3.24)

Sustituyendo (6.3.22) en (6.3.23) y utilizando (6.3.7) y (6.3.9) obtenemos

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)

Las expresiones (6.3.10), (6.3.13), (6.3.16) y (6.3.21) son las ecuaciones de


diseo del controlador Deadbeat.

- 172 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

6.3.3 Condicin para que el problema DeadBeat tenga solucin.

En el desarrollo del apartado anterior hemos obtenido las ecuaciones que


caracterizan a los controladores Deadbeat. Ahora vamos a obtener la solucin a dichas
ecuaciones.
El problema matemtico consiste en determinar dos polinomios Pn y Qp que
satisfagan la ecuacin polinmica lineal (6.3.21). Esta ecuacin se denomina ecuacin
Diofntica.
La ecuacin Diofntica (6.3.21) tiene solucin si y solo si el mximo comn
divisor de ( Ai H s ) y Bi divide a K e (la demostracin de este teorema se encuentra en
la [REF. 1]). Como Ai y Bi son coprimos, todo divisor comn de H s y Bi debe
dividir tambin a K e . Pero H s y K e son coprimos; por consiguiente, H s y Bi deben
ser coprimos para que (6.3.21) tenga solucin.
Esta condicin se puede expresar de diferentes formas: si H s y Bi son
coprimos implica que H s y B tambin lo son, ya que todos los ceros de H s son
inestables; adems H y B deben ser coprimos, ya que los ceros comunes de Ai y H no
estn en B. Es decir, los ceros de la planta no deben coincidir con los polos de la
referencia. Esta es la condicin necesaria y suficiente para resolver el problema del
Control Deadbeat.

- 173 -

Sistemas de Control en Tiempo Discreto

6.3.4 Control DeadBeat de tiempo mnimo.

Si se cumple la condicin anterior, existen infinitos polinomios que satisfacen la


ecuacin (6.3.21). Nos interesa elegir una solucin que haga que el tiempo de
establecimiento sea mnimo.
La expresin (6.3.20) muestra que el tiempo de establecimiento del error es
minimizado haciendo mnimos los grados de los polinomios Ki , Pn , y As i . Esto
se consigue si hacemos que Ae y Ke sean los factores estables de mximo grado de
A y K, respectivamente (es decir, cancelamos todos los polos estables de la planta y
todos los ceros estables de la referencia), y si elegimos la solucin Pn de grado mnimo
de (6.3.21).
Por la teora de las ecuaciones Diofnticas [REF. 1], la solucin de la ecuacin
(6.3.21) de grado mnimo cumple que

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 .

Los resultados que hemos obtenido pueden resumirse en un procedimiento


directo para resolver el problema de diseo de Controladores Deadbeat de tiempo
mnimo.

- 174 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

6.3.5 Algoritmo: Control DeadBeat de tiempo mnimo.

A continuacin se describe el algoritmo de control Deadbeat de tiempo mnimo.


[REF. 4].
Datos:

- la planta Gp( s )
- la seal de referencia R(s)
- el perodo de muestreo T
Condiciones de entrada:

se supone que para los datos existe un Controlador Deadbeat causal de


tiempo mnimo.

Paso 1: calcular G ( z 1 ) =

B
A

y R ( z 1 ) =

K
H

Paso 2: factorizar A, B y K de la forma

A = Ae A i
B = Be Bi
K = Ke Ki

siendo Ae, Be, Ke los factores estables de grado mximo de A, B y K.

- 175 -

Sistemas de Control en Tiempo Discreto

Paso 3: determinar As i y Hs mediante la siguiente relacin


As i
Hs

Ai
H

Paso 4: resolver la ecuacin Diofntica

Pn Ai Hs + Qp Bi = Ke

respecto de Pn y Qp elegir una solucin tal que


grado( Pn ) = grado( Bi ) - 1
grado( Qp ) = grado( Ai ) + grado( Hs ) - 1

Paso 5: entonces el controlador de tiempo mnimo - grado mnimo es

G D ( z 1 ) =

Ae Q p
Q
=
P H s Be Pn

- 176 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

Ejemplo:

Utilizando el mismo ejemplo del apartado 6.2, vamos a construir el controlador


Deadbeat siguiendo este algoritmo y usando las herramientas que nos proporciona
Maple.
Considere el sistema de control mostrado en la figura (6-a) del apartado 6.2,
donde la funcin de transferencia de la planta G p ( s ) est dada por

G p ( s) =

1
s ( s + 1)

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

> restart: with(inttrans): with(plots): Digits:=5:


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

1
s (s + 1)

- 177 -

Sistemas de Control en Tiempo Discreto

Calculamos primero la transformada z de

1
2

s ( s + 1)

, y sustituimos el perodo de

muestreo T = 1 tras multiplicar la transformada por 1 z 1 . Paso 1.

> G(z) := factor(evalf(subs(T=1, simplify(((z-1)/z)*


ztrans(subs(t=k*T, invlaplace(1/s*Gp(s), s, t)), k, z))))):
G(z) = B/A;

.36788 z + .26424
( z 1. ) ( z .36787 )

Haciendo el algoritmo en z se tiene que G ( z ) =

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) := ztrans(invlaplace(1/s, s, t), t, z);

R( z ) :=

K
H
1
1w

- 178 -

R ( z 1 ) =

1
1 z 1

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

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

funcin de ' z 1 ' , se hace necesario realizar una transformacin. La implementamos a


continuacin, convirtindose la variable ' z 1 ' en la variable 'w'. En el procedimiento
'Conversion', se pasa como parmetro una funcin en z. Las variables globales 'polwn'

y 'polwd' son, respectivamente, el numerador y el denominador de dicha funcin,


despus de realizar la transformacin.

> AuxC := proc(polz, grado)


global polw;
polw := expand(polz/z^grado):
polw := subs(1/z^3 = w^3, 1/z^2 = w^2, 1/z = w, polw):
end:

- 179 -

Sistemas de Control en Tiempo Discreto

> Conversion := proc(polz)


local num, den, fac1, fac2, gradod, oper, pot;
global polwn, polwd;
num

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

elif (oper = `*`)


then fac1 := op(1, den):
fac2 := op(2, den):
(contina)

- 180 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

else fac1 := den:


gradod := 2:
fi:
AuxC(fac1, degree(fac1,z)):
polwd := polw^pot:
if (fac2 <> 1)
then AuxC(fac2, degree(fac2,z)):
polwd := polwd*polw^pot:
fi:
end:

A continuacin se muestra la transformacin de G ( z ) .

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

Sistemas de Control en Tiempo Discreto

A continuacin se muestra la transformacin de R ( z ) . En el resumen sobre estabilidad


del apartado 6.2 (resumen estabilidad) se muestran las diferentes R ( z 1 ) .

> Conversion(R(z)):
poli := polwn/polwd;
K := numer(poli);
H := denom(poli);
poli :=

1
1w

K := -1
H := 1 + w

Calculamos los siguientes polinomios (paso 2 del algoritmo): Primero se implementa el


procedimiento 'Factoriz', que dado un determinado polinomio, lo divide en los factores
estables (variable global 'face') e inestables (variable global 'faci').

> AuxF := proc(fac, pot)


local r, raiz, grado;
global face, faci;
face := 1:
faci

:= 1:

grado := degree(fac, w):


if (grado=0)
then faci := fac^pot:
else r := solve(fac=0):

- 182 -

(contina)

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

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

grado := degree(fac, w):

(contina)

- 183 -

Sistemas de Control en Tiempo Discreto

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

elif (oper = `*`)


then fac1 := op(1, polin):
fac2 := polin/fac1:
else fac1 := polin:
fi:
AuxF(fac1, pot):
pe

:= pe*face:

pi

:= pi*faci:

if (fac2 <> 1)
then ne := pe:
ni := pi:

(contina)

- 184 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

Factoriz(fac2):
pe := pe*ne:
pi := pi*ni:
fi:
end:

Calculamos los factores estables e inestables de B:

> B;
Factoriz(B):
Be := pe;
Bi := pi;
.26424 ( w + 1.3922 ) w
Be := w + 1.3922
Bi := .26424 w

Calculamos los factores estables e inestables de A:

> A;
Factoriz(A):
Ae := pe;
Ai := pi;
( 1 1. w ) ( 1 .36787 w )
Ae := 1 .36787 w

Ai := 1 1. w

- 185 -

Sistemas de Control en Tiempo Discreto

Calculamos los factores estables e inestables de K:

> K;
Factoriz(K):
Ke := pe;
Ki := pi;
-1
Ke := 1
Ki := -1

Paso 3 del algoritmo,

Asi Ai 1 z 1
=
=
=1
H s H 1 z 1

por lo tanto Asi = H s = 1

> elto := simplify(Ai/H);


Asi := numer(elto);
Hs := denom(elto);
elto := -1.

Asi := -1.
Hs := 1

- 186 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

Pn Ai Hs + Qp Bi = Ke

Paso 4. Resolver la ecuacin Diofntica

> ecu := Pn*Ai*Hs + Qp*Bi;


c1 := coeff(ecu, Pn):
c2 := coeff(ecu, Qp):
ecu := 1.0 Pn ( 1 1. w ) + .26424 Qp w
Para resolver la ecuacin diofntica se utiliza la funcin 'gcdex', que para dos
polinomios (c1 y c2) calcula su mximo comn divisor.

> gcdex(c1, c2, w, 'Pn', 'Qp'):


Pn := Pn*Ke;
Qp := Qp*Ke;
Pn := 1.
Qp := 3.7844

grado( Pn ) = grado( Bi ) - 1
grado( Qp ) = grado( Ai ) + grado( Hs ) - 1 = 1 + 0 - 1

Paso 5. La funcin de transferencia del controlador es GC ( z ) =

> G[C](w) := (Ae*Qp/(Hs*Be*Pn));


GC( w ) := 3.7844

1 .36787 w

- 187 -

w + 1.3922

Ae Q p
Q
=
P H s Be Pn

= 0
= 0

Sistemas de Control en Tiempo Discreto

Hacemos otra transformacin, para dejarlo en funcin de z (en la variable global 'polz').

> AuxD := proc(polz, grado)


local poli;
global mulz;
poli := subs(w^2 = 1/z^2, w = 1/z, polz):
mulz := expand(poli*z^grado):
end:

> DesConv := proc(polw)


local num, den, polzn, polzd, grado, gradod;
global polz;
num

:= numer(polw):

den

:= denom(polw):

grado

:= degree(num, w):

gradod

:= degree(den, w):

if (gradod > grado)


then grado := gradod:
fi:
# transformamos el numerador
AuxD(num, gradod):
polzn := mulz:
(contina)

- 188 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

# 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

La transformada Z de la seal de error es E ( z 1 ) = K e Pn Asi = 1 (el tiempo de


establecimiento "discreto" es un intervalo de muestreo).

> E(w) := Ki*Pn*Asi;


E( w ) := 1.

En funcin de z quedara:

> DesConv(E(w)):
E(z) := polz;
E( z ) := 1.

- 189 -

Sistemas de Control en Tiempo Discreto

Y la transformada Z de la seal de control es U ( z 1 ) =

Ae Q p K i Asi
Be H s

> U(w) := Ae*Qp*Ki*Asi/(Be*Hs);


DesConv(U(w)):
U(z) := polz;
U( w ) := 3.7844

U( z ) :=

La salida del sistema es Y ( z 1 ) =

1 .36787 w
w + 1.3922

3.7844 z 1.3922
1.3922 z + 1.0000

Bi Q p K i
H

> Y(w) := Bi*Qp*Ki/H;


DesConv(Y(w)):
Y(z) := polz;
Y( w ) := 1.0000

Y( z ) := 1.0000

w
1 + w
1
z + 1

A continuacin se muestra la salida del sistema grficamente. Para ello, primero


se calculan las transformadas inversas de las funciones del ejemplo, y a continuacin las
secuencias de puntos correspondientes. Despus hacemos los grficos.

- 190 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

> iR

:= invztrans(R(z), z, k):

iG

:= invztrans(G(z), z, k):

iGc := invztrans(G[C](z), z, k):


iE

:= invztrans(E(z), z, k):

iY

:= invztrans(Y(z), z, k):

iU

:= invztrans(U(z), z, k):

> sR := [seq([k, iR], k=0..10)]:


dR := plot(sR, title=`r(k)`, axes=frame, style=point, color=blue):
sY := [seq([k, iY], k=0..10)]:
dY := plot(sY, title=`y(t)`, axes=frame):

Para determinar las secuencias de puntos de la seal de error, 'sE', y de la seal de


control, sU, se utiliza un bucle 'for', con lo que se consiguen dibujar las mismas como
si se tratara de pulsos.

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

Sistemas de Control en Tiempo Discreto

> sG := [seq([k, iG], k=0..10)]:


dG := plot(sG, title=`g(t)=L^(-1)[Gp(s)]`, axes=frame):
sGc := [seq([k, iGc], k=0..10)]:
dGc := plot(sGc, title=`Gc(k)`, axes=frame):
> dRY := display({dR, dY}, title=`Entrada r(k), Salida y(t)`):
plots[display](array(1..4, [dG, dRY, dE, dU]));

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 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

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.

6.4.1.- Disear el controlador Deadbeat de tiempo mnimo para el proceso definido


por

G p( s ) =

1
s+ 2

para la entrada rampa unidad. Considerar que el perodo de muestreo T es


1 seg.
G ( z 1 ) est definida por

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

1
s+2

Se inicializan las variables, por si se ha ejecutado el ejemplo del apartado 6.3.5:

> B:='B': A:='A': Qp:='Qp': Pn:='Pn':


> G(z) := factor(evalf(subs(T=1, simplify(((z-1)/z)*
ztrans(subs(t=k*T, invlaplace(1/s*Gp(s), s, t)), k, z))))):
G(z) = B/A;
1.1752

1
2.7183 z .36787

- 193 -

B
A

Sistemas de Control en Tiempo Discreto

Hacemos la transformacin para obtener G ( w ) :

> 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

Y la seal de referencia es:

> R(s)

:= 1/s^2;

R(z) := subs(T=1, ztrans(subs(t=k*T, invlaplace(R(s), s, t)), k, z)):


Conversion(R(z)):
poli := polwn/polwd:
K

:= numer(poli);

:= denom(poli);

R(w) := K/H;
1

R( s ) :=

K := w
H := ( 1 + w )

R( w ) :=

w
( 1 + w )

- 194 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

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

Sistemas de Control en Tiempo Discreto

Ahora se resuelve la ecuacin diofntica.

> ecu := Pn*Ai*Hs + Qp*Bi;


c1 := coeff(ecu, Pn):
c2 := coeff(ecu, Qp):
2
ecu := Pn ( 1 + w ) + 1.1752 Qp w

> gcdex(c1,c2,w,'Pn','Qp'):
Pn := Pn*Ke;
Qp := Qp*Ke;
Pn := 1
Qp := 1.7018 .85092 w

Por lo tanto, la funcin de transferencia del controlador es la que se muestra a


continuacin.

> G[C](w) := (Ae*Qp/(Hs*Be*Pn));


DesConv(%):
G[C](z) := polz;
G C( w ) :=

( 2.7183 .36787 w ) ( 1.7018 .85092 w )

GC( z ) := 4.6260

( 1 + w )

( z .13533 ) ( z .50001 )
(z 1)

- 196 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

La seal de error E(z):

> E(w) := Ki*Pn*Asi;


DesConv(%):
E(z) := polz;
E( w ) := w
E( z ) :=

1
z

El tiempo de establecimiento "discreto" son dos intervalos de muestreo. La seal de


control es:

> U(w) := Ae*Qp*Ki*Asi/(Be*Hs);


DesConv(U(w)):
U(z) := polz;
U( w ) :=

( 2.7183 .36787 w ) ( 1.7018 .85092 w ) w


( 1 + w )

U( z ) := 4.6260

( z .13533 ) ( z .50001 )
z (z 1)

- 197 -

Sistemas de Control en Tiempo Discreto

Y la salida del sistema es:

> Y(w) := Bi*Qp*Ki/H;


DesConv(Y(w)):
Y(z) := polz;
Y( w ) := 1.1752

2
w ( 1.7018 .85092 w )
( 1 + w )

Y( z ) :=

2.0000 z 1.0000
z (z 1)

Se muestran ahora estas seales:

> iR := invztrans(R(z), z, k):


iG

:= invztrans(G(z), z, k):

iGc := invztrans(G[C](z), z, k):


iE

:= invztrans(E(z), z, k):

iY

:= invztrans(Y(z), z, k):

iU

:= invztrans(U(z), z, k):

- 198 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

> sR

:= [seq([k, iR], k=0..10)]:

dR := plot(sR, title=`r(k)`, axes=normal, style=point, color=blue):


sG := [seq([k, iG], k=0..10)]:
dG := plot(sG, title=`g(t)=L^(-1)[Gp(s)]`, axes=normal):
sGc := [seq([k, iGc], k=0..10)]:
dGc := plot(sGc, title=`Gc(k)`, axes=normal):
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=`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 -

Sistemas de Control en Tiempo Discreto

> dRY := display({dR, dY}, title=`Entrada r(k), Salida y(t)`):


plots[display](array(1..3, [dRY, dE, dU]));

6.8.2.- Disear el controlador Deadbeat de tiempo mnimo para el proceso definido


por

G p( s ) =

1
1 2

s
2

para la entrada rampa unidad. Considerar que el perodo de muestreo T es


0.3 seg.
Primero inicializamos las variables, para que los resultados del ejercicio anterior no
impliquen errores en este.

> B:='B': A:='A': Qp:='Qp': Pn:='Pn':

> Gp := s->1/(s-(1/2))^2;
Gp := s

1
1 2

s
2

- 200 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

> G(z) := factor(evalf(subs(T=0.3, simplify(((z-1)/z)*


ztrans(subs(t=k*T, invlaplace(1/s*Gp(s), s, t)), k, z))))):
G(z) = B/A;
.0498 z + .055398
( z 1.1618 )

B
A

Hacemos la transformacin para obtener G(w).

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

Sistemas de Control en Tiempo Discreto

Y la seal de referencia es:

> R(s)

:= 1/s^3;

R(z) := subs(T=0.3, ztrans(subs(t=k*T, invlaplace(R(s), s, t)), k, z));


Conversion(R(z)):
poli := polwn/polwd:
K

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

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

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

Ahora se resuelve la ecuacin diofntica:

> ecu := Pn*Ai*Hs + Qp*Bi;


c1 := coeff(ecu, Pn):
c2 := coeff(ecu, Qp):
2
3
ecu := Pn ( 1 1.1618 w ) ( 1. + w ) + Qp w ( .055398 w + .049800 )

- 203 -

Sistemas de Control en Tiempo Discreto

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

> G[C](w) := (Ae*Qp/(Hs*Be*Pn));


DesConv(%):
G[C](z) := polz;
GC( w ) :=

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

La seal de error E(z):

> E(w) := Ki*Pn*Asi;


DesConv(%):
E(z) := polz;
E( w ) := .40000 10

-7

w ( .045000 + .045000 w ) ( 1.0000 1.0736 w ) ( 5000. + 5809. w )

E( z ) := .045000

( z + 1.0740 ) ( z + .99961 ) ( z 1.1578 ) ( z 1.1658 )


z

- 204 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

La seal de control U(z):

> U(w) := Ae*Qp*Ki*Asi/(Be*Hs);


DesConv(U(w)):
U(z) := polz;
U( w ) := .40000 10

-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 la salida del sistema es:

> Y(w) := Bi*Qp*Ki/H;


DesConv(Y(w)):
Y(z) := polz;
2
Y( w ) := w ( .055398 w + .049800 )
4
3
2
( 26.158 w 122.65 w + 228.13 w 207.51 w + 85.327 )
3
( .045000 + .045000 w )
( 1 + w )

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 -

Sistemas de Control en Tiempo Discreto

Se muestran ahora estas seales:

> iR

:= invztrans(R(z), z, k):

iG

:= invztrans(G(z), z, k):

iGc := invztrans(G[C](z), z, k):


iE

:= invztrans(E(z), z, k):

iY

:= invztrans(Y(z), z, k):

iU

:= invztrans(U(z), z, k):

> sR

:= [seq([k, iR], k=0..10)]:

dR := plot(sR, title=`r(k)`, axes=normal, style=point, color=blue):


sG := [seq([k, iG], k=0..10)]:
dG := plot(sG, title=`g(t)=L^(-1)[Gp(s)]`, axes=normal):
sGc := [seq([k, iGc], k=0..10)]:
dGc := plot(sGc, title=`Gc(k)`, axes=normal):
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=`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 -

Captulo 6: Diseo de Control por Establecimiento Finito (DeadBeat)

> dRY := display({dR, dY}, title=`Entrada r(k), Salida y(t)`):


plots[display](array(1..4, [dG, dRY, dE, dU]));

- 207 -

Sistemas de Control en Tiempo Discreto

6.5 REFERENCIAS.
[REF. 1]

K.J. Astrm y B. Wittenmark,


Sistemas Controlados por Computador,
Paraninfo, 1988

[REF. 2]

G.F. Franklin, J. D. Powell, A. Emami-Naeini,


Control de Sistemas Dinmicos con Retroalimentacin,
Addison-Wesley Iberoamericana, 1991

[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

Captulo 7.
ANLISIS DE RESPUESTA
EN FRECUENCIAS.

- 209 -

Sistemas de Control en Tiempo Discreto

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 -

Captulo 7: Anlisis de Respuesta en Frecuencias

7.2 RESPUESTA DE UN SISTEMA EN TIEMPO DISCRETO


LINEAL E INVARIANTE EN EL TIEMPO A UNA ENTRADA
SENOIDAL.
La respuesta en frecuencia de G ( z ) puede obtenerse sustituyendo z = e j T en
G ( z ) , como se demuestra a continuacin. [REF. 3].
Se considera un sistema estable en tiempo discreto lineal e invariante en el
tiempo como se muestra en la siguiente figura:

La seal muestreada u ( k T ) es u ( k T ) = s i n ( k T )

La transformada z de la entrada muestreada es:

> restart:

- 211 -

Sistemas de Control en Tiempo Discreto

> ztrans(sin(k*omega*T), k, z);


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

que tambin se puede expresar de la siguiente forma:

z sin( T )
(z e

j T

) ( z e j T )

teniendo en cuenta que e j T = cos( T ) + j sin( T ) .

NOTA del autor: En general se obtiene que

(z e

a +b j

) (z e

a b j

)=

)(

= z e a (cos(b) + j sin(b) ) z e a (cos(b) j sin(b) ) =

= z 2 2 e a cos(b) z + e 2a

- 212 -

Captulo 7: Anlisis de Respuesta en Frecuencias

La respuesta del sistema est dada por

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

+ [trminos debidos a los polos de G(z)]

siendo aa el complejo conjugado de a.

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

Dado que el sistema considerado aqu es estable, G( z ) no contiene a z = e


como polo, ya que e

j T

j T

est en la frontera del disco unidad (ver estabilidad). Por tanto,

G( z ) no tiene en el denominador un trmino de la forma z - e

j T

. Luego el segundo y

tercer trmino del segundo miembro de esta ecuacin se anulan en z = e


tenemos

sin( T )

a = G ( z )
z e j T z =e

j T

G (e j T )
=
2 j

- 213 -

j T

. As

Sistemas de Control en Tiempo Discreto

El coeficiente aa, que es el complejo conjugado de a, se obtiene multiplicando por


z e j T
y sustituyendo z = e j T .
z

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 .

La ecuacin de X ( z ) ahora puede escribirse como

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 )

Captulo 7: Anlisis de Respuesta en Frecuencias

La transformada z inversa de esta ltima ecuacin es

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 )

El ltimo trmino del segundo miembro de esta ltima ecuacin representa la


respuesta transitoria. Dado que el sistema G( z ) se ha supuesto estable, todos los
trminos de la respuesta transitoria desaparecern en estado permanente, y obtendremos
la siguiente respuesta en estado permanente x ss (k T ) :

x ss ( k T ) =

M
e j( k T + ) e j( k T + )
2 j

= M sin(k T + )

donde la amplitud o magnitud M, que es la ganancia del sistema en tiempo discreto al


ser sujeto a una entrada senoidal, est dada por

M = M ( ) = G (e j T )

y , el ngulo de fase, est dado por

= ( ) = ngulo G (e j T )

- 215 -

Sistemas de Control en Tiempo Discreto

En trminos de G (e j T ) se puede escribir la respuesta en estado permanente como


sigue:

x ss (k T ) = G (e j T ) sin k T + ngulo G (e j T )

))

Hemos demostrado que G (e j T ) proporciona la magnitud y la fase de la


respuesta en frecuencia de G( z ). Por lo tanto, para obtener la respuesta en frecuencia de
G( z ), slo necesitamos escribir e j T en lugar de z en G( z ). La funcin G (e j T ) se
conoce comnmente como funcin transferencia de pulso senoidal. Si observamos
que

j +
T
e T

= e j T e j2 = e j T

se obtiene que la funcin transferencia de pulso senoidal G (e j T ) es peridica, con un


perodo T.

Ejemplo:

Considere el sistema definido por

x(k T ) = u (k T ) + a x((k 1) T ),

0 < a <1

donde u( k T ) es la entrada y x( k T ) la salida. Obtenga la salida en estado permanente


x( k T ) cuando la entrada u( k T ) es la senoidal u (k T ) = A sin(k T ) .

- 216 -

Captulo 7: Anlisis de Respuesta en Frecuencias

La transformada z de la ecuacin del sistema es

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

Sustituimos z por e j T en G( z ), para obtener la funcin transferencia de pulso


senoidal.

> G(z) := 1/(1-a*z^(-1));


G(exp(I*omega*T)) := convert(subs(1/z = exp(-I*omega*T),G(z)), trig);
G( z ) :=

1
1

G( e

(I T)

a
z
) :=

1
1 a ( cos( T ) I sin( T ) )

- 217 -

Sistemas de Control en Tiempo Discreto

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 )

Para obtener estas expresiones ver [REF. 1].


Entonces, la salida en estado permanente xss( k T ) se puede escribir como sigue:

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 -

Captulo 7: Anlisis de Respuesta en Frecuencias

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)

Si tratamos el problema de la respuesta en frecuencia en el plano z la


simplicidad de los trazados logartmicos se perder completamente, ya que en el plano z
la frecuencia aparece como z = e j T . Esta dificultad, sin embargo, puede ser superada
transformando la funcin transferencia de pulso, GD(z), del plano z al plano w.
[REF. 4].
La transformacin bilineal w se define por

w T
2
z=
w T
1
2
1+

donde T es el perodo de muestreo que se utiliza en el sistema de control considerado.

- 219 -

Sistemas de Control en Tiempo Discreto

Esta transformacin convierte una funcin de transferencia racional en el plano z


en una funcin racional en w, y transforma el crculo unidad del plano z en el semiplano
izquierdo del plano w. Por lo tanto, los mtodos de respuesta en frecuencia de los
sistemas de control continuos se pueden aplicar a los sistemas discretos de control.
Despejando w en la ecuacin anterior obtenemos la relacin inversa

w=

2 z 1

T z +1

Una vez que la funcin de transferencia GD( z ) se transforma en GD( w ) puede


ser tratada como una funcin de transferencia continua en w, y las tcnicas clsicas de
respuesta en frecuencia pueden ser usadas en el plano w. De esta forma las tcnicas de
diseo de Bode pueden ser aplicadas al diseo de controladores discretos.
La transformacin w distorsiona la frecuencia. La relacin entre la frecuencia
ficticia y la frecuencia real es

con s =

2
T
tan
,
T
2

2
frecuencia de muestreo.
T

- 220 -

s
2

Captulo 7: Anlisis de Respuesta en Frecuencias

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

GD( w ) puede ser una funcin de transferencia de fase no mnima (estabilidad),


ya que la transformacin w genera uno o ms ceros en GD( w )

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 -

Sistemas de Control en Tiempo Discreto

Ejemplo:

Considere la funcin de transferencia del sistema que se muestra en la figura. El


perodo de muestreo T se supone de 0.1 seg. Obtenga GD( w ).

Supongamos que discretizamos el sistema continuo, cuya funcin de


transferencia es G p ( s ) =

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 -

Captulo 7: Anlisis de Respuesta en Frecuencias

> restart: with(inttrans): Digits:=4:

> subs(t=k*1/10, invlaplace(10/(s^2+10*s), s, t)):


G[D](z) := evalf(simplify((1-z^(-1))*ztrans(%, k, z)));
GD( z ) := 1.718

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+

GD( z ) puede ser transformada en GD( w ) como sigue:

> subs(z=(1+.05*w)/(1-.05*w), G[D](z));


G[D](w) := simplify(%, radical);
1

1.718
2.718

1 + .05 w
1 .05 w

GD( w ) := 1.718

Despejando quedara G D ( w) = 9.242

1.

1. + .05000 w
1.718 + .1859 w

1 0.05 w
.
w + 9.242

- 223 -

Sistemas de Control en Tiempo Discreto

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

Se observa que la localizacin del polo de la planta es s = -10 y que el polo en el


plano w es w = -9.242. El valor de ganancia en el plano s es 10 y el correspondiente en
el plano w es 9.242. (As, tanto las localizaciones de los polos como los valores de
ganancia son similares en el plano s y en el plano w).
Ceros en el plano w:

> solve(numer(G[D](w))=0);
20.

Es decir, GD( w ) tiene un cero en w =

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 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Observe que tenemos

10
s 0 s + 10

lim G D ( w) = lim

w0

> limit(G[D](w),w = 0);


limit(10/(s+10),s = 0);
1
1

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

magnitud de G ( j ) siempre se acercar a cero (- dB) conforme se acerque a


infinito.
La magnitud en alta frecuencia de GD( j ) es

lim G D ( j ) = 0.4621

- 225 -

Sistemas de Control en Tiempo Discreto

Lo comprobamos con Maple:

> aux := subs(w=I*nu, G[D](w)):


limit(abs(aux), nu=infinity);
.4621

en tanto que la magnitud en alta frecuencia de la planta G ( s ) =

lim

10
es
s + 10

10
=0
j + 10

Lo comprobamos con Maple:

> limit(abs(10/(I*omega+10)), omega = infinity);


0

La diferencia en los diagramas de Bode en el extremo de alta frecuencia puede


explicarse como sigue: primero, recuerde que slo estamos interesados en el rango de
frecuencia 0

1
2
s , con s =
frecuencia de muestreo, lo que corresponde a
T
2

0 (distorsin de frecuencias). Entonces, al observar que = en el plano w

corresponde
corresponde a

a =
lim

1
s
2

en el

plano s, se

puede decir que lim G D ( j )


10
, que es una constante. Es importante sealar que estos
j + 10

dos valores no suelen ser iguales entre s.

- 226 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Desde el punto de vista de polos y ceros, se puede decir que cuando G D ( j )


es una constante distinta de cero en = , est implcito que GD( w ) contiene el mismo
nmero de polos y de ceros.
En general, uno o ms ceros de GD( w ) se presentan en el semiplano derecho del
plano w. La presencia de un cero en el semiplano derecho del plano w significa que
GD( w ) es una funcin de transferencia de fase no mnima (ver estabilidad). Por lo tanto,
debemos tener cuidado al dibujar la curva de ngulo de fase en el diagrama de Bode.
Para resumir, la transformacin w, transformacin bilineal, hace corresponder el
crculo unitario del plano z con el semiplano izquierdo del plano w. El resultado general
de las transformaciones del plano s en el plano z y en el plano w, es que el plano w y el
plano s son similares sobre las regiones de inters del plano s. Esto es debido a que
algunas de las distorsiones causadas por la transformacin del plano s en el plano z
estn parcialmente compensadas por la transformacin del plano z en el plano w.
Observe que si

GD ( z) =

b0 z m + b1 z m1 + L + bm
z n + a1 z n1 + L + a n

mn

donde las ai y las bi son constantes, se transforma en el plano w mediante la


transformacin

w T
2
z=
w T
1
2
1+

- 227 -

Sistemas de Control en Tiempo Discreto

entonces, GD( w ) asume la forma

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.

Comentarios. La ventaja del mtodo de la transformacin w es que el mtodo

de respuesta en frecuencia convencional mediante el uso de diagramas de Bode, puede


ser utilizado para diseo de sistemas de control en tiempo discreto. En la aplicacin de
este mtodo, debemos seleccionar cuidadosamente una frecuencia de muestreo
razonable. Antes de concluir esta seccin, resumiremos los puntos ms importantes
relativos al diseo en el plano w. [REF. 3].
1.

La magnitud y el ngulo de fase de GD( j ) son la magnitud y el ngulo de fase


de GD( z ) conforme z se mueve en el crculo unitario desde z = 1 hasta z = 1. Puesto que z = e

j T

, el valor vara desde 0 hasta s

ficticia vara desde 0 hasta , ya que =

- 228 -

1
. La frecuencia
2

2
T
tan
. Por lo tanto, la
T
2

Captulo 7: Anlisis de Respuesta en Frecuencias

respuesta en frecuencia del sistema de control digital para 0

s
2

es

similar a la respuesta en frecuencia del sistema de control analgico


correspondiente en el caso 0 .

2.

Dado que GD( j ) es una funcin racional de definida sobre el plano w, es


similar a G( j ) definida sobre el plano s. Por lo tanto, son aplicables a GD( j )
tanto la aproximacin convencional con lneas rectas a la curva de magnitud del
diagrama de Bode, como el concepto de margen de fase y de margen de
ganancia, que se van a definir en el apartado del diagrama de Bode.

3.

Compare las funciones de transferencia GD( w ) y G( s ). Como hemos


mencionado antes, en razn de la presencia del factor de escala

2
en la
T

transformacin w, las constantes de error esttico correspondientes para GD( w )


y para G( s ) se hacen idnticas. Sin el factor de escala

4.

2
no sera cierto.
T

La transformacin w puede generar uno o ms ceros en el semiplano derecho en


GD( w ). Si existen uno o ms ceros en el semiplano derecho, entonces GD( w ) es
una funcin de transferencia de fase no mnima (estabilidad). Debido a que los
ceros en el semiplano derecho estn generados por la operacin de muestreo y
retencin, las localizaciones de estos ceros dependen del perodo de muestreo T.
Los efectos de estos ceros en el semiplano derecho en la respuesta, se hacen
menores conforme se reduce el perodo de muestreo T.
Ahora consideremos los efectos de la respuesta del cero en el semiplano
derecho en w =

2
2
. El cero en w =
genera distorsin en la respuesta en
T
T

frecuencia conforme se acerca a

2
.
T

- 229 -

Sistemas de Control en Tiempo Discreto

En vista de que

2
T
tan

T
2

entonces, conforme se acerca a

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

, que es la mitad de la frecuencia ms alta considerada,

est dentro del intervalo de frecuencia de inters. As, el cero en w =

2
, que
T

aparece en el semiplano derecho del plano w, afectar seriamente la respuesta.


5.

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 -

Captulo 7: Anlisis de Respuesta en Frecuencias

7.4 DIAGRAMAS DE BODE.


En los sistemas de control en tiempo continuo de 'una entrada - una salida'
(SISO), se ha utilizado mucho el diseo mediante diagramas de Bode. En particular, si
la funcin de transferencia est en forma factorizada, es bien conocida la simplicidad y
rapidez con la cual se puede dibujar y reformar un diagrama de Bode asinttico.
7.4.1.- Diagrama de Bode para sistemas continuos. Dado un sistema continuo lineal e

invariante en el tiempo, con funcin de transferencia G( s ), se puede representar una


funcin de transferencia senoidal G( j ) con dos diagramas distintos en funcin de la
frecuencia : la amplitud y el ngulo de fase. Un diagrama logartmico o diagrama de
Bode consta de estos dos trazados. Uno es el logaritmo del mdulo de una funcin de
transferencia senoidal, y el otro es su ngulo de fase, ambos en funcin de la frecuencia.
La amplitud logartmica de G( j ) se representa como 20 log G ( j ) , siendo el
logaritmo en base 10. La unidad usada es el decibelio (dB).
La ventaja principal del diagrama de Bode, es que se puede convertir la
multiplicacin de amplitudes en suma de las mismas. Por ejemplo,

si

G ( s ) = G1 ( s ) G2 ( s )

G ( j ) = G1 ( j ) G2 ( j )

log(G ( j ) ) = log(G1 ( j ) ) + log(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 -

Sistemas de Control en Tiempo Discreto

Dado un sistema en tiempo continuo cuya funcin de transferencia en lazo


abierto es

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 )

y en el caso discreto ser

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:

- Ganancia en bajas frecuencias:

lim G ( j )

lim G ( j )

- Constante de error esttico de posicin:


En el caso discreto sera

- 232 -

K p = lim G ( s )
s 0

K p = lim G ( z )
z 1

Captulo 7: Anlisis de Respuesta en Frecuencias

- Constante de error esttico de velocidad:

K v = lim s G ( s )
s 0

K v = lim z G ( z )

En el caso discreto sera

z 1

- Constante de error esttico de aceleracin:

K a = lim s 2 G ( s )
s 0

K a = lim z 2 G ( z )

En el caso discreto sera

z 1

- Tabla con el error en estado estacionario en respuesta a una entrada escaln,


rampa y aceleracin:
Error en estado estacionario
SISTEMA

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

- Frecuencia de cruce de ganancia: Frecuencia 1 para la cual el valor absoluto


G ( j ) de la funcin de transferencia de lazo abierto es la unidad.

G ( j 1 ) = 1

20 log10 G ( j 1 ) = 0

- 233 -

Sistemas de Control en Tiempo Discreto

- Frecuencia de cruce de fase: Se define como la frecuencia 2 a la cual el


ngulo de fase de la funcin de transferencia de lazo abierto es igual a -180.

ngulo(G ( j 2 ) ) = 180

- Margen de fase: Cantidad de retardo de fase adicional necesaria a la frecuencia


de cruce de ganancia, para que el sistema quede al borde de la inestabilidad. El
margen de fase es 180 ms el ngulo de fase de la funcin de transferencia
de lazo abierto a la frecuencia de cruce de ganancia, o sea

= 180 +

con

= ngulo(G ( j 1 ) )

- Margen de ganancia: Es la inversa de G ( j ) a la frecuencia de cruce de


fase. Es decir,

Kg =

1
en dB
G( j 2 )

20 log10 G ( j 2 ) dB

- Frecuencia de corte: Se denomina frecuencia de corte c a la frecuencia a la


cual el valor de la respuesta de frecuencia de lazo cerrado est 3 dB por debajo
de su valor a frecuencia cero. Es decir,

20 log10

G( j c )
1 + G( j c )

G( j c )
= 3 dB
1 + G( j c )

- 234 -

= 3 en dB, es decir

Captulo 7: Anlisis de Respuesta en Frecuencias

- Ancho de banda: Es el rango de frecuencias 0 c en el que el valor del


lazo cerrado no cae por debajo de -3 dB.

Ejemplo diagrama de Bode:

Dada la funcin de transferencia G ( s ) =

10
s ( s + 1) ( s + 5)

> restart: with(plots):

> G := s -> 10/(s*(s+1)*(s+5));


G := s 10

1
s (s + 1) (s + 5)

Se realiza el procedimiento 'Diag_Bode', que recibe como parmetro la funcin

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

En el eje 'x' de los diagramas, se representa la variable fr = log10 ( ) . Para


saber cul es una frecuencia determinada, basta con elevar a 10 la cifra que
se ve:

= 10 fr .

En el eje 'y', en el diagrama de magnitudes se representa la amplitud en


decibelios ( 20 log10 G ( j ) dB). En el diagrama de fases, se representa
la fase, ngulo(G ( j ) ) , en grados.

- 235 -

Sistemas de Control en Tiempo Discreto

En el diagrama de las magnitudes, se pinta en gris la recta equivalente a la


contante que se pasa como parmetro (0 dB para el sistema en lazo abierto,
-3 dB para el sistema en lazo cerrado.

En el diagrama de las fases, se pinta en gris la recta equivalente a -180.

Como la funcin de Maple 'argument' da valores en radianes, se hace


gra dos =

necesario pasar a grados:

radianes 180

La funcin de Maple 'argument' da sus valores entre y radianes,


mientras que el diagrama de Bode pinta la fase con valores entre 2 y 0
radianes (al margen de la conversin a grados antes mencionada). La
funcin 'arg', que representa la fase, tiene en cuenta este detalle.

La funcin 'mag', representa la magnitud. 'mag' y 'arg' son variables


globales del procedimiento, para poder usarlas posteriormente.

> Diag_Bode := proc(f, ind1, ind2, cte)


local

ctem, ctea, m, a, w, p1, p2;

global mag, arg;


with(plots):
# rectas adicionales
ctem := plot(cte, w=ind1..ind2, color=wheat, axes=FRAME):
ctea := plot(-180, w=ind1..ind2, color=wheat, axes=FRAME):
(contina)

- 236 -

Captulo 7: Anlisis de Respuesta en Frecuencias

# magnitud de G
mag := w -> abs(subs(omega=w, f)):
m

:= plot(20*log[10](mag(10^w)), w=ind1..ind2, color=blue,


axes=FRAME, title=`magnitud de G`):

# fase de G
arg

:= w -> argument(subs(omega=w, f)) (signum(argument(subs(omega=w, f)))+1)*Pi;

:= plot(evalf(arg(10^w)*180/Pi), w=ind1..ind2,
color=blue, axes=FRAME, title=`fase de G`):

# diagramas
p1

:= display({m, ctem}, labels=[fr, dB],


title=`MAGNITUD DE G`, tickmarks=[10,15]):

p2

:= display({a, ctea}, labels=[fr, grados],


title=`FASE DE G`, tickmarks=[10,15]):

print(p1);
print(p2);
end:

- 237 -

Sistemas de Control en Tiempo Discreto

> # -1 = log[10](1/10), 3 = log[10](1000)


Diag_Bode(G(I*omega), -1, 3, 0);

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 -

Captulo 7: Anlisis de Respuesta en Frecuencias

> Kp := limit(G(s),
Kv := limit(s*G(s),

s=0, right);

Kp := limit(G(s), s=0, left);

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.

> Diag_Bode(G(I*omega), 0, 0.5, 0);

- 239 -

Sistemas de Control en Tiempo Discreto

Calculamos ahora la frecuencia de cruce de ganancia. En el diagrama de Bode se puede


apreciar que la magnitud tiene valor 0 dB para = 10 0.09 = 1.23 , aproximadamente. Lo
cual nos da un margen de fase aproximado de -155 + 180 = 25 (como los diagramas
de magnitud y fase tienen el mismo eje de frecuencias, basta con trazar una lnea
vertical desde el punto donde la magnitud es cero, hasta el punto correspondiente en la
fase, y sumarle 180 al valor que se obtenga). Lo comprobamos con Maple,
aprovechando que 'mag' y 'arg' son variables globales.

> evalf(arg(10^0.09)*180/Pi) + 180;


25.2820203

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

Frecuencia de corte (lazo cerrado):

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

Captulo 7: Anlisis de Respuesta en Frecuencias

Se dibujan la magnitud y la fase de la funcin de transferencia de lazo cerrado.

> Diag_Bode(G(I*omega)/(1+G(I*omega)), 0, 0.5, -3);

Mirando el diagrama de Bode de la respuesta de frecuencia de lazo cerrado, para que


20 log10

G( j c )
= 3 dB, se ve que fr = 0.3, y por lo tanto
1 + G( j c )

> omega[c] := 10^0.3;


c := 1.995262315
y el ancho de banda comprende el intervalo cerrado [0, c ] .

- 241 -

Sistemas de Control en Tiempo Discreto

7.4.2.- Ventajas del mtodo del diagrama de Bode para el diseo en w. El mtodo

del diagrama de Bode es en particular til en lo que se refiere al anlisis y el diseo de


los sistemas de control, por las siguientes razones:
1.

Se pueden traducir las especificaciones de la respuesta transitoria a los


correspondientes de la respuesta en frecuencia en trminos del margen de fase,
del margen de ganancia, del ancho de banda y as sucesivamente. Estas
especificaciones se pueden manejar fcilmente en el diagrama de Bode. En
particular, los mrgenes de fase y de ganancia se pueden leer en forma directa
del diagrama de Bode.

2.

El diseo de un compensador digital (o un controlador digital) para satisfacer las


especificaciones dadas (en funcin del margen de fase o del margen de
ganancia) puede llevarse a cabo en el diagrama de Bode de una forma sencilla y
simple.

- 242 -

Captulo 7: Anlisis de Respuesta en Frecuencias

7.5 TCNICAS DE COMPENSACIN.


Antes de analizar los procedimientos de diseo en el plano w (apartado 7.6),
revisemos las tcnicas de compensacin mediante el adelanto de fase, el atraso de
fase, y el atraso-adelanto de fase. [REF. 3].

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

A continuacin hacemos la transformacin

T
w
2
z=
T
1 w
2
1+

obteniendo la siguiente funcin transferencia de pulso en w:

G D ( w) = G D ( z )

T
1+ 2 w
z= T
1 w
2

- 243 -

Sistemas de Control en Tiempo Discreto

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 )

en funcin del logaritmo de y el

ngulo de fase de GD( j ) en funcin del logaritmo de . La traza de la magnitud


logartmica se basa en la factorizacin de GD( j ), de tal forma que funciona en el
principio de sumar los trminos factorizados individuales, en vez de multiplicar los
trminos individuales. Las tcnicas conocidas de trazas asintticas son aplicables y, por
lo tanto, se puede dibujar con rapidez la curva de magnitud si se utilizan asntotas con
lneas rectas. Mediante el uso del diagrama de Bode, se puede disear un compensador
digital o un controlador digital a travs de tcnicas de diseo convencionales.
Se considera el sistema mostrado en la figura.

Se supone que las especificaciones de diseo estn dadas en trminos de margen de


fase, margen de ganancia, constantes de error esttico de velocidad y similares.

- 244 -

Captulo 7: Anlisis de Respuesta en Frecuencias

7.5.1 Compensador de adelanto de fase.

La compensacin mediante el adelanto de fase es comnmente utilizada para


mejorar los mrgenes de estabilidad. Este tipo de compensacin aumenta el ancho de
banda del sistema, luego aumenta la ganancia en altas frecuencias. Por lo tanto, el
sistema tiene una velocidad de respuesta ms rpida. Sin embargo, un sistema que
utilice compensacin mediante adelanto de fase puede estar sujeto a problemas de ruido
de alta frecuencia, en vista de su incremento en la ganancia en alta frecuencia.
Para disear un compensador de adelanto de fase seguimos los siguientes pasos:
1.-

Se supone la forma siguiente para el compensador de adelanto:

GC ( w) = K

1+ w
1 + w

0 < <1

La funcin de transferencia en lazo abierto para el sistema compensado puede


escribirse:

GC ( w) G D ( w) = K

1+ w
G D ( w)
1 + w

1+ w
G D1 ( w)
1 + w

- 245 -

Sistemas de Control en Tiempo Discreto

siendo G D1 ( w) = K G D ( w) . Determinar la ganancia K que satisfaga el


requisito de la constante de error esttico de velocidad Kv dada, recordando que

K v = lim w GC ( w) G D ( w)
w 0

2.-

Utilizando la ganancia K as determinada, dibujar el diagrama de Bode de


GD1 ( w ), el sistema ajustado por ganancia, pero no compensado. Evaluar el
margen de fase.

3.-

Determinar el ngulo de adelanto de fase necesario a aadirse al sistema,


siendo la diferencia entre el margen de fase que se quiere tener, y el margen
de fase que se tiene sin el controlador (margen de fase de GD( w )).

4.-

Aadir a entre 5 y 12 para compensar el desplazamiento de la frecuencia de


cruce de ganancia. Definir este aadido como adelanto de fase mximo m,
(tambin llamado m). Determinar el factor de atenuacin a partir de la
siguiente ecuacin:

sin( m ) =

1
1+

- 246 -

Captulo 7: Anlisis de Respuesta en Frecuencias

5.-

Determinar el punto de frecuencia donde la magnitud del sistema no


1
compensado G D1 ( j ) es igual a 20 log
. Escoger esta frecuencia

como la nueva frecuencia de cruce de ganancia. Esta frecuencia corresponde a

m =

, y a esta frecuencia se presenta el desplazamiento mximo de fase

m.
6.-

7.-

Determinar las frecuencias de esquina del compensador de adelanto como sigue:

Cero del compensador de adelanto:

Polo del compensador de adelanto:

Verificar el margen de ganancia para asegurarse de que es satisfactorio.


La funcin principal del compensador de adelanto es proporcionar atenuacin en

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:

Como ejemplo de diseo de un compensador de adelanto de fase, ver el ejemplo del


apartado 7.6.

- 247 -

Sistemas de Control en Tiempo Discreto

7.5.2 Compensador de atraso de fase.

La compensacin mediante atraso de fase reduce la ganancia del sistema en


frecuencias ms altas, sin reducir la ganancia del sistema en frecuencias ms bajas. El
ancho de banda del sistema queda reducido y, por lo tanto, el sistema tiene una
velocidad de respuesta ms baja. Debido a la reducida ganancia en alta frecuencia, se
puede aumentar la ganancia total del sistema y, por lo tanto, incrementarse la ganancia
en baja frecuencia y mejorarse la precisin en estado permanente. Tambin puede
atenuarse cualquier ruido de alta frecuencia que se presente en el sistema.
Para disear un compensador de atraso de fase se deben seguir los siguientes
pasos:
1.-

Se supone la forma siguiente para el compensador de atraso:

GC ( w) = K

1+ w
,
1 + w

1<

La funcin de transferencia en lazo abierto del sistema compensado puede


escribirse:

GC ( w) G D ( w) = K

1+ w
G D ( w)
1 + w

1+ w
G D1 ( w)
1 + w

- 248 -

Captulo 7: Anlisis de Respuesta en Frecuencias

siendo G D1 ( w) = K G D ( w) . Determinar la ganancia K que satisfaga el


requisito de la constante de error esttico de velocidad Kv dada. Recordando que

K v = lim w GC ( w) G D ( w)
w 0

2.-

Si el sistema no compensado GD1( w ) no satisface las especificaciones referentes


a los mrgenes de fase y de ganancia, entonces encontrar el punto de frecuencia
donde el ngulo de fase de la funcin de transferencia en lazo abierto sea igual
a -180 ms el margen de fase requerido. El margen de fase requerido es el
margen de fase especificado ms 5 a 12. (La adicin de 5 a 12 compensa el
atraso de fase del compensador de atraso). Escoger esta frecuencia como la
nueva frecuencia de cruce de ganancia.

3.-

A fin de evitar efectos perjudiciales de atraso de fase en razn del compensador


de atraso, el polo y el cero del compensador de atraso debern estar localizados
bastante ms abajo que la nueva frecuencia de cruce de ganancia. Por lo tanto,
escoger la frecuencia de esquina =

(correspondiente al cero del

compensador de atraso de fase) una dcada por debajo de la nueva frecuencia de


cruce. Una relacin igual a 10 se conoce como dcada de frecuencias [REF. 2].
4.-

Determinar la atenuacin necesaria para llevar la curva de magnitud hacia


abajo hasta 0 dB en la nueva frecuencia de cruce de ganancia. Notando que esta
atenuacin es 20 log( ) , determinar el valor de . Entonces la otra frecuencia
de esquina (que corresponde al polo del compensador de atraso) queda
determinada a partir de =

1
.
t

- 249 -

Sistemas de Control en Tiempo Discreto

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

> restart: with(inttrans): with(plots): Digits:=5:

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

A continuacin transformamos la funcin transferencia de pulso GD( z ) en una


funcin de transferencia GD( w ) mediante la transformacin bilineal correspondiente:

> G[D](w) := simplify(subs(z=(1+w*(T/2)) / (1-w*(T/2)), G[D](z)));


GD( w ) := .10000

( 10. + w ) K ( 11070. + 37. w )


( 11070. + 11107. w ) w

- 250 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Se trata de un compensador de atraso de fase. Esta es una de las formas ms sencillas de


la funcin de transferencia del controlador digital. La funcin de transferencia en lazo
abierto es

> G[C](w) := (1+ tau*w) / (1+beta*tau*w);


G[C](w)*G[D](w);
GC( w ) :=
.10000

1+w
1+ w

( 1 + w ) ( 10. + w ) K ( 11070. + 37. w )


( 1 + w ) ( 11070. + 11107. w ) w

La constante de error esttico de velocidad Kv queda especificada como 2 seg 1 . Por lo


tanto,

2 = K v = lim ( w GC ( w) G D ( w))
w 0

K =2

Sustituimos K = 2 en GD( w ).

> G[D2](w) := factor(subs(K=2, G[D](w)));


GD2( w ) := .00066625

( 10. + w ) ( w + 299.19 )
( w + .99667 ) w

- 251 -

Sistemas de Control en Tiempo Discreto

DIAGRAMA DE BODE DEL SISTEMA:


Primero es necesario ejecutar el procedimiento 'Diagrama_Bode', del ejemplo del
apartado 7.6. Como todava no se tiene el valor exacto del controlador, se muestra slo
el diagrama de Bode de GD( j ).

> G[D3](v) := subs(w=I*nu, G[D2](w)):


Diagrama_Bode(G[D3](v), 0, 1, -1, 3, 0);

- 252 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Se ampla la zona que interesa:

> Diagrama_Bode(G[D3](v), 0, 1, 0, 0.6, 0);

Mirando en el Diagrama de Bode:


0.1

Margen de Fase: 30

0.51

Margen de Ganancia: 14dB

- Frecuencia de Cruce de Ganancia: fr = 0.1

= 10

- Frecuencia de Cruce de Fase:

= 10

fr = 0.5

- 253 -

Sistemas de Control en Tiempo Discreto

Las especificaciones requieren, adems de Kv = 2, de un margen de fase de 45 y


una ganancia de por lo menos 10 dB. Diseemos un controlador digital que satisfaga
estas especificaciones.

Diseo del compensador de atraso: Ya que las especificaciones exigen un


margen de fase de 45, el ngulo adicional del adelanto de fase necesario para satisfacer
este requisito es de 15 (en el diagrama de Bode anterior, se aprecia que el margen de
fase de GD( j ) es de -150 + 180 = 30).
El margen de fase requerido es aproximadamente de 53 (margen de fase
especificado ms entre 5 y 12). Esto significa que se han aadido 8 para compensar el
desplazamiento de la ganancia en la frecuencia de cruce. En el Diagrama de Bode se ve
que la nueva frecuencia de cruce de ganancia es = 10 0.2 = 0.63

> evalf(argGd(10^(-0.2))*180/Pi)+ 180;


10^(-0.2);

54.17
.63096

Frecuencia de esquina =

(correspondiente al cero del compensador de

atraso), una dcada por debajo de la nueva frecuencia de cruce: 0.063 =

- 254 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Despejando, se obtiene el valor de :

> ecu := 0.063096 = 1/tau:


tau := solve(ecu, tau);
:= 15.849

En la nueva frecuencia de cruce de ganancia, la magnitud es de 9 dB. Se


determina la atenuacin necesaria para llevar la curva de magnitud a 0 dB, siendo dicha
atenuacin 20 log10 ( ) .

> evalf(20*log[10](magGd(10^(-0.2))));
beta := magGd(10^(-0.2));
8.5744
:= 2.6836

Por lo tanto, la otra frecuencia de esquina queda determinada como =

> 1/(beta*tau);
.023511

La funcin del controlador se muestra a continuacin:

> G[C](w) := (1+tau*w)/(1+tau*beta*w);


GC( w ) :=

1 + 15.849 w
1 + 42.532 w

- 255 -

1
= 0.02

Sistemas de Control en Tiempo Discreto

Diagrama de Bode:

> G[C2](v) := subs(w=I*nu, G[C](w)):


Diagrama_Bode(G[D3](v), G[C2](v), 1, -1, 3, 0);

- 256 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Se ampla la zona que interesa:

> Diagrama_Bode(G[D3](v), G[C2](v), 2, -0.3, 0.6, 0);

En el diagrama se observa que se satisfacen los requisitos dados:


- Margen de fase:

-130 + 180 = 50

- Margen de ganancia:

-(-23 dB)

- 257 -

= 23 dB.

Sistemas de Control en Tiempo Discreto

Precaucin. Una vez diseado el compensador de atraso en el plano w, GC ( w ) deber

transformarse en el compensador de atraso en el plano z, GC ( z ). Note que el polo y el


cero en el compensador de atraso en el plano z estn muy cerca uno de otro. (Estn
cerca del punto z = 1). Ya que los coeficientes del filtro se deben realizar mediante
palabras binarias que utilizan un nmero limitado de bits, si el nmero de bits empleado
resulta insuficiente, las localizaciones de polos y ceros del filtro pueden no realizarse tal
y como se desea, y el compensador resultante podra no comportarse como se espera. Es
importante que el polo y el cero del compensador de atraso se presenten en un nmero
finito de puntos discretos asignables.
En algunas aplicaciones, un compensador de atraso de fase es colocado en
cascada con un compensador de adelanto de fase. Un compensador en serie como ste
se conoce como un compensador de atraso-adelanto de fase. Al utilizar este tipo de
compensador se puede incrementar la ganancia en baja frecuencia (lo que significa una
mejora en la precisin en estado permanente), mientras que al mismo tiempo se puede
aumentar el ancho de banda y los mrgenes de estabilidad.
Observaciones sobre el problema de cuantizacin de los coeficientes. Desde

el punto de vista de la implementacin en un microprocesador de los compensadores de


adelanto de fase, atraso de fase y atraso-adelanto de fase, los compensadores de
adelanto de fase no presentan problemas de cuantizacin de coeficientes, porque las
localizaciones de los polos y de los ceros estn bien separadas. Sin embargo, en el caso
de los compensadores de atraso de fase y de los compensadores de atraso-adelanto de
fase, la red de atraso de fase plantea un problema de cuantizacin de los coeficientes,
porque las localizaciones de polos y de ceros estn cercanas entre s (estn cerca del
punto z = 1). [REF. 3].

- 258 -

Captulo 7: Anlisis de Respuesta en Frecuencias

7.6 PROCEDIMIENTO DE DISEO EN EL PLANO W.


Refirindonos al sistema de control digital de la figura, el procedimiento de
diseo en el plano w puede enunciarse como sigue [REF. 4]:

Datos:

funcin de transferencia continua de la planta Gp( s )


perodo de muestreo T
Paso 1: Obtener la funcin de transferencia discretizada de la planta precedida por un

mantenedor de orden cero (ver discretizacin por invarianza al escaln).


1 e sT

Transformar G D ( z ) =
G p ( s) GD( w ) mediante la transformacin
s

bilineal

w T
2
z=
w T
1
2

1+

- 259 -

Sistemas de Control en Tiempo Discreto

Es importante que el perodo de muestreo sea elegido adecuadamente. Una


regla prctica que da Ogata [REF. 3] es muestrear a una frecuencia de 10 veces
la del ancho de banda del sistema continuo en lazo cerrado. Es decir, el ancho
de banda de

G ( s)
.
1 + G(s)

Paso 2: Determinar la ganancia del sistema para satisfacer la especificacin del error

permanente [REF. 4].


Paso 3: Sustituir w = j en GD( w ) y representar el diagrama de Bode para el valor de

la ganancia que hemos calculado. Determinar la frecuencia de cruce de la


ganancia y el margen de fase.
Paso 4: Determinar la funcin de transferencia del controlador

GC ( w) =

1+ w
1 + w

utilizando las tcnicas convencionales de diseo para sistemas de control en


tiempo continuo. La distorsin entre las escalas de y debe tenerse en
cuenta cuando se decide, por ejemplo, la frecuencia de cruce de la ganancia o
el ancho de banda.
Paso 5: Transformar la funcin de transferencia del controlador GC( w ) en GC( z )

mediante la transformacin bilineal dada por

w=

2 z 1

T z +1

- 260 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Paso 6: Realizar la funcin de transferencia GC( z ) mediante un algoritmo

computacional.

Ejemplo:

Considerar el sistema de control de la figura. Disear un controlador digital en el


plano w de tal forma que el margen de fase sea 50, el margen de ganancia sea de por lo
menos 10 dB, y la constante de error esttico de velocidad Kv sea 2 seg 1 . Suponer que
el perodo de muestreo es T = 0.2 segundos. [REF. 3].

Primero obtenemos la funcin transferencia de pulso GD( z ) de la planta que est


precedida por un mantenedor de orden cero:

> restart: with(inttrans): Digits:=5: with(plots):

- 261 -

Sistemas de Control en Tiempo Discreto

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

A continuacin transformamos la funcin transferencia de pulso GD( z ) en una


funcin de transferencia GD( w ) mediante la transformacin bilineal correspondiente:

> G[D](w) := simplify(subs(z=(1+w*((1/5)/2)) / (1-w*((1/5)/2)), G[D](z)));


GD( w ) := 1.6375

( 10. + w ) ( 11070. + 37. w ) K


( 181270. + 181870. w ) w

Un compensador de adelanto de fase, probablemente satisfar todos los


requisitos. Por lo tanto, probaremos compensacin mediante adelanto (si no se
satisfacieran todos los requisitos, habra que probar con otro tipo de compensador).
Ahora supongamos que la funcin de transferencia del controlador digital

GC( w ) tiene una ganancia unitaria para el intervalo de baja frecuencia y la forma
siguiente, con 0 < < 1 :

> G[C](w) := (1 + tau*w) / (1 + alpha*tau*w);


limit(subs(w=j*nu, G[C](w)), nu=0);
GC( w ) :=

1+w
1+w

- 262 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Se trata de un compensador de adelanto de fase. Esta es una de las formas ms


sencillas de la funcin de transferencia del controlador digital. La funcin de
transferencia en lazo abierto es

> eval(G[C](w)*G[D](w));
GD( w ) := 1.6375

( 10. + w ) ( 11070. + 37. w ) K


( 181270. + 181870. w ) w

La constante de error esttico de velocidad Kv queda especificada como


2 seg 1 . Por lo tanto,

2 = K V = lim (w GC ( w) G D ( w) )
w 0

K =2

La ganancia K se determina entonces como el valor 2.

> eval(limit(w*G[C](w)*G[D](w), w=0));


K

> solve(2=%, K);


2
Sustituimos K = 2 en GD( w ), y la expresin resultante es:

> G[D2](w) := factor(subs(K=2, G[D](w)));


GD2( w ) := .00066630

( 10. + w ) ( w + 299.17 )

- 263 -

( w + .99670 ) w

Sistemas de Control en Tiempo Discreto

DIAGRAMA DE BODE DEL SISTEMA.


Se realiza ahora el procedimiento 'Diagrama_Bode', muy similar al
procedimiento Diag_Bode del ejemplo del apartado 7.4.1. Recibe como parmetros dos
funciones y un contador , adems de los ndices del eje 'x' y una constante, que se
pintar como recta en el diagrama de magnitudes (recta de 0 dB en lazo abierto, recta de
-3 dB en lazo cerrado).
- Las funciones son G D ( j ) y GC ( j ).
- El contador vale 1, 2 3 segn se quiera dibujar slo G D ( j ), G D ( j ) y

GC ( j ) G D ( j ), o las dos anteriores y GC ( j ).


- Los dos siguientes parmetros son los ndices del eje 'x'.
- El ltimo parmetro es la constante que se pinta en el diagrama de magnitudes.
- La funcin G D ( j ) se dibuja en color azul.
- La funcin GC ( j ) G D ( j ) se dibuja en color negro.
- La funcin GC ( j ) se dibuja en color negro, punteado.
- Se definen como variables globales:
- magnitud y fase de G D ( j ):

'magGd', 'argGd'.

- magnitud y fase de GC ( j ):

'magGc', 'argGc'.

- magnitud y fase de GC ( j ) G D ( j ):

'magGcGd', 'argGcGd'.

- 264 -

Captulo 7: Anlisis de Respuesta en Frecuencias

> Diagrama_Bode := proc(f1, f2, cont, ind1, ind2, cte)


local

cm, ca, mGd, mGc, mGcGd, aGd, aGc, aGcGd, v, p1, p2;

global

magGd, magGc, magGcGd, argGd, argGc, argGcGd;

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

:= v -> argument(subs(nu=v, f1)) (signum(argument(subs(nu=v, f1)))+1) *Pi;

aGd

:= plot(evalf(argGd(10^v)*180/Pi), v=ind1..ind2,
color=blue, axes=FRAME):
(contina)

- 265 -

Sistemas de Control en Tiempo Discreto

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 -

Captulo 7: Anlisis de Respuesta en Frecuencias

# 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]):

elif (cont=2) then


p1 := display({mGd, mGcGd, cm},
title=`MAGNITUDES`,
p2 := display({aGd, aGcGd, ca},
title=`FASES`,

labels=[fr, dB],
tickmarks=[10,15]):
labels=[fr, grados],
tickmarks=[10,15]):

else
p1 := display({mGd, mGcGd, mGc, cm},
title=`MAGNITUDES`,

tickmarks=[10,15]):

p2 := display({aGd, aGcGd, aGc, ca},


title=`FASES`,

labels=[fr, dB],
labels=[fr, grados],

tickmarks=[10,15]):

fi:
print(p1);
print(p2);
end:

- 267 -

Sistemas de Control en Tiempo Discreto

Como todava no se tiene el valor exacto del controlador, se muestra slo el


diagrama de Bode de G D ( j ).

> G[D3](v) := subs(w=I*nu, G[D2](w)):


Diagrama_Bode(G[D3](v), 0, 1, -1, 3, 0);

- 268 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Para apreciar mejor los mrgenes de ganancia y fase de la funcin, se ampla la


zona que nos interesa del Diagrama de Bode:

> Diagrama_Bode(G[D3](v), 0, 1, 0, 0.6, 0);

Mirando en el Diagrama de Bode:


- Frecuencia de Cruce de Ganancia: fr = 0.1 = 10 0.1
Margen de Fase:
- Frecuencia de Cruce de Fase:
Margen de Ganancia:

-150 + 180 = 30
fr = 0.5 = 10 0.5
-(-14) = 14 dB

- 269 -

Sistemas de Control en Tiempo Discreto

Las especificaciones requieren, adems de Kv = 2, un margen de fase de 50 y


una ganancia de por lo menos 10 dB. Diseemos un controlador digital que satisfaga
estas especificaciones.
Diseo del compensador de adelanto: Ya que las especificaciones exigen un
margen de fase de 50, el ngulo adicional del adelanto de fase necesario para satisfacer
este requisito es de 20 (en el diagrama de Bode anterior se ha visto que el margen de
fase de G D ( j ) es de 30). Para obtener un margen de fase de 50 sin reducir el valor
de K, el compensador de adelanto debe de contribuir el ngulo de adelanto de fase
requerido.
Si observamos que la adicin de un compensador de adelanto modifica la curva
de magnitud en el diagrama de Bode, la frecuencia de cruce de ganancia se desplazar
hacia la derecha. Si se considera el desplazamiento de la ganancia en la frecuencia de
cruce, debemos suponer que m, que es el ngulo mximo de adelanto de fase
requerido, es aproximadamente de 28. Esto significa que se han aadido 8 (se aaden
entre 5 y 12) para compensar el desplazamiento de la ganancia en la frecuencia de
cruce. En vista de que

sin( m ) =

> ecu

1
1+

:= sin(28*Pi/180) = (1-alpha)/(1+alpha);

alpha := evalf(solve(ecu, alpha));


7 1
ecu := sin =
45 1 +
:= .36101
m = 28 corresponde a = 0.361 , confirmndose que se trata de adelanto de fase
(0 < < 1) .

- 270 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Una vez que el factor de atenuacin se ha determinado sobre la base del


ngulo de adelanto de fase requerido, el siguiente paso es determinar las frecuencias de
esquina =

y =

1
del compensador de adelanto. Para ello, primero notamos

que el ngulo de adelanto de fase mximo m , se presenta en la media geomtrica de


las dos frecuencias de esquina, es decir =
curva de magnitud en =

. La cantidad de modificacin en la

debido a la inclusin del trmino

1 + j
1 + j

1 + j
es
1 + j

A continuacin encontramos el punto de frecuencia donde la magnitud del


1
sistema no compensado es 20 log

> 1/sqrt(alpha):
-20*log(%);
-4.4246

Para encontrar el punto de frecuencia donde la magnitud es -4.4 dB, se mira


el anterior diagrama de Bode. Parece que la frecuencia es = 10 0.25 = 1.78 .

- 271 -

Sistemas de Control en Tiempo Discreto

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

En = 1.7 la magnitud se convierte en alrededor de -4.4 dB. Seleccionamos esta


frecuencia como la nueva frecuencia de cruce de ganancia c. Al observar que esta
frecuencia corresponde a c =

se tiene:

> nu[c] := 1.7;


nu[c] = 1/sqrt(alpha*tau);
c := 1.7

1.7 = 1.6643

> tau := solve(%, tau);


alpha*tau;
:= .95844
.34601

- 272 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Por lo tanto, el compensador de adelanto determinado es GC ( w) =

1+ w
1 + w

> G[C](w) := (1+tau*w)/(1+alpha*tau*w) ;


GC( 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.

> G[C2](v) := subs(w=I*nu, G[C](w)):


Diagrama_Bode(G[D3](v), G[C2](v), 2, -1, 3, 0);

- 273 -

Sistemas de Control en Tiempo Discreto

Ampliando la zona que nos interesa, vemos que el margen de fase es de 50 y el margen
de ganancia es de 14 dB.

> Diagrama_Bode(G[D3](v), G[C2](v), 2, 0, 0.8, 0);

- 274 -

Captulo 7: Anlisis de Respuesta en Frecuencias

La funcin de transferencia del controlador que acabamos de dar (GC( w )) se


transformar ahora de regreso al plano z mediante la correspondiente transformacin
bilineal:

w=

z 1
2 z 1 2 z 1

=
= 10
T z +1 1 z +1
z +1
5

> G[C](z) := simplify(subs(w=10*(z-1)/(z+1), G[C](w)));


GC( z ) := 4.

26461. z 21461.
44601. z 24601.

La funcin transferencia de pulso en lazo abierto del sistema compensado es

> G[D](z) := subs(K=2, G[D](z)):


G[C](z)*G[D](z);
6.5500

( 26461. z 21461. ) ( .022880 z + .021400 )


( 44601. z 24601. ) ( z 1. ) ( z .81873 )

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 )

> simplify(G[C](z)*G[D] (z) / (1+G[C](z)*G[D] (z)));


( 26461. z 21461. ) ( 572. z + 535. )

131.
.22300 10

11 3
11 2
11
11
z .50876 10 z + .40876 10 z .11575 10

- 275 -

Sistemas de Control en Tiempo Discreto

7.7 EJERCICIOS.

> restart: with(inttrans): with(plots): Digits:=5:

Para realizar los siguientes ejercicios, es necesario haber ejecutado primero el


procedimiento 'Diagrama_Bode.
7.7.1.- Obtenga la salida en estado permanente de el sistema definido en el ejemplo
del apartado 7.3, a una entrada senoidal u ( k T ) = A sin( k T ).

0.6321
.
z 0.3679

Tenemos la funcin de transferencia G D ( z ) =


Sustituimos z por e

j T

en GD( z ):

> G[D] := z -> 0.6321/(z-0.3679);


G[D](exp(I*omega*T)):
convert(%, trig);
GD := z .6321

.6321

1
z .3679

1
cos( T ) + I sin( T ) .3679

- 276 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Se calculan ahora la magnitud y el ngulo de fase.

> M := simplify(evalc(abs(G[D](exp(I*omega*T)))));
M := 63.210

1
7358. cos( T ) + 11354.

> theta := simplify(evalc(argument(G[D](exp(I*omega*T)))));


:= arctan( 1. sin( T ), cos( T ) .36790 )

Por

lo

tanto,

la

salida

en

estado

permanente

se

puede

escribir

como

A M sin(k T + ) .

> x[ss](k*T) := A*M*sin(k*omega*T+theta);


x ss( k T ) := 63.210

A sin( k T + arctan( 1. sin( T ), cos( T ) .36790 ) )


7358. cos( T ) + 11354.

- 277 -

Sistemas de Control en Tiempo Discreto

7.7.2.- Dado el sistema que se muestra en la figura,

disee un controlador digital para el mismo. Utilice el mtodo del diagrama de


Bode en el plano w. Las especificaciones de diseo consisten en que el margen de
fase debe ser de 55, el margen de ganancia por lo menos de 10 dB, y la constante
-1

de error esttico de velocidad de 5 seg . El perodo de muestreo se especifica como


0.1 seg.

La transformada z de la planta precedida por un mantenedor de orden cero es

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 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Transformamos G D ( z ) en G D ( w ) utilizando la transformacin bilineal


correspondiente:

T w
2
z=
T w
1
2
1+

> G[D](w) := simplify(subs(z=(1+w*T/2)/(1-w*T/2), G[D](z)));


GD( w ) := .0011657

7
( 20. + w ) ( .19434 10 + 2831. w )
( 90820. + 45459. w ) w

Escogemos ahora la funcin de transferencia del controlador en la forma

> G[C](w) := K*(1+w/a)/(1+w/b);

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 -

Sistemas de Control en Tiempo Discreto

La constante de error esttico de velocidad requerida es Kv = 5 seg 1 , por lo tanto

> K[v] := 5;
ecu

:= K[v] = limit(w*G[C](w)*G[D](w), w=0);

:= solve(ecu, K);
Kv := 5
ecu := 5 = .49888 K
K := 10.022

Utilizando una tcnica de diseo convencional, se determina la funcin de transferencia


del controlador digital como

> G[C](w) := simplify(10*((1+w/1.994)/(1+w/12.5)));


GC( w ) := 10

1 + .50150 w
1 + .080000 w

Por lo tanto, la funcin de transferencia en lazo abierto se convierte en

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

Captulo 7: Anlisis de Respuesta en Frecuencias

A continuacin se muestra el diagrama de Bode del sistema, donde puede observarse


que se ha utilizado un compensador de adelanto de fase.

> G[D2](v) := subs(w=I*nu, G[D](w)):


G[C2](v) := subs(w=I*nu, G[C](w)):
Diagrama_Bode(G[D2](v), G[C2](v), 2, -1, 3, 0);

- 281 -

Sistemas de Control en Tiempo Discreto

Se ampla la zona que nos interesa.

> Diagrama_Bode(G[D2](v), G[C2](v), 2, -0.4, 1.6, 0);

En el diagrama parece que la frecuencia de cruce de ganancia de GC ( j ) G D ( j ) es


fr = 0.65, = 4.4668. El margen de fase parece 180 - 120 = 60.

> evalf(argGcGd(10^0.65)*180/Pi)+ 180;


58.16

- 282 -

Captulo 7: Anlisis de Respuesta en Frecuencias

Observando el diagrama de Bode, la frecuencia de cruce de fase de GC ( j ) G D ( j )


1.25

es fr = 1.25, = 10

= 17.78.

El margen de ganancia es de aproximadamente 12 dB.

> -(evalf(20*log[10](magGGD(10^1.2))));
13.297

La funcin de transferencia en lazo abierto da el margen de fase de


aproximadamente 58 y el margen de ganancia de alrededor de 13 dB. La constante de
error esttico de velocidad es K v = 5 seg 1 . Por lo tanto, se satisfacen todos los
requisitos y la funcin de transferencia del controlador diseado GC ( w ) es satisfactoria.

A continuacin, transformamos GC ( w ) en GC ( z ). Se deber utilizar la siguiente


transformacin bilineal:

w=

2 z 1

T z +1

> G[C](z) := simplify(subs(w=(2/T*((z-1)/(z+1))), G[C](w)));


GD( z ) := .50000

1103. z 903.
13. z 3.

La funcin transferencia de pulso en lazo abierto ahora se convierte en

> simplify(G[C](z)*G[D](z));
.0011657

( 1103. z 903. ) ( 50000. z + 47169. )


( 13. z 3. ) ( z 1. ) ( 25000. z 20459. )

- 283 -

Sistemas de Control en Tiempo Discreto

7.7.3.- Considere el sistema de control mostrado en la figura.

La funcin de transferencia de la planta es

1
s2

. Disee un controlador digital en el

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.

Primero se obtiene la transformada z precedida por un mantenedor de orden cero:

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

Se transforma G D( z ) en G D( w ) utilizando la transformacin bilineal correspondiente:

T w
2
z=
T w
1
2

1+

- 284 -

Captulo 7: Anlisis de Respuesta en Frecuencias

> G[D](w) := simplify(subs(z=(1+w*T/2)/(1-w*T/2), G[D](z)));


GD( w ) := .050000

20. + w
w

A continuacin se muestra el diagrama de Bode de G ( j v ) que se obtiene.

> G[D2](v) := subs(w=I*nu, G[D](w)):


Diagrama_Bode(G[D2](v), 0, 1, -1, 3, 0);

- 285 -

Sistemas de Control en Tiempo Discreto

Se ampla la zona que nos interesa.

> Diagrama_Bode(G[D2](v), 0, 1, -1, 3, 0);

En el diagrama parece que la frecuencia de cruce de ganancia es fr = 0.

- 286 -

Captulo 7: Anlisis de Respuesta en Frecuencias

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

> G[C](w) := 4*((1+w)/(1+w/16));


G[C](w) := simplify(%);
GC( w ) := 4

1+w
1+

GC( w ) := 64

1
16

1+w
16 + w

Se muestra ahora el diagrama de Bode completo, omitiendo la funcin GC ( j ).

> G[C2](v) := subs(w=I*nu, G[C](w)):


Diagrama_Bode(G[D2](v), G[C2](v), 2, -1, 3, 0);

- 287 -

Sistemas de Control en Tiempo Discreto

Se ampla la zona que nos interesa.

> Diagrama_Bode(G[D2](v), G[C2](v), 2, -0.1, 0.4, 0);

La adicin de esta red de adelanto modifica el diagrama de Bode. La frecuencia


de cruce de ganancia se recorre a = 10 0.6 . Note que el adelanto de fase mximo m que
puede producir esta red de adelanto es 62, ya que

1+

m = arcsin

- 288 -

Captulo 7: Anlisis de Respuesta en Frecuencias

> phi[m] := evalf(1/sin((1-1/16)/(1+1/16)));


m := 61.925

A la frecuencia de cruce de ganancia = 10 0.6 , el ngulo de fase de GC ( j ) G D ( j ) se


convierte en -129.

> evalf(argGcGd(10^0.6)*180/Pi);
-129.33

Por lo tanto, el margen de fase es 129 + 180 = 51. El margen de ganancia se


determina aproximadamente en 14 dB. Por lo tanto, se satisfacen las especificaciones de
diseo dadas. Lo comprobamos con Maple.

> evalf(argGcGd(10^0.6)*180/Pi);
13.909

Ahora transformamos la funcin de transferencia del controlador GC ( w ) en


GC ( z ) mediante la transformacin bilineal correspondiente:

w=

2 z 1

T z +1

> G[C](z) := simplify(subs(w = (2/T)*(z-1)/(z+1), G[C](w)));


GC( z ) := 16

21 z 19
9z1

- 289 -

Sistemas de Control en Tiempo Discreto

Entonces, la funcin transferencia de pulso en lazo abierto se convierte en

> simplify(G[C](z)*G[D](z));
.080000

( 21. z 19. ) ( z + 1. )
( 9. z 1. ) ( z 1. )

La constante de error esttico de velocidad se obtiene como sigue:

(1 z 1 ) GC ( z ) G D ( z )
z 1
T

K v = lim

> K[v] := limit((1-z^(-1))*G[C](z)*G[D](z)/T, z = 1, right);


K[v] := limit((1-z^(-1))*G[C](z)*G[D](z)/T, z = 1, left);
Kv := Float( )

Kv := Float( )

La constante de error esttico de velocidad tiende al infinito. Como el sistema es de tipo


2 (dos polos en s = 0), el error en estado estacionario en la respuesta rampa es cero (ver
tabla).

- 290 -

Captulo 7: Anlisis de Respuesta en Frecuencias

7.8 REFERENCIAS.

[REF. 1]

R.V. Churchill, J. W. Brown,


Variable Compleja y Aplicaciones,
Mc-Graw Hill, 1992

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