Sistemas de Control en Tiempo Discreto
description
Transcript of Sistemas de Control en Tiempo Discreto
- i -
INTRODUCCIÓN
Este Trabajo ha sido realizado con la intención de tratar de forma entendible el
análisis y diseño de sistemas de control en tiempo discreto. Este curso interactivo ha
sido desarrollado con el ordenador en el Sistema de Computación Matemática (S.C.M.)
'Maple V', para que el alumno avance en los conocimientos teóricos sobre la materia, al
mismo tiempo que se familiariza con el uso de esta aplicación.
Los autores hemos tenido la oportunidad de estar vinculados con profesores de
otras escuelas de la U.P.M. pudiendo contrastar experiencias sobre la utilización de
paquetes de matemáticas en asignaturas propiamente de ingeniería. Por ejemplo, en la
E.T.S. de ingenieros de telecomunicaciones llevan muchos años utilizando el programa
MatLab en asignaturas de control y robótica. Nosotros hemos preferido utilizar el
programa Maple V por ser más adecuado para la manipulación simbólica, ya que
MatLab está orientado fundamentalmente a aplicaciones numéricas.
El entorno Maple V se incluye dentro de los sistemas de computación
matemática, es decir, es un sistema de software diseñado para el tratamiento y
resolución de problemas matemáticos. Aunque su característica fundamental es su
capacidad simbólica, también incluye programas de tratamiento numérico y programas
para dibujar y manejar gráficos. Además, incluye paquetes y librerías específicos para
problemas de carácter menos general, como por ejemplo de Álgebra Lineal, de Variable
Compleja, de Ecuaciones Diferenciales, etc.
Otra de las características fundamentales de Maple V, es que incluye un lenguaje
de programación de alto nivel que nos permite crear nuestras propias funciones y
procedimientos. Al estar orientado este curso a alumnos de postgrado, su formación
como programador debe facilitarle el manejo de este lenguaje.
Estructura del curso. Este Trabajo se ha divido en siete capítulos, que se
componen a su vez de varios apartados. Un primer apartado a modo de introducción,
Sistemas de Control en Tiempo Discreto
- ii -
explicando cuál es el tema que se va a tratar. Los siguientes apartados son el desarrollo
en sí del capítulo en cuestión, y en ellos se muestran los conocimientos teóricos, así
como algunos ejemplos y aplicaciones prácticas para mejorar la comprensión.
Finalmente, un apartado de ejercicios con sus soluciones y otro con la bibliografía
utilizada para el capítulo.
Todos los ejemplos, aplicaciones y ejercicios del curso se realizan con la
aplicación Maple V. En la hoja de trabajo de Maple V (worksheet), se pueden añadir
nuevos grupos de ejecución antes o después de uno dado.
Cuando se ejecuta en el entorno Maple V un determinado grupo de ejecución, el
cursor salta hacia el siguiente. Si entre ambos hay mucho texto, hay que volver hacia
atrás para leerlo. Para evitar esto, a lo largo de todo el Trabajo hay numerosos grupos de
ejecución que no tienen ninguna instrucción, y están colocados con el propósito de
impedir que el cursor salte al siguiente, sin que el alumno haya leído el texto sito entre
ambos. También sirve para que el cursor no salte a la solución de un ejercicio antes de
que el alumno quiera verlo. En la presente memoria, estos grupos de ejecución vacíos se
han omitido, y todos los que contienen algo están recuadrados, además de tener el color
correspondiente: rojo para las instrucciones Maple, azul para la respuesta.
A lo largo de los distintos capítulos del curso hay numerosos enlaces
denominados 'HyperLinks', que son fácilmente 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 capítulos. En la memoria, estos enlaces se pueden distinguir a su
vez por estar en color verde y subrayados. Ejemplo: hyperlink. Así mismo, y con
idéntica intención, cada capítulo tiene una serie de marcas denominadas 'bookmarks',
que permiten moverte entre los distintos apartados de dicho capítulo. 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 capítulos y sus correspondientes
apartados, todos ellos con su propio enlace, para poder ir directamente a donde interese.
- iii -
También se ha realizado un glosario de términos en un archivo llamado glosario.mws,
en el cual se tienen todos los enlaces por orden alfabético, de forma que en cualquier
momento podemos acceder a una determinada definición o propiedad sin más que
buscarla en el glosario. Al final de cada capítulo de Maple V se encuentran enlaces al
capítulo anterior, al siguiente, al glosario y al índice, que llamaremos Menú Principal.
Se puede acceder a ellos a través del correspondiente bookmark: ‘Enlaces’. Otra forma
de acceder a un determinado capítulo es a través 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 través de las herramientas que nos proporciona la aplicación Maple. Se supone que el
alumno tiene conocimiento del manejo del programa Maple a nivel de iniciación. Sin
embargo, su formación como programador debe facilitarle la rápida incorporación en
este programa, que incluye un lenguaje de programación de alto nivel. De todas formas
Maple incorpora una extensa ayuda, muy útil para familiarizarse con su funcionamiento.
Conforme se va avanzando en la teoría, el entorno Maple se va haciendo cada
vez más útil y necesario, ya que los cálculos de los ejemplos y ejercicios aumentan en
complejidad. Su uso se hace más ameno y productivo, debido a que sirve para ir
comprobando los conocimientos que se adquieren con la teoría.
Al final de cada capítulo hay una sección 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 mínimo conocimiento sobre
programación 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.
Sistemas de Control en Tiempo Discreto
- iv -
Ejercicios. En el caso concreto de los ejercicios aparece su enunciado, y una vez
realizado el ejercicio se abrirá la sección 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 líneas de
comando correspondientes, para tener disponibles dichas funciones y procedimientos.
También habrá que ejecutar las líneas de comando correspondientes a las llamadas a
paquetes y librerías necesarias para la realización de los ejercicios. El diseño de los
ejercicios es el siguiente:
• Enunciado del ejercicio
• Mensaje que indica el lugar donde se debe obtener la solución, dando las
indicaciones oportunas sobre si hay que usar algún procedimiento previo
o si hay que llamar algún paquete, etc..
• + Solución. Al pinchar aquí con el ratón aparecen los pasos a seguir
para resolver el ejercicio.
Contenido teórico. Toda la parte teórica del Trabajo ha sido realizada tomando
como referencias los libros sobre la materia que se muestran en la bibliografía. Las
observaciones y notas del autor, y todos los cálculos realizados con Maple, así como
algunos de los ejercicios, están hechos por el autor del presente Trabajo.
Aunque el tratamiento del curso usando la aplicación Maple desde el principio
es innovador, sin embargo los temas elegidos en este curso son los temas clásicos que se
incluyen en un curso de sistemas de control en tiempo discreto en cualquier escuela de
ingeniería. Los contenidos a aprender están incluidos dentro de cada hoja de trabajo
(worksheets) de Maple. Dependiendo de la worksheet estos contenidos son:
Capítulo 1: "La Transformada Z". Se muestra que es una herramienta útil en
teoría de control en tiempo discreto. Se define la Transformada Z, así como algunos
teoremas básicos asociados con ella.
- v -
Capítulo 2: "Discretización de una Señal". Los sistemas de control en tiempo
discreto pueden operar en parte en tiempo discreto, y en parte en tiempo continuo. Este
capítulo muestra cómo discretizar las señales que aparecen como funciones en tiempo
continuo, y el importante papel que juega la transformada Z.
Capítulo 3: "Aplicación de la Transformada Z a Sistemas de Control
Gobernados por Ecuaciones en Diferencias". Este método permite obtener una
expresión en forma cerrada para la señal de salida x ( k ) . Aquí se muestra la utilidad de
dicha aplicación.
Capítulo 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 diseñar un sistema de control es que sea estable. En
concreto, se implementa el criterio de estabilidad de Jury.
Capítulo 5: "Análisis de Respuesta Transitoria". En este capítulo se estudian las
características de la respuesta transitoria de los sistemas de control en lazo cerrado.
Capítulo 6: "Diseño de Control por Establecimiento Finito (DeadBeat)". Este
capítulo presenta un método de diseño analítico para controladores digitales que obliga
a la secuencia de error a ser cero tras un número finito de períodos de muestreo (el
menor posible).
Capítulo 7: "Análisis 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 diseño de un sistema de control en tiempo discreto en el plano w, y la
utilización del diagrama de Bode.
Sistemas de Control en Tiempo Discreto
- vi -
OBJETIVOS DEL CURSO
El objetivo de este Trabajo Fin de Carrera es el de realizar un curso interactivo
de sistemas discretos, orientado al diseño de sistemas de control en tiempo discreto. Se
pretende desarrollar el análisis y diseño de sistemas de control en tiempo discreto de
forma comprensible. Al mismo tiempo se aprende a utilizar de forma práctica la
aplicación matemática Maple, de cara a facilitar la labor del alumno a la hora de realizar
toda serie de cálculos matemáticos.
Con este curso nos hemos marcado los siguientes objetivos desde el punto de
vista de la metodología o didáctica de las matemáticas:
• Utilización de Maple V como calculadora científica para resolver
problemas y verificar la solución de problemas resueltos con
anterioridad.
• Desarrollo y programación de los métodos y algoritmos estudiados en las
clases teóricas como estrategia idónea para su comprensión.
• Aplicación de los conceptos y herramientas al diseño de sistemas de
control.
Conforme se va avanzando en la teoría, el entorno Maple se va haciendo cada
vez más útil y necesario, ya que los cálculos de los ejemplos y ejercicios aumentan en
complejidad. Su uso se hace más ameno y productivo, debido a que sirve para ir
comprobando los conocimientos que se adquieren con la teoría.
En cuanto a los objetivos propios de cada uno de los diferentes capítulos, en el
primer capítulo se pretende presentar las definiciones de la transformada Z, los teoremas
básicos asociados a ella, y los métodos para encontrar la transformada z inversa.
El objetivo del segundo capítulo es el de presentar las formas de discretización
más usadas en teoría de control: por invarianza al impulso y por invarianza al escalón.
- vii -
El objetivo del tercer capítulo es mostrar la utilidad del método 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 capítulo es analizar la estabilidad de los sistemas de
control en tiempo discreto, mostrar el criterio de estabilidad de Jury, e implementarlo
como una función de Maple.
El objetivo del quinto capítulo 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 escalón.
El objetivo del sexto capítulo es presentar el método de diseño analítico
DeadBeat, su desarrollo teórico, el algoritmo por el que se rige, así como su desarrollo
práctico.
El objetivo del séptimo capítulo es el de analizar la respuesta en frecuencia en
los sistemas de control digital, así como el diseño de un sistema de control en tiempo
discreto en el plano w, mediante la utilización de un diagrama de Bode.
Sistemas de Control en Tiempo Discreto
- viii -
USO DE LA APLICACIÓN MAPLE
Generalmente los problemas de la ciencia y de la técnica se formalizan en
términos matemáticos. La solución de muchos de estos problemas requiere no sólo
cálculos numéricos, sino también manipulaciones simbólicas y algebraicas, porque es
necesario manejar fórmulas y los cálculos han de hacerse de modo exacto.
Por otra parte, es frecuente que la solución a ciertos problemas, aunque conocida
de modo teórico, resulte difícil de obtener en la práctica, debido a la complejidad de los
cálculos necesarios.
En la última década han aparecido diferentes entornos de software que se
encuentran dentro de los denominados Sistemas de Computación Matemática (S.C.M.),
orientados al cálculo simbólico. Algunos son de propósito general, como Derive, Maple,
Mathematica, Macsyma, etc. Otros son de propósito específico, como f(z), Fields &
Operators, etc.
Dentro de los primeros, los más extendidos son Maple y Mathematica, los cuales
tienen características similares tanto en prestaciones como en requisitos de memoria.
Maple parece superior en el núcleo de cálculo simbólico.
También hay software para el cálculo numérico. El más utilizado por los
ingenieros de control es el Matlab, que sirve de soporte en cursos de álgebra lineal,
teoría de matrices y cálculo numérico. Recientemente se ha integrado también en los
paquetes de cálculo simbólico, incorporando el Kernel de Maple.
- ix -
Maple es uno de los sistemas de cálculo científico (simbólico, numérico y
gráfico) más capaces y difundidos en la actualidad. Se usa en todo tipo de máquinas
(MS-DOS, Windows, Macintosh, UNIX), y para múltiples aplicaciones científicas,
técnicas, investigadoras, docentes, etc. Las principales características de Maple son:
• Maple es un sistema interactivo: el usuario introduce expresiones, el
sistema las evalúa, muestra el resultado correspondiente y queda a la
espera de nuevas instrucciones.
• La sintaxis de Maple, próxima a la notación matemática, es muy
apropiada para expresar algoritmos matemáticos.
• Maple usa un lenguaje de programación sencillo, de alto nivel y con
estructuras de control de tipo tradicional, que han sido utilizadas
anteriormente por muchos alumnos.
Requisitos mínimos para el funcionamiento. Los requisitos mínimos para
poder ejecutar el curso son los siguientes:
• Ordenador PC con procesador Pentium I ó superior.
• 16 Mb de RAM.
• Más de 20 Mb de espacio libre en disco duro.
• Microsoft Windows 95 ó superior, Windows NT ó Windows XP.
• Maple V Release 5.1 ó superior.
La presentación de este curso se realiza con Maple 7. En esta versión los
números en coma flotante se denominan como ‘Float’, mientras que en la versión de
Maple V.5 se denominan como ‘float’. Este cambio afecta al procedimiento ‘Factoriz’
del Capítulo 6. Si se quiere ejecutar el curso con la versión de Maple V.5, habría que
cambiar dicho procedimiento, escribiendo ‘float’ donde corresponda.
Sistemas de Control en Tiempo Discreto
- x -
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 capítulos con sus
diferentes secciones, incluido ejercicios propuestos con soluciones y bibliografía. Cada
sección 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 lección 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 solución para contrastar los resultados.
Si a una sección se ha accedido desde un enlace del menú principal, con la
flecha que aparece en la barra de herramientas también se vuelve al menú principal.
Si se ha ejecutado algún grupo de ejecución 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 capítulo, habría que decir que no para poder volver a donde
se estaba antes.
Al final de cada capítulo aparecen enlaces al capítulo anterior, al siguiente, al
menú principal y otro al glosario. Con [Ctrl + fin] vamos al final del capítulo. Con
[View / Bookmarks] vamos a las distintas secciones de un mismo capítulo. En cualquier
momento se puede acceder a cualquier tema a través de los enlaces. Por eso en la
mayoría de los apartados se empieza ejecutando una línea de comando que inicializa la
aplicación Maple y carga las librerías necesarias para trabajar.
Capítulo 1: La Transformada Z
- 1 -
Capítulo 1.
LA TRANSFORMADA Z.
Sistemas de Control en Tiempo Discreto
- 2 -
1.1 INTRODUCCIÓN.
La transformada Zeta es una herramienta útil en teoría de control en tiempo
discreto y su papel es análogo al que juega la transformada de Laplace en tiempo
continuo.
Una señal en tiempo continuo es aquella que se define sobre un intervalo
continuo de tiempo. Una señal analógica es una señal definida en un intervalo continuo
de tiempo, cuya amplitud puede adoptar un intervalo continuo de valores. En cambio,
una señal en tiempo discreto es una señal definida sólo en valores discretos de tiempo.
En una señal en tiempo discreto, si la amplitud puede adoptar valores en un intervalo
continuo, entonces la señal se denomina señal de datos muestreados. Una señal de
datos muestreados se puede generar muestreando una señal analógica en valores
discretos de tiempo. Para más información, [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 más pequeño de variables que sirven para describir en su totalidad el
comportamiento de un sistema. Una perturbación o ruido es una señal que afecta
adversamente al valor de salida de un sistema. Si una perturbación se genera dentro del
sistema, se la denomina interna, dando lugar a las variables internas del sistema. Si la
perturbación 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 más de las variables pueden cambiar sólo en valores discretos de tiempo. Estos
instantes, los que se denotarán mediante kT (k = 0, 1, 2, ..., T = periodo de muestreo),
pueden especificar los tiempos en los que se lleva a cabo alguna medición de tipo físico,
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
Capítulo 1: La Transformada Z
- 3 -
suficientemente corto, como para aproximar el dato de dichos instantes discretos
consecutivos con una interpolación sencilla.
Se dice que un sistema es causal si su salida en cualquier instante de tiempo
depende sólo de los valores de la entrada en el tiempo presente y en el pasado. A estos
sistemas también 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
sólo depende de los valores de la entrada en los instantes de tiempo pasado.
A modo de ejemplo, el sistema definido por la ecuación
x ( t ) = 2 u ( t ) + u ( t - 1 )
es causal. Y el sistema definido por la ecuación
x ( t ) = u ( t - 1 )
es estrictamente causal. Sin embargo, el sistema definido por la ecuación
x( t ) = u ( t ) - u ( t+ 1 )
no es causal.
Sistemas de Control en Tiempo Discreto
- 4 -
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 crítico. 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 función 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 ecuación en diferencias lineal
con coeficientes constantes caracteriza la dinámica del sistema, relacionando la entrada
con la salida. Si se quiere determinar la respuesta del sistema a una entrada dada, hay
que resolver dicha ecuación en diferencias. Para ello utilizamos el método de la
Capítulo 1: La Transformada Z
- 5 -
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 método de la transformada z da lugar a una función X( z ) que puede
tener la siguiente forma:
+ .. +
= ( )
+ .. +
Los puntos en los que la función X( z ) es igual a cero son las raíces del numerador (los
ceros de X( z ) ). Así mismo, los puntos en los que la función tiende a infinito son las
raíces del denominador (los polos de X( z ) ). [REF. 5]. Estabilidad.
El principal objetivo de este capítulo es presentar las definiciones de la
transformada z, los teoremas básicos asociados con ella, y los métodos para encontrar la
transformada z inversa.
+ b0 zm b1 z( ) − m 1
( )X z
bm
+ zn a1 z( ) − n 1
an
≤ m n
Sistemas de Control en Tiempo Discreto
- 6 -
1.2 LA TRANSFORMADA Z.
Al considerar la transformada z de una función del tiempo x ( t ) , sólo se tienen
en cuenta los valores muestreados de dicha función: x ( 0 ) , x ( T ) , x ( 2T) , ... siendo
T el período de muestreo.
La transformada z de una función 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 período de muestreo, se define mediante la siguiente expresión [REF. 5]:
=
Para una secuencia de números x ( k ) , la transformada z se define como:
=
La transformada z definida mediante estas ecuaciones se conoce como
transformada z unilateral. La transformada z viene representada por el símbolo
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(z) = = 1
= ( )X z ( )Ζ ( )x t = ( )Ζ ( )x k T ∑ = k 0
∞( )x k T z
( )−k
( )X z = ( )Ζ ( )x k ∑ = k 0
∞( )x k z
( )−k
= ∑ = k 0
∞( )x k z
( )−kz0
Capítulo 1: La Transformada Z
- 7 -
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 explícitamente 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:
=
=
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.
∞∞
= ( )X z ( )Ζ ( )x t = ( )Ζ ( )x k T ∑ = k −∞
∞( )x k T z
( )−k
( )X z = ( )Ζ ( )x k ∑ = k −∞
∞( )x k z
( )−k
Sistemas de Control en Tiempo Discreto
- 8 -
Ejemplos:
Trabajamos ahora con las funciones de Maple disponibles. 'restart'
inicializa el sistema. 'ztrans' es la función 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);
Considerando el periodo de muestreo:
> ztrans((k*T)^2, k, z);
> ztrans(1-exp(-a*k*T), k, z);
z ( ) + z 1
( ) − z 1 3
T2 z ( ) + z 1
( ) − z 1 3
− z
− z 1z
e( )−a T
− z
e( )−a T
1
Capítulo 1: La Transformada Z
- 9 -
> simplify(%);
> ztrans(Dirac(k*T), k, z);
La función delta de Dirac( t ) toma el valor cero en todos sus puntos excepto para
t = 0, donde hay una singularidad. Podría considerarse como la versión discreta de la
función impulso. Tiene la propiedad de que
z ( )− + 1 e( )a T
( ) − z 1 ( ) − z e( )a T
1
( )Dirac 0
= d⌠⌡
−∞
∞( )Dirac t t 1
Sistemas de Control en Tiempo Discreto
- 10 -
1.3 TRANSFORMADA Z DE FUNCIONES ELEMENTALES.
El objetivo de esta sección es el manejo de la función 'ztrans' para aprender a
obtener la transformada z de una función, y ver las diferencias entre la transformada z
de una señal x ( t ) y otra x ( k T ) . A continuación se presentará la transformada z de
varias funciones elementales. Hemos escogido las que consideramos más básicas
(función escalón 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 período de
muestreo. Considerando dicho período 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
función más, sólo hay que añadirla en la lista, y ejecutar nuevamente las instrucciones
Maple.
> restart:
> l1 := [1, t, a^t, exp(-a*t), sin(omega*t), cos(omega*t)];
> l2 := [1, k*T, a^(k*T), exp(-a*k*T), sin(omega*k*T), cos(omega*k*T)];
:= l1 [ ], , , , ,1 t at e( )−a t
( )sin ω t ( )cos ω t
:= l2 [ ], , , , ,1 k T a( )k T
e( )−a k T
( )sin ω k T ( )cos ω k T
Capítulo 1: La Transformada Z
- 11 -
> 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) X(z) x(kT) X(z)
1z
− z 11
z − z 1
tz
( ) − z 1 2k T
T z
( ) − z 1 2
at z − z a
a( )k T
−z
− + z aT
e( )−a t z
− z e( )−a
e( )−a k T z e
( )a T
− z e( )a T
1
( )sin ω tz ( )sin ω
− + z2 2 z ( )cos ω 1( )sin ω k T
z ( )sin ω T
− + z2 2 z ( )cos ω T 1
( )cos ω t( ) − z ( )cos ω z
− + z2 2 z ( )cos ω 1( )cos ω k T
( )− + z ( )cos ω T z
− + − z2 2 z ( )cos ω T 1
Sistemas de Control en Tiempo Discreto
- 12 -
1.4 PROPIEDADES DE LA TRANSFORMADA Z.
En esta sección se presentan las herramientas básicas de Maple necesarias para
estudiar las propiedades más importantes y los teoremas útiles de la transformada z, tal
y como vienen descritas en [REF. 5]. Se supone que la función 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
Considerando F(z) y G(z) las respectivas transformadas z de f ( kT) y g ( kT) ,
tenemos
1.4.2.- Multiplicación por a k T .
Si X(z) es la transformada z de x ( k T ) entonces
( ) )()( 1 zaXTkxa Tk ⋅=⋅⋅Ζ −⋅
= ( )Ζ + α ( )f k T β ( )g k T + α ( )Ζ ( )f k T β ( )Ζ ( )g k T
= ( )Ζ + α ( )f k T β ( )g k T + α ( )F z β ( )G z
Capítulo 1: La Transformada Z
- 13 -
1.4.3.- Desplazamiento: Teorema de traslación real.
Siendo n un entero no negativo (positivo o cero), entonces
)())(( zXzTntx n ⋅=⋅−Ζ −
y
⋅⋅−⋅=⋅+Ζ ∑
−
=
−1
0)()())((
n
k
kn zTkxzXzTntx
1.4.4.- Teorema de traslación compleja.
Si x ( t ) tiene la transformada z, X( z ) , entonces la transformada z de
)(txta ⋅⋅−e
viene dada por
)( TazX ⋅⋅e
1.4.5.- Teorema del valor inicial.
Si x ( t ) tiene por transformada z, X ( z ) , y si el )(zXlimz ∞→
existe, entonces el
valor inicial x ( 0 ) de x ( t ) ó x ( k ) está dado por
)()0( zXlimx
z ∞→=
Sistemas de Control en Tiempo Discreto
- 14 -
El teorema del valor inicial es conveniente para verificar la incidencia de posibles
errores en el cálculo de la transformada z. Debido a que x ( 0 ) se suele conocer,
comprobar su valor mediante el límite 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 ) están dentro del círculo unitario, con la posible excepción de un sólo polo en
z = 1. Esta es la condición para la estabilidad de X( z ) , es decir, la condición 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
)()1()( 1
1zXzlimTkxlim
zk⋅−=⋅ −
→∞→
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:
Capítulo 1: La Transformada Z
- 15 -
Ejemplo 1.
Encontrar las transformadas z de una función escalón unitario que está retrasada
un período de muestreo y cuatro períodos de muestreo, respectivamente, mediante el
teorema de traslación real. A continuación se muestran dichas funciones, y sus
respectivas transformadas inversas. En el 'plot' se utiliza la opción 'axes=frame', para
que sea más fácil apreciar en el gráfico los valores de la función que son cero (están 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);
Ahora aplicamos el teorema de traslación, comprobando que se obtienen las
transformadas anteriores:
= transform11
− z 1
= transform21
z3 ( ) − z 1
Sistemas de Control en Tiempo Discreto
- 16 -
> trans1 = z^(-1)*ztrans(1, t, z);
trans2 = z^(-4)*ztrans(1, t, z);
Ejemplo 2.
Dada la transformada z de , obtener la transformada z de e - a t
mediante el uso del teorema de traslación 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);
Ahora aplicamos directamente la transformada z, para comprobar el resultado.
Las operaciones matemáticas que se realizan, son para dejar la ecuación 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.
= trans11
− z 1
= trans21
z3 ( ) − z 1
( )sin ω t
:= ( )Ζ ( )sin ω k T −z ( )sin ω T
− + − z2 2 z ( )cos ω T 1
:= ( )Ζ e( )−a k T
( )sin ω k T −z e
( )a T( )sin ω T
− + − z2 e( )2 a T
2 z e( )a T
( )cos ω T 1
( )sin ω t
Capítulo 1: La Transformada Z
- 17 -
> 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);
Ejemplo 3.
Determinar el valor inicial x ( 0 ) si la transformada z de x ( t ) es
)1()1(
)1()( 11
1
−−−
−−
⋅−⋅−⋅−
=zz
zzX T
T
ee
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);
−z e
( )a T( )sin ω T
− + − z2 e( )2 a T
2 z e( )a T
( )cos ω T 1
= ( )x 0 0
Sistemas de Control en Tiempo Discreto
- 18 -
Ahora comprobamos que el valor es correcto, hallando la transformada z inversa de
X(z). Para ello se utiliza la función 'invztrans', que se encuentra en la librería estándar
de Maple.
> invztrans(X(z), z, n);
x(0) = subs(n=0, %);
Ejemplo 4.
Mediante el teorema del valor final, determinar el valor de
11 11
11)( −⋅−− ⋅−
−−
=zz
zX Tae 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);
− 1
1
eTn
= ( )x 0 0
( )x ∞
= lim → k ∞
( )x k T 1
Capítulo 1: La Transformada Z
- 19 -
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'):
NOTA del autor: "assume" sirve para especificar que ’T’ y ’a’ son mayores que cero,
lo cual es imprescindible para poder calcular el límite. Al hacer esto, ambos aparecerían
de aquí en adelante con el siguiente símbolo: ’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;
− 1
1
e( )a T
n
= ( )x ∞ 1
T~a~Ta
Sistemas de Control en Tiempo Discreto
- 20 -
1.5 LA TRANSFORMADA Z INVERSA.
Utilizamos Maple para el cálculo 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 sólo 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 )(txi con la misma x ( k T ) . A
continuación se muestra un ejemplo, con el período 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]);
:= ( )x1 k 0
:= ( )x2 k ( )sin k π
Capítulo 1: La Transformada Z
- 21 -
NOTA: En el ejemplo anterior no se cumple el teorema de muestreo, el cual exige que
sM ωω <⋅2 , para la señal continua x ( t ) , dondeTs
πω ⋅=
2 es la frecuencia de
muestreo y Mω es la frecuencia más alta presente en la señal. En este caso, con el
periodo de muestreo π=T , 2=sω . [REF. 6], [REF. 7]. Con esta frecuencia de
muestreo, dos señales 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 métodos para calcular la transformada z inversa. Un método
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 más sencillas). Éste es el método que
usa Maple (expansión en fracciones parciales). Existen cuatro métodos para obtener la
transformada z inversa [REF. 5]:
1.- Método de la división directa. En este método la transformada z inversa se
obtiene mediante la expansión de X( z ) en una serie infinita de potencias de z - 1 . Este
método es útil cuando es difícil obtener una expresión en forma cerrada para la
transformada z inversa, o se desea encontrar sólo algunos de los primeros términos de
x ( k ) .
2.- Método computacional. En este método, la transformada z inversa se obtiene
utilizando la función delta de Kronecker , donde
= 1 para k = 0
0 para
( )δ0 k T
≠ k 0
( )δ0 k T
Sistemas de Control en Tiempo Discreto
- 22 -
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 ecuación en diferencias, para la ecuación
=
Dicha ecuación se puede escribir como
Esta ecuación se puede convertir en una ecuación en diferencias como sigue:
donde u( 0 ) = 1 y u(k ) = 0 para 0≠k , 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 ecuación en diferencias para u( k ) .
3.- Método de expansión en fracciones parciales. Es el método que utiliza
Maple. Es idéntico al que se utiliza en la transformada de Laplace, y requiere que todos
los términos de la expansión en fracciones parciales se puedan reconocer fácilmente en
la tabla de pares de transformadas z. Si X( z ) tiene uno o más ceros en el origen (z = 0),
entonces zzX )( ó X( z ) se expande en la suma de términos sencillos de primer o
segundo orden mediante la expansión en fracciones parciales, y se emplea una tabla de
transformadas z para encontrar la función del tiempo correspondiente para cada uno de
los términos expandidos.
− .4673 z .3393
− + z2 1.5327 z .6607 = ( )G z
( )X z( )U z
= ( ) − + z2 1.5327 z .6607 ( )X z ( ) − .4673 z .3393 ( )U z
= − + ( )x + k 2 1.5327 ( )x + k 1 .6607 ( )x k − .4673 ( )u + k 1 .3393 ( )u k
Capítulo 1: La Transformada Z
- 23 -
4.- Método de la integral de inversión. El método de la integral de inversión,
basado en la integral de inversión, está basado en la teoría de variable compleja, siendo
necesario también revisar el teorema de los residuos [REF. 5]. La ecuación que da la
transformada z inversa en términos de los residuos se puede obtener como sigue:
∑=
=+++=⋅m
imkkkTkx
121)( L residuo de X(z ) z k - 1 en el polo z=z i de X(z ) z k - 1
( ))(1 zX−Ζ=
Para calcular la transformada z inversa, se puede usar la función 'invztrans' de
Maple que opera calculando la descomposición en fracciones simples de la función
racional F(z) y después obtiene directamente de las tablas la transformada inversa de
cada fracción simple.
Ejemplos:
> ztrans((k*T)^2, k, z);
invztrans(%, z, k);
T2 z ( ) + z 1
( ) − z 1 3
k2 T2
Sistemas de Control en Tiempo Discreto
- 24 -
> ztrans(((k+2)*T)^2, k, z);
factor(invztrans(%, z, k));
> suc := invztrans(z/(z^2+1), z, n);
Esta es la expresión de la transformada z inversa en su forma más general. Puede
apreciarse que no hay una expresión cerrada para la transformada z inversa. Para
obtenerla, hay que aproximarla utilizando la función Maple 'evalf'. Lo hacemos a
continuación.
> sucf := evalf(suc);
Si la dibujamos, vemos la función continua correspondiente.
T2
+ + 4z
− z 14
z
( ) − z 1 2z ( ) + z 1
( ) − z 1 3
( ) + 2 k 2 T2
:= sucf 1.0000 ( )sin 1.5708 n
:= suc ∑ = _α ( )RootOf + _Z2 1
−
12
1_α
n
_α
Capítulo 1: La Transformada Z
- 25 -
> plot(sucf, n=0..30);
Si intentamos dibujar la secuencia correspondiente, el resultado es el que se muestra a
continuación.
> plot(sucf,n=0..30,style=point);
Y si lo que queremos son los valores de la señal muestreada en los instantes de
muestreo, la forma de hacerlo es a través de la secuencia de puntos obtenida al aplicar la
transformada z inversa sin aproximarla con ‘evalf’:
> seq(suc, n=0..10);
> plot([seq([n,suc], n=0..30)], style=point);
, , , , , , , , , ,0 1 0 -1 0 1 0 -1 0 1 0
Sistemas de Control en Tiempo Discreto
- 26 -
, , , , , , , , ,1. -.60000 .63000 -.54000 .49410 -.44226 .39876 -.35867 .32287 -.29056
Otro ejemplo. En esta ocasión, la transformada z inversa sí que nos da una expresión
cerrada, por lo que no es necesario hacer lo anterior.
> suc2 := invztrans(z/((z-3/10)*(z+9/10)), z, n);
> suc2f := evalf(suc2);
La secuencia resultante es:
> seq(suc2, n=1..10);
Si se quieren los valores aproximados, para ver mejor lo que representan, basta con
utilizar la función evalf. Se muestran las dos formas de hacerlo, para comprobar que dan
idéntico resultado.
> seq(evalf(suc2), n=1..10);
seq(suc2f, n=1..10);
:= suc2 − 56
310
n 56
-910
n
:= suc2f − .83333 .30000n .83333 ( )-.90000 n
, , , , , , , , ,1-35
63100
-2750
494110000
-2211350000
3987631000000
-89667250000
32286681100000000
-145280223500000000
1.0000 -.60000 .63000 -.54000 .49410 -.44225 .39876 -.35867 .32287, , , , , , , , ,-.29057
Capítulo 1: La Transformada Z
- 27 -
> 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 continuación,
consideramos la siguiente función de transferencia en lazo cerrado:
Una función de transferencia se define para un sistema lineal y estacionario (no
varía con el tiempo). La función de transferencia es la relación entre las transformadas z
de la entrada y la salida, considerando cero todas las condiciones iniciales. De forma
análoga se podría definir para sistemas continuos [REF. 2].
= ( )C z( )R z
( )G z + 1 ( )G z
Sistemas de Control en Tiempo Discreto
- 28 -
Dada dicha función, se denominan ceros del sistema de control a las raíces de la
ecuación G(z) = 0 (raíz del numerador). Así mismo, se denominan polos del sistema a
las raíces de la ecuación característica 1+ G(z) = 0 (raíz del denominador). Recordar
que para un sistema dado hay una sola ecuación característica. Esto significa que la
ecuación característica de una función de transferencia dada, es la misma
independientemente de cuál sea la señal 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 señal de salida tiene
efecto directo sobre la acción 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 realimentación.
Por contra, un sistema de control de lazo abierto es aquel en el que la salida no
tiene efecto sobre la acción de control, lo que significa que no tiene realimentación.
[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 círculo unidad (el módulo del
polo debe ser menor que uno). Si alguno está fuera de dicho círculo, el sistema es
inestable. [REF. 5].
2. Si un polo simple (multiplicidad 1) se presenta en el círculo unidad (en
z = 1 ó z = -1), entonces el sistema se convierte en críticamente estable. También es
críticamente estable si un solo par de polos complejos conjugados se presentan sobre el
círculo unidad en el plano z. Cualquier polo múltiple en lazo cerrado sobre el círculo
unidad hace al sistema inestable.
Capítulo 1: La Transformada Z
- 29 -
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 función de transferencia del sistema:
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
límite. Y la salida del sistema siempre va a infinito.
Y si un sistema es críticamente estable, no ocurre ninguna de estas dos cosas. O
el límite es una constante distinta de cero, o no existe (como ejemplo, los senos,
cosenos, y la función ( - 1 ) k ) . En estos sistemas, hay algunas entradas que no son
seguidas por la salida (ver ejercicio 2.5.6 del capítulo 2).
Sistemas de fase mínima y sistemas de fase no mínima. [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 mínima. Las funciones de
transferencia continua que tienen ceros en el semiplano derecho (ceros inestables), son
funciones de transferencia de fase no mínima. De forma análoga, las funciones de
transferencia discreta cuyos ceros son estables en el plano z (dentro del círculo unidad)
son de fase mínima. Y las funciones de transferencia discreta con ceros inestables (fuera
del círculo unidad en el plano z) son de fase no mínima.
= ( )G z1z
Sistemas de Control en Tiempo Discreto
- 30 -
Pasamos ahora a utilizar las herramientas de Maple para estudiar y comprender
mejor el comportamiento de distintas funciones, en función de la localización de sus
ceros y polos [REF. 3].
La función de Maple 'with(plots)' sirve para trabajar con una serie de utilidades,
entre las que se encuentra la opción 'display'. Le ponemos un punto y coma para que se
aprecien dichas opciones. Otra forma de utilizarlas sin tener que cargar la librería,
escribiendo 'plots[display]'.
> restart: with(plots);
Comportamiento de la transformada z inversa de pz
z−
, que tiene un cero en el
origen y un polo real simple, al que damos valores dentro, fuera, y en el círculo
unidad.
Representamos la transformada z inversa como una función continua, uniendo
los puntos de la secuencia, para que se aprecie mejor. Implementamos el procedimiento
'Dibf', que calcula la transformada z inversa de una función en z dada, y la secuencia
correspondiente, para el nº de puntos indicado.
, , , , ,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
Capítulo 1: La Transformada Z
- 31 -
> 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 función
antes mencionada, con un cero en el origen y un polo real y el número de puntos que se
quieren pintar. Este procedimiento calcula la inversa de dicha función, considerando los
casos en los que la raíz está fuera, en el círculo unidad, o dentro del círculo unidad. En
concreto, los valores del polo son:
Fuera: pto = 1.5, pto = -1.5
En el círculo: pto = 1, pto = -1
Dentro: pto =0.5, pto = -0.5
Se dibujan las respectivas inversas para el número de puntos 'm' indicado.
Sistemas de Control en Tiempo Discreto
- 32 -
> Estab1 := proc(fun, m) local p, f;
# polo fuera del circulo unidad (p=1.5), (p=-1.5)
p := array(1..3, 1..2):
f := subs(pto=1.5, fun):
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 (p=1), (p=-1)
f := subs(pto=1, fun):
Dibf(f, m):
p[2,1] := plot(secu, title = `z/(z-1), críticamente estable`):
f := subs(pto=(-1), fun):
Dibf(f, m):
p[2,2] := plot(secu, title = `z/(z+1), críticamente estable`):
# polo dentro del circulo unidad (p=0.5), (p=-0.5)
f := 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:
Capítulo 1: La Transformada Z
- 33 -
> Estab1(z/(z-pto), 10);
Comportamiento de la inversa de , que tiene un
cero en el origen y dos polos complejos conjugados entre sí, a los que damos valores
dentro, fuera, y en el círculo unidad.
NOTA del autor: Utilizamos la representación trigonométrica de un número
complejo z1: ( ))()cos(1 bsinjbz a ⋅+⋅= e , donde ae es el módulo, y b es el argumento
del número complejo. En realidad sería cos( b T ) y sin( b T ) , pero consideramos como
incluido el período T.
El conjugado de dicho complejo es ( ))()cos(2 bsinjbz a ⋅−⋅= e
z
− + z2 2 z ( )cos b ea e( )2 a
Sistemas de Control en Tiempo Discreto
- 34 -
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. Nótese que en Maple se
utiliza ' I ' para el número complejo 1− que nosotros en este texto llamamos ' j '.
También se denomina como ' i '.
> den := (z-exp(a)*(cos(b)+I*sin(b))) * (z-exp(a)*(cos(b)-I*sin(b))):
simplify(den);
El módulo del número complejo es :
a > 0 implica que el complejo está fuera del círculo unidad.
a = 0 implica que el complejo está en el círculo unidad.
a < 0 implica que el complejo está dentro del círculo unidad .
Representamos la inversa como una función continua, uniendo los puntos de la
secuencia, para que se aprecie mejor. Implementamos ahora el procedimiento 'Estab2',
parecido al anterior. En este caso, la función 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 círculo unidad. En concreto, los valores son:
Fuera: a = 1, b = , a = 1, b =
En el círculo: a = 0, b = , a = 0, b =
Dentro: a = -1, b = , a = -1, b =
− + z2 2 z ea ( )cos b e( )2 a
e a
π2
π4
π4
π4
π2
π2
Capítulo 1: La Transformada Z
- 35 -
> 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 círculo`):
f := subs(a=1, b=Pi/4, fun):
Dibf(f, m):
p[1,2] := plot(secu, title = `b=Pi/4, a=1, fuera círculo`):
# 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 círculo unidad`):
f := subs(a=0, b=Pi/4, fun):
Dibf(f, m):
p[2,2] := plot(secu, title = `b=Pi/4, a=0, en círculo 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 círculo`):
f := subs(a=-1, b=Pi/4, fun):
Dibf(f, m):
p[3,2] := plot(secu, title = `b=Pi/4, a=-1, dentro círculo`):
display(p);
end:
Sistemas de Control en Tiempo Discreto
- 36 -
> 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 números
complejos imaginarios puros. Su respuesta en los casos a = 0 y a = 1 son más
oscilatorias.
Comportamiento de la inversa de , que tiene dos
ceros y dos polos complejos conjugados entre sí, a los que damos valores dentro, fuera,
y en el círculo unitario. Esta es la función 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 función continua, uniendo los puntos de la
secuencia, para que se aprecie mejor.
z ( ) − z ea ( )cos b
− + z2 2 z ( )cos b ea e( )2 a
π2
Capítulo 1: La Transformada Z
- 37 -
> 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 círculo`):
f := subs(a=1, b=Pi/4, fun):
Dibf(f, m):
p[1,2] := plot(secu, title = `b=Pi/4, a=1, fuera círculo`):
# 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 círculo unidad`):
f := subs(a=0, b=Pi/4, fun):
Dibf(f, m):
p[2,2] := plot(secu, title = `b=Pi/4, a=0, en círculo 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 círculo`):
f := subs(a=-1, b=Pi/4, fun):
Dibf(f, m):
p[3,2] := plot(secu, title = `b=Pi/4, a=-1, dentro círculo`):
display(p);
end:
Sistemas de Control en Tiempo Discreto
- 38 -
> 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 círculo unidad). La
transformada z inversa es inestable cuando los polos están fuera del círculo unidad, y
críticamente estable cuando están sobre dicho círculo unidad.
1.6 EJERCICIOS.
Tal y como se explica en la introducción 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 comprensión sobre el tema tratado. En todos ellos hay
un espacio reservado para que el alumno intente resolverlos por sí mismo. Y todos ellos
están convenientemente resueltos para que se puedan mirar y comparar los resultados.
Para ello, sólo hay que abrir el grupo de ejecución del ejercicio correspondiente.
Capítulo 1: La Transformada Z
- 39 -
k T a( )( ) − k 1 T
> restart:
1.6.1.- Obtener la transformada z de y de
> ztrans((k*T)^2, k, z);
> simplify(ztrans(k*T*a^((k-1)*T), k, z));
1.6.2.- Obtener la transformada z de
> simplify(ztrans((1/a)*(1-exp(-a*t)), t, z));
T2 z ( ) + z 1
( ) − z 1 3
z ( )− + 1 ea
a ( ) − z 1 ( ) − z ea 1
( )k T 2
= ( )x t − 1 e
( )− a t
a
T z
( )− + z aT2
Sistemas de Control en Tiempo Discreto
- 40 -
1.6.3.- Obtener la transformada z de
k = 0, 1, 2... siendo el periodo de muestreo 21T =
> factor(ztrans(9*k/2*2^((k-1)/2)-2^(k/2)+3, k, z));
1.6.4.- Obtener la transformada z de la siguiente función:
Se crea como combinación de la función de Heaviside, y después se realiza el
cálculo de su transformada. 'piecewise' crea la función dibujada a partir de sus valores,
y 'convert' la transforma en función de Heaviside.
NOTA del autor: A la función de Heaviside se la suele llamar escalón unitario, y se
suele notar 1(t).
> convert(piecewise(t<2, 0, t>5, 1, (t-2)/3 ), Heaviside);
53
( )Heaviside − t 513
t ( )Heaviside − t 223
( )Heaviside − t 2 + −
13
( )Heaviside − t 5 t −
= ( )x k T − + 9 k T 2( )( ) − k 1 T
2( )k T
3
−12
z ( )− − − + + 11 z 3 4 z2 10 z 2 2 2
( ) − z 1 ( )− + z 2 2
Capítulo 1: La Transformada Z
- 41 -
> 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));
1.6.5.- Obtener la transformada z inversa de en los instantes
kT.
> combine(invztrans(z/((-z+a)^2), z, k), power);
1.6.6.- Obtener la transformada z inversa de en los instantes
kT.
> subs(k=k*T, invztrans(z*(z+2)/(z-1)^2, z, k));
1 + 3 k T
13
+ + z2 z 1
z4 ( ) − z 1
= ( )X zz ( ) + z 2
( ) − z 1 2
= ( )X zz T
( ) − aT z2
T ( )aTk
k a( )−T
Sistemas de Control en Tiempo Discreto
- 42 -
1.6.7.- Suprimir de las listas l1 y l2 del apartado 1.3 las funciones s i n (wt ) y
cos ( wt ) , y añadir 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) X(z) x(kT) X(z)
1z
− z 11
z − z 1
tz
( ) − z 1 2k T
T z
( ) − z 1 2
at −z
− + z aa
( )k T−
z
− + z aT
e( )−a t
−z
− + z e( )−a
e( )−a k T z e
( )a T
− z e( )a T
1
t2 z ( ) + z 1
( ) − z 1 3k2 T2 T2 z ( ) + z 1
( ) − z 1 3
t3 z ( ) + + z2 1 4 z
( ) − z 1 4k3 T3 T3 z ( ) + + z2 1 4 z
( ) − z 1 4
Capítulo 1: La Transformada Z
- 43 -
1.6.8.- Realizar un procedimiento que calcule y pinte la inversa de una función
determinada para poder estudiar su estabilidad. Decir el número de puntos
que se quiere ver.
Semejante a los procedimientos del apartado 1.5.1 (estabilidad), pero este debe valer
para cualquier función. Aprovechamos el procedimiento Dibf, ya realizado, haciéndole
una pequeña modificación: 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:
Sistemas de Control en Tiempo Discreto
- 44 -
> 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);
> Estab(1/z, 5);
Estab(1/(z^2+1), 20);
( )-1. k e( ).4054651081 k
( )sin 1.570796327 k
e( )−1. k
( )cos .7853981634 k
( )charfcn1 k − ( )charfcn0 k 1. ( )cos 1.570796327 k
Capítulo 1: La Transformada Z
- 45 -
1.7 REFERENCIAS.
[REF. 1] R. Aracil Santonja, A. Jiménez Avello,
Sistemas Discretos de Control,
Cátedra de Automática, 1987
[REF. 2] R.C. Dorf,
Sistemas Modernos de Control. Teoría y Práctica,
Addison-Wesley Iberoamericana, 2ª edición, 1989
[REF. 3] K. Ogata,
Discrete-Time Control Systems,
Prentice-Hall, 1987
[REF. 4] K. Ogata,
Ingeniería de Control Moderna,
Prentice-Hall, 1980
[REF. 5] K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2ª edición, 1996
[REF. 6] A.V. Openheim, A.S. Willsky, con la colaboración de I.T. Young,
Señales y sistemas,
Prentice-Hall, 1994
[REF. 7] C. Torres Blanc,
Aproximación a la Unificación de Sistemas Lineales Continuos y Discretos,
Tésis Doctoral, capítulo 1: Formas de Discretización,
U.P.M., Facultad de Informática, 2000
Capítulo 2: Discretización de una Señal
- 47 -
Capítulo 2.
DISCRETIZACIÓN
DE UNA SEÑAL.
Sistemas de Control en Tiempo Discreto
- 48 -
2.1 INTRODUCCIÓN.
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 señales aparecen como funciones en tiempo discreto (a menudo en la forma de
una secuencia de números o un código numérico), y otras señales como funciones en
tiempo continuo. Al analizar sistemas de control en tiempo discreto, la teoría de la
transformada z juega un papel importante. [REF. 1].
El objetivo de este capítulo es presentar las formas de discretización más usadas
en teoría de control: por invarianza al impulso y por invarianza al escalón.
2.2 MUESTREO MEDIANTE IMPULSOS.
Dada una señal analógica f ( t ) su discretización mediante impulsos que se
producen en intervalos de longitud T, consiste en sustituir dicha función f ( t ) por una
sucesión f (nT) con n = 0, 1, 2, ...
Ejemplo:
Primero definimos la función f ( t ) = 2 + s i n ( 4 t ) , y la mostramos a continuación.
> restart;
> f := t -> 2 + sin(4*t);
plot(f(t), t = 0.1..10); := f → t + 2 ( )sin 4 t
Capítulo 2: Discretización de una Señal
- 49 -
Ahora sustituimos dicha función por una sucesión f ( n T) en los instantes de
muestreo n = 0, 1, 2, ..., 10 y la dibujamos, apreciándose que ambas funciones se
asemejan: las flechas señalan el valor de la función en los instantes de muestreo, y si
uniéramos dichos valores, se obtendría la función original.
La función de Maple 'with(plottools)' sirve para trabajar con una serie de
utilidades, entre las que se encuentra la opción 'arrow'. Le ponemos un punto y coma
para que se aprecien dichas utilidades.
> with(plottools);
> 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);
, , , , , , , , ,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
Sistemas de Control en Tiempo Discreto
- 50 -
2.3 DISCRETIZACIÓN POR INVARIANZA AL IMPULSO.
Dada una función de transferencia continua F(s) (transformada de Laplace de
f(t)) se llama discretización 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 = kT , donde T es el período de muestreo. Eso quiere decir que la respuesta
de la función continua a un impulso es igual a la respuesta de la función discreta a un
impulso, en los instantes de muestreo kT . [REF. 1].
L -1 ( ) =⋅= TktsF )( Z -1 ( ))(zFd ⇒ =)(zFd Z L –1 ( ) TktsF ⋅=)(
= Σ residuo de TszzsF
⋅−⋅
e)(
en los polos de F(s)
Nota del autor: En ocasiones se realiza un abuso de notación, haciendo la
siguiente simplificación:
Z L –1 ( ) TktsF ⋅=)( = Z ( ))(sF
La función 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.
Capítulo 2: Discretización de una Señal
- 51 -
Ejemplo:
Sea F es la transformada de Laplace de una función f ( t ) .
> restart: with(inttrans);
> F := 2*(s^2+16+2*s)/(s*(s^2+16));
Ahora calculamos Fd ( z ) , la transformada z de f ( kT) . La función se obtiene con la
inversa de Laplace de F, y a continuación sustituimos t = kT para obtener la
transformada z de f ( kT).
> ztrans(subs(t=k*T, invlaplace (F, s, t)), k , z);
:= F 2 + + s2 16 2 s
s ( ) + s2 16
+ 2z
− z 14
( )− + 1 2 ( )cos T 2 z ( )cos T ( )sin T
− + + − 1 2 z z2 16 z ( )cos T 2 16 z ( )cos T 4
addtable fourier fouriercos fouriersin hankel hilbert invfourier invhilbert, , , , , , , ,[invlaplace invmellin laplace mellin savetable, , , , ]
Sistemas de Control en Tiempo Discreto
- 52 -
> combine(%, trig);
> Fd := factor(%);
Esta última expresión Fd ( z ) es la discretización de F ( s ) que se obtiene por invarianza
al impulso. A continuación se muestra la función f ( t ) original, y la función fd ( kT) ,
para 81
=T , que es la transformada z inversa de Fd ( z ) . Observamos que las funciones
f ( t ) y fd ( kT) coinciden en losinstantes de muestreo.
> plot(invlaplace (F, s, t), t=0..Pi);
> Fd1 := subs(T=1/8, Fd):
fd1 := invztrans(Fd1, z, k):
− − + − + 2 z 2 z3 4 z2 ( )cos 4 T z2 ( )sin 4 T z ( )sin 4 T
− − + + + − z z3 2 z2 ( )cos 4 T 1 z2 2 z ( )cos 4 T
:= Fdz ( )− − + − + 2 2 z2 4 z ( )cos 4 T z ( )sin 4 T ( )sin 4 T
( ) − z 1 ( )− − + 1 z2 2 z ( )cos 4 T
Capítulo 2: Discretización de una Señal
- 53 -
Esta es la señal discretizada (fd1), que coincide con la continua f ( t ) en los instantes de
muestreo .
> 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 función racional F( s ) y un periodo de
muestreo T, y cuya salida es la discretización 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 función F anterior, para comprobar su correcto
funcionamiento. Dejamos el periodo de muestreo T sin especificar.
> Fd := Discret_imp(F, T);
:= Fdz ( ) + − + − 2 2 z2 4 z ( )cos 4 T z ( )sin 4 T ( )sin 4 T
( ) − z 1 ( ) + − 1 z2 2 z ( )cos 4 T
k8
Sistemas de Control en Tiempo Discreto
- 54 -
2.4 DISCRETIZACIÓN POR INVARIANZA AL ESCALÓN.
Dada una función de transferencia continua F(s) se llama discretización por
invarianza al escalón a la transformada z, Fd (z ) , tal que la inversa de Laplace de
ssF )( y la transformada z inversa de
1)(
−⋅
zzzFd coinciden en los instantes de muestreo
t = kT , donde T es el período de muestreo. Eso quiere decir que la respuesta de la
función continua a un escalón es igual a la respuesta de la función discreta a un escalón,
en los instantes de muestreo kT . [REF. 1]. Resaltar que la discretización por invarianza
al escalón es equivalente a discretizar con un muestreador y mantenedor de orden cero.
Para calcular Fd ( z ) hacemos lo siguiente:
Como L –1 = Z -1 entonces
= Z L –1 entonces
Fd (z ) = Z L –1 (ec.1)
Siendo L –1 la transformada inversa de Laplace, y Z -1
la transformada z inversa.
( )F ss = t k T
( )Fd z z − z 1
( )Fd z z − z 1
( )F ss = t k T
− z 1z
( )F ss = t k T
Capítulo 2: Discretización de una Señal
- 55 -
Ejemplo:
Llamamos Fs ( t ) a la inversa de Laplace de . Obtenemos Fd ( z ) aplicando la
Fórmula anterior (ec.1). Hallamos la transformada inversa de , la pintamos, y
comprobamos que equivale a la función f s ( t ) en los instantes de muestreo. En
concreto, lo hacemos para el periodo de muestreo .
OBSERVACIÓN: La función de transferencia 1
1)(+
=s
sF corresponde a un
sistema estable, y se puede apreciar que la salida sigue a la entrada escalón.
> 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);
z ( )Fd z − z 1
( )F ss
= T14
:= F → s1
+ s 1
:= fs − 1 e( )−t
:= Fd− + 1 eT
− z eT 1
Sistemas de Control en Tiempo Discreto
- 56 -
NOTA del autor: En el siguiente ejemplo se puede comprobar que cuando
Maple no sabe calcular las raíces del denominador de la función racional Fd (z ) de
forma exacta, la función inversa que devuelve hay que aproximarla (con el comando
evalf ) para conocer sus valores y poder representarla gráficamente, y esto puede dar
problemas en los resultados debido a las aproximaciones numéricas.
> with(inttrans):
> F := 2*(s^2+16+2*s)/(s*(s^2+16));
> ((z-1)/z)*ztrans(subs(t=k*T, invlaplace (F/s, s, t)), k , z);
> combine(%, trig):
Fde := factor(%);
:= F 2 + + s2 16 2 s
s ( ) + s2 16
( ) − z 1
+ − 2T z
( ) − z 1 214
z − z 1
14
( ) − − + z 1 8 ( )cos T 4 8 ( )cos T 2 z
− + + − 1 2 z z2 16 z ( )cos T 2 16 z ( )cos T 4
z
:= Fde14
− + − + + − − 8 T z2 z2 ( )cos 4 T z2 16 T z ( )cos 4 T 1 8 T ( )cos 4 T
( ) − z 1 ( )− − + 1 z2 2 z ( )cos 4 T
Capítulo 2: Discretización de una Señal
- 57 -
> invlaplace (F/s, s, t);
Señal continua.
> plot(invlaplace (F/s, s, t), t=0..2*Pi);
Puede apreciarse que la salida no sigue a la entrada escalón, ya que el sistema no es
estable. Lo mismo ocurre para la función discreta. Estabilidad.
> Fd2 := subs(T=1/4, Fde);
> fd2:=invztrans(Fd2*(z/(z-1)), z, k);
Puede apreciarse que no se obtiene una expresión cerrada con la trasnformada z inversa.
Para conseguirla, hay que usar evalf.
+ − 2 t14
14
( )cos 4 t
:= Fd214
− + + − − 3 z2 z2 ( )cos 1 4 z ( )cos 1 1 ( )cos 1
( ) − z 1 ( )− − + 1 z2 2 z ( )cos 1
:= fd2 + − 14
12
k18
∑ = _α ( )RootOf − + _Z2 2 _Z ( )cos 1 1
1_α
k
Sistemas de Control en Tiempo Discreto
- 58 -
> Digits:=10:
> evalf(fd2);
Señal discreta.
> plot([seq([k/4, fd2], k=0..25)], style=point);
NOTA del autor: Cuidado con las aproximaciones numéricas que hace Maple. En la
siguiente gráfica vemos que al pedirle que dibuje más puntos la señal discreta ya no se
comporta igual que la señal continua, lo cual no es cierto y es sólo debido a errores de
aproximación que comete MAPLE.
> plot([seq([k/4, fd2], k=0..100)], style=point);
.2500000000 .5000000000 k +
.2500000000 e( ).8050000000 10-16 k
( )cos 1.000000000 k −
Capítulo 2: Discretización de una Señal
- 59 -
Comprobamos que aumentando la precisión se corrigen los errores numéricos.
> 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 función Fde(z), es decir cos ( 4T) , es exacto, no hay problemas
numéricos aunque la precisión sea pequeña:
> 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);
Sistemas de Control en Tiempo Discreto
- 60 -
> 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 continuación escribimos un procedimiento cuya entrada es una función
racional F(s) y un periodo de muestreo T y cuya salida es la discretización de F(s) por
invarianza al escalón. Lo aplicamos al ejemplo , para comprobar su correcto
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);
= ( )F s1
s2
:= Fs1
s2
:= Fd12
T2 ( ) + 1 z
( ) − z 1 2
Capítulo 2: Discretización de una Señal
- 61 -
2.5 EJERCICIOS.
> restart: with(inttrans): with(plottools):
2.5.1.- Muestrear mediante impulsos la función f ( t ) = cos ( t ) +s i n ( 7 t )
> f := t -> cos(t) + sin(7*t);
plot(f(t), t=0..10);
> for j from 0 to 10 do
l[j] := plots[display](arrow([j,0], [j,f(j)], .05, .3, .15, color=red))
od:
:= f → t + ( )cos t ( )sin 7 t
Sistemas de Control en Tiempo Discreto
- 62 -
Obsérvese que al muestrear con esa frecuencia de muestreo = ,
no se cumple el teorema de muestreo, por lo que la función 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 número 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):
= ωs2 πT 2 π
Capítulo 2: Discretización de una Señal
- 63 -
> plots[display]([f1, f2, f3]);
2.5.2.- Discretizar por invarianza al impulso F(s) = 1/s. Utilizar el procedimiento
Discret_imp. Considerar el período 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:
Sistemas de Control en Tiempo Discreto
- 64 -
> F1 := 1/s;
Fd := Discret_imp(F1, 1);
Esta es la señal continua.
> plot(invlaplace(F1, s, t), t=0..Pi);
Señal muestreada. Obsérvese que el sistema es críticamente estable (tiene un polo en el
círculo 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);
:= F11s
:= Fdz
− z 1
Capítulo 2: Discretización de una Señal
- 65 -
2.5.3.- Discretizar por invarianza al impulso . Utilizar el
procedimiento Discret_imp. Considerar el período de muestreo
> F2 := 1/((s+2)*(s+5));
Fd := simplify(expand(Discret_imp(F2, 1/8)));
> plot(invlaplace(F2, s, t), t=0..Pi);
La inversa tiende a cero: el sistema es estable. Estabilidad.
= ( )F s1
( ) + s 2 ( ) + s 5
= T18
:= F21
( ) + s 2 ( ) + s 5
:= Fd −13
z
− + e
-14
e
-58
− z e
-58
− z e
-14
Sistemas de Control en Tiempo Discreto
- 66 -
> fd2 := invztrans(Fd, z, k):
plot([seq([k/8, fd2], k=0..24)], style=point);
2.5.4.- Discretizar por invarianza al impulso
Utilizar el procedimiento Discret_imp. Considerar el período de muestreo
> F3 := 3/((s+20)*(s+11)*(s+7));
Fd := simplify(Discret_imp(F3, 1/6));
= ( )F s3
( ) + s 20 ( ) + s 11 ( ) + s 7
= T16
:= F3 31
( ) + s 20 ( ) + s 11 ( ) + s 7
:= Fd −1
156z
− + − − + − 9 z e
-76
13 e
-116
z 4 e( )-3
4 e
-103
z 13 e
-92
9 e
-316
− z e
-103
− z e
-116
− z e
-76
Capítulo 2: Discretización de una Señal
- 67 -
:= Fd16
3 z ( ) − e( )3
1
− z e
12
31
− z e
12
3
> 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 . Considerar
como período de muestreo.
> F4 := 1/(s^2-3);
Fd := simplify(Discret_imp(F4, 1/2));
= ( )F s1
− s2 3 = T12
:= F41
− s2 3
Sistemas de Control en Tiempo Discreto
- 68 -
> 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 escalón F(s) = 1/s. Utilizar el procedimiento
Discret_esc. Considerar T = 1 como período 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:
Capítulo 2: Discretización de una Señal
- 69 -
> F1;
Fd := Discret_esc(F1, 1);
Esta es la señal continua.
> plot(invlaplace(F1/s, s, t), t=0..2*Pi);
Señal discretizada. El sistema discreto tiene un polo en z = 1, por lo que es críticamente
estable. Puede apreciarse que la salida no sigue a la entrada escalón. Estabilidad.
> fd1 := invztrans(Fd*(z/(z-1)), z, k):
plot([seq([k, fd1], k=0..6)], style=point);
:= F11s
:= Fd1
− z 1
Sistemas de Control en Tiempo Discreto
- 70 -
2.5.7.- Discretizar por invarianza al escalón . Utilizar el
procedimiento Discret_esc. Considerar como período de muestreo.
> F2;
Fd := simplify(Discret_esc(F2, 1/4));
> plot(invlaplace(F2/s, s, t), t=0..2*Pi);
Comprobamos ahora el teorema del valor final para sistemas continuos [REF. 2]:
= ( )F s1
( ) + s 2 ( ) + s 5
= T14
:= F21
( ) + s 2 ( ) + s 5
:= Fd1
30 − + + − + 2 z e
12
5 z e
54
3 3 e
74
z 5 e
12
2 e
54
− z e
12
1
− z e
54
1
= lim → t ∞
( )x t lim → s 0
s ( )X s
Capítulo 2: Discretización de una Señal
- 71 -
Como se trata de un sistema estable, el valor de la función de transferencia del sistema,
tiende a cero en el infinito. Estabilidad.
> limit(x(t), t=infinity) := limit(s*F2, s=0);
Se trata de un sistema estable, en el que la salida sigue a la entrada en escalón.
> 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 función de transferencia del sistema, tiende a cero en el
infinito.
> limit(x(k*T), k=infinity) = limit((1-z^(-1))*Fd, z=1);
:= lim → t ∞
( )x t 0
= lim → k ∞
( )x k T 0
Sistemas de Control en Tiempo Discreto
- 72 -
2.5.8.- Discretizar por invarianza al escalón
Utilizar el procedimiento Discret_esc. Considerar como período de
muestreo.
> F3;
Fd := simplify(Discret_esc(F3, 1/6));
> plot(invlaplace(F3/s, s, t), t=0..2*Pi);
= ( )F s3
( ) + s 20 ( ) + s 11 ( ) + s 7
= T16
31
( ) + s 20 ( ) + s 11 ( ) + s 7
Fd1
60060378 z e
76
40 z e
103
455 e
116
495 e
76
77 e
103
− + − −
− :=
495 z2 e
316
455 z2 e
92
77 z2 e3 572 z e
116
378 e
316
z + − + − −
572 e
92
z 40 e3 z 117 e
193
z2 117 + + − +
− z e
103
1
− z e
116
1
− z e
76
1
Capítulo 2: Discretización de una Señal
- 73 -
Se trata de un sistema estable, en el que la salida sigue a la entrada en escalón.
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 escalón . Utilizar Discret_esc.
Considerar como período de muestreo.
> F4;
Fd := simplify(Discret_esc(F4, 1/2));
= ( )F s1
− s2 3
= T12
1
− s2 3
:= Fd16
− + + − + z e( )3
2 z e
12
3e
( )3z 2 e
12
31
− − + z2 e
12
3z e
( )3z e
12
3
Sistemas de Control en Tiempo Discreto
- 74 -
> 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 escalón.
Estabilidad.
> fd4 := evalf(invztrans(Fd*(z/(z-1)), z, k)):
plot([seq([k/2, fd4], k=0..12)], style=point);
Capítulo 2: Discretización de una Señal
- 75 -
2.6 REFERENCIAS.
[REF. 1] K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2ª edición, 1996
[REF. 2] A.V.Openheim, A.S.Willsky, con la colaboración de I.T. Young,
Señales y sistemas,
Prentice-Hall, 1994
Capítulo 3: Aplicación de la Transformada Z ...
- 77 -
Capítulo 3.
APLICACIÓN DE LA TRANSFORMADA Z
A SISTEMAS DE CONTROL
GOBERNADOS POR ECUACIONES EN DIFERENCIAS.
Sistemas de Control en tiempo Discreto
- 78 -
3.1 INTRODUCCIÓN.
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 numéricos de todos los coeficientes y los parámetros. Sin
embargo, las expresiones en forma cerrada para x ( k ) no se pueden obtener a partir de
la solución por computadora, excepto para casos muy especiales. La utilidad del método
de la transformada z es que permite obtener la expresión 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 limitación en
cuanto a complejidad. Además tiene la ventaja de que, en cuanto a precisión, las
operaciones con un computador digital son más exactas que las efectuadas con
dispositivos analógicos. [REF. 1].
El objetivo de este capítulo es mostrar la utilidad del método de la transformada
z, que se puede aprovechar para los sistemas de control digital, que son los gobernados
por un ordenador.
Capítulo 3: Aplicación de la Transformada Z ...
- 79 -
3.2 MÉTODO DE LA TRANSFORMADA Z PARA LA SOLUCIÓN
DE ECUACIONES EN DIFERENCIAS.
Sea un sistema de control gobernado por la siguiente ecuación en diferencias
lineal de segundo orden, con coeficientes constantes, cuya entrada es una función u ( k )
y cuya salida es una función x ( k ) :
> restart:
ecu := x(k+2) + a*x(k+1) + b*x(k) = u(k);
Se puede utilizar la transformada z para convertir la ecuación anterior en una expresión
algebraica en la variable z:
> zecu:=ztrans(ecu, k, z);
> Xz := solve(zecu, ztrans(x(k), k, z));
:= ecu = + + ( )x + k 2 a ( )x + k 1 b ( )x k ( )u k
zecu z2 ( )ztrans , ,( )x k k z ( )x 0 z2 ( )x 1 z a ( ) − z ( )ztrans , ,( )x k k z ( )x 0 z − − + := b ( )ztrans , ,( )x k k z + ( )ztrans , ,( )u k k z =
:= Xz + + + ( )x 0 z2 ( )x 1 z a ( )x 0 z ( )ztrans , ,( )u k k z
+ + z2 a z b
Sistemas de Control en tiempo Discreto
- 80 -
Podemos especificar las condiciones iniciales x(0) e x(1) y la función de entrada del
sistema:
> subs(x(0)=0, x(1)=1, ztrans(u(k), k, z)=U(z), Xz);
En particular, si damos condiciones iniciales nulas obtenemos la función de
transferencia del sistema:
> X(z) := subs(x(0)=0, x(1)=0, ztrans(u(k), k, z)=U(z), Xz);
La función de transferencia del sistema es:
> G(z) := X(z)/U(z);
:= ( )G z1
+ + z2 a z b
+ z ( )U z
+ + z2 a z b
:= ( )X z( )U z
+ + z2 a z b
Capítulo 3: Aplicación de la Transformada Z ...
- 81 -
3.2.1.- Función transferencia de pulso de un sistema de control discreto.
A continuación se muestra un procedimiento llamado ztransfe2, que tiene como
argumentos de entrada los valores a, b, c y d, y obtiene como salida la función
transferencia de pulso de un sistema de control discreto gobernado por la siguiente
ecuación en diferencias:
> ecu1 := x(k+2) + a*x(k+1) + b*x(k) = c*u(k+1) + d*u(k);
> ztransfe2 := proc (a, b, c, d) local ecu, zecu, Xz, X, U, G;
ecu := x(k+2) + a*x(k+1) + b*x(k) = c*u(k+1) + d*u(k);
zecu := ztrans(ecu, k, z);
Xz := solve(zecu, ztrans(x(k), k, z));
X(z) := subs(x(0)=0, x(1)=0, u(0)=0, ztrans(u(k), k, z)=U(z), Xz);
G(z) := simplify(X(z)/U(z));
end:
Probamos el procedimiento con un par de ejemplos.
> ztransfe2(a, b, c, d);
> ztransfe2(7, 8, 9, 10);
+ c z d
+ + z2 a z b
+ 9 z 10
+ + z2 7 z 8
:= ecu1 = + + ( )x + k 2 a ( )x + k 1 b ( )x k + c ( )u + k 1 d ( )u k
Sistemas de Control en tiempo Discreto
- 82 -
3.2.2.- Función de salida de un sistema de control discreto.
A continuación se muestra un procedimiento que se llama zent_sal2, que recibe
como entrada la función de transferencia de un sistema de control discreto de orden 2
(del tipo descrito en 3.2.1) y la función 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
función de salida x ( k ) correspondiente. Se utiliza la función de Heaviside.
> zent_sal2 := proc(G, input, ptos) local U, x, pe, ps, aux, den;
if (numer(G) <> 1) then aux := 1;
elif (G = (1/z)) then aux := Heaviside(t-1);
else den := sort(denom(G));
if (op(0, den) = `^`) and (op(1, den) = z)
then aux := Heaviside(t-op(2, den));
else aux := 1;
fi; fi;
U := ztrans(input, t, z);
x := simplify(evalf(invztrans(G*U, z, t)));
pe := plot(input, t=0..ptos, title=`entrada`, axes=frame);
ps := plot(x*aux, t=0..ptos, title= `salida`, axes=frame, discont=true);
printf(" Funcion Transf:");
printf(" Funcion Entrada:\n");
printf(" G(z) = %a", G);
printf(" u(t) = %a\n", input);
print(plots[display](array(1..2, [pe, ps])));
printf("Funcion de Salida x(t):");
print(x);
end:
Capítulo 3: Aplicación de la Transformada Z ...
- 83 -
NOTA del autor: Para resolver ecuaciones en diferencias en Maple, también se puede
utilizar la función 'rsolve'. Se podría utilizar una vez obtenida la ecuación de
recurrencias asociada a la entrada-salida del sistema:
> rsolve({x(k+2) + 3*x(k+1) + 2*x(k) = 1, x(0)=0, x(1)=1}, x);
Ejemplos:
Disminuimos el número de dígitos para que se aprecie mejor la salida:
> Digits := 5:
Al tener como función de transferencia z- 1 , este ejemplo nos sirve para ver que se
cumple el teorema de traslación, obteniendo en la salida la misma función de entrada,
pero con un retardo de un instante de muestreo.
− + 12
( )-1 k 23
( )-2 k 16
Sistemas de Control en tiempo Discreto
- 84 -
> zent_sal2(1/z, sin(t), 10); Funcion Transf: Funcion Entrada:
G(z) = 1/z u(t) = sin(t)
Funcion de Salida x(t):
OBSERVACIONES: En la ecuación de la función de salida, aparece la función
charfcnn(t), que equivale a la función delta de Kronecker:
1, para k = n
=
0, para
Dicha función coincide con la función impulso unitario o delta de Dirac.
( )δn k T
≠ k n
− + .84140 ( )charfcn0 t .84140 e( ).53405 10-9 t
( )cos t .54028 e( ).53405 10-9 t
( )sin t
Capítulo 3: Aplicación de la Transformada Z ...
- 85 -
> plot(charfcn[0](t), t=-2..2, axes=frame, style=point);
plot(Dirac(t), t=-2..2, axes=frame, style=point);
Como vemos Maple no las pinta bien, ya que al pintarla como función continua
no tiene en cuenta el valor en t = 0. Maple tiene una opción en el plot (discont=true)
para pintar funciones con discontinuidades, pero aquí no vale.
Si hacemos un plot de la función charfcn0(t), Maple la pinta como la función
constante 0, sin tener en cuenta el punto en el cual vale 1. De esta forma, si pintamos la
función de salida del ejemplo anterior, sin multiplicarla por la función de Heaviside
(función auxiliar del procedimiento), la función que nos pinta Maple en t = 0 tiene un
valor negativo, en vez de 0, pudiéndonos inducir a error. En realidad Maple lo que está
haciendo es retrasar la entrada (la función seno), sin tener en cuenta que nuestra entrada
vale 0 para t < 0.
Sistemas de Control en tiempo Discreto
- 86 -
Ahora comprobamos el teorema de traslación dando como función de transferencia 41z
para que se aprecie mejor el retardo.
> zent_sal2(z^(-4), sin(t), 20); Funcion Transf: Funcion Entrada:
G(z) = 1/z^4 u(t) = sin(t)
Funcion de Salida x(t):
.75667 ( )charfcn0 t .14108 ( )charfcn1 t .90926 ( )charfcn2 t .84140 ( )charfcn3 t− + + +
.75681 e( ).53405 10-9 t
( )cos t .65359 e( ).53405 10-9 t
( )sin t + −
Capítulo 3: Aplicación de la Transformada Z ...
- 87 -
Aquí también se obtiene la función de entrada retardada.
> zent_sal2(1/z, 1, 10);
Funcion Transf: Funcion Entrada:
G(z) = 1/z u(t) = 1
Funcion de Salida x(t):
Vemos otro ejemplo en el cual la salida no sigue a la entrada. Eso es debido a que la
función de transferencia no es estable.
> zent_sal2(1/(z^2+1), exp(-t), 10); Funcion Transf: Funcion Entrada:
G(z) = 1/(z^2+1) u(t) = exp(-t)
Funcion de Salida x(t):
− + 1. ( )charfcn0 t 1.
− − + .32402 ( )sin 1.5708 t .88078 ( )cos 1.5708 t .88078 e( )−1. t
1
+ z2 1
Sistemas de Control en tiempo Discreto
- 88 -
A continuación 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 más, sólo hay que añadirla a la lista
correspondiente, y Maple hace el resto. De nuevo se puede apreciar que, cuando la
función de transferencia es 1/z, la entrada experimenta un retardo, cumpliéndose el
teorema de traslación.
> g1 := [1/z, 1/(z^2+1)];
l1 := [1,t, exp(-t), sin(t)];
> ZTransfEntSal := proc(g, l) local i, j;
for i from 1 to nops(g) do
for j from 1 to nops(l) do
print(zent_sal2(g[i], l[j], 10));
printf("\n\n\n");
od;
od;
end:
:= g1
,1z
1
+ z2 1
:= l1 [ ], , ,1 t e( )−t
( )sin t
Capítulo 3: Aplicación de la Transformada Z ...
- 89 -
> ZTransfEntSal(g1, l1);
F u n c i o n T r a n s f : F u n c i o n E n t r a d a : F u n c i o n T r a n s f : F u n c i o n E n t r a d a :
G(z) = 1/z u(t) = 1 G(z) = 1/(z^2+1) u(t) = 1
Funcion de Salida x(t): Funcion de Salida x(t):
F u n c i o n T r a n s f : F u n c i o n E n t r a d a : F u n c i o n T r a n s f : F u n c i o n E n t r a d a :
G(z) = 1/z u(t) = t G(z) = 1/(z^2+1) u(t) = t
Funcion de Salida x(t): Funcion de Salida x(t):
(continúa)
− + 1. ( )charfcn0 t 1.
− + ( )charfcn0 t 1. t
− − .50000 .50000 ( )cos 1.5708t .50000 ( )sin 1.5708t
− + + .50000 .50000 t .50000 ( )cos 1.5708 t
Sistemas de Control en tiempo Discreto
- 90 -
F u n c i o n T r a n s f : F u n c i o n E n t r a d a : F u n c i o n T r a n s f : F u n c i o n E n t r a d a : G(z) = 1/z u(t) = exp(-t) G(z) = 1/(z^2+1) u(t) = exp(-t)
Funcion de Salida x(t): Funcion de Salida x(t):
F u n c i o n T r a n s f : F u n c i o n E n t r a d a : F u n c i o n T r a n s f : F u n c i o n E n t r a d a :
G(z) = 1/z u(t) = sin(t) G(z) = 1/(z^2+1) u(t) = sin(t)
Funcion de Salida x(t): Funcion de Salida x(t):
− + 2.7183 ( )charfcn0 t 2.7183 e( )−1. t
− − + .32402 ( )sin 1.5708t .88078 ( )cos 1.5708t .88078e( )−1. t
.84140 ( )charfcn0 t .84140e( ).5340510-9 t
( )cos t −
.54028e( ).5340510-9 t
( )sin t +
.77867 ( )cos 1.5708t .77867e( ).5340510-9 t
( )cos t −
.50000e( ).5340510-9 t
( )sin t +
Capítulo 3: Aplicación de la Transformada Z ...
- 91 -
3.3 EJERCICIOS.
> restart: Digits:=5:
3.3.1.- Considerando la ecuación en diferencias
donde x(0) = 0 y x(1) = 1, obtenga la solución general x(k) en forma cerrada.
> ecu := x(k+2) = 2*x(k+1) - x(k);
Se resuelve para X(z): tomamos la transformada z de la ecuación, la resolvemos y
sustituimos los datos iniciales, dando como resultado:
> zecu := ztrans(ecu, k, z);
> X(z) := solve(zecu, ztrans(x(k), k, z));
> X(z) := subs(x(0)=0, x(1)=1, X(z));
= ( )x + k 2 − 2 ( )x + k 1 ( )x k
:= ecu = ( )x + k 2 − 2 ( )x + k 1 ( )x k
zecu − − z2 ( )ztrans , ,( )x k k z ( )x 0 z2 ( )x 1 z = := − − 2 z ( )ztrans , ,( )x k k z 2 ( )x 0 z ( )ztrans , ,( )x k k z
:= ( )X zz ( ) + − ( )x 0 z ( )x 1 2 ( )x 0
− + z2 2 z 1
:= ( )X zz
− + z2 2 z 1
Sistemas de Control en tiempo Discreto
- 92 -
Por tanto X(z) tiene un polo doble en z = 1, que hará inestable la salida x(k), como
se puede ver obteniendo la transformada z inversa de X(z):
> x(k) := invztrans(X(z), z, k);
plot(x(k), k=1..10);
3.3.2.- Resolver la siguiente ecuación en diferencias:
donde
> restart: Digits:=5:
u(k) es la función de Heaviside.
> ecu := 2*x(k) - 2*x(k-1) + x(k-2) = Heaviside(k);
:= ecu = − + 2 ( )x k 2 ( )x − k 1 ( )x − k 2 ( )Heavisidek
= ( )u k {0 < k 0
1 "k entero positivo o cero"
= − + 2 ( )x k 2 ( )x − k 1 ( )x − k 2 ( )u k
:= ( )x k k
Capítulo 3: Aplicación de la Transformada Z ...
- 93 -
Tomamos la transformada z de la ecuación en diferencias dada.
> zecu := ztrans(ecu, k, z);
Al resolver ésta última ecuación para X(z) se obtiene:
> X(z) := factor(solve(zecu, ztrans(x(k), k, z)));
> solve(2*z^2-2*z+1=0);
evalf(abs(1/2+1/2*I));
Polo simple en z = 1, y dos polos complejos conjugados dentro del círculo unidad. Por
tanto la salida x(k) será críticamente estable. Obtenemos la transformada z inversa de
X(z) para obtener x(k).
> x(k) := invztrans(X(z), z, k);
:= zecu = − + 2 ( )ztrans , ,( )x k k z 2( )ztrans , ,( )x k k z
z( )ztrans , ,( )x k k z
z2z
− z 1
:= ( )X zz3
( ) − z 1 ( ) − + 2 z2 2 z 1
:= ( )x k − 112
∑ = _α ( )RootOf − + 2 2 _Z _Z2
1_α
k
_α
, + 12
12
I − 12
12
I
.70710
Sistemas de Control en tiempo Discreto
- 94 -
En este ejercicio no se puede obtener una forma cerrada para x(k). Hay que usar el
método numérico dado en los ejemplos del capítulo 1.5.
> evalf(x(k));
> xx := x(k):
plot([seq([k, xx], k=0..25)], style=point);
1. .50000 e( )−.34657 k
( )cos .78540 k .50000 e( )−.34657 k
( )sin .78540 k − + − .50000
I ( ) + .50000 e( )−.34657 k
( )cos .78540 k .50000 e( )−.34657 k
( )sin .78540 k − .50000
I ( )− − .50000 e( )−.34657 k
( )cos .78540 k .50000 e( )−.34657 k
( )sin .78540 k
Capítulo 3: Aplicación de la Transformada Z ...
- 95 -
3.3.3.- Considerando la ecuación en diferencias
x ( k + 2) = x ( k + 1) + x( k )
donde x(0) = 0 y x(1) = 1, obtenga la solución general x(k) en forma
cerrada.
> restart: Digits:=5:
> ecu := x(k+2) = x(k+1) + x(k);
> zecu := ztrans(ecu, k, z);
> X(z) := solve(zecu, ztrans(x(k), k, z));
> X(z) := subs(x(0)=0, x(1)=1, X(z));
> fsolve(z^2-z-1=0);
:= ecu = ( )x + k 2 + ( )x + k 1 ( )x k
zecu − − z2 ( )ztrans , ,( )x k k z ( )x 0 z2 ( )x 1 z = := − + z ( )ztrans , ,( )x k k z ( )x 0 z ( )ztrans , ,( )x k k z
:= ( )X zz ( ) + − ( )x 0 z ( )x 1 ( )x 0
− − z2 z 1
:= ( )X zz
− − z2 z 1
,-.61803 1.6180
Sistemas de Control en tiempo Discreto
- 96 -
:= ( )x k ∑ = _α ( )RootOf − + + 1 _Z _Z2
15
− 2
1_α
k
1_α
k
_α
_α
Tiene un polo en z = 1.618, es decir, fuera del círculo unidad, luego es inestable. x(k) es
la transformada z inversa de X(z):
> x(k) := invztrans(X(z), z, k);
Se obtiene una expresión semejante a la del ejercicio anterior. Si se utiliza el método
numérico:
> evalf(x(k));
Esta expresión en forma cerrada tampoco vale, ya que aparecen números complejos. La
secuencia de puntos correspondiente sería la mostrada a continuación:
> seq(eval(subs(k=n, x(k))), n=0..10);
> xx := x(k):
plot([seq([k, xx], k=0..10)], style=point);
.44722 e( )−.48121 k
( )cos 3.1416 k .44722 I e( )−.48121 k
( )sin 3.1416 k +
.44722 1.6180k −
, , , , , , , , , ,0 1 1 2 3 5 8 13 21 34 55
Capítulo 3: Aplicación de la Transformada Z ...
- 97 -
3.4 REFERENCIAS.
[REF. 1] R. Aracil Santonja, A. Jiménez Avello,
Sistemas Discretos de Control,
Cátedra de Automática, 1987
[REF. 2] K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2ª edición, 1996
Capítulo 4: Estabilidad. Criterio de Jury
- 99 -
Capítulo 4.
ESTABILIDAD.
CRITERIO DE JURY.
Sistemas de Control en Tiempo Discreto
- 100 -
4.1 INTRODUCCIÓN.
A continuación 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 método para saber si las raíces de un polinomio están
dentro, fuera o en el círculo unidad, sin necesidad de calcular dichas raíces.
Uno de los temas más importantes dentro de la teoría de control es el análisis de
la estabilidad de los sistemas, ya que uno de los primeros objetivos que se pretenden
alcanzar al diseñar 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 también 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 capítulo es mostrar el criterio de estabilidad de Jury, e
implementarlo como una función de Maple. El algoritmo en cuestión 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 raíces. Dicho
polinomio será la ecuación característica P(z) = 0. Esta prueba revela la existencia de
cualquier raíz inestable (raíces en el plano z que se presentan fuera del círculo unitario).
Sin embargo, no da la localización de las raíces inestables. Se limita a comprobar si las
raíces de la ecuación característica P(z) = 0 están dentro del círculo unidad.
Capítulo 4: Estabilidad. Criterio de Jury
- 101 -
Al aplicar la prueba de estabilidad de Jury a una ecuación característica dada
P(z) = 0, construimos una tabla cuyos elementos se basan en los coeficientes de P(z).
Supongamos que la ecuación característica P(z) es un polinomio en z como el siguiente:
donde > 0
Entonces la tabla de Jury se construye como se muestra a continuación:
= ( )P z + a0 zn a1 z( ) − n 1
a0
Fila z0 z z2 z3 ... z( ) − n 2
z( ) − n 1
zn
1 an a − n 1 a − n 2 a − n 3 ... a2 a1 a0
2 a0 a1 a2 a3 ... a − n 2 a − n 1 an
3 b − n 1 b − n 2 b − n 3 b − n 4 ... b1 b0
4 b0 b1 b2 b3 ... b − n 2 b − n 1
5 c − n 2 c − n 3 c − n 4 c − n 5 ... c0
6 c0 c1 c2 c3 ... c − n 2
. .
. .
− 2 n 5 p3 p2 p1 p0
− 2 n 4 p0 p1 p2 p3
− 2 n 3 q2 q1 q0
Sistemas de Control en Tiempo Discreto
- 102 -
Los elementos de la primera fila están 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
demás filas se obtienen mediante los siguientes determinantes:
k = 0, 1, 2, ..., n-1
k = 0, 1, 2, ..., n-2
y así sucesivamente hasta llegar a
k = 0, 1, 2
Nótese que la última fila de la tabla está formada por tres elementos. Para
sistemas de segundo orden, 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.
= bk det
an a − − n 1 k
a0 a + k 1
= ck det
b − n 1 b − − n 2 k
b0 b + k 1
= qk det
p3 p − 2 k
p0 p + k 1
= − 2 n 3 1
Capítulo 4: Estabilidad. Criterio de Jury
- 103 -
Criterio de estabilidad mediante la prueba de Jury. Un sistema con la
ecuación característica P(z) = 0 dada en potencias de z de la forma
donde > 0, es estable (todas sus raíces dentro del círculo unitario), si todas las
condiciones siguientes se satisfacen:
1. <
2. P(1) > 0
3. P(-1) > 0 para n par
P(-1) < 0 para n impar
4. >
>
.
.
>
Esta última condición sólo 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.
= ( )P z + a0 zn a1 z( ) − n 1
a0
ana0
b − n 1 b0
c − n 2 c0
q2 q0
Sistemas de Control en Tiempo Discreto
- 104 -
4.3 IMPLEMENTACIÓN DEL CRITERIO DE ESTABILIDAD DE
JURY.
Primero implementamos la función 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 ecuación
característica P(z) = 0 nos dice si el sistema es estable, críticamente 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; (continúa)
Capítulo 4: Estabilidad. Criterio de Jury
- 105 -
# 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; (continúa)
Sistemas de Control en Tiempo Discreto
- 106 -
# 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; (continúa)
Capítulo 4: Estabilidad. Criterio de Jury
- 107 -
# 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; (continúa)
Sistemas de Control en Tiempo Discreto
- 108 -
# 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:
Capítulo 4: Estabilidad. Criterio de Jury
- 109 -
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 críticamente 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
Sistemas de Control en Tiempo Discreto
- 110 -
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
ecuación característica: = 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
= ( )P z − − + z3 1.3 z2 .08 z .24
Capítulo 4: Estabilidad. Criterio de Jury
- 111 -
4.4.2.- Considere el sistema descrito por
donde x ( k ) es la entrada y la salida del sistema es y ( k ) . Determine la
estabilidad de dicho sistema.
La función transferencia de pulso para el sistema es
equivalente a
por lo que tenemos
> 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
= ( )Y z( )X z
1
− − + − 1 .6 z( )−1
.81 z( )−2
.67 z( )−3
.12 z( )−4
z4
− − + − z4 .6 z3 .81 z2 .67 z .12
= ( )P z − − + − z4 .6 z3 .81 z2 .67 z .12
= − − + − ( )y k .6 y ( ) − k 1 .81 y ( ) − k 2 .67 y ( ) − k 3 .12 y ( ) − k 4 ( )x k
Sistemas de Control en Tiempo Discreto
- 112 -
= ( )P z − − + − z4 .6 z3 .81 z2 .67 z .12
4.4.3.- Determinar la estabilidad del sistema de control gobernado por la siguiente
ecuación característica:
> 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 cálculo explícito de las raíces de la ecuación característica
del ejercicio 4.4.2 mediante el uso de la función 'solve' de Maple, y
compararlo con el método 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 raíces de la ecuación característica son las mostradas, y puede verse que dos
de ellas están dentro del círculo unitario, y la otra está en dicho círculo (polo en z = -1).
Por lo tanto, el sistema es críticamente estable. Estabilidad.
= ( )P z − 2 z2 .17
Capítulo 4: Estabilidad. Criterio de Jury
- 113 -
A simple vista da la impresión de que ambos métodos son igualmente válidos.
Pero, ¿cuál es la razón para usar el criterio de Jury en vez de calcular las raíces con
‘solve’? Conforme aumenta la complejidad de la ecuación característica, se hace más
difícil calcular las raíces, haciéndose más necesario un método para analizar la
estabilidad sin calcularlas.
Vemos ahora un ejemplo con una ecuación característica compleja, y calculamos
el tiempo invertido en cada uno de los dos métodos, mediante la función ‘time’. Para
hacerlo más real, volvemos a implementar la función ‘Estabilidad_Jury’, pero sin los
mensajes de información que se imprimen, ya que éstos consumen un tiempo que no
tiene nada que ver con los cálculos 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; (continúa)
Sistemas de Control en Tiempo Discreto
- 114 -
# 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)
Capítulo 4: Estabilidad. Criterio de Jury
- 115 -
# 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 función 'time' indica el tiempo de CPU total usado desde que se inició la
sesión de Maple. Para saber cuando tiempo se invierte en una función determinada, se
ejecuta 'time()' antes y después de dicha función, y se restan sus valores.
Sistemas de Control en Tiempo Discreto
- 116 -
> 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;
> st := time():
Estabilidad_Jury(expr);
Tiempo := time() - st; No es Estable
Con ambos métodos se llega a la conclusión de que el sistema no es estable. Sin
embargo, mientras que se tarda 0.15 sg. en calcular las raíces, con el criterio de Jury
sólo se tardan 0.01 sg. Cuanto más compleja sea la ecuación, más diferencia de tiempo
habrá.
, , ,-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
:= Tiempo .01
Capítulo 4: Estabilidad. Criterio de Jury
- 117 -
4.5 REFERENCIAS.
[REF. 1] R. Aracil Santonja, A. Jiménez Avello,
Sistemas Discretos de Control,
Cátedra de Automática, 1987
[REF. 2] K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2ª edición, 1996
Capítulo 5: Análisis de Respuesta Transitoria
- 119 -
Capítulo 5.
ANÁLISIS DE RESPUESTA TRANSITORIA.
Sistemas de Control en Tiempo Discreto
- 120 -
5.1 INTRODUCCIÓN.
En este capítulo estudiaremos las carácterísticas 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 función
de entrada o excitación.
Con frecuencia, los sistemas de control en tiempo discreto son analizados
mediante entradas "estándar", como son entradas escalón, 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 estándar. En este
capítulo, consideraremos la respuesta del sistema de control en tiempo discreto a
entradas en el dominio del tiempo, como son entradas escalón. [REF. 2].
5.2 ESPECIFICACIONES DE LA RESPUESTA TRANSITORIA.
En muchos casos prácticos, las características de diseño deseadas de los sistemas
de control, sean en tiempo continuo o en tiempo discreto, se especifican en términos de
cantidades en el dominio del tiempo. Esto ocurre debido a que los sistemas con
almacenamiento de energía no pueden responder de forma instantánea, y siempre que
estén sujetos a entradas o perturbaciones mostrarán algunas respuestas transitorias.
Con frecuencia, las características de diseño de un sistema de control están
especificadas en términos de su respuesta transitoria a una entrada escalón unitario, ya
que dicha entrada es fácil de generar, y sirve para proporcionar información útil de las
características de la respuesta transitoria. [REF. 2].
Capítulo 5: Análisis de Respuesta Transitoria
- 121 -
La respuesta transitoria de un sistema a una entrada escalón unitario depende de
las condiciones iniciales. Por comodidad, al comparar respuestas transitorias de varios
sistemas, es frecuente utilizar la condición inicial estándar: el sistema está inicialmente
en reposo, y la salida y todas sus derivadas con respecto al tiempo son cero. Las
características de respuesta pueden entonces compararse sin dificultad.
La respuesta transitoria de un sistema de control, donde la señal 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 sólo por el
factor de amortiguamiento relativo y la frecuencia natural amortiguada [REF. 1], sino
por los parámetros que se muestran a continuación.
Primero definimos expr, que es la función con la que vamos a trabajar ahora.
NOTA del autor: Aunque mostramos la expresión en función de kT , expr sólo está en
función de k. A los procedimientos que describiremos a continuación, se les pasará
como argumentos dicha expresión y su período de muestreo correspondiente. En este
caso concreto, T = 0.1. También se le pasará el parámetro max, que es el número
máximo 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( )−1.0002 k T
+ .99992 .20778 ( )-1.( ) + 1. k T
e( )−.33088 k T
Sistemas de Control en Tiempo Discreto
- 122 -
Y ahora la pintamos, teniendo en cuenta el período de muestreo:
> plot([seq([k/10, subs(k=k/10,expr)], k=0..20)], style=point,
xtickmarks=10);
5.2.1 Tiempo de retardo
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 dt se define como:
El procedimiento kd recibe como parámetro la secuencia de puntos de la salida y
calcula el intevalo de retardo kd . El procedimiento td calcula el tiempo de retardo
correspondiente. Sus parámetros, como ya se ha indicado, son expr, el período de
muestreo T y el número max de puntos de la secuencia.
td
= td kd T
Capítulo 5: Análisis de Respuesta Transitoria
- 123 -
> kd := proc(sec)
local i, f, mitad;
i := 1:
f := 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 gráfico de la función (mostrado antes) puede comprobarse visualmente este
resultado.
Sistemas de Control en Tiempo Discreto
- 124 -
5.2.2 Tiempo de crecimiento o subida
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,
según la situación. 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 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 se define como [REF. 3]:
Ejemplo:
Se implementan los procedimientos kr y tr, que dada la secuencia de puntos de
una expresión, y un período 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:
tr
kr
tr
= tr kr T
Capítulo 5: Análisis de Respuesta Transitoria
- 125 -
> 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 gráfico de la función puede comprobarse visualmente este resultado.
5.2.3 Tiempo de pico
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 como el índice correspondiente al elemento de
la secuencia de salida de valor máximo. [REF. 3]. Como se señaló 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 máximo:
tp
kp
= tp kp T
Sistemas de Control en Tiempo Discreto
- 126 -
Ejemplo:
Se implementa el procedimiento tp, que dada la secuencia de puntos de una
expresión, y un período 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: (continúa)
Capítulo 5: Análisis de Respuesta Transitoria
- 127 -
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 = T1
10
5.2.4 Sobreimpulso máximo
El máximo sobreimpulso es el valor pico máximo 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 común utilizar el sobreimpulso porcentual
máximo, definido por la relación:
Sobreimpulso máximo porcentual = − ( )x tp ( )x ∞
( )x ∞ 100%
Siendo ( )x k T la función de salida o respuesta.
El valor del máximo sobreimpulso (en porcentaje), indica en forma directa la
estabilidad relativa del sistema. [REF. 1].
Mp
Sistemas de Control en Tiempo Discreto
- 128 -
También se define el máximo sobreimpulso como el valor del elemento de la
secuencia de salida ( )x k T , de índice , [REF. 3], por lo que entonces se define el
máximo 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 expresión, y un período de
muestreo T, calcula el sobreimpulso máximo.
> 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 Máximo 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:
kp
Capítulo 5: Análisis de Respuesta Transitoria
- 129 -
> Mp(expr, 0.1, 20);
Sobreimpulso Máximo 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
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
tamaño especificado, en función 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 fijación del porcentaje de error a
usar depende de los objetivos de diseño del sistema en cuestión. [REF. 1]. En nuestro
ejemplo pasamos el porcentaje como parámetro del procedimiento, debiendo estar entre
2% y 5%.
Se define el intervalo de establecimiento como el índice del primer elemento
de la secuencia de salida a partir del cual ésta se mantiene en la banda del más/menos
p% del valor final [REF. 3], siendo p el parámetro que se le pasa al procedimiento.
Asimismo, puede definirse el tiempo de establecimiento como:
ts
ks
ts
= ts ks T
Sistemas de Control en Tiempo Discreto
- 130 -
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:
i := 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:
Capítulo 5: Análisis de Respuesta Transitoria
- 131 -
> 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.
Sistemas de Control en Tiempo Discreto
- 132 -
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 diseño 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
máximo no son aplicables. [REF. 2].
Capítulo 5: Análisis de Respuesta Transitoria
- 133 -
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.- Análisis de respuesta transitoria de la siguiente expresión:
exp1 :=
para T = 1/5. Implementar primero un procedimiento que se encargue de
realizar todo el análisis de respuesta transitoria.
Primero se realiza el procedimiento que calcula los tiempos de retardo,
crecimiento, pico y establecimiento, así como el sobreimpulso máximo 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:
invztrans , ,
+ − − .050914 z3 1.2230 z2 .03125 z .15655
( ) − z 1 ( ) + − z2 .3505 z .2642z k
Sistemas de Control en Tiempo Discreto
- 134 -
Se pinta la función discreta para el período 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);
Análisis 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 Máximo 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.
Capítulo 5: Análisis de Respuesta Transitoria
- 135 -
5.3.2.- Análisis de respuesta transitoria de la siguiente función:
para T = 3/5
Primero la dibujamos, para que se aprecie que es una función 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 expresión 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);
− + 1 e
−
7 t10
3 t2 e
− +
710
t
− + 1 e
−
710k T
3 e
−
710k T
k2 T2
Sistemas de Control en Tiempo Discreto
- 136 -
Análisis de respuesta transitoria. Nótese que, a diferencia del ejercicio anterior,
en esta ocasión 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 Máximo 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.- Análisis de respuesta transitoria de la siguiente expresión:
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]);
+ ( )− + − 1 10.15 t 6.44 t2 e( )− t
1
Capítulo 5: Análisis de Respuesta Transitoria
- 137 -
Esta función, 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);
Análisis 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 Máximo 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.
− + − + 1.0000 .36788( )k T
10.150 .36788( )k T
k T 6.4400 .36788( )k T
k2 T2 1
Sistemas de Control en Tiempo Discreto
- 138 -
5.3.4.- Análisis de respuesta transitoria de la siguiente expresión:
para T = 4/5
> fun4:= 1-exp(-t/10):
plot({fun4, 1}, t=0..40, color=[wheat, red]);
Esta función va ascendiendo poco a poco hasta alcanzar su valor final,
acercándose a uno. En esta ocasión, 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);
− 1 e
−
t10
− 1 e
−
110k T
Capítulo 5: Análisis de Respuesta Transitoria
- 139 -
Análisis de respuesta transitoria. Al no ser una función con picos, sino que va creciendo
progresivamente, puede apreciarse que el Sobreimpulso Máximo 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 Máximo 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.- Análisis de respuesta transitoria de la siguiente expresión:
para T = 1/2
> fun5 := 1-exp(-t)-2*t^2*exp(-t):
plot({fun5, 1}, t=0..10, color=[wheat, red]);
− − 1 e( )− t
2 t2 e( )− t
Sistemas de Control en Tiempo Discreto
- 140 -
> 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);
En las gráficas anteriores puede observarse que exp5 tiene una oscilación oculta,
que no se ve en el gráfico de la función discreta.
Análisis de respuesta transitoria. Como nunca alcanza al uno, Mp = 0%.
− − 1 e( )−k T
2 e( )−k T
k2 T2
Capítulo 5: Análisis de Respuesta Transitoria
- 141 -
> 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 Máximo 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.
Sistemas de Control en Tiempo Discreto
- 142 -
5.4 REFERENCIAS.
[REF. 1] K. Ogata,
Ingeniería de Control Moderna,
Prentice-Hall, 1980
[REF. 2] K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2ª edición, 1996
[REF. 3] J.M. Pérez Oria, S. Arnáltes Gómez,
Introducción a los Sistemas de Control con Computador,
Editorial Ciencia 3 Distribución S.A., 1993
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 143 -
Capítulo 6.
DISEÑO DE CONTROL
POR ESTABLECIMIENTO FINITO
(DEAD BEAT).
Sistemas de Control en Tiempo Discreto
- 144 -
6.1 INTRODUCCIÓN.
En esta sección presentamos un método de diseño analítico para controladores
digitales que obligará a la secuencia de error, cuando quede sujeta a un tipo específico
de entrada en el dominio del tiempo, a llegar a cero después de un número finito de
períodos de muestreo y, de hecho, a convertirse y mantenerse a cero después del menor
número posible de períodos de muestreo.
El control Deadbeat de sistemas muestreados tiene la característica específica de
que establece la señal de error a cero en un número finito de pasos discretos; para
conseguir esto se impone que los polos del sistema en lazo cerrado, o bien estén en el
origen z = 0, o bien sean ceros estables de la señal de entrada, de forma que se cancelen.
Estabilidad.
Los estudios que siguen están limitados a la determinación 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 características
deseadas de respuesta óptima.
Debido a que el control Deadbeat requiere una respuesta Deadbeat sólo 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 señal de error a cero en todo
instante de tiempo después de un tiempo; es decir, eliminar cualquier tipo de
oscilaciones entre instantes de muestreo.
Para más información sobre la parte teórica de este tema, consultar [REF. 3] y
[REF. 4].
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 145 -
6.2 DISEÑO DE CONTROLADORES DIGITALES PARA UN
TIEMPO DE ESTABLECIMIENTO MÍNIMO CON UN
ERROR CERO EN ESTADO PERMANENTE.
Se considera el sistema de control digital que se muestra a continuación:
fig. (6-a)
La señal 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 señal de error e ( kT). La salida del controlador digital es la señal de control
u ( k T). Dicha señal de control es aplicada a la planta. Se desea diseñar un controlador
digital GC( z ) tal que el sistema de control en lazo cerrado tenga como tiempo de
establecimiento el mínimo posible, con un error en estado permanente cero, en respuesta
a una entrada escalón, rampa o aceleración. Se requiere que la salida no presente
componentes oscilatorias entre las muestras, después de haber alcanzado el estado
permanente. Si se requiere, el sistema deberá satisfacer cualquier otra especificación,
como es la correspondiente a la constante de error de velocidad estática.
El mantenedor sirve para reconstruir los valores de la función entre los puntos de
muestreo. La forma más sencilla es mediante un mantenedor de orden cero (ZOH), que
reproduce la señal en forma de escalera. Su función de transferencia viene dada por la
ecuación s
sGsT
h
⋅−−=
e1)(
Sistemas de Control en Tiempo Discreto
- 146 -
y la correspondencia entre los planos s y z viene dada por la transformación sTz ⋅= e .
Sea la transformada z de la planta, precedida por el mantenedor de orden cero, la
siguiente:
=)(zG Z L –1 ( )
Tktph sGsG⋅=
⋅ )()(
Ζ⋅
−=
⋅−=
⋅−
s
spG
zz
s
sGZ p
sT )(1)()1( e (6.2.0)
Se observa que se ha realizado un abuso de notación, eliminando L-1. Este
proceso equivale a la discretización por invarianza al escalón.
Entonces la función transferencia de pulso en lazo abierto es GC( z ) G ( z ), tal y
como se muestra en la siguiente figura:
fig. (6-b)
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 147 -
A continuación se forma la función transferencia de pulso en lazo cerrado y la
llamamos F(z):
)()()(1
)()()()( zF
zGzGzGzG
zRzX
C
C =⋅+
⋅= (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 función transferencia de pulso en lazo cerrado deseado
debe ser de la forma siguiente:
NN
NN
zazazazF +++=
− K110)(
es decir N
N zazaazF −− +++= K110)( (6.2.2)
y se tiene que cumplir que el orden del sistema, n, sea menor o igual que N ( )Nn ≤ .
Nótese que F( z ) no debe tener ningún término con potencias positivas en z, ya que
dichos términos en la expansión en series de F( z ) implicaría que la salida antecede a la
entrada, lo que no es posible en un sistema físicamente realizable.
Si se tiene el desarrollo en serie en potencias de z -1 de F( z ), como el de la
ecuación (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 método de diseño consiste en construir la función transferencia de pulso del
controlador digital GC(z ), de forma que la función transferencia de pulso en lazo
cerrado satisfaga la ecuación (6.2.1). Despejando GC( z ) en dicha ecuación obtenemos
Sistemas de Control en Tiempo Discreto
- 148 -
( ))(1)()()(
zFzGzFzGC −⋅
= (6.2.3)
El sistema diseñado debe ser físicamente realizable. Las condiciones para que
esto ocurra imponen ciertas limitaciones a la función transferencia de pulso en lazo
cerrado F(z) y a la función transferencia de pulso del controlador digital GC( z ). A
continuación se comentan las condiciones para que sean físicamente 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 eL S entonces el sistema en
lazo cerrado diseñado debe involucrar por lo menos la misma magnitud de retraso de
transporte. De no ser así, el sistema en lazo cerrado tendría que responder antes de que
se le diera una entrada, lo que es imposible de realizar en un sistema físico.
3. Si G( z ) se expande en una serie en potencias de z -1 y la primera potencia de
z -1 es r, con 0≥r , entonces en la expresión en serie de F( z ) la primera potencia de z -1
debería ser como mínimo r. Por ejemplo, si la expansión de G( z ) en una serie en z -1
empieza con el término z -1, entonces el primer término de F( z ) de la ecuación (6.2.2),
que es a 0, deberá ser cero, quedando
N
N zazazF −− ++= K11)(
donde Nn ≤ y n es el orden del sistema. Esto significa que la planta no puede
responder en forma instantánea cuando se aplica una señal de control de magnitud
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 149 -
finita; es decir, si la expansión en serie de G(z) empieza con un término z -1, entonces la
respuesta se presenta con un retraso de por lo menos un período de muestreo.
Además de las condiciones de la posibilidad física de realización, tenemos que
poner atención en aspectos de estabilidad del sistema. De manera específica, debemos
evitar la cancelación de un polo inestable de la planta mediante un cero del controlador
digital. Si se intenta este tipo de cancelación, cualquier error en la cancelación entre
polos y ceros generará una divergencia conforme pasa el tiempo y el sistema se hará
inestable. En forma similar, la función transferencia de pulso del controlador digital no
deberá incluir polos inestables para cancelar ceros de la planta que ocurran fuera del
círculo unitario.
Ahora investiguemos lo que ocurrirá con la función transferencia de pulso en
lazo cerrado, F( z ), si G(z ) incluye un polo inestable (o críticamente estable), esto es, un
polo z = α exterior al círculo unidad (o bien sobre él). La discusión siguiente se aplica
de la misma manera, si G(z) incluye dos o más polos inestables (o críticamente
estables). Definamos
α−
=z
zGzG )()( 1
Donde )(1 zG no incluye un término que se cancele con z - α. Entonces la
función transferencia de pulso en lazo cerrado se convierte en
)()()(1)(
)()()()(1
)()()()(
1
1 zF
zzGzGz
zGzGzGzG
zGzGzRzX
C
C
C
C =
−⋅
+⋅−
⋅=
⋅+⋅
=
αα
(6.2.4)
Sistemas de Control en Tiempo Discreto
- 150 -
En vista de que requerimos que ningún cero de GC( z ) cancele el polo inestable
de G( z ) en z = α, debemos tener
−⋅
+⋅−
⋅=
−⋅
+=−
αα
α zzGzGz
zGzG
zzGzG
zFC
C
C )()(1)(
)()()()(1
1)(11
1
1
Esto es, 1 -F( z ) debe tener como cero a z = α. También, notar de la ecuación
(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 críticamente estables) de G( z ), todos los polos inestables (o críticamente estables) de
G( z ) deberán incluirse en 1 - F( z ) como ceros.
2. Los ceros de G( z ) que se presenten dentro del círculo unidad pueden
cancelarse con polos de GC( z ). Sin embargo, los ceros de G( z ) que ocurran sobre o
fuera del círculo 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 círculo unidad deberán ser incluidos en
F( z ) como ceros.
Ahora seguiremos con el diseño. Dado que )()()( kTxkTrkTe −= ,
refiriéndonos a la ecuación (6.2.1) tenemos
( ))(1)()()()( zFzRzXzRzE −⋅=−= (6.2.5)
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 151 -
NOTA del autor: Las siguientes funciones se multiplican por el escalón
0 si 0<t
1( t ) =
1 si 0≥t
Esto significa que las señales sólo toman valores distintos de cero a partir de k = 0.
Note que para una entrada escalón unitario r( t ) = 1( t ),
111)( −−
=z
zR
Para una entrada rampa unitaria )(1)( tttr ⋅= ,
( )21
1
1)(
−
−
−
⋅=
z
zTzR
Y para una entrada aceleración unitaria 2
)(1)(2 tttr ⋅
= ,
( )31
112
12
)1()(−
−−
−⋅
+⋅⋅=
z
zzTzR
Sistemas de Control en Tiempo Discreto
- 152 -
Por lo tanto, en general, las transformadas z en estas entradas polinomiales en el
dominio de tiempo se pueden escribir como
( ) 111
)()( +−−= q
z
zPzR (6.2.6)
donde P(z) es un polinomio en z -1. Para una entrada escalón unitario, P(z) = 1 y q = 0;
para una entrada rampa unitaria, P(z ) = Tz -1 y q = 1; y para una entrada aceleración
unitaria,
2
)1()(112 −− +⋅⋅
=zzTzP y q = 2.
Al sustituir la ecuación (6.2.6) en la ecuación (6.2.5) obtenemos
( ) 111
))(1()()(+−−
−⋅= q
z
zFzPzE (6.2.7)
Para asegurarnos de que el sistema llega al estado permanente en un número
finito de períodos de muestreo y mantiene un error cero en estado permanente, E( z )
deberá ser un polinomio en z -1 con un número finito de términos. Entonces,
refiriéndonos a la ecuación (6.2.7), escogemos que la función 1 - F( z ) tenga la forma
)()1()(1 11 zNzzF q ⋅−=− +− (6.2.8)
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 153 -
donde N( z ) es un polinomio en z -1 con un número finito de términos. Entonces
)()()( zNzPzE ⋅= (6.2.9)
que es un polinomio en z -1 con un número finito de términos. Esto significa que la señal
de error se convierte en cero en un número finito de períodos de muestreo.
Del análisis anterior, la función transferencia de pulso del controlador digital
puede determinarse como sigue. Si se supone primero que F(z) satisface la posibilidad
física de realización y las condiciones de estabilidad, y a continuación se sustituye la
ecuación (6.2.8) en la ecuación (6.2.3), obtenemos
)()1()(
)()( 11 zNzzGzFzG qC ⋅−⋅
= +− (6.2.10)
La ecuación (6.2.10) da la función transferencia de pulso del controlador digital,
que producirá un error cero en estado permanente, después de un número finito de
períodos de muestreo.
Para una planta estable Gp( s ), la condición para que la salida no muestre
componentes oscilatorios entre instantes de muestreo después del tiempo de
establecimiento, se puede escribir como sigue:
x( t ) = constante, para nTt ≥ para entradas escalón
x'( t ) = constante, para nTt ≥ para entradas rampa
x''( t ) = constante, para nTt ≥ para entradas aceleración
Sistemas de Control en Tiempo Discreto
- 154 -
Dicha condición deberá ser tenida en cuenta cuando se diseñe el sistema o el
controlador. Al diseñar el sistema de control, la condición sobre x( t ), x'( t ) o x''( t )
deberá interpretarse en términos de u( t ). Notar que la planta está en tiempo continuo y
la entrada a la planta es u( t ), que es una función en tiempo continuo; por lo tanto, para
no tener componentes oscilatorias en la salida x( t ), la señal de control u( t ) en estado
permanente debe ser constante o de un incremento monótono (o decreciendo
monótonamente) para los casos de entrada escalón, rampa y aceleración.
Comentarios:
1. Dado que la función transferencia de pulso en lazo cerrado F( z ) es un
polinomio en z -1, todos los polos en lazo cerrado están en el origen z = 0. El polo
múltiple en lazo cerrado en el origen es muy sensible a las variaciones de parámetros
del sistema. [REF. 3].
2. Aunque un sistema de control digital diseñado para presentar un tiempo de
establecimiento mínimo, con un error cero en estado permanente, en respuesta a un tipo
específico de entrada tenga características excelentes de respuesta transitoria para la
entrada para la cual fue diseñado, puede mostrar características de respuestas
transitorias inferiores o algunas veces inaceptables para otros tipos de entrada. Esto es
siempre cierto tratándose de sistemas de control óptimo: un sistema de control óptimo
mostrará las mejores características de respuesta para el tipo de entrada para el que fue
diseñado, pero no tendrá características de respuesta óptima para otro tipo de entradas.
3. En el caso en el que un controlador analógico es discretizado, un incremento
en el período de muestreo modifica la dinámica del sistema, lo que puede llevar a la
inestabilidad del mismo. Por otra parte, el comportamiento del sistema de control digital
que diseñamos en esta sección no depende de la selección del período de muestreo. En
vista de que las entradas r( t ) aquí consideradas son entradas en el dominio del tiempo
(escalón, rampa, aceleración...), el período de muestro T puede ser escogido de manera
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 155 -
arbitraria. Para un período de muestreo menor, el tiempo de respuesta (que es un
múltiplo entero del período de muestreo T) se hace menor. Sin embargo, para un
período de muestreo T muy pequeño, la magnitud de la señal de control se convertirá en
excesivamente grande, con el resultado de que en el sistema aparecerán fenómenos de
saturación, y el método de diseño presentado en esta sección ya no será aplicable. Por lo
tanto, el período de muestreo T no debe ser demasiado pequeño. Por otra parte, si el
período 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 término medio. Una regla práctica sería escoger el período de muestreo T
más pequeño para que no ocurra ningún fenómeno de saturación en la señal de control.
Ejemplo:
Considere el sistema de control mostrado en la figura (6-a), donde la función de
transferencia de la planta Gp( s ) está dada por
)1(
1)(+⋅
=ss
sGp
Se quiere diseñar un controlador digital GC( z ), tal que el sistema en lazo cerrado
muestre respuesta sin oscilaciones a una entrada escalón 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 período de muestreo T se
supone de 1seg.
Sistemas de Control en Tiempo Discreto
- 156 -
El primer paso en el diseño es determinar la transformada z de la planta que está
precedida por un mantenedor de orden cero: [REF. 3].
=)(zG Z L –1 ( )
Tktph sGsG⋅=
⋅ )()(
=
+⋅
Ζ⋅−=
+⋅
−Ζ −
⋅−
)1(1)1(
)1(1
21
2 ssz
ss
sTe
> restart: with(inttrans): Digits:=5:
> Gp := s -> 1/(s*(s+1));
Calculamos primero la transformada z de )1(
12 +⋅ ss
, y sustituimos el período
de muestreo T = 1 tras multiplicar la transformada por z
zz 11 1 −=− − .
> G(z) := evalf(subs(T=1, simplify(((z-1)/z)*
ztrans(subs(t=k*T, invlaplace(1/s*Gp(s), s, t)), k, z))));
> factor(G(z));
:= Gp → s1
s ( ) + s 1
:= ( )G z −1. + .36788 z .26424
− + − 1. z2 1.3679 z .36788
+ .36788 z .26424( ) − z 1. ( ) − z .36787
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 157 -
Si multiplicamos ambos términos de la fracción por z -2, se obtiene la expresión
en función de z -1. Y dicha expresión es:
)36787.01()1(
)71828.01(36788.0)( 11
11
−−
−−
⋅−⋅−⋅⋅+⋅
=zz
zzzG
Recordamos ahora la ecuación (6.2.1): )()(
)()(1)()()(
zRzX
zGzGzGzGzF
C
C =⋅+
⋅=
Se Observa de la expresión anterior de G( z ) que si G( z ) se expande a una serie en
potencias de z -1 el primer término será en z -1. Por lo tanto, F( z ) deberá empezar con un
término en z -1.
Al referirnos a la ecuación (6.2.2) y observar que el sistema es de segundo orden
(n = 2) suponemos que F(z) tiene la siguiente forma:
2
21
1)( −− ⋅+⋅= zazazF (6.2.12)
Dado que la entrada es una función escalón, de la ecuación (6.2.8) requerimos que
)()1()(1 1 zNzzF ⋅−=− − (6.2.13)
Dado que G(z) tiene un polo críticamente estable en z = 1, el requisito de
estabilidad define que 1 - F ( z ) debe tener un cero en z = 1. Sin embargo la función
1 - F ( z ) ya tiene un término 1 - z -1, por lo que el requisito está satisfecho.
Sistemas de Control en Tiempo Discreto
- 158 -
En vista de que el sistema no deberá mostrar componentes oscilatorias entre
muestras y la entrada es una función escalón, necesitamos que )2( Ttx ⋅≥ sea
constante. Si observamos que u( t ), la salida del mantenedor de orden cero, es una
función en tiempo continuo, una constante )2( Ttx ⋅≥ requiere que u( t ) también sea
constante para Tt ⋅≥ 2 . En términos de la transformada z, U( z ) debe ser del tipo
siguiente en potencias de z -1:
( )L++⋅+⋅+= −−− 321
10)( zzbzbbzU
donde b es una constante. Dado que la función de transferencia de la planta )(sGp
involucra un integrador s1 (un integrador es un aparato cuya salida es la derivada de la
entrada [REF. 2]), b deberá ser cero. De lo contrario, la salida no podría conservarse
constante a partir de t = 2T. En consecuencia tenemos
1
10)( −⋅+= zbbzU
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 159 -
Se demuestra a continuación:
Siendo ( ) L++++=−
=Ζ −−−−
3211 1
11)(1 zzzz
k
supongamos
( ) ( )=+++⋅⋅+⋅+=++⋅+⋅+= −−−−−−− LL 212110
32110 1)( zzzbzbbzzbzbbzU
= ( ) ( )
1
21
1010
121
10 111
−
−−
−−−
−⋅−+⋅−+
=−
⋅⋅+⋅+z
zbbzbbbz
zbzbb
y )()()( zUzGzX ⋅=
La salida x(t) tiene que ser constante a partir de Tt ⋅≥ 2 . Luego su transformada z,
X(z), será de la forma ( ) 12
21
11
1−
−−
−⋅⋅+⋅
zzczc
1
21
1010
11
1
1121
1)()(
)1()1()1()()()( −
−−
−−
−−
−⋅−+⋅−+
⋅⋅−⋅−⋅⋅−⋅
=⋅=z
zbbzbbbzazzzaazUzGzX
En G(z) ya se tiene el término 111
−− z luego no se puede tener en U(z), ya que si no en
X(z) se tendría ( )211
1−− z
y X(z) no podría ser constante a partir de t = 2T. Por lo tanto
b = 0 y además en U(z) tiene que aparecer el término )1( 11
−⋅− za .
Sistemas de Control en Tiempo Discreto
- 160 -
U ( z ) se puede calcular de la siguiente manera:
)()()(
)()(
)()(
)()()(
zGzRzF
zGzR
zRzX
zGzXzU ⋅=⋅==
11
11
1 )7183.01(36788.0)36788.01()1(
11)(
−−
−−
− ⋅⋅+⋅
⋅−⋅−⋅
−⋅=
zzzz
zzF
11
1
)7183.01(36788.036788.01)( −−
−
⋅⋅+⋅⋅−
⋅=zz
zzF
Para que U(z) sea una serie en z -1 con sólo dos términos, F( z ) debe ser de la
siguiente forma:
1
11)7183.01()( FzzzF ⋅⋅⋅+= −− (6.2.14)
donde 1F es una constante. Entonces U(z ) se puede escribir como sigue:
1)36788.01(36788.0
1)( 1 FzzU ⋅⋅−⋅= − (6.2.15)
Esta ecuación da U( z ) en términos de F1. Una vez que se determine la
constante F1, U( z ) se puede dar como una serie en z -1 con sólo dos términos.
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 161 -
Ahora determinaremos N( z ), F( z ) y F1. Si se sustituye la ecuación (6.2.12) en la
ecuación (6.2.13) obtenemos
)()1(1 12
21
1 zNzzaza ⋅−=⋅−⋅− −−−
El primer miembro de esta última ecuación deberá ser divisible entre 1 - z -1. Si
dividimos el primer miembro entre 1 - z -1, el cociente es 11 )1(1 −⋅−+ za y el resto es
221 )1( −⋅−− zaa . Por lo tanto, N( z ) se determina como
1
1)1(1)( −⋅−+= zazN (6.2.16)
y el resto deberá ser cero. Esto requiere que 101 2121 =+⇒=−− aaaa . (6.2.17)
También de las ecuaciones (6.2.12) y (6.2.14) tenemos
1
1122
11 )7183.01()( FzzzazazF ⋅⋅⋅+=⋅+⋅= −−−−
Por lo tanto,
111
21 )7183.01( Fzzaa ⋅⋅+=⋅+ −−
Sistemas de Control en Tiempo Discreto
- 162 -
La división del primer miembro de esta última ecuación entre 17183.01 −⋅+ z da
el Cociente 1a y el resto 112 )7183.0( −⋅⋅− zaa . Al igualar el cociente con F1 y el resto
con cero, obtenemos
11 aF =
y
07183.0 12 =⋅− aa (6.2.18)
Si se resuelven las ecuaciones (6.2.17) y (6.2.18) en función de a1 y a2 da
582.01 =a , 418.02 =a
Entonces, F(z) se determina en la forma
21 418.0582.0)( −− ⋅+⋅= zzzF (6.2.19)
y
582.01 =F
La ecuación (6.2.16) da
1418.01)( −⋅+= zzN (6.2.20)
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 163 -
La función transferencia de pulso del controlador digital GC( z ) es determinada a
continuación a partir de la ecuación (6.2.10) como sigue. Refiriéndonos a las ecuaciones
(6.2.11), (6.2.14) y (6.2.20),
)()1()(
)()( 1 zNzzGzFzGC ⋅−⋅
= −
)36788.01()1()418.01()1()7183.01(36788.0
582.0)7183.01(
11
1111
11
−−
−−−−
−−
⋅−⋅−⋅+⋅−⋅⋅⋅+⋅
⋅⋅⋅+=
zzzzzz
zz
1
1
418.01582.0582.1
−
−
⋅+⋅−
=z
z
Con el controlador digital así diseñado, la función transferencia de pulso en lazo
cerrado se convierte en:
21 418.0582.0)()()( −− ⋅+⋅== zzzF
zRzX
2)7183.0(582.0
zz +⋅
=
Sistemas de Control en Tiempo Discreto
- 164 -
La salida del sistema en respuesta a una entrada escalón unitario r( t ) = 1 se puede
obtener como sigue:
( ) 121
11418.0582.0)()()( −
−−
−⋅⋅+⋅=⋅=
zzzzRzFzX
L+++⋅= −−− 321582.0 zzz
Por lo tanto, 0)0( =x
582.0)1( =x
1)( =kx k = 2, 3, 4, ...
Observe que la sustitución de 0.582 en lugar de F1 en la ecuación (6.2.15) da
como resultado
11 582.0582.1582.0)36788.01(36788.0
1)( −− ⋅−=⋅⋅−⋅= zzzU
Por lo tanto, la señal de control u( k ) se convierte en cero para 2≥k tal y como
se requiere. No existe componente oscilatoria entre muestras en la salida una vez
alcanzado el tiempo de establecimiento.
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 165 -
6.3 DISEÑO DE UN ALGORITMO.
A continuación se describe el algoritmo para el diseño del controlador digital,
con tiempo de establecimiento mínimo, y error cero en estado permanente. [REF. 4].
6.3.1 Definición del problema.
Consideremos el sistema descrito por la siguiente función de transferencia:
)()()( 1
11
−
−− =
zAzBzG (6.3.1)
donde )( 1−zA y )( 1−zB 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
discretización de la planta). Es decir, estamos suponiendo
)()()(
011
1
011
1
zAzB
azazazbzbzbzG n
nn
nn =
+⋅++⋅++⋅++⋅
= −−
−−
L
L
con gradoz(B) < gradoz(A).
La función de transferencia dada representa la dinámica de la planta, incluyendo
un dispositivo de retención, un proceso continuo lineal y un muestreador en serie (de
período T). La planta continua se describe por una función de transferencia
estrictamente propia )(~)(~
)(sAsBsGp = , con )~(gra)~(gra AdoBdo ss < .
Sistemas de Control en Tiempo Discreto
- 166 -
Se quiere encontrar un controlador causal estabilizador de grado mínimo,
definido por la función de transferencia
)()()( 1
11
−
−− =
zPzQzGC (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 señal de referencia definida por
)()()( 1
11
−
−− =
zHzKzR (6.3.3)
donde H y K son polinomios coprimos y para que sea causal. Además
suponemos que H tiene todos sus ceros en z en el exterior, o sobre el círculo unidad del
plano complejo, ya que las señales de referencia son funciones no decrecientes en el
tiempo, tales como la función escalón, rampa o exponencial.
≠ ( )H 0 0
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 167 -
6.3.2 Ecuaciones de diseño.
La función de transferencia del sistema en lazo cerrado es la siguiente:
BQAP
BQzGzG
zGzGzFC
C
⋅+⋅⋅
=⋅+
⋅= −−
−−−
)()(1)()()( 11
111 (6.3.4)
y el error es
BQAPAP
HK
BQAPAPzRzE
⋅+⋅⋅
⋅=⋅+⋅
⋅⋅= −− )()( 11 (6.3.5)
Para asegurar que el sistema alcanza el estado permanente en un número finito
de períodos de muestreo y tiene un error permanente nulo, la secuencia de error e(k ),
correspondiente a )( 1−zE , debe desaparecer después de un número finito de instantes de
muestreo. Eso quiere decir que el polinomio )( 1−zE debe tener un número finito de
términos. Entonces, el problema consiste en determinar los polinomios )( 1−zP y
)( 1−zQ 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.
Sistemas de Control en Tiempo Discreto
- 168 -
Factorizamos los polinomios )( 1−zA , )( 1−zB y )( 1−zK de la siguiente forma:
(6.3.6)
(6.3.7)
(6.3.8)
donde , , son factores estables de A, B, y K; es decir, tienen todos sus ceros
dentro del círculo unidad. También, para permitir la posibilidad de que Ai y H tengan
ceros comunes, definimos los polinomios coprimos Asi y Hs tales que
(6.3.9)
Expresamos )( 1−zQ de la siguiente manera:
(6.3.10)
siendo el máximo común divisor de Q y A. Entonces, y A son coprimos (
representa los polos estables de la planta que son cancelados por ceros del controlador).
Definimos el polinomio S de la forma
(6.3.11)
= A Ae Ai = B Be Bi = K Ke Ki
Ae Be Ke
= As iHs
AiH
= Q Ae Qp
Ae Qp Ae
= S + P A Q B
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 169 -
sustituyendo (6.3.10) en (6.3.11) y utilizando (6.3.6) obtenemos
= (6.3.12)
Expresamos P de la siguiente forma:
(6.3.13)
siendo el máximo común divisor de P y B. Entonces, y son coprimos
( representa los ceros estables de la planta que son cancelados por polos del
controlador).
Sustituyendo (6.3.13) en (6.3.12) y utilizando (6.3.7) queda
=
(6.3.14)
notar que S es el polinomio característico del sistema en lazo cerrado; por tanto, pS
debe tener todos sus ceros dentro del círculo unidad para que el sistema sea estable.
= S + P Ae Ai Ae Qp B
Ae ( ) + P Ai Qp B
= P Be Pp
Be Pp BiBe
= S Ae ( ) + Be Pp Ai Qp Be Bi
Ae Be ( ) + Pp Ai Qp Bi
= S Ae Be Sp
Sistemas de Control en Tiempo Discreto
- 170 -
Sustituyendo (6.3.11) en (6.3.5) y utilizando (6.3.14) obtenemos
= (6.3.15)
Para que E sea un polinomio finito es necesario que se cumplan las siguientes
condiciones:
1) divide a
2) divide a
La primera condición implica que debe dividir a , ya que es
coprimo con K y ; por lo tanto, es de la forma
(6.3.16)
sustituyendo (6.3.16) en (6.3.14) obtenemos
(6.3.17)
y sustituyendo (6.3.16) en (6.3.15) queda
(6.3.18)
= EK Be Pp A S
H
K Pp As iHs Sp
Hs K Pp As iSp K Pp As i
Hs Pp HsAs i Pp
= Pp Hs Pn
= Sp + Hs Pn Ai Qp Bi
= EK Pn As i
Sp
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 171 -
La segunda condición implica que debe dividir a K, ya que es coprimo
con (porque y son coprimos con ) y además es coprimo con
(porque y son también coprimos con ). Por lo tanto, es de la forma
(6.3.19)
ya que debe ser causal y estable. Sustituyendo (6.3.19) en (6.3.18) obtenemos
(6.3.20)
Sustituyendo (6.3.19) en (6.3.17) queda
(6.3.21)
El control está relacionado con el error mediante la siguiente expresión
)()( 11 −− ⋅= zEPQzU (6.3.22)
Sustituyendo (6.3.20) en (6.3.21) y utilizando (6.3.10), (6.3.13) y (6.3.16) obtenemos
=
(6.3.23)
Sp SpAi Qp Bi Ai Pn
Qp Bi Pn Sp
= Sp Ke
Sp
= E Ki Pn As i
= + Hs Pn Ai Qp Bi Ke
= UQ Ki Pn As i
P
Ae Qp Ki Pn As iBe Hs Pn
= UAe Qp Ki As i
Be Hs
Sistemas de Control en Tiempo Discreto
- 172 -
Para el mismo sistema, la relación entre la salida y el control es
)()( 11 −− ⋅= zUABzY (6.3.24)
Sustituyendo (6.3.22) en (6.3.23) y utilizando (6.3.7) y (6.3.9) obtenemos
=
(6.3.25)
Las expresiones (6.3.10), (6.3.13), (6.3.16) y (6.3.21) son las ecuaciones de
diseño del controlador Deadbeat.
= YB Ae Qp Ki As i
A Be Hs
B A Qp KiA Be H
= YBi Qp Ki
H
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 173 -
6.3.3 Condición para que el problema DeadBeat tenga solución.
En el desarrollo del apartado anterior hemos obtenido las ecuaciones que
caracterizan a los controladores Deadbeat. Ahora vamos a obtener la solución a dichas
ecuaciones.
El problema matemático consiste en determinar dos polinomios y que
satisfagan la ecuación polinómica lineal (6.3.21). Esta ecuación se denomina ecuación
Diofántica.
La ecuación Diofántica (6.3.21) tiene solución si y solo si el máximo común
divisor de )( si HA ⋅ y iB divide a eK (la demostración de este teorema se encuentra en
la [REF. 1]). Como iA y iB son coprimos, todo divisor común de sH y iB debe
dividir también a eK . Pero sH y eK son coprimos; por consiguiente, sH y iB deben
ser coprimos para que (6.3.21) tenga solución.
Esta condición se puede expresar de diferentes formas: si sH y iB son
coprimos implica que sH y B también lo son, ya que todos los ceros de sH son
inestables; además H y B deben ser coprimos, ya que los ceros comunes de iA y H no
están en B. Es decir, los ceros de la planta no deben coincidir con los polos de la
referencia. Esta es la condición necesaria y suficiente para resolver el problema del
Control Deadbeat.
Pn Qp
Sistemas de Control en Tiempo Discreto
- 174 -
6.3.4 Control DeadBeat de tiempo mínimo.
Si se cumple la condición anterior, existen infinitos polinomios que satisfacen la
ecuación (6.3.21). Nos interesa elegir una solución que haga que el tiempo de
establecimiento sea mínimo.
La expresión (6.3.20) muestra que el tiempo de establecimiento del error es
minimizado haciendo mínimos los grados de los polinomios , , y . Esto
se consigue si hacemos que y sean los factores estables de máximo 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 solución de grado mínimo
de (6.3.21).
Por la teoría de las ecuaciones Diofánticas [REF. 1], la solución de la ecuación
(6.3.21) de grado mínimo cumple que
grado( ) < grado( )
grado( ) < grado( ) + grado( )
Notar que como grado( ) debe ser menor que grado( ) nos interesa cancelar todos
los ceros estables de la planta, ya que de esta forma minimizamos el grado de .
Los resultados que hemos obtenido pueden resumirse en un procedimiento
directo para resolver el problema de diseño de Controladores Deadbeat de tiempo
mínimo.
Ki Pn As iAe Ke
Pn
Pn BiQp Ai Hs
Pn BiBi
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 175 -
6.3.5 Algoritmo: Control DeadBeat de tiempo mínimo.
A continuación se describe el algoritmo de control Deadbeat de tiempo mínimo.
[REF. 4].
Datos:
- la planta
- la señal de referencia R(s)
- el período de muestreo T
Condiciones de entrada:
se supone que para los datos existe un Controlador Deadbeat causal de
tiempo mínimo.
Paso 1: calcular ABzG =− )( 1 y
HKzR =− )( 1
Paso 2: factorizar A, B y K de la forma
siendo los factores estables de grado máximo de A, B y K.
( )Gp s
= A Ae Ai
= B Be Bi = K Ke Ki
, ,Ae Be Ke
Sistemas de Control en Tiempo Discreto
- 176 -
Paso 3: determinar y mediante la siguiente relación
Paso 4: resolver la ecuación Diofántica
respecto de y elegir una solución tal que
grado( ) = grado( ) - 1
grado( ) = grado( ) + grado( ) - 1
Paso 5: entonces el controlador de tiempo mínimo - grado mínimo es
nes
pD PBH
QAPQzG e
⋅⋅
⋅==− )( 1
As i Hs
= As iHs
AiH
= + Pn Ai Hs Qp Bi Ke
Pn
Pn
Qp
Qp
BiAi Hs
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 177 -
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 función de transferencia de la planta )(sG p está dada por
)1(
1)(+⋅
=ss
sGp
Diseñe un controlador digital )(zGC , tal que el sistema en lazo cerrado muestre
respuesta sin oscilaciones a una entrada escalón 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 período de muestreo T se
supone de 1seg.
> restart: with(inttrans): with(plots): Digits:=5:
> Gp := s->1/(s*(s+1));
:= Gp → s1
s ( ) + s 1
Sistemas de Control en Tiempo Discreto
- 178 -
Calculamos primero la transformada z de )1(
12 +⋅ ss
, y sustituimos el período de
muestreo T = 1 tras multiplicar la transformada por 11 −− z . 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;
Haciendo el algoritmo en z se tiene que ABzG =)( y la señal de referencia es
s
sR 1)( = , HK
zzzR =−
=1
)( , 11
11)( −
−
−=
zzR
> R(z) := ztrans(invlaplace(1/s, s, t), t, z);
R(z) = K/H;
R(w) := 1/(1-w);
:= ( )R zz
− z 1
= z
− z 1KH
:= ( )R w1
− 1 w
= + .36788 z .26424
( ) − z 1. ( ) − z .36787BA
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 179 -
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 función de 'z', y el algoritmo es en
función de ' 1z − ' , se hace necesario realizar una transformación. La implementamos a
continuación, convirtiéndose la variable ' 1z − ' en la variable 'w'. En el procedimiento
'Conversion', se pasa como parámetro una función en z. Las variables globales 'polwn'
y 'polwd' son, respectivamente, el numerador y el denominador de dicha función,
después de realizar la transformación.
> 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:
Sistemas de Control en Tiempo Discreto
- 180 -
> 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): (continúa)
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 181 -
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 continuación se muestra la transformación 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
Sistemas de Control en Tiempo Discreto
- 182 -
A continuación se muestra la transformación de R( z ) . En el resumen sobre estabilidad
del apartado 6.2 (resumen estabilidad) se muestran las diferentes )( 1−zR .
> Conversion(R(z)):
poli := polwn/polwd;
K := numer(poli);
H := denom(poli);
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): (continúa)
:= poli1
− 1 w
:= K -1
:= H − + 1 w
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 183 -
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): (continúa)
Sistemas de Control en Tiempo Discreto
- 184 -
if ( (oper = `integer` or oper = `Float` or oper= `*`)
and
(opp = `integer` or opp = `Float`) )
then pi := 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: (continúa)
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 185 -
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;
Calculamos los factores estables e inestables de A:
> A;
Factoriz(A):
Ae := pe;
Ai := pi;
:= Be + w 1.3922
:= Ai − 1 1. w
.26424 ( ) + w 1.3922 w
:= Bi .26424 w
( ) − 1 1. w ( ) − 1 .36787 w
:= Ae − 1 .36787 w
Sistemas de Control en Tiempo Discreto
- 186 -
Calculamos los factores estables e inestables de K:
> K;
Factoriz(K):
Ke := pe;
Ki := pi;
Paso 3 del algoritmo, 111
1
1=
−−
==−
−
zz
HA
HA i
s
si
por lo tanto 1== ssi HA
> elto := simplify(Ai/H);
Asi := numer(elto);
Hs := denom(elto);
-1
:= Ke 1 := Ki -1
:= elto -1.
:= Asi -1. := Hs 1
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 187 -
Paso 4. Resolver la ecuación Diofántica
> ecu := Pn*Ai*Hs + Qp*Bi;
c1 := coeff(ecu, Pn):
c2 := coeff(ecu, Qp):
Para resolver la ecuación diofántica se utiliza la función 'gcdex', que para dos
polinomios (c1 y c2) calcula su máximo común divisor.
> gcdex(c1, c2, w, 'Pn', 'Qp'):
Pn := Pn*Ke;
Qp := Qp*Ke;
grado( ) = grado( ) - 1 = 0
grado( ) = grado( ) + grado( ) - 1 = 1 + 0 - 1 = 0
Paso 5. La función de transferencia del controlador es nes
peC PBH
QAPQzG
⋅⋅
⋅==)(
> G[C](w) := (Ae*Qp/(Hs*Be*Pn));
= + Pn Ai Hs Qp Bi Ke
:= Pn 1.
Pn BiQp Ai Hs
:= ecu + 1.0 Pn ( ) − 1 1. w .26424 Qp w
:= Qp 3.7844
:= ( )GC w 3.7844 − 1 .36787 w
+ w 1.3922
Sistemas de Control en Tiempo Discreto
- 188 -
Hacemos otra transformación, para dejarlo en función 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: (continúa)
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 189 -
# transformamos el denominador
AuxD(den, gradod):
polzd := mulz:
polz := factor(polzn)/factor(polzd):
end:
> G[C](w);
DesConv(%):
G[C](z) := polz;
La transformada Z de la señal de error es 1)( 1 =⋅⋅=−
sine APKzE (el tiempo de
establecimiento "discreto" es un intervalo de muestreo).
> E(w) := Ki*Pn*Asi;
En función de z quedaría:
> DesConv(E(w)):
E(z) := polz;
:= ( )E w 1.
:= ( )E z 1.
3.7844 − 1 .36787 w
+ w 1.3922
:= ( )GC z − 3.7844 z 1.3922 + 1.3922 z 1.0000
Sistemas de Control en Tiempo Discreto
- 190 -
Y la transformada Z de la señal de control es se
siipe
HBAKQA
zU⋅
⋅⋅⋅=− )( 1
> U(w) := Ae*Qp*Ki*Asi/(Be*Hs);
DesConv(U(w)):
U(z) := polz;
La salida del sistema es H
KQBzY ipi ⋅⋅
=− )( 1
> Y(w) := Bi*Qp*Ki/H;
DesConv(Y(w)):
Y(z) := polz;
A continuación se muestra la salida del sistema gráficamente. Para ello, primero
se calculan las transformadas inversas de las funciones del ejemplo, y a continuación las
secuencias de puntos correspondientes. Después hacemos los gráficos.
:= ( )Y w −1.0000w
− + 1 w
:= ( )Y z −1.00001
− + z 1
:= ( )U w 3.7844 − 1 .36787 w
+ w 1.3922
:= ( )U z − 3.7844 z 1.3922 + 1.3922 z 1.0000
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 191 -
> 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 señal de error, 'sE', y de la señal 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):
Sistemas de Control en Tiempo Discreto
- 192 -
> 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 Método de la
Transformada Z Modificada. Para más información, [REF. 3] y [REF. 4].
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 193 -
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.- Diseñar el controlador Deadbeat de tiempo mínimo para el proceso definido
por
para la entrada rampa unidad. Considerar que el período de muestreo T es
1 seg.
)( 1−zG está definida por
> 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;
= ( )Gp s1
+ s 2
:= Gp → s1
+ s 2
= 1.17521 − 2.7183 z .36787
BA
Sistemas de Control en Tiempo Discreto
- 194 -
Hacemos la transformación para obtener G( w) :
> Conversion(G(z)):
B := polwn;
A := polwd;
G(w) := B/A;
Y la señal 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);
H := denom(poli);
R(w) := K/H;
:= ( )R s1
s2
:= K w
:= H ( )− + 1 w 2
:= ( )R ww
( )− + 1 w 2
:= B 1.1752 w
:= A − 2.7183 .36787 w
:= ( )G w 1.1752w
− 2.7183 .36787 w
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 195 -
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);
:= Be 1
:= Ai 1
w
:= Ke 1
:= Ki w
:= elto1
( )− + 1 w 2
:= Asi 1
:= Hs ( )− + 1 w 2
1.1752 w
:= Bi 1.1752 w
− 2.7183 .36787 w
:= Ae − 2.7183 .36787 w
Sistemas de Control en Tiempo Discreto
- 196 -
Ahora se resuelve la ecuación diofántica.
> ecu := Pn*Ai*Hs + Qp*Bi;
c1 := coeff(ecu, Pn):
c2 := coeff(ecu, Qp):
> gcdex(c1,c2,w,'Pn','Qp'):
Pn := Pn*Ke;
Qp := Qp*Ke;
Por lo tanto, la función de transferencia del controlador es la que se muestra a
continuación.
> G[C](w) := (Ae*Qp/(Hs*Be*Pn));
DesConv(%):
G[C](z) := polz;
:= Pn 1
:= ecu + Pn ( )− + 1 w 2 1.1752 Qp w
:= Qp − 1.7018 .85092 w
:= ( )GC w( ) − 2.7183 .36787 w ( ) − 1.7018 .85092 w
( )− + 1 w 2
:= ( )GC z 4.6260( ) − z .13533 ( ) − z .50001
( ) − z 1 2
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 197 -
La señal de error E(z):
> E(w) := Ki*Pn*Asi;
DesConv(%):
E(z) := polz;
El tiempo de establecimiento "discreto" son dos intervalos de muestreo. La señal de
control es:
> U(w) := Ae*Qp*Ki*Asi/(Be*Hs);
DesConv(U(w)):
U(z) := polz;
:= ( )E w w
:= ( )E z1z
:= ( )U w( ) − 2.7183 .36787 w ( ) − 1.7018 .85092 w w
( )− + 1 w 2
:= ( )U z 4.6260( ) − z .13533 ( ) − z .50001
z ( ) − z 1 2
Sistemas de Control en Tiempo Discreto
- 198 -
Y la salida del sistema es:
> Y(w) := Bi*Qp*Ki/H;
DesConv(Y(w)):
Y(z) := polz;
Se muestran ahora estas señales:
> 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):
:= ( )Y z − 2.0000 z 1.0000
z ( ) − z 1 2
:= ( )Y w 1.1752w2 ( ) − 1.7018 .85092 w
( )− + 1 w 2
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 199 -
> 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):
Sistemas de Control en Tiempo Discreto
- 200 -
> dRY := display({dR, dY}, title=`Entrada r(k), Salida y(t)`):
plots[display](array(1..3, [dRY, dE, dU]));
6.8.2.- Diseñar el controlador Deadbeat de tiempo mínimo para el proceso definido
por
para la entrada rampa unidad. Considerar que el período 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 s1
− s
12
2
:= Gp → s1
− s
12
2
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 201 -
> 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;
Hacemos la transformación para obtener G(w).
> Conversion(G(z)):
B := factor(polwn);
A := polwd;
G(w) := B/A;
= + .0498 z .055398
( ) − z 1.1618 2BA
:= B .055398 ( ) + w .89895 w
:= A ( ) − 1 1.1618 w 2
:= ( )G w .055398( ) + w .89895 w
( ) − 1 1.1618 w 2
Sistemas de Control en Tiempo Discreto
- 202 -
Y la señal 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);
H := denom(poli);
R(w) := K/H;
Se puede ver que B y H son coprimos: existe un Controlador DeadBeat para este
proceso. Calculamos los siguientes polinomios:
:= ( )R s1
s3
:= K −w ( ) + .045000 .045000 w
:= H ( )− + 1 w 3
:= ( )R w −w ( ) + .045000 .045000 w
( )− + 1 w 3
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 203 -
> 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;
Ahora se resuelve la ecuación diofántica:
> ecu := Pn*Ai*Hs + Qp*Bi;
c1 := coeff(ecu, Pn):
c2 := coeff(ecu, Qp):
.055398 ( ) + w .89895 w
:= Be 1
:= Bi w ( ) + .055398 w .049800
1.3498 ( ) − w .86073 2
:= Ae 1
:= Ai ( ) − 1 1.1618 w 2
−w ( ) + .045000 .045000 w
:= Ke 1
:= Ki −w ( ) + .045000 .045000 w
:= elto .40000 10-7 ( )− + 5000. 5809. w 2
( )− + 1. w 3
:= Asi .40000 10-7 ( )− + 5000. 5809. w 2
:= Hs ( )− + 1. w 3
:= ecu + Pn ( ) − 1 1.1618 w 2 ( )− + 1. w 3 Qp w ( ) + .055398 w .049800
Sistemas de Control en Tiempo Discreto
- 204 -
:= Pn − − 1.0000 1.0736 w
> gcdex(c1,c2,w,'Pn','Qp'):
Pn := Pn*Ke;
Qp := Qp*Ke;
Por lo tanto, la función de transferencia del controlador es la que se muestra a
continuación:
> G[C](w) := (Ae*Qp/(Hs*Be*Pn));
DesConv(%):
G[C](z) := polz;
La señal de error E(z):
> E(w) := Ki*Pn*Asi;
DesConv(%):
E(z) := polz;
:= Qp − + − + 26.158 w4 122.65 w3 228.13 w2 207.51 w 85.327
( )E w .40000 10-7− :=
w ( ) + .045000 .045000 w ( )− − 1.0000 1.0736 w ( )− + 5000. 5809. w 2
:= ( )GC w − + − + 26.158 w4 122.65 w3 228.13 w2 207.51 w 85.327
( )− + 1. w 3 ( )− − 1.0000 1.0736 w
:= ( )GC z 85.327( ) − + z2 1.1773 z .37165 ( ) − + z2 1.2546 z .82486
( ) + z 1.0736 ( ) − z 1. 3
:= ( )E z .045000( ) + z 1.0740 ( ) + z .99961 ( ) − z 1.1578 ( ) − z 1.1658
z5
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 205 -
La señal de control U(z):
> U(w) := Ae*Qp*Ki*Asi/(Be*Hs);
DesConv(U(w)):
U(z) := polz;
Y la salida del sistema es:
> Y(w) := Bi*Qp*Ki/H;
DesConv(Y(w)):
Y(z) := polz;
( )U w .40000 10-7 (− :=
( ) − + − + 26.158 w4 122.65 w3 228.13 w2 207.51 w 85.327 w
( ) + .045000 .045000 w ( )− + 5000. 5809. w 2 ( )− + 1. w 3)
( )U z 3.8397 ( ) + z 1.0000 ( ) − + z2 1.1771 z .37155 ( ) − + z2 1.2548 z .82480( :=
( ) − + z2 2.3236 z 1.3503 z5 ( ) − z 1. 3) ( )
( )Y w w2 ( ) + .055398 w .049800− :=
( ) − + − + 26.158 w4 122.65 w3 228.13 w2 207.51 w 85.327
( ) + .045000 .045000 w ( )− + 1 w 3
( )Y z .19122 ( :=
( ) + z 1.1125 ( ) + z .99994 ( ) − + z2 1.1774 z .37169 ( ) − + z2 1.2545 z .82478 )
z5 ( ) − z 1 3( )
Sistemas de Control en Tiempo Discreto
- 206 -
Se muestran ahora estas señales:
> 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):
Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)
- 207 -
> dRY := display({dR, dY}, title=`Entrada r(k), Salida y(t)`):
plots[display](array(1..4, [dG, dRY, dE, dU]));
Sistemas de Control en Tiempo Discreto
- 208 -
6.5 REFERENCIAS.
[REF. 1] K.J. Aström y B. Wittenmark,
Sistemas Controlados por Computador,
Paraninfo, 1988
[REF. 2] G.F. Franklin, J. D. Powell, A. Emami-Naeini,
Control de Sistemas Dinámicos con Retroalimentación,
Addison-Wesley Iberoamericana, 1991
[REF. 3] K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2ª edición (1996)
[REF. 4] J. Rebollo Rodríguez,
SECAD: Módulo de Diseño de Controladores,
U.P.M., Escuela Superior de Ingenierios de Telecomunicaciones,
curso 1990-91
Capítulo 7: Análisis de Respuesta en Frecuencias
- 209 -
Capítulo 7.
ANÁLISIS DE RESPUESTA
EN FRECUENCIAS.
Sistemas de Control en Tiempo Discreto
- 210 -
7.1 INTRODUCCIÓN.
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 régimen
permanente de un sistema ante una entrada senoidal.
A menudo han sido utilizados los métodos de respuesta en frecuencia en el
diseño de compensadores. La razón básica es la sencillez de los métodos. 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 estén 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 señal
de entrada. Por lo tanto, las dos únicas cantidades que deberán ser manejadas, serán la
amplitud y la fase.
Ahora analizaremos la respuesta a una entrada senoidal de un sistema discreto
lineal e invariante en el tiempo; ese análisis será confirmado mediante la definición de
la función transferencia de pulso senoidal.
A continuación estudiaremos el diseño en el plano w de un sistema de control en
tiempo discreto mediante la utilización de un diagrama de Bode.
Capítulo 7: Análisis de Respuesta en Frecuencias
- 211 -
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 continuación. [REF. 3].
Se considera un sistema estable en tiempo discreto lineal e invariante en el
tiempo como se muestra en la siguiente figura:
La señal muestreada u (k T ) es u ( kT ) = s i n (kωT )
La transformada z de la entrada muestreada es:
> restart:
Sistemas de Control en Tiempo Discreto
- 212 -
> ztrans(sin(k*omega*T), k, z);
que también se puede expresar de la siguiente forma:
)()()(
TjTj zzTsinz
⋅⋅−⋅⋅ −⋅−⋅⋅
ωωω
ee
teniendo en cuenta que )()cos( TsinjTTj ⋅⋅+⋅=⋅⋅ ωωωe .
NOTA del autor: En general se obtiene que
( ) ( )=−⋅− ⋅−⋅+ jbajba zz ee
( )( ) ( )( )=⋅−⋅−⋅⋅+⋅−= )()cos()()cos( bsinjbzbsinjbz aa ee
aa zbz ⋅+⋅⋅⋅−= 22 )cos(2 ee
z ( )sin ω T
− + z2 2 z ( )cos ω T 1
Capítulo 7: Análisis de Respuesta en Frecuencias
- 213 -
La respuesta del sistema está dada por
)()()()()()()( TjTj zz
TsinzzGzUzGzX ⋅⋅−⋅⋅ −⋅−⋅⋅
⋅== ωωω
ee
+−
⋅+
−⋅
= ⋅⋅−⋅⋅ TjTj zzaa
zza
ωω ee[términos debidos a los polos de G(z)]
siendo aa el complejo conjugado de a.
Al multiplicar ambos miembros de la ecuación por z
z Tj ⋅⋅− ωe obtenemos
−+
−−⋅
+=−
⋅⋅
⋅⋅
⋅⋅−
⋅⋅
⋅⋅− G(z) de polos losa debidos términos)()sin()(
zz
zzaaa
zTzG
Tj
Tj
Tj
Tj
ω
ω
ω
ωω e
ee
e
Dado que el sistema considerado aquí es estable, G( z ) no contiene a z = e j ω T
como polo, ya que e j ω T está en la frontera del disco unidad (ver estabilidad). Por tanto,
G( z ) no tiene en el denominador un término de la forma z - e j ω T. Luego el segundo y
tercer término del segundo miembro de esta ecuación se anulan en z = e j ω T. Así
tenemos
j
Gz
TsinzGaTj
zTj
Tj ⋅=
−⋅
=⋅⋅
=⋅⋅−
⋅⋅ 2)()()(
ω
ωω
ω ee e
Sistemas de Control en Tiempo Discreto
- 214 -
El coeficiente aa, que es el complejo conjugado de a, se obtiene multiplicando por
zz Tj ⋅⋅−− ωe y sustituyendo Tjz ⋅⋅−= ωe .
j
GaaTj
⋅−=
⋅⋅−
2)( ωe
Escribiendo θω ⋅⋅⋅ ⋅= jTj MG ee )( , con )( TjGM ⋅⋅= ωe y ( ))( TjGángulo ⋅⋅= ωθ e .
Entonces θω ⋅−⋅⋅− ⋅= jTj MG ee )( .
La ecuación de X( z ) ahora puede escribirse como
+
−⋅
⋅⋅
−−
⋅⋅⋅
=⋅⋅−
⋅−
⋅⋅
⋅
)( de polos losa debidos términos
e2e
e2e)(
zGzz
jM
zz
jMzX Tj
j
Tj
j
ω
θ
ω
θ
o bien
+
−⋅
−−
⋅⋅
⋅=
⋅⋅−
⋅−
⋅⋅
⋅
)( de polos losa debidos términos
ee
ee
2)(
zGzz
zz
jMzX Tj
j
Tj
j
ω
θ
ω
θ
Capítulo 7: Análisis de Respuesta en Frecuencias
- 215 -
La transformada z inversa de esta última ecuación es
( )
Ζ+⋅−⋅⋅
⋅=⋅ −⋅⋅⋅−⋅−⋅⋅⋅⋅
)( de polos losa debidos términos
eeee2
)( 1
zGjMTkx TkjjTkjj ωθωθ
El último término del segundo miembro de esta última ecuación representa la
respuesta transitoria. Dado que el sistema G( z ) se ha supuesto estable, todos los
términos de la respuesta transitoria desaparecerán en estado permanente, y obtendremos
la siguiente respuesta en estado permanente )( Tkxss ⋅ :
( ))()(
2)( θωθω +⋅⋅⋅−+⋅⋅⋅ −⋅
⋅=⋅ TkjTkj
ss jMTkx ee
)( θω +⋅⋅⋅= TksinM
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
)()( TjGMM ⋅⋅== ωω e
y θ , el ángulo de fase, está dado por
== )(ωθθ ( ))e( TjGángulo ⋅⋅ω
Sistemas de Control en Tiempo Discreto
- 216 -
En términos de )( TjG ⋅⋅ωe se puede escribir la respuesta en estado permanente como
sigue:
( )( ))()()( TjTjss GánguloTksinGTkx ⋅⋅⋅⋅ +⋅⋅⋅=⋅ ωω ω ee
Hemos demostrado que )( TjG ⋅⋅ωe 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 ), sólo necesitamos escribir Tj ⋅⋅ωe en lugar de z en G( z ). La función )( TjG ⋅⋅ωe se
conoce comúnmente como función transferencia de pulso senoidal. Si observamos
que
TjjTjT
Tj
⋅⋅⋅⋅⋅⋅⋅
⋅
+⋅=⋅= ωπω
πωeeee 2
2
se obtiene que la función transferencia de pulso senoidal )( TjG ⋅⋅ωe es periódica, con un
período T.
Ejemplo:
Considere el sistema definido por
),)1(()()( TkxaTkuTkx ⋅−⋅+⋅=⋅ 10 << a
donde u( kT ) es la entrada y x(kT ) la salida. Obtenga la salida en estado permanente
x( kT ) cuando la entrada u(kT ) es la senoidal )()( TksinATku ⋅⋅⋅=⋅ ω .
Capítulo 7: Análisis de Respuesta en Frecuencias
- 217 -
La transformada z de la ecuación del sistema es
)()()( 1 zXzazUzX ⋅⋅+= −
Al definir ,)()()(
zUzXzG = tenemos
111
)()()(
−⋅−==
zazUzXzG
Sustituimos z por Tj ⋅⋅ωe en G( z ), para obtener la función 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 z1
− 1az
:= ( )G e( )I ω T 1
− 1 a ( ) − ( )cos ω T I ( )sin ω T
Sistemas de Control en Tiempo Discreto
- 218 -
La amplitud de )( TjG ⋅⋅ωe es
)cos(21
1)(2 Taa
MG Tj
⋅⋅⋅−+==⋅⋅
ωωe
y el ángulo de fase de )( TjG ⋅⋅ωe es
( )
⋅⋅−
⋅⋅−==⋅⋅
)cos(1)()e(Ta
TsinaarctanGángulo Tjω
ωθω
Para obtener estas expresiones ver [REF. 1].
Entonces, la salida en estado permanente xss( kT) se puede escribir como sigue:
=+⋅⋅⋅⋅=⋅ )()( θω TksinMATkxss
⋅⋅−
⋅⋅−⋅⋅⋅
⋅⋅⋅−+=
)cos(1)(
)cos(21 2 TaTsinaarctanTksin
Taa
Aω
ωωω
Capítulo 7: Análisis de Respuesta en Frecuencias
- 219 -
7.3 LA TRANSFORMACIÓN W.
Sea un sistema de control en tiempo continuo cuya función 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 escalón, de
forma que obtenemos la siguiente función transferencia de pulso:
⋅
−Ζ=
⋅−)(1)( sG
szG
Ts
De
Si tratamos el problema de la respuesta en frecuencia en el plano z la
simplicidad de los trazados logarítmicos se perderá completamente, ya que en el plano z
la frecuencia aparece como Tjz ⋅⋅= ωe . Esta dificultad, sin embargo, puede ser superada
transformando la función transferencia de pulso, GD(z), del plano z al plano w.
[REF. 4].
La transformación bilineal w se define por
21
21
Tw
Tw
z⋅
−
⋅+
=
donde T es el período de muestreo que se utiliza en el sistema de control considerado.
Sistemas de Control en Tiempo Discreto
- 220 -
Esta transformación convierte una función de transferencia racional en el plano z
en una función racional en w, y transforma el círculo unidad del plano z en el semiplano
izquierdo del plano w. Por lo tanto, los métodos de respuesta en frecuencia de los
sistemas de control continuos se pueden aplicar a los sistemas discretos de control.
Despejando w en la ecuación anterior obtenemos la relación inversa
112
+−
⋅=zz
Tw
Una vez que la función de transferencia GD( z ) se transforma en GD( w ) puede
ser tratada como una función de transferencia continua en w, y las técnicas clásicas de
respuesta en frecuencia pueden ser usadas en el plano w. De esta forma las técnicas de
diseño de Bode pueden ser aplicadas al diseño de controladores discretos.
La transformación w distorsiona la frecuencia. La relación entre la frecuencia
ficticia ν y la frecuencia real ω es
,2
2
⋅
⋅=Ttan
Tων
22ss ω
ωω
≤≤− , ∞≤≤∞− ν
con Ts
πω ⋅=
2 frecuencia de muestreo.
Capítulo 7: Análisis de Respuesta en Frecuencias
- 221 -
Para ω = 0 ⇒ 0)0( =tan
y para T
s πωω ==
2 ⇒ ∞=
2πtan
Luego para el rango de frecuencia real
−∈
2,
2ss ωω
ω , la frecuencia ficticia recorre
toda la recta ( )∞∞− , . Por tanto, hay una distorsión de frecuencias.
Notar que si en la ecuación anterior T⋅ω es pequeño, entonces ν equivale a ω. Esto
significa que para ωT pequeños las funciones de transferencia G( s ) y GD( w ) se
parecen una a la otra, siendo G( s ) la función de transferencia del sistema continuo del
cual proviene GD( z ).
GD( w ) puede ser una función de transferencia de fase no mínima (estabilidad),
ya que la transformación w genera uno o más ceros en GD( w ) que están en el
semiplano derecho de w. La situación de los ceros del semiplano derecho depende del
período de muestreo T, ya que los ceros son generados por la operación de muestreo y
retención. El efecto de estos ceros sobre la respuesta se vuelve menor cuando el período
de muestreo disminuye. [REF. 4].
Sistemas de Control en Tiempo Discreto
- 222 -
Ejemplo:
Considere la función de transferencia del sistema que se muestra en la figura. El
período de muestreo T se supone de 0.1 seg. Obtenga GD( w ).
Supongamos que discretizamos el sistema continuo, cuya función de
transferencia es 10
10)(+
=s
sG p por invarianza al escalón:
La transformada z de G( s ) es
+⋅⋅−
Ζ=⋅−
)10(10)e1()(
sszG
sT
D
+⋅
Ζ⋅−= −
)10(10)1( 1ss
z
Capítulo 7: Análisis de Respuesta en Frecuencias
- 223 -
> 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)));
Mediante la transformación bilineal ww
Tw
Tw
z⋅−⋅+
=⋅
−
⋅+
=5.015.01
21
21
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);
Despejando quedaría 242.9
05.01242.9)(+
⋅−⋅=
wwwGD .
:= ( )GD z 1.7181
− 2.718 z 1.
1.7181
− 2.718 + 1 .05 w − 1 .05 w
1.
:= ( )GD w −1.718− + 1. .05000 w
+ 1.718 .1859 w
Sistemas de Control en Tiempo Discreto
- 224 -
A continuación 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);
Se observa que la localización 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);
Es decir, GD( w ) tiene un cero en 202==
Tw , a pesar de que la planta no tiene
ningún cero. Conforme se hace más pequeño el período de muestreo T, el cero del plano
w en T
w 2= se acerca a ∞ en el semiplano derecho del plano w.
-10-9.242
20.
Capítulo 7: Análisis de Respuesta en Frecuencias
- 225 -
Observe que tenemos
10
10)(00 +
=→→ s
limwGlims
Dw
> limit(G[D](w),w = 0);
limit(10/(s+10),s = 0);
Este hecho es muy útil para verificar los cálculos numéricos para la transformación 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 [ ] ω⋅= jssG )( y [ ] ν⋅= jwD wG )( . La asíntota de alta frecuencia de la curva
de magnitud logarítmica para GD( j ν ) puede ser una línea constante a ciertos decibelios
(que es lo mismo que una línea horizontal). Por otra parte, si 0)( =∞→
sGlims
entonces la
magnitud de )( ω⋅jG siempre se acercará a cero (- ∞ dB) conforme ω se acerque a
infinito.
La magnitud en alta frecuencia de GD( j ν ) es
4621.0)( =⋅
∞→ν
νjGlim D
11
Sistemas de Control en Tiempo Discreto
- 226 -
Lo comprobamos con Maple:
> aux := subs(w=I*nu, G[D](w)):
limit(abs(aux), nu=infinity);
en tanto que la magnitud en alta frecuencia de la planta 10
10)(+
=s
sG es
010
10=
+⋅∞→ ωω jlim
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 sólo estamos interesados en el rango de
frecuencia sωω ⋅≤≤210 , con
Tsπω ⋅
=2 frecuencia de muestreo, lo que corresponde a
∞≤≤ν0 (distorsión de frecuencias). Entonces, al observar que ∞=ν en el plano w
corresponde a sωω ⋅=21 en el plano s, se puede decir que )( ν
ν⋅
∞→jGlim D
corresponde a 10
10
2+⋅→ ωωω j
lims
, que es una constante. Es importante señalar que estos
dos valores no suelen ser iguales entre sí.
.4621
Capítulo 7: Análisis de Respuesta en Frecuencias
- 227 -
Desde el punto de vista de polos y ceros, se puede decir que cuando )( ν⋅jGD
es una constante distinta de cero en ν = ∞ , está implícito que GD( w ) contiene el mismo
número de polos y de ceros.
En general, uno o más 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 función de transferencia de fase no mínima (ver estabilidad). Por lo tanto,
debemos tener cuidado al dibujar la curva de ángulo de fase en el diagrama de Bode.
Para resumir, la transformación w, transformación bilineal, hace corresponder el
círculo 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 interés del plano s. Esto es debido a que
algunas de las distorsiones causadas por la transformación del plano s en el plano z
están parcialmente compensadas por la transformación del plano z en el plano w.
Observe que si
n
nnm
mm
D azazbzbzbzG
++⋅+++⋅+⋅
=−
−
L
L1
1
110)( , nm ≤
donde las ia y las ib son constantes, se transforma en el plano w mediante la
transformación
21
21
Tw
Tw
z⋅
−
⋅+
=
Sistemas de Control en Tiempo Discreto
- 228 -
entonces, GD( w ) asume la forma
n
nnn
nno
D wwwwwG
αααβββ
++⋅+⋅++⋅+⋅
=−
−
L
L1
10
11)(
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 función 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 cuándo las raíces están en el semiplano izquierdo. En términos del diagrama de
Bode, se aplican a GD( j ν ) la aproximación convencional de línea recta a la curva de
magnitud, así como el concepto del margen de fase y el margen de ganancia.
Comentarios. La ventaja del método de la transformación w es que el método
de respuesta en frecuencia convencional mediante el uso de diagramas de Bode, puede
ser utilizado para diseño de sistemas de control en tiempo discreto. En la aplicación de
este método, debemos seleccionar cuidadosamente una frecuencia de muestreo
razonable. Antes de concluir esta sección, resumiremos los puntos más importantes
relativos al diseño 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 círculo unitario desde z = 1 hasta z = -
1. Puesto que z = e j ω T , el valor ω varía desde 0 hasta 21
sω . La frecuencia
ficticia ν varía desde 0 hasta ∞ , ya que
⋅
⋅=2
2 TtanT
ων . Por lo tanto, la
Capítulo 7: Análisis de Respuesta en Frecuencias
- 229 -
respuesta en frecuencia del sistema de control digital para 2
0 sωω ≤≤ es
similar a la respuesta en frecuencia del sistema de control analógico
correspondiente en el caso ∞≤≤ ν0 .
2. Dado que GD( j ν ) es una función 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 aproximación convencional con líneas 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 razón de la presencia del factor de escala T2 en la
transformación w, las constantes de error estático correspondientes para GD( w )
y para G( s ) se hacen idénticas. Sin el factor de escala T2 no sería cierto.
4. La transformación w puede generar uno o más ceros en el semiplano derecho en
GD( w ). Si existen uno o más ceros en el semiplano derecho, entonces GD( w ) es
una función de transferencia de fase no mínima (estabilidad). Debido a que los
ceros en el semiplano derecho están generados por la operación de muestreo y
retención, las localizaciones de estos ceros dependen del período de muestreo T.
Los efectos de estos ceros en el semiplano derecho en la respuesta, se hacen
menores conforme se reduce el período de muestreo T.
Ahora consideremos los efectos de la respuesta del cero en el semiplano
derecho en T
w 2= . El cero en
Tw 2
= genera distorsión en la respuesta en
frecuencia conforme ν se acerca a T2 .
Sistemas de Control en Tiempo Discreto
- 230 -
En vista de que
⋅
⋅=2
2 TtanT
ων
entonces, conforme ν se acerca a T2 ,
⋅
2Ttan ω se aproxima a 1, o bien
42πω
=⋅T
y, por lo tanto, T⋅
=2πω
Como ya se indicó, Tsπωω ==
21 es la frecuencia más alta que consideramos en
la respuesta del sistema de control en tiempo discreto o digital. Por lo
tanto, 24Ts ⋅
==πω
ω , que es la mitad de la frecuencia más alta considerada,
está dentro del intervalo de frecuencia de interés. Así, el cero en T
w 2= , que
aparece en el semiplano derecho del plano w, afectará seriamente la respuesta.
5. Debe hacerse notar que el método del diagrama de Bode en el plano w se utiliza
con frecuencia, y muchos sistemas de control digital de éxito han sido diseñados
mediante este procedimiento.
Capítulo 7: Análisis de Respuesta en Frecuencias
- 231 -
7.4 DIAGRAMAS DE BODE.
En los sistemas de control en tiempo continuo de 'una entrada - una salida'
(SISO), se ha utilizado mucho el diseño mediante diagramas de Bode. En particular, si
la función 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 asintótico.
7.4.1.- Diagrama de Bode para sistemas continuos. Dado un sistema continuo lineal e
invariante en el tiempo, con función de transferencia G( s ), se puede representar una
función de transferencia senoidal G( j ω ) con dos diagramas distintos en función de la
frecuencia ω: la amplitud y el ángulo de fase. Un diagrama logarítmico o diagrama de
Bode consta de estos dos trazados. Uno es el logaritmo del módulo de una función de
transferencia senoidal, y el otro es su ángulo de fase, ambos en función de la frecuencia.
La amplitud logarítmica de G( jω ) se representa como )(log20 ω⋅⋅ jG , 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
multiplicación de amplitudes en suma de las mismas. Por ejemplo,
si )()()( 21 sGsGsG ⋅= ⇒ )()()( 21 ωωω ⋅⋅⋅=⋅ jGjGjG
⇒ ( ) ( ) ( ))(log)(log)(log 21 ωωω ⋅+⋅=⋅ jGjGjG
Además se dispone de un método simple para realizar una curva aproximada del
logaritmo de la amplitud, basado en la aproximación asintótica. Este método por líneas
rectas asíntotas es suficiente si sólo se necesita una información aproximada sobre las
características de respuesta en frecuencia.
Sistemas de Control en Tiempo Discreto
- 232 -
Dado un sistema en tiempo continuo cuya función de transferencia en lazo
abierto es
)()()()()()()(
21
11
NnN
mm
bsbsbssasasasKsG−
−
−⋅⋅−⋅−⋅−⋅−⋅⋅−⋅
=L
L nm ≤
se dice que es un sistema tipo N (número de polos en s = 0). Para una entrada cuya
función de transferencia es R(s), se llama error de estado estacionario a
⋅
+=
→)(
)(1lim
0sR
sGse
sss
y en el caso discreto será
⋅
+−
=−
→)(
)(11lim
1
1zR
zGze
zss
se muestran una serie de definiciones, que serán útiles para comprender los apartados
posteriores [REF. 2]:
- Ganancia: Se llama K a la ganancia del sistema.
- Ganancia en altas frecuencias: )( ωω
⋅∞→
jGlim
- Ganancia en bajas frecuencias: )(0
ωω
⋅→
jGlim
- Constante de error estático de posición: )(0
sGlimKs
p→
=
En el caso discreto sería )(lim1
zGKzp→
=
Capítulo 7: Análisis de Respuesta en Frecuencias
- 233 -
- Constante de error estático de velocidad: )(0
sGslimKs
v ⋅=→
En el caso discreto sería )(lim1
zGzKzv ⋅=→
- Constante de error estático de aceleración: )(2
0sGslimK
sa ⋅=
→
En el caso discreto sería )(lim 2
1zGzK
za ⋅=→
- Tabla con el error en estado estacionario en respuesta a una entrada escalón,
rampa y aceleración:
Error en estado estacionario
SISTEMA Escalón
1)( =tr
Rampa
ttr =)(
Aceleración
2
21)( ttr ⋅=
Tipo 0 pK+1
1 ∞ ∞
Tipo 1 0
vK1 ∞
Tipo 2 0 0
aK1
- Frecuencia de cruce de ganancia: Frecuencia ω1 para la cual el valor absoluto
)( ω⋅jG de la función de transferencia de lazo abierto es la unidad.
1)( 1 =⋅ωjG ⇒ 0)(log20 110 =⋅⋅ ωjG
Sistemas de Control en Tiempo Discreto
- 234 -
- Frecuencia de cruce de fase: Se define como la frecuencia ω2 a la cual el
ángulo de fase de la función de transferencia de lazo abierto es igual a -180º.
( ) º180)( 2 −=⋅ωjGángulo
- 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º más el ángulo de fase φ de la función de transferencia
de lazo abierto a la frecuencia de cruce de ganancia, o sea
φγ += 180 con ( ))( 1ωφ ⋅= jGángulo
- Margen de ganancia: Es la inversa de )( ω⋅jG a la frecuencia de cruce de
fase. Es decir,
)(
1
2ω⋅=
jGK g en dB ⇒ )(log20 210 ω⋅⋅⋅− jG 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, 3)(1
)(−=
⋅+
⋅
c
c
jGjG
ωω
en dB, es decir
3)(1
)(log20 10 −=⋅+
⋅⋅
c
c
jGjG
ωω
dB
Capítulo 7: Análisis de Respuesta en Frecuencias
- 235 -
- Ancho de banda: Es el rango de frecuencias cωω ≤≤0 en el que el valor del
lazo cerrado no cae por debajo de -3 dB.
Ejemplo diagrama de Bode:
Dada la función de transferencia )5()1(
10)(+⋅+⋅
=sss
sG
> restart: with(plots):
> G := s -> 10/(s*(s+1)*(s+5));
Se realiza el procedimiento 'Diag_Bode', que recibe como parámetro la función
)( ω⋅jG , 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 )(log10 ω=fr . Para
saber cuál es una frecuencia determinada, basta con elevar a 10 la cifra que
se ve: fr10=ω .
- En el eje 'y', en el diagrama de magnitudes se representa la amplitud en
decibelios ( )(log20 10 ω⋅⋅ jG dB). En el diagrama de fases, se representa
la fase, ( ))( ω⋅jGángulo , en grados.
:= G → s 101
s ( ) + s 1 ( ) + s 5
Sistemas de Control en Tiempo Discreto
- 236 -
- En el diagrama de las magnitudes, se pinta en gris la recta equivalente a la
contante que se pasa como parámetro (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 función de Maple 'argument' da valores en radianes, se hace
necesario pasar a grados: π
180gra ⋅=
radianesdos
- La función 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 conversión a grados antes mencionada). La
función 'arg', que representa la fase, tiene en cuenta este detalle.
- La función '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):
(continúa)
Capítulo 7: Análisis de Respuesta en Frecuencias
- 237 -
# 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;
a := 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:
Sistemas de Control en Tiempo Discreto
- 238 -
> # -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á más adelante.
La ganancia K del sistema es 10. Se calculan ahora las constantes de error estáticas:
Capítulo 7: Análisis de Respuesta en Frecuencias
- 239 -
> Kp := limit(G(s), s=0, right); Kp := limit(G(s), s=0, left);
Kv := limit(s*G(s), s=0);
Ka := limit(s^2*G(s), s=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);
:= Kv 2
:= Ka 0
:= Kp ∞ := Kp −∞
Sistemas de Control en Tiempo Discreto
- 240 -
Calculamos ahora la frecuencia de cruce de ganancia. En el diagrama de Bode se puede
apreciar que la magnitud tiene valor 0 dB para 23.110 09.0 ==ω , 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 línea
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;
Del mismo modo, se ve que la frecuencia de cruce de fase es 24.210 35.0 ==ω . Por lo
que el margen de ganancia es de 10 dB (mirando el diagrama de Bode, se traza una línea
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)));
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 cálculos que debe realizar Maple, este método no sirve para
determinar la frecuencia de corte en lazo cerrado. Lo hacemos con el diagrama de Bode.
9.563028400
25.2820203
Capítulo 7: Análisis de Respuesta en Frecuencias
- 241 -
Se dibujan la magnitud y la fase de la función 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
3)(1
)(log20 10 −=
⋅+⋅
⋅c
cjG
jGω
ωdB, se ve que fr = 0.3, y por lo tanto
> omega[c] := 10^0.3;
y el ancho de banda comprende el intervalo cerrado [ ]cω,0 .
:= ωc 1.995262315
Sistemas de Control en Tiempo Discreto
- 242 -
7.4.2.- Ventajas del método del diagrama de Bode para el diseño en w. El método
del diagrama de Bode es en particular útil en lo que se refiere al análisis y el diseño 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 términos del margen de fase,
del margen de ganancia, del ancho de banda y así sucesivamente. Estas
especificaciones se pueden manejar fácilmente en el diagrama de Bode. En
particular, los márgenes de fase y de ganancia se pueden leer en forma directa
del diagrama de Bode.
2. El diseño de un compensador digital (o un controlador digital) para satisfacer las
especificaciones dadas (en función del margen de fase o del margen de
ganancia) puede llevarse a cabo en el diagrama de Bode de una forma sencilla y
simple.
Capítulo 7: Análisis de Respuesta en Frecuencias
- 243 -
7.5 TÉCNICAS DE COMPENSACIÓN.
Antes de analizar los procedimientos de diseño en el plano w (apartado 7.6),
revisemos las técnicas de compensación 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 función 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 escalón, de forma que
obtenemos la siguiente función transferencia de pulso:
⋅
−Ζ=
⋅−
)(1)( sGs
zGTs
De
A continuación hacemos la transformación
wT
wT
z⋅−
⋅+=
21
21
obteniendo la siguiente función transferencia de pulso en w:
⋅−
⋅+=
=
wT
wT
z
DD zGwG
21
21
)()(
Sistemas de Control en Tiempo Discreto
- 244 -
cuya respuesta en frecuencias, como ya hemos visto (transformación w), viene dada por
GD( w ) en w = j ν , es decir, GD( j ν ).
Tal y como se indicó antes, los métodos 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 función GD( j ν ) consiste en dos trazas
por separado, la magnitud logarítmica )( ν⋅jGD en función del logaritmo de ν y el
ángulo de fase de GD( j ν ) en función del logaritmo de ν. La traza de la magnitud
logarítmica se basa en la factorización de GD( j ν ), de tal forma que funciona en el
principio de sumar los términos factorizados individuales, en vez de multiplicar los
términos individuales. Las técnicas conocidas de trazas asintóticas son aplicables y, por
lo tanto, se puede dibujar con rapidez la curva de magnitud si se utilizan asíntotas con
líneas rectas. Mediante el uso del diagrama de Bode, se puede diseñar un compensador
digital o un controlador digital a través de técnicas de diseño convencionales.
Se considera el sistema mostrado en la figura.
Se supone que las especificaciones de diseño están dadas en términos de margen de
fase, margen de ganancia, constantes de error estático de velocidad y similares.
Capítulo 7: Análisis de Respuesta en Frecuencias
- 245 -
7.5.1 Compensador de adelanto de fase.
La compensación mediante el adelanto de fase es comúnmente utilizada para
mejorar los márgenes de estabilidad. Este tipo de compensación aumenta el ancho de
banda del sistema, luego aumenta la ganancia en altas frecuencias. Por lo tanto, el
sistema tiene una velocidad de respuesta más rápida. Sin embargo, un sistema que
utilice compensación 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 diseñar un compensador de adelanto de fase seguimos los siguientes pasos:
1.- Se supone la forma siguiente para el compensador de adelanto:
w
wKwGC ⋅⋅+⋅+
⋅=τα
τ1
1)( 10 << α
La función de transferencia en lazo abierto para el sistema compensado puede
escribirse:
)(1
1)()( wGw
wKwGwG DDC ⋅⋅⋅+
⋅+⋅=⋅
τατ
)(1
11 wG
ww
D⋅⋅⋅+
⋅+=
τατ
Sistemas de Control en Tiempo Discreto
- 246 -
siendo )()(1 wGKwG DD ⋅= . Determinar la ganancia K que satisfaga el
requisito de la constante de error estático de velocidad Kv dada, recordando que
)()(lim0
wGwGwK DCwv ⋅⋅=→
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 añadirse 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.- Añadir a θ entre 5º y 12º para compensar el desplazamiento de la frecuencia de
cruce de ganancia. Definir este θ añadido como adelanto de fase máximo θm,
(también llamado φm). Determinar el factor de atenuación α a partir de la
siguiente ecuación:
ααθ
+−
=11)( msin
Capítulo 7: Análisis de Respuesta en Frecuencias
- 247 -
5.- Determinar el punto de frecuencia donde la magnitud del sistema no
compensado )(1 ω⋅jGD es igual a
⋅−
α1log20 . Escoger esta frecuencia
como la nueva frecuencia de cruce de ganancia. Esta frecuencia corresponde a
ταν
⋅=
1m , y a esta frecuencia se presenta el desplazamiento máximo de fase
θm.
6.- Determinar las frecuencias de esquina del compensador de adelanto como sigue:
Cero del compensador de adelanto: τ
ν 1=
Polo del compensador de adelanto: τα
ν⋅
=1
7.- Verificar el margen de ganancia para asegurarse de que es satisfactorio.
La función principal del compensador de adelanto es proporcionar atenuación en
el rango de altas frecuencias para un margen de fase suficiente para el sistema. Las
características del atraso de fase no tienen consecuencias en la compensación mediante
atraso.
Ejemplo:
Como ejemplo de diseño de un compensador de adelanto de fase, ver el ejemplo del
apartado 7.6.
Sistemas de Control en Tiempo Discreto
- 248 -
7.5.2 Compensador de atraso de fase.
La compensación mediante atraso de fase reduce la ganancia del sistema en
frecuencias más altas, sin reducir la ganancia del sistema en frecuencias más bajas. El
ancho de banda del sistema queda reducido y, por lo tanto, el sistema tiene una
velocidad de respuesta más 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 precisión en estado permanente. También puede
atenuarse cualquier ruido de alta frecuencia que se presente en el sistema.
Para diseñar un compensador de atraso de fase se deben seguir los siguientes
pasos:
1.- Se supone la forma siguiente para el compensador de atraso:
w
wKwGC ⋅⋅+⋅+
⋅=τβ
τ1
1)( , β<1
La función de transferencia en lazo abierto del sistema compensado puede
escribirse:
)(1
1)()( wGw
wKwGwG DDC ⋅⋅⋅+
⋅+⋅=⋅
τβτ
)(1
11 wG
ww
D⋅⋅⋅+
⋅+=
τβτ
Capítulo 7: Análisis de Respuesta en Frecuencias
- 249 -
siendo )()(1 wGKwG DD ⋅= . Determinar la ganancia K que satisfaga el
requisito de la constante de error estático de velocidad Kv dada. Recordando que
)()(lim0
wGwGwK DCwv ⋅⋅=→
2.- Si el sistema no compensado GD1( w ) no satisface las especificaciones referentes
a los márgenes de fase y de ganancia, entonces encontrar el punto de frecuencia
donde el ángulo de fase de la función de transferencia en lazo abierto sea igual
a -180º más el margen de fase requerido. El margen de fase requerido es el
margen de fase especificado más 5º a 12º. (La adición 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 razón del compensador
de atraso, el polo y el cero del compensador de atraso deberán estar localizados
bastante más abajo que la nueva frecuencia de cruce de ganancia. Por lo tanto,
escoger la frecuencia de esquina τ
ν 1= (correspondiente al cero del
compensador de atraso de fase) una década por debajo de la nueva frecuencia de
cruce. Una relación igual a 10 se conoce como década de frecuencias [REF. 2].
4.- Determinar la atenuación necesaria para llevar la curva de magnitud hacia
abajo hasta 0 dB en la nueva frecuencia de cruce de ganancia. Notando que esta
atenuación es )log(20 β⋅− , determinar el valor de β. Entonces la otra frecuencia
de esquina (que corresponde al polo del compensador de atraso) queda
determinada a partir de t⋅
=β
ν 1 .
Sistemas de Control en Tiempo Discreto
- 250 -
Ejemplo:
Se vuelve a utilizar el ejemplo del apartado 7.6, pero diseñando un controlador para un
margen de fase de 45º.
El compensador de atraso tiene la forma:
w
wwGC ⋅⋅+⋅+
=τβ
τ1
1)( 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 continuación transformamos la función transferencia de pulso GD( z ) en una
función de transferencia GD( w ) mediante la transformación 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
Capítulo 7: Análisis de Respuesta en Frecuencias
- 251 -
Se trata de un compensador de atraso de fase. Esta es una de las formas más sencillas de
la función de transferencia del controlador digital. La función de transferencia en lazo
abierto es
> G[C](w) := (1+ tau*w) / (1+beta*tau*w);
G[C](w)*G[D](w);
La constante de error estático de velocidad Kv queda especificada como 2 1−seg . Por lo
tanto,
))()((lim20
wGwGwK DCwv ⋅⋅==→
2=↔ K
Sustituimos K = 2 en GD( w ).
> G[D2](w) := factor(subs(K=2, G[D](w)));
:= ( )GC w + 1 τ w
+ 1 β τ w
−.10000( ) + 1 τ w ( )− + 10. w K ( ) + 11070. 37. w
( ) + 1 β τ w ( ) + 11070. 11107. w w
:= ( )GD2 w −.00066625( )− + 10. w ( ) + w 299.19
( ) + w .99667 w
Sistemas de Control en Tiempo Discreto
- 252 -
DIAGRAMA DE BODE DEL SISTEMA:
Primero es necesario ejecutar el procedimiento 'Diagrama_Bode', del ejemplo del
apartado 7.6. Como todavía no se tiene el valor exacto del controlador, se muestra sólo
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);
Capítulo 7: Análisis de Respuesta en Frecuencias
- 253 -
Se amplía la zona que interesa:
> 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 ν = 100.1 Margen de Fase: 30º
- Frecuencia de Cruce de Fase: fr = 0.5 ν = 100.51 Margen de Ganancia: 14dB
Sistemas de Control en Tiempo Discreto
- 254 -
Las especificaciones requieren, además de Kv = 2, de un margen de fase de 45º y
una ganancia de por lo menos 10 dB. Diseñemos un controlador digital que satisfaga
estas especificaciones.
Diseño 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 más entre 5º y 12º). Esto significa que se han añadido 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 63.010 2.0 == −ν
> evalf(argGd(10^(-0.2))*180/Pi)+ 180;
10^(-0.2);
Frecuencia de esquina τ
ν 1= (correspondiente al cero del compensador de
atraso), una década por debajo de la nueva frecuencia de cruce: τ1063.0 =
54.17.63096
Capítulo 7: Análisis de Respuesta en Frecuencias
- 255 -
Despejando, se obtiene el valor de τ:
> ecu := 0.063096 = 1/tau:
tau := solve(ecu, tau);
En la nueva frecuencia de cruce de ganancia, la magnitud es de 9 dB. Se
determina la atenuación necesaria para llevar la curva de magnitud a 0 dB, siendo dicha
atenuación )(log20 10 β⋅− .
> evalf(20*log[10](magGd(10^(-0.2))));
beta := magGd(10^(-0.2));
Por lo tanto, la otra frecuencia de esquina queda determinada como 02.01=
⋅=
τβν
> 1/(beta*tau);
La función del controlador se muestra a continuación:
> G[C](w) := (1+tau*w)/(1+tau*beta*w);
:= τ 15.849
8.5744
:= β 2.6836
.023511
:= ( )GC w + 1 15.849 w + 1 42.532 w
Sistemas de Control en Tiempo Discreto
- 256 -
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);
Capítulo 7: Análisis de Respuesta en Frecuencias
- 257 -
Se amplía 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) = 23 dB.
Sistemas de Control en Tiempo Discreto
- 258 -
Precaución. Una vez diseñado 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 están muy cerca uno de otro. (Están
cerca del punto z = 1). Ya que los coeficientes del filtro se deben realizar mediante
palabras binarias que utilizan un número limitado de bits, si el número 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 podría no comportarse como se espera. Es
importante que el polo y el cero del compensador de atraso se presenten en un número
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
mejoría en la precisión en estado permanente), mientras que al mismo tiempo se puede
aumentar el ancho de banda y los márgenes de estabilidad.
Observaciones sobre el problema de cuantización de los coeficientes. Desde
el punto de vista de la implementación 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 cuantización de coeficientes, porque las
localizaciones de los polos y de los ceros están 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 cuantización de los coeficientes,
porque las localizaciones de polos y de ceros están cercanas entre sí (están cerca del
punto z = 1). [REF. 3].
Capítulo 7: Análisis de Respuesta en Frecuencias
- 259 -
7.6 PROCEDIMIENTO DE DISEÑO EN EL PLANO W.
Refiriéndonos al sistema de control digital de la figura, el procedimiento de
diseño en el plano w puede enunciarse como sigue [REF. 4]:
Datos:
función de transferencia continua de la planta Gp( s )
período de muestreo T
Paso 1: Obtener la función de transferencia discretizada de la planta precedida por un
mantenedor de orden cero (ver discretización por invarianza al escalón).
Transformar
⋅
−Ζ=
⋅−
)(1)( sGs
zG p
Ts
De GD( w ) mediante la transformación
bilineal
21
21
Tw
Tw
z⋅
−
⋅+
=
Sistemas de Control en Tiempo Discreto
- 260 -
Es importante que el período de muestreo sea elegido adecuadamente. Una
regla práctica 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 )(1
)(sG
sG+
.
Paso 2: Determinar la ganancia del sistema para satisfacer la especificación 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 función de transferencia del controlador
w
wwGC ⋅⋅+⋅+
=τα
τ1
1)(
utilizando las técnicas convencionales de diseño para sistemas de control en
tiempo continuo. La distorsión 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 función de transferencia del controlador GC( w ) en GC( z )
mediante la transformación bilineal dada por
112
+−
⋅=zz
Tw
Capítulo 7: Análisis de Respuesta en Frecuencias
- 261 -
Paso 6: Realizar la función de transferencia GC( z ) mediante un algoritmo
computacional.
Ejemplo:
Considerar el sistema de control de la figura. Diseñar 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 estático de velocidad Kv sea 2 1−seg . Suponer que
el período de muestreo es T = 0.2 segundos. [REF. 3].
Primero obtenemos la función transferencia de pulso GD( z ) de la planta que está
precedida por un mantenedor de orden cero:
> restart: with(inttrans): Digits:=5: with(plots):
Sistemas de Control en Tiempo Discreto
- 262 -
> 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))));
A continuación transformamos la función transferencia de pulso GD( z ) en una
función de transferencia GD( w ) mediante la transformación bilineal correspondiente:
> G[D](w) := simplify(subs(z=(1+w*((1/5)/2)) / (1-w*((1/5)/2)), G[D](z)));
Un compensador de adelanto de fase, probablemente satisfará todos los
requisitos. Por lo tanto, probaremos compensación mediante adelanto (si no se
satisfacieran todos los requisitos, habría que probar con otro tipo de compensador).
Ahora supongamos que la función de transferencia del controlador digital
GC( w ) tiene una ganancia unitaria para el intervalo de baja frecuencia y la forma
siguiente, con 10 << α :
> 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
1
:= ( )GD z .81873K ( ) + .022880 z .021400
( ) − z 1. ( ) − z .81873
:= ( )GD w −1.6375( )− + 10. w ( ) + 11070. 37. w K
( ) + 181270. 181870. w w
Capítulo 7: Análisis de Respuesta en Frecuencias
- 263 -
Se trata de un compensador de adelanto de fase. Esta es una de las formas más
sencillas de la función de transferencia del controlador digital. La función de
transferencia en lazo abierto es
> eval(G[C](w)*G[D](w));
La constante de error estático de velocidad Kv queda especificada como
2 1−seg . Por lo tanto,
( ))()(lim20
wGwGwK DCwV ⋅⋅==→
2=↔ K
La ganancia K se determina entonces como el valor 2.
> eval(limit(w*G[C](w)*G[D](w), w=0));
> solve(2=%, K);
Sustituimos K = 2 en GD( w ), y la expresión resultante es:
> G[D2](w) := factor(subs(K=2, G[D](w)));
K
2
:= ( )GD w −1.6375( )− + 10. w ( ) + 11070. 37. w K
( ) + 181270. 181870. w w
:= ( )GD2 w −.00066630( )− + 10. w ( ) + w 299.17
( ) + w .99670 w
Sistemas de Control en Tiempo Discreto
- 264 -
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 parámetros dos
funciones y un contador , además 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 según se quiera dibujar sólo G D ( j ν ), G D ( j ν ) y
GC ( j ν ) G D ( j ν ), o las dos anteriores y GC ( j ν ).
- Los dos siguientes parámetros son los índices del eje 'x'.
- El último parámetro es la constante que se pinta en el diagrama de magnitudes.
- La función G D ( j ν ) se dibuja en color azul.
- La función GC ( j ν ) G D ( j ν ) se dibuja en color negro.
- La función 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'.
Capítulo 7: Análisis de Respuesta en Frecuencias
- 265 -
> 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): (continúa)
Sistemas de Control en Tiempo Discreto
- 266 -
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: (continúa)
Capítulo 7: Análisis de Respuesta en Frecuencias
- 267 -
# DIAGRAMAS
if (cont=1) then
p1 := display({mGd, cm}, labels=[fr, dB],
title=`MAGNITUD DE G`, tickmarks=[10,15]):
p2 := display({aGd, ca}, labels=[fr, grados],
title=`FASE DE G`, tickmarks=[10,15]):
elif (cont=2) then
p1 := display({mGd, mGcGd, cm}, labels=[fr, dB],
title=`MAGNITUDES`, tickmarks=[10,15]):
p2 := display({aGd, aGcGd, ca}, labels=[fr, grados],
title=`FASES`, tickmarks=[10,15]):
else
p1 := display({mGd, mGcGd, mGc, cm}, labels=[fr, dB],
title=`MAGNITUDES`, tickmarks=[10,15]):
p2 := display({aGd, aGcGd, aGc, ca}, labels=[fr, grados],
title=`FASES`, tickmarks=[10,15]):
fi:
print(p1);
print(p2);
end:
Sistemas de Control en Tiempo Discreto
- 268 -
Como todavía no se tiene el valor exacto del controlador, se muestra sólo 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);
Capítulo 7: Análisis de Respuesta en Frecuencias
- 269 -
Para apreciar mejor los márgenes de ganancia y fase de la función, se amplía 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: 1.0101.0 =⇒= νfr
⇒ Margen de Fase: -150º + 180º = 30º
- Frecuencia de Cruce de Fase: 5.0105.0 =⇒= νfr
⇒ Margen de Ganancia: -(-14) = 14 dB
Sistemas de Control en Tiempo Discreto
- 270 -
Las especificaciones requieren, además de Kv = 2, un margen de fase de 50º y
una ganancia de por lo menos 10 dB. Diseñemos un controlador digital que satisfaga
estas especificaciones.
Diseño 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 )( ν⋅jGD 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 adición 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 máximo de adelanto de fase
requerido, es aproximadamente de 28º. Esto significa que se han añadido 8º (se añaden
entre 5º y 12º) para compensar el desplazamiento de la ganancia en la frecuencia de
cruce. En vista de que
ααφ
+−
=11)( msin
> ecu := sin(28*Pi/180) = (1-alpha)/(1+alpha);
alpha := evalf(solve(ecu, alpha));
°= 28mφ corresponde a 361.0=α , confirmándose que se trata de adelanto de fase
)10( << α .
:= ecu =
sin
745
π − 1 α
+ 1 α
:= α .36101
Capítulo 7: Análisis de Respuesta en Frecuencias
- 271 -
Una vez que el factor α de atenuación se ha determinado sobre la base del
ángulo de adelanto de fase requerido, el siguiente paso es determinar las frecuencias de
esquina τ
ν 1= y
ταν
⋅=
1 del compensador de adelanto. Para ello, primero notamos
que el ángulo de adelanto de fase máximo mφ , se presenta en la media geométrica de
las dos frecuencias de esquina, es decir τα
ν⋅
=1
. La cantidad de modificación en la
curva de magnitud en τα
ν⋅
=1
debido a la inclusión del término ντα
ντ⋅⋅⋅+
⋅⋅+j
j1
1 es
αντα
ντ
ταν
11
11
=⋅⋅⋅+
⋅⋅+
⋅=j
j
A continuación encontramos el punto de frecuencia donde la magnitud del
sistema no compensado es
⋅−
α1log20
> 1/sqrt(alpha):
-20*log(%);
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 78.110 25.0 ==ν .
-4.4246
Sistemas de Control en Tiempo Discreto
- 272 -
Mediante prueba y error con Maple parece que la frecuencia sería 1.7:
> evalf(20*log[10](magG(10^0.25)));
evalf(20*log[10](magG(10^0.23)));
10^0.23;
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 τα
ν⋅
=1
c se tiene:
> nu[c] := 1.7;
nu[c] = 1/sqrt(alpha*tau);
> tau := solve(%, tau);
alpha*tau;
:= νc 1.7
= 1.7 1.66431
τ
:= τ .95844.34601
-4.3694
-5.0596
1.6982
Capítulo 7: Análisis de Respuesta en Frecuencias
- 273 -
Por lo tanto, el compensador de adelanto determinado es w
wwGC ⋅⋅+⋅+
=τα
τ1
1)(
> G[C](w) := (1+tau*w)/(1+alpha*tau*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 función de transferencia en lazo abierto se muestran mediante
curvas sólidas 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);
:= ( )GC w + 1 .95844 w + 1 .34601 w
Sistemas de Control en Tiempo Discreto
- 274 -
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);
Capítulo 7: Análisis de Respuesta en Frecuencias
- 275 -
La función de transferencia del controlador que acabamos de dar (GC( w )) se
transformará ahora de regreso al plano z mediante la correspondiente transformación
bilineal:
1110
11
512
112
+−
⋅=+−
⋅=+−
⋅=zz
zz
zz
Tw
> G[C](z) := simplify(subs(w=10*(z-1)/(z+1), G[C](w)));
La función 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);
La función transferencia de pulso en lazo cerrado del sistema que hemos diseñado es
)()(1
)()()()(
zGzGzGzG
zRzC
DC
DC
⋅+⋅
=
> simplify(G[C](z)*G[D] (z) / (1+G[C](z)*G[D] (z)));
:= ( )GC z 4. − 26461. z 21461. − 44601. z 24601.
6.5500( ) − 26461. z 21461. ( ) + .022880 z .021400( ) − 44601. z 24601. ( ) − z 1. ( ) − z .81873
131.( ) − 26461. z 21461. ( ) + 572. z 535.
− + − .22300 1011 z3 .50876 1011 z2 .40876 1011 z .11575 1011
Sistemas de Control en Tiempo Discreto
- 276 -
:= GD → z .63211
− z .3679
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 ( kT ) = A sin( kωT ).
Tenemos la función de transferencia 3679.0
6321.0)(−
=z
zGD .
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);
.63211
+ − ( )cos ω T I ( )sin ω T .3679
Capítulo 7: Análisis de Respuesta en Frecuencias
- 277 -
Se calculan ahora la magnitud y el ángulo de fase.
> M := simplify(evalc(abs(G[D](exp(I*omega*T)))));
> theta := simplify(evalc(argument(G[D](exp(I*omega*T)))));
Por lo tanto, la salida en estado permanente se puede escribir como
)( θω +⋅⋅⋅⋅ TksinMA .
> x[ss](k*T) := A*M*sin(k*omega*T+theta);
:= M 63.2101
− + 7358. ( )cos ω T 11354.
:= θ ( )arctan ,−1. ( )sin ω T − ( )cos ω T .36790
:= ( )xss k T 63.210A ( )sin + k ω T ( )arctan ,−1. ( )sin ω T − ( )cos ω T .36790
− + 7358. ( )cos ω T 11354.
Sistemas de Control en Tiempo Discreto
- 278 -
:= ( )GD z .0046627 + z .94338
( ) − z 1. ( ) − z .81836
7.7.2.- Dado el sistema que se muestra en la figura,
diseñe un controlador digital para el mismo. Utilice el método del diagrama de
Bode en el plano w. Las especificaciones de diseño consisten en que el margen de
fase debe ser de 55º, el margen de ganancia por lo menos de 10 dB, y la constante
de error estático de velocidad de 5 seg -1. El período de muestreo se especifica como
0.1 seg.
La transformada z de la planta precedida por un mantenedor de orden cero es
+⋅Ζ⋅−=
+⋅−
Ζ= −−
)2(1)1(
)2(e1)( 2
12 ss
zss
zGTs
D
> 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)));
Capítulo 7: Análisis de Respuesta en Frecuencias
- 279 -
Transformamos G D ( z ) en G D (w ) utilizando la transformación bilineal
correspondiente:
21
21
wT
wT
z⋅
−
⋅+
=
> G[D](w) := simplify(subs(z=(1+w*T/2)/(1-w*T/2), G[D](z)));
Escogemos ahora la función de transferencia del controlador en la forma
> G[C](w) := K*(1+w/a)/(1+w/b);
donde τ1
=a y τα ⋅
=1b . La función de transferencia en lazo abierto es
> simplify(G[C](w)*G[D](w));
:= ( )GC wK
+ 1
wa
+ 1wb
−.0011657K ( ) + a w b ( )− + 20. w ( ) + .19434 107 2831. w
a ( ) + b w ( ) + 90820. 45459. w w
:= ( )GD w −.0011657( )− + 20. w ( ) + .19434 107 2831. w
( ) + 90820. 45459. w w
Sistemas de Control en Tiempo Discreto
- 280 -
La constante de error estático de velocidad requerida es Kv = 5 1−seg , por lo tanto
> K[v] := 5;
ecu := K[v] = limit(w*G[C](w)*G[D](w), w=0);
K := solve(ecu, K);
Utilizando una técnica de diseño convencional, se determina la función de transferencia
del controlador digital como
> G[C](w) := simplify(10*((1+w/1.994)/(1+w/12.5)));
Por lo tanto, la función de transferencia en lazo abierto se convierte en
> simplify(G[C](w)*G[D](w));
:= Kv 5
:= ecu = 5 .49888 K
:= K 10.022
:= ( )GC w 10 + 1 .50150 w + 1 .080000 w
−.00014571( ) + 2000. 1003. w ( )− + 20. w ( ) + .19434 107 2831. w
( ) + 25. 2. w ( ) + 90820. 45459. w w
Capítulo 7: Análisis de Respuesta en Frecuencias
- 281 -
A continuación 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);
Sistemas de Control en Tiempo Discreto
- 282 -
Se amplía 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 )()( νν ⋅⋅⋅ jGjG DC es
fr = 0.65, ν = 4.4668. El margen de fase parece 180º - 120º = 60º.
> evalf(argGcGd(10^0.65)*180/Pi)+ 180; 58.16
Capítulo 7: Análisis de Respuesta en Frecuencias
- 283 -
Observando el diagrama de Bode, la frecuencia de cruce de fase de )()( νν ⋅⋅⋅ jGjG DC
es fr = 1.25, ν = 101.25 = 17.78.
El margen de ganancia es de aproximadamente 12 dB.
> -(evalf(20*log[10](magGGD(10^1.2))));
13.297
La función 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 estático de velocidad es 15 −⋅= segKv . Por lo tanto, se satisfacen todos los
requisitos y la función de transferencia del controlador diseñado GC ( w ) es satisfactoria.
A continuación, transformamos GC ( w ) en GC ( z ). Se deberá utilizar la siguiente
transformación bilineal:
112
+−
⋅=zz
Tw
> G[C](z) := simplify(subs(w=(2/T*((z-1)/(z+1))), G[C](w)));
La función transferencia de pulso en lazo abierto ahora se convierte en
> simplify(G[C](z)*G[D](z));
:= ( )GD z .50000 − 1103. z 903. − 13. z 3.
.0011657( ) − 1103. z 903. ( ) + 50000. z 47169.
( ) − 13. z 3. ( ) − z 1. ( ) − 25000. z 20459.
Sistemas de Control en Tiempo Discreto
- 284 -
7.7.3.- Considere el sistema de control mostrado en la figura.
La función de transferencia de la planta es 2s1 . Diseñe 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 período de muestreo es T = 0.1. Después de diseñar el controlador,
obtenga la constante de error estático 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)));
Se transforma G D( z ) en G D( w ) utilizando la transformación bilineal correspondiente:
21
21
wT
wT
z⋅
−
⋅+
=
:= ( )GD z .0050000 + z 1.
( ) − z 1. 2
Capítulo 7: Análisis de Respuesta en Frecuencias
- 285 -
> G[D](w) := simplify(subs(z=(1+w*T/2)/(1-w*T/2), G[D](z)));
A continuación 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);
:= ( )GD w −.050000− + 20. w
w2
Sistemas de Control en Tiempo Discreto
- 286 -
Se amplía 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.
Capítulo 7: Análisis de Respuesta en Frecuencias
- 287 -
> evalf(argG(10^0)*180/Pi)+180;
Observe que el margen de fase es de aproximadamente -3º. Será necesario añadir una
red de adelanto para conseguir el margen de fase y el margen de ganancia requeridos.
Mediante la aplicación de una técnica convencional de diseño, puede verse que la red de
adelanto siguiente satisface los requisitos:
> G[C](w) := 4*((1+w)/(1+w/16));
G[C](w) := simplify(%);
Se muestra ahora el diagrama de Bode completo, omitiendo la función GC ( j ν ).
> G[C2](v) := subs(w=I*nu, G[C](w)):
Diagrama_Bode(G[D2](v), G[C2](v), 2, -1, 3, 0);
-2.86
:= ( )GC w 4 + 1 w
+ 11
16w
:= ( )GC w 64 + 1 w + 16 w
Sistemas de Control en Tiempo Discreto
- 288 -
Se amplía la zona que nos interesa.
> Diagrama_Bode(G[D2](v), G[C2](v), 2, -0.1, 0.4, 0);
La adición de esta red de adelanto modifica el diagrama de Bode. La frecuencia
de cruce de ganancia se recorre a ν = 6.010 . Note que el adelanto de fase máximo φm que
puede producir esta red de adelanto es 62º, ya que
+−
=ααφ
11arcsinm
Capítulo 7: Análisis de Respuesta en Frecuencias
- 289 -
> phi[m] := evalf(1/sin((1-1/16)/(1+1/16)));
A la frecuencia de cruce de ganancia ν = 6.010 , 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
diseño dadas. Lo comprobamos con Maple.
> evalf(argGcGd(10^0.6)*180/Pi);
13.909
Ahora transformamos la función de transferencia del controlador GC ( w ) en
GC ( z ) mediante la transformación bilineal correspondiente:
112
+−
⋅=zz
Tw
> G[C](z) := simplify(subs(w = (2/T)*(z-1)/(z+1), G[C](w)));
:= φm 61.925
:= ( )GC z 16 − 21 z 19 − 9 z 1
Sistemas de Control en Tiempo Discreto
- 290 -
Entonces, la función transferencia de pulso en lazo abierto se convierte en
> simplify(G[C](z)*G[D](z));
La constante de error estático de velocidad se obtiene como sigue:
T
zGzGzK DC
zv)()()1(lim
1
1
⋅⋅−=
−
→
> 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);
La constante de error estático 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).
.080000( ) − 21. z 19. ( ) + z 1.
( ) − 9. z 1. ( ) − z 1. 2
:= Kv ( )Float −∞
:= Kv ( )Float ∞
Capítulo 7: Análisis de Respuesta en Frecuencias
- 291 -
7.8 REFERENCIAS.
[REF. 1] R.V. Churchill, J. W. Brown,
Variable Compleja y Aplicaciones,
Mc-Graw Hill, 1992
[REF. 2] K. Ogata,
Ingeniería de Control Moderna,
Prentice-Hall, 1980
[REF. 3] K. Ogata,
Sistemas de Control en Tiempo Discreto,
Prentice-Hall, 2ª edición (1996)
[REF. 4] J. Rebollo Rodríguez ,
SECAD: Módulo de Diseño de Controladores,
U.P.M., Escuela Superior de Ingenierios de Telecomunicaciones,
curso 1990-91