Sistemas de Control en Tiempo Discreto

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

description

sistemas de control

Transcript of Sistemas de Control en Tiempo Discreto

Page 1: 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,

Page 2: Sistemas de Control en Tiempo Discreto

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.

Page 3: Sistemas de Control en Tiempo Discreto

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

Page 4: Sistemas de Control en Tiempo Discreto

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.

Page 5: Sistemas de Control en Tiempo Discreto

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

Page 6: Sistemas de Control en Tiempo Discreto

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.

Page 7: Sistemas de Control en Tiempo Discreto

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

Page 8: Sistemas de Control en Tiempo Discreto

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.

Page 9: Sistemas de Control en Tiempo Discreto

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

Page 10: Sistemas de Control en Tiempo Discreto

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.

Page 11: Sistemas de Control en Tiempo Discreto

Capítulo 1: La Transformada Z

- 1 -

Capítulo 1.

LA TRANSFORMADA Z.

Page 12: Sistemas de Control en Tiempo Discreto

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

Page 13: Sistemas de Control en Tiempo Discreto

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.

Page 14: Sistemas de Control en Tiempo Discreto

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

Page 15: Sistemas de Control en Tiempo Discreto

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

Page 16: Sistemas de Control en Tiempo Discreto

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

Page 17: Sistemas de Control en Tiempo Discreto

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

Page 18: Sistemas de Control en Tiempo Discreto

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

Page 19: Sistemas de Control en Tiempo Discreto

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

Page 20: Sistemas de Control en Tiempo Discreto

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

Page 21: Sistemas de Control en Tiempo Discreto

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

Page 22: Sistemas de Control en Tiempo Discreto

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

Page 23: Sistemas de Control en Tiempo Discreto

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

Page 24: Sistemas de Control en Tiempo Discreto

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:

Page 25: Sistemas de Control en Tiempo Discreto

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

Page 26: Sistemas de Control en Tiempo Discreto

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

Page 27: Sistemas de Control en Tiempo Discreto

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

Page 28: Sistemas de Control en Tiempo Discreto

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

Page 29: Sistemas de Control en Tiempo Discreto

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

Page 30: Sistemas de Control en Tiempo Discreto

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 π

Page 31: Sistemas de Control en Tiempo Discreto

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

Page 32: Sistemas de Control en Tiempo Discreto

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

Page 33: Sistemas de Control en Tiempo Discreto

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

Page 34: Sistemas de Control en Tiempo Discreto

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

Page 35: Sistemas de Control en Tiempo Discreto

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

Page 36: Sistemas de Control en Tiempo Discreto

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

Page 37: Sistemas de Control en Tiempo Discreto

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

Page 38: Sistemas de Control en Tiempo Discreto

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.

Page 39: Sistemas de Control en Tiempo Discreto

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

Page 40: Sistemas de Control en Tiempo Discreto

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

Page 41: Sistemas de Control en Tiempo Discreto

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.

Page 42: Sistemas de Control en Tiempo Discreto

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:

Page 43: Sistemas de Control en Tiempo Discreto

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

Page 44: Sistemas de Control en Tiempo Discreto

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

Page 45: Sistemas de Control en Tiempo Discreto

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:

Page 46: Sistemas de Control en Tiempo Discreto

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

Page 47: Sistemas de Control en Tiempo Discreto

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:

Page 48: Sistemas de Control en Tiempo Discreto

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.

Page 49: Sistemas de Control en Tiempo Discreto

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

Page 50: Sistemas de Control en Tiempo Discreto

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

Page 51: Sistemas de Control en Tiempo Discreto

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

Page 52: Sistemas de Control en Tiempo Discreto

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

Page 53: Sistemas de Control en Tiempo Discreto

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:

Page 54: Sistemas de Control en Tiempo Discreto

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

Page 55: Sistemas de Control en Tiempo Discreto

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

Page 56: Sistemas de Control en Tiempo Discreto

Capítulo 2: Discretización de una Señal

- 47 -

Capítulo 2.

DISCRETIZACIÓN

DE UNA SEÑAL.

Page 57: Sistemas de Control en Tiempo Discreto

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

Page 58: Sistemas de Control en Tiempo Discreto

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

Page 59: Sistemas de Control en Tiempo Discreto

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.

Page 60: Sistemas de Control en Tiempo Discreto

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

Page 61: Sistemas de Control en Tiempo Discreto

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

Page 62: Sistemas de Control en Tiempo Discreto

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

Page 63: Sistemas de Control en Tiempo Discreto

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

Page 64: Sistemas de Control en Tiempo Discreto

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

Page 65: Sistemas de Control en Tiempo Discreto

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

Page 66: Sistemas de Control en Tiempo Discreto

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

Page 67: Sistemas de Control en Tiempo Discreto

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 −

Page 68: Sistemas de Control en Tiempo Discreto

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

Page 69: Sistemas de Control en Tiempo Discreto

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

Page 70: Sistemas de Control en Tiempo Discreto

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

Page 71: Sistemas de Control en Tiempo Discreto

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 π

Page 72: Sistemas de Control en Tiempo Discreto

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:

Page 73: Sistemas de Control en Tiempo Discreto

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

Page 74: Sistemas de Control en Tiempo Discreto

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

Page 75: Sistemas de Control en Tiempo Discreto

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

Page 76: Sistemas de Control en Tiempo Discreto

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

Page 77: Sistemas de Control en Tiempo Discreto

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:

Page 78: Sistemas de Control en Tiempo Discreto

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

Page 79: Sistemas de Control en Tiempo Discreto

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

Page 80: Sistemas de Control en Tiempo Discreto

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

Page 81: Sistemas de Control en Tiempo Discreto

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

Page 82: Sistemas de Control en Tiempo Discreto

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

Page 83: Sistemas de Control en Tiempo Discreto

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

Page 84: Sistemas de Control en Tiempo Discreto

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

Page 85: Sistemas de Control en Tiempo Discreto

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.

Page 86: Sistemas de Control en Tiempo Discreto

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.

Page 87: Sistemas de Control en Tiempo Discreto

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

Page 88: Sistemas de Control en Tiempo Discreto

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

Page 89: Sistemas de Control en Tiempo Discreto

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

Page 90: Sistemas de Control en Tiempo Discreto

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:

Page 91: Sistemas de Control en Tiempo Discreto

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

Page 92: Sistemas de Control en Tiempo Discreto

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

Page 93: Sistemas de Control en Tiempo Discreto

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.

Page 94: Sistemas de Control en Tiempo Discreto

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

Page 95: Sistemas de Control en Tiempo Discreto

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

Page 96: Sistemas de Control en Tiempo Discreto

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

Page 97: Sistemas de Control en Tiempo Discreto

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

Page 98: Sistemas de Control en Tiempo Discreto

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 +

Page 99: Sistemas de Control en Tiempo Discreto

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

Page 100: Sistemas de Control en Tiempo Discreto

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

Page 101: Sistemas de Control en Tiempo Discreto

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

Page 102: Sistemas de Control en Tiempo Discreto

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

Page 103: Sistemas de Control en Tiempo Discreto

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

Page 104: Sistemas de Control en Tiempo Discreto

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

Page 105: Sistemas de Control en Tiempo Discreto

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

Page 106: Sistemas de Control en Tiempo Discreto

Capítulo 4: Estabilidad. Criterio de Jury

- 99 -

Capítulo 4.

ESTABILIDAD.

CRITERIO DE JURY.

Page 107: Sistemas de Control en Tiempo Discreto

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.

Page 108: Sistemas de Control en Tiempo Discreto

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

Page 109: Sistemas de Control en Tiempo Discreto

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

Page 110: Sistemas de Control en Tiempo Discreto

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

Page 111: Sistemas de Control en Tiempo Discreto

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)

Page 112: Sistemas de Control en Tiempo Discreto

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)

Page 113: Sistemas de Control en Tiempo Discreto

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)

Page 114: Sistemas de Control en Tiempo Discreto

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)

Page 115: Sistemas de Control en Tiempo Discreto

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:

Page 116: Sistemas de Control en Tiempo Discreto

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

Page 117: Sistemas de Control en Tiempo Discreto

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

Page 118: Sistemas de Control en Tiempo Discreto

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

Page 119: Sistemas de Control en Tiempo Discreto

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

Page 120: Sistemas de Control en Tiempo Discreto

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)

Page 121: Sistemas de Control en Tiempo Discreto

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)

Page 122: Sistemas de Control en Tiempo Discreto

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.

Page 123: Sistemas de Control en Tiempo Discreto

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

Page 124: Sistemas de Control en Tiempo Discreto

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

Page 125: Sistemas de Control en Tiempo Discreto

Capítulo 5: Análisis de Respuesta Transitoria

- 119 -

Capítulo 5.

ANÁLISIS DE RESPUESTA TRANSITORIA.

Page 126: Sistemas de Control en Tiempo Discreto

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

Page 127: Sistemas de Control en Tiempo Discreto

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

Page 128: Sistemas de Control en Tiempo Discreto

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

Page 129: Sistemas de Control en Tiempo Discreto

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.

Page 130: Sistemas de Control en Tiempo Discreto

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

Page 131: Sistemas de Control en Tiempo Discreto

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

Page 132: Sistemas de Control en Tiempo Discreto

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)

Page 133: Sistemas de Control en Tiempo Discreto

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

Page 134: Sistemas de Control en Tiempo Discreto

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

Page 135: Sistemas de Control en Tiempo Discreto

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

Page 136: Sistemas de Control en Tiempo Discreto

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:

Page 137: Sistemas de Control en Tiempo Discreto

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.

Page 138: Sistemas de Control en Tiempo Discreto

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

Page 139: Sistemas de Control en Tiempo Discreto

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

Page 140: Sistemas de Control en Tiempo Discreto

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.

Page 141: Sistemas de Control en Tiempo Discreto

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

Page 142: Sistemas de Control en Tiempo Discreto

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

Page 143: Sistemas de Control en Tiempo Discreto

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

Page 144: Sistemas de Control en Tiempo Discreto

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

Page 145: Sistemas de Control en Tiempo Discreto

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

Page 146: Sistemas de Control en Tiempo Discreto

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

Page 147: Sistemas de Control en Tiempo Discreto

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.

Page 148: Sistemas de Control en Tiempo Discreto

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

Page 149: Sistemas de Control en Tiempo Discreto

Capítulo 6: Diseño de Control por Establecimiento Finito (DeadBeat)

- 143 -

Capítulo 6.

DISEÑO DE CONTROL

POR ESTABLECIMIENTO FINITO

(DEAD BEAT).

Page 150: Sistemas de Control en Tiempo Discreto

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

Page 151: Sistemas de Control en Tiempo Discreto

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

Page 152: Sistemas de Control en Tiempo Discreto

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)

Page 153: Sistemas de Control en Tiempo Discreto

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

Page 154: Sistemas de Control en Tiempo Discreto

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

Page 155: Sistemas de Control en Tiempo Discreto

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)

Page 156: Sistemas de Control en Tiempo Discreto

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)

Page 157: Sistemas de Control en Tiempo Discreto

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

Page 158: Sistemas de Control en Tiempo Discreto

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)

Page 159: Sistemas de Control en Tiempo Discreto

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

Page 160: Sistemas de Control en Tiempo Discreto

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

Page 161: Sistemas de Control en Tiempo Discreto

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.

Page 162: Sistemas de Control en Tiempo Discreto

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

Page 163: Sistemas de Control en Tiempo Discreto

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.

Page 164: Sistemas de Control en Tiempo Discreto

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

Page 165: Sistemas de Control en Tiempo Discreto

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 .

Page 166: Sistemas de Control en Tiempo Discreto

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.

Page 167: Sistemas de Control en Tiempo Discreto

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 ⋅⋅+=⋅+ −−

Page 168: Sistemas de Control en Tiempo Discreto

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)

Page 169: Sistemas de Control en Tiempo Discreto

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

=

Page 170: Sistemas de Control en Tiempo Discreto

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.

Page 171: Sistemas de Control en Tiempo Discreto

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

Page 172: Sistemas de Control en Tiempo Discreto

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

Page 173: Sistemas de Control en Tiempo Discreto

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.

Page 174: Sistemas de Control en Tiempo Discreto

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

Page 175: Sistemas de Control en Tiempo Discreto

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

Page 176: Sistemas de Control en Tiempo Discreto

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

Page 177: Sistemas de Control en Tiempo Discreto

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

Page 178: Sistemas de Control en Tiempo Discreto

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

Page 179: Sistemas de Control en Tiempo Discreto

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

Page 180: Sistemas de Control en Tiempo Discreto

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

Page 181: Sistemas de Control en Tiempo Discreto

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

Page 182: Sistemas de Control en Tiempo Discreto

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

Page 183: Sistemas de Control en Tiempo Discreto

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

Page 184: Sistemas de Control en Tiempo Discreto

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

Page 185: Sistemas de Control en Tiempo Discreto

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:

Page 186: Sistemas de Control en Tiempo Discreto

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)

Page 187: Sistemas de Control en Tiempo Discreto

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

Page 188: Sistemas de Control en Tiempo Discreto

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

Page 189: Sistemas de Control en Tiempo Discreto

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)

Page 190: Sistemas de Control en Tiempo Discreto

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)

Page 191: Sistemas de Control en Tiempo Discreto

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

Page 192: Sistemas de Control en Tiempo Discreto

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

Page 193: Sistemas de Control en Tiempo Discreto

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

Page 194: Sistemas de Control en Tiempo Discreto

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)

Page 195: Sistemas de Control en Tiempo Discreto

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

Page 196: Sistemas de Control en Tiempo Discreto

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

Page 197: Sistemas de Control en Tiempo Discreto

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

Page 198: Sistemas de Control en Tiempo Discreto

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

Page 199: Sistemas de Control en Tiempo Discreto

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

Page 200: Sistemas de Control en Tiempo Discreto

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

Page 201: Sistemas de Control en Tiempo Discreto

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

Page 202: Sistemas de Control en Tiempo Discreto

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

Page 203: Sistemas de Control en Tiempo Discreto

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

Page 204: Sistemas de Control en Tiempo Discreto

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

Page 205: Sistemas de Control en Tiempo Discreto

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

Page 206: Sistemas de Control en Tiempo Discreto

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

Page 207: Sistemas de Control en Tiempo Discreto

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

Page 208: Sistemas de Control en Tiempo Discreto

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

Page 209: Sistemas de Control en Tiempo Discreto

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

Page 210: Sistemas de Control en Tiempo Discreto

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

Page 211: Sistemas de Control en Tiempo Discreto

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

Page 212: Sistemas de Control en Tiempo Discreto

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

Page 213: Sistemas de Control en Tiempo Discreto

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

Page 214: Sistemas de Control en Tiempo Discreto

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

Page 215: Sistemas de Control en Tiempo Discreto

Capítulo 7: Análisis de Respuesta en Frecuencias

- 209 -

Capítulo 7.

ANÁLISIS DE RESPUESTA

EN FRECUENCIAS.

Page 216: Sistemas de Control en Tiempo Discreto

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.

Page 217: Sistemas de Control en Tiempo Discreto

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:

Page 218: Sistemas de Control en Tiempo Discreto

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

Page 219: Sistemas de Control en Tiempo Discreto

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

Page 220: Sistemas de Control en Tiempo Discreto

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

ω

θ

ω

θ

Page 221: Sistemas de Control en Tiempo Discreto

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

Page 222: Sistemas de Control en Tiempo Discreto

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 ⋅⋅⋅=⋅ ω .

Page 223: Sistemas de Control en Tiempo Discreto

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

Page 224: Sistemas de Control en Tiempo Discreto

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

ωωω

Page 225: Sistemas de Control en Tiempo Discreto

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.

Page 226: Sistemas de Control en Tiempo Discreto

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.

Page 227: Sistemas de Control en Tiempo Discreto

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

Page 228: Sistemas de Control en Tiempo Discreto

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

Page 229: Sistemas de Control en Tiempo Discreto

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

Page 230: Sistemas de Control en Tiempo Discreto

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.

Page 231: Sistemas de Control en Tiempo Discreto

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

Page 232: Sistemas de Control en Tiempo Discreto

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

Page 233: Sistemas de Control en Tiempo Discreto

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⋅

⋅+

=

Page 234: Sistemas de Control en Tiempo Discreto

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

Page 235: Sistemas de Control en Tiempo Discreto

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 .

Page 236: Sistemas de Control en Tiempo Discreto

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.

Page 237: Sistemas de Control en Tiempo Discreto

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.

Page 238: Sistemas de Control en Tiempo Discreto

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→

=

Page 239: Sistemas de Control en Tiempo Discreto

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

Page 240: Sistemas de Control en Tiempo Discreto

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

Page 241: Sistemas de Control en Tiempo Discreto

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

Page 242: Sistemas de Control en Tiempo Discreto

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)

Page 243: Sistemas de Control en Tiempo Discreto

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:

Page 244: Sistemas de Control en Tiempo Discreto

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:

Page 245: Sistemas de Control en Tiempo Discreto

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

Page 246: Sistemas de Control en Tiempo Discreto

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

Page 247: Sistemas de Control en Tiempo Discreto

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

Page 248: Sistemas de Control en Tiempo Discreto

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.

Page 249: Sistemas de Control en Tiempo Discreto

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

)()(

Page 250: Sistemas de Control en Tiempo Discreto

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.

Page 251: Sistemas de Control en Tiempo Discreto

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

⋅+=

τατ

Page 252: Sistemas de Control en Tiempo Discreto

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

Page 253: Sistemas de Control en Tiempo Discreto

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.

Page 254: Sistemas de Control en Tiempo Discreto

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

⋅+=

τβτ

Page 255: Sistemas de Control en Tiempo Discreto

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 .

Page 256: Sistemas de Control en Tiempo Discreto

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

Page 257: Sistemas de Control en Tiempo Discreto

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

Page 258: Sistemas de Control en Tiempo Discreto

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

Page 259: Sistemas de Control en Tiempo Discreto

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

Page 260: Sistemas de Control en Tiempo Discreto

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

Page 261: Sistemas de Control en Tiempo Discreto

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

Page 262: Sistemas de Control en Tiempo Discreto

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

Page 263: Sistemas de Control en Tiempo Discreto

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.

Page 264: Sistemas de Control en Tiempo Discreto

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

Page 265: Sistemas de Control en Tiempo Discreto

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⋅

⋅+

=

Page 266: Sistemas de Control en Tiempo Discreto

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

Page 267: Sistemas de Control en Tiempo Discreto

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

Page 268: Sistemas de Control en Tiempo Discreto

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

Page 269: Sistemas de Control en Tiempo Discreto

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

Page 270: Sistemas de Control en Tiempo Discreto

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

Page 271: Sistemas de Control en Tiempo Discreto

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)

Page 272: Sistemas de Control en Tiempo Discreto

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)

Page 273: Sistemas de Control en Tiempo Discreto

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:

Page 274: Sistemas de Control en Tiempo Discreto

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

Page 275: Sistemas de Control en Tiempo Discreto

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

Page 276: Sistemas de Control en Tiempo Discreto

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

Page 277: Sistemas de Control en Tiempo Discreto

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

Page 278: Sistemas de Control en Tiempo Discreto

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

Page 279: Sistemas de Control en Tiempo Discreto

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

Page 280: Sistemas de Control en Tiempo Discreto

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

Page 281: Sistemas de Control en Tiempo Discreto

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

Page 282: Sistemas de Control en Tiempo Discreto

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

Page 283: Sistemas de Control en Tiempo Discreto

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.

Page 284: Sistemas de Control en Tiempo Discreto

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

Page 285: Sistemas de Control en Tiempo Discreto

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

Page 286: Sistemas de Control en Tiempo Discreto

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

Page 287: Sistemas de Control en Tiempo Discreto

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

Page 288: Sistemas de Control en Tiempo Discreto

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

Page 289: Sistemas de Control en Tiempo Discreto

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.

Page 290: Sistemas de Control en Tiempo Discreto

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

Page 291: Sistemas de Control en Tiempo Discreto

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

Page 292: Sistemas de Control en Tiempo Discreto

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.

Page 293: Sistemas de Control en Tiempo Discreto

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

Page 294: Sistemas de Control en Tiempo Discreto

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

Page 295: Sistemas de Control en Tiempo Discreto

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

Page 296: Sistemas de Control en Tiempo Discreto

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 ∞

Page 297: Sistemas de Control en Tiempo Discreto

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