32 votos

¿Cuál es la ventaja de la implementación de un PID derivado de la transformada Z?

He visto muchos artículos sobre el EPI, como este En el caso de la ecuación PID genérica, se utiliza una transformada Z para derivar una ecuación de diferencia loca que luego se puede implementar en el software (o en este caso una FPGA). Mi pregunta es, ¿cuál es la ventaja de tal implementación frente a la tradicional y mucho más intuitiva, PID sin doctorado ¿Implementación de tipo? La segunda parece más fácil de entender e implementar. El término P es una multiplicación directa, la integral utiliza una suma corrida y la derivada se estima restando la muestra anterior de la muestra actual. Si necesita añadir una función como la protección contra el alargamiento de la integral, se trata de álgebra directa. Intentar añadir la protección de la Integral Windup u otras características a un algoritmo de tipo diferencia, como el vinculado anteriormente, parece que sería mucho más complicado. ¿Hay alguna razón para usar una implementación de este tipo, aparte de los derechos de fanfarronería del tipo "soy un malote al que le gusta hacer transformaciones Z por diversión" que van unidos a ella?

EDIT: El artículo de PID sin PHD que enlacé es un ejemplo de la implementación más simple que utiliza una suma corrida para el término integral y la diferencia entre muestras consecutivas para el término derivado. Se puede implementar con las matemáticas de punto fijo de una manera determinista y puede incluir información constante de tiempo real en el cálculo, si se desea. Básicamente estoy buscando una ventaja práctica del método de la transformada Z. No veo cómo podría ser más rápido, o utilizar menos recursos. En lugar de mantener una suma corriente de la integral, el método Z parece utilizar la salida anterior y restar los componentes P y D anteriores (para llegar a la suma integral por cálculo). Así que, a menos que alguien pueda señalar algo que se me escapa, aceptaré el comentario de AngryEE de que son esencialmente lo mismo.

EDICIÓN FINAL: Gracias por las respuestas. Creo que he aprendido un poco sobre cada una de ellas, pero al final, creo que Angry tiene razón en que es sólo una cuestión de preferencia. Las dos formas:

$$ u(k) = u(k-1) + K_p(e(k) - e(k-1) + K_i T_i e(k) + \frac{K_d}{T_i}(e(k)-2e(k-1)+e(k-2)) $$ $$ e(k-2) = e(k-1), \quad e(k-1) = e(k) $$ $$ u(k-1) = u(k) $$

o

$$ \mbox{sum} = \mbox{sum} + e(k) $$ $$ u(k) = K_p e(k) + K_i T_i\cdot \mbox{sum} + \frac{K_d}{T_i}(e(k)-e(k-1)) $$ $$ e(k-1) = e(k) $$

se evaluará esencialmente lo mismo. Algunos mencionan que el primero puede ser implementado en un DSP o FPGA más rápido, pero no me lo creo. Cualquiera de los dos puede ser vectorizado. El primero requiere dos operaciones de post, el segundo requiere una operación de pre y una de post, por lo que parece que se iguala. El primero también requiere 1 multiplicación más en el cálculo real.

11voto

maxsilver Puntos 1609

El método de la transformación Z para diseñar el controlador PID acabará dando lugar a una implementación mucho más eficiente. Esto es crítico si estás diseñando para el FPGA/DSP/Microcontrolador más pequeño para tu aplicación.

El mencionado "PID sin PHD" es probablemente el enfoque más sencillo para implementar un control PID en el software, pero se vuelve engorroso a velocidades de muestreo más altas.

Además, la transformación Z se presta mejor al diseño en un dominio discreto (digital). El método de diseño tradicional (transformada de Laplace) es más bien para el tiempo continuo. Hay múltiples maneras de convertir entre los dos (Zero-Order Hold, Interpolación Lineal, Pole Placement, Bilinear/Tustin), cada uno viene con sus fortalezas y desventajas en términos de estabilidad y respuesta del sistema. En general, es más fácil realizar todo el diseño en el dominio discreto.

Resumiendo, si estás utilizando un sistema relativamente "lento" (todos los comportamientos principales ocurren significativamente por debajo de los 100kHz o así), entonces el primer diseño probablemente esté bien. Puedes implementarlo en un microcontrolador o en un PC y acabar con él. A medida que los sistemas se hacen más rápidos, entonces puede que tengas que usar el método de la transformación Z para conseguir las velocidades que necesitas (el artículo menciona 9,5MHz, asumiendo que tienes A/D y DACs que pueden seguir el ritmo).

7voto

tenfour Puntos 118

Te estás quedando perplejo con toda la fantasía de la transformación Z. Los dos enfoques son fundamentalmente el mismo - el enfoque PID sin PHD sólo tiene menos subíndices. Realizan la misma función básica y utilizan la misma matemática básica.

La única diferencia importante entre los dos que puedo ver es que el PID sin PHD no tiene en cuenta el tiempo de muestreo. Para hacer cualquier cosa que pueda ser inestable, el tiempo de muestreo es una consideración muy importante. El beneficio del enfoque de la transformación Z en este caso es que no puedes usarlo sin tener en cuenta el tiempo de muestreo - te obliga a mostrar tu trabajo y te ayuda a diseñar un sistema más estable.

También parece que el caso de estudio que encontraste implementando el enfoque de la transformación Z fue diseñado para ser altamente determinista. Esto explica el uso de FPGAs - los cálculos siempre tomarán la misma cantidad de tiempo. La implementación del PID sin PHD no es determinista. El uso de dobles como variables en lugar de una implementación de punto fijo seguramente causará un comportamiento no determinista en cualquier microcontrolador sin una unidad de punto flotante (y probablemente también en uCs con una FPU). El caso de estudio está trabajando en un nivel totalmente diferente de complejidad en comparación con el enfoque PID sin PHD.

Así que, fundamentalmente, el enfoque matemático y de control es el mismo, pero el enfoque de estudio de casos/transformación Z es más riguroso y tiene una base teórica. El enfoque PID sin PHD sólo funcionará para sistemas muy sencillos, sin tiempo crítico y relativamente estables.

6voto

fearphage Puntos 250

Este es el trato, según mi experiencia:

  • Las transformadas Z ayudan a algunos análisis: la teoría de los sistemas muestreados en tiempo discreto se modela mejor mediante transformadas Z.
  • El diseño de los controladores PID o de los filtros de paso bajo puede realizarse tanto a través de las transformadas Z como del análisis clásico, con una de las diversas aproximaciones utilizadas para transformar las derivadas/integrales de tiempo continuo a tiempo discreto. Si tus polos y ceros están en frecuencias bajas comparadas con la frecuencia de muestreo, no importa. Sigue con el enfoque con el que te sientas más seguro.
  • La derivación de la transformación Z de los filtros y controladores suele ocultar el significado físico de los parámetros de dichos filtros y controladores. Si tengo un bucle PID con una ganancia integral, una ganancia proporcional y una ganancia diferencial, sé lo que hace directamente cada uno de esos parámetros. Si utilizo transformaciones Z, son sólo números que he tenido que derivar de alguna manera.
  • Aplicación de filtros y controladores puede o no puede oscurecer el significado físico de los parámetros de esos filtros y controladores. Esta cualidad es en gran parte independiente del punto anterior: si tengo un diseño basado en la transformación Z, puedo convertirlo en una implementación de aspecto clásico, y viceversa. Tu ejemplo en FINAL EDIT es bueno porque la segunda implementación mantiene el integrador (" sum ") separado en su propia variable de estado. Esa variable de estado tiene un significado. La primera implementación mantiene la variable de estado como historia pasada del error; eso tiene significado, pero proporciona menos información en mi opinión.

Por último, hay otras cuestiones relacionadas con la no linealidad o el análisis que a menudo te hacen elegir una implementación en lugar de otra (para mí siempre es el enfoque clásico para los controladores, para los filtros FIR es la transformada Z, y para los filtros IIR de 1 o 2 polos suele ser el enfoque clásico):

  • Para los controladores, yo siempre mantener un integrador como variable de estado, en lugar de muestras de error pasadas. La razón es que los sistemas reales a menudo requieren anti-windup donde usted tiene que sujetar la integral de ir demasiado positivo o demasiado negativo. (Y si estás implementando en punto fijo, tienes que hacer esto de todos modos, porque la condición de envoltura cuando llegas al desbordamiento hará cosas malas al comportamiento de tu bucle de control)

  • Por la misma razón, también siempre calcular el integrador de forma referida a la salida: por ejemplo sum += Ki*error; out = stuff + sum en lugar de sum += error; out = stuff + Ki*sum . Con el segundo enfoque, si cambias la ganancia Ki, eso escala el efecto del integrador en la salida hacia arriba y hacia abajo, que probablemente no es lo que quieres, y el límite cambia dependiendo de la ganancia. Si multiplicas el error por Ki antes de integrar, las unidades del integrador son las mismas que las de la salida del lazo de control, y tiene un significado físico más obvio.

(actualización: he escrito una entrada del blog sobre este tema con más detalle).

5voto

Brian Childress Puntos 437

Editar :

La utilización de la transformación Z facilita la combinación y simplificación de los sistemas LTI para análisis . Por ejemplo, una serie en cascada de k sistemas LTI con funciones de transferencia H1, H2, ..., Hk se combinará como un producto simple H = H1*H2*...*Hk . Además, la función de transferencia de un bucle de retroalimentación negativa es T = G/(1 + G*H) donde H está en la ruta de retroalimentación. Una vez que se tiene una función de transferencia global, se puede analizar la estabilidad (ubicación de los polos) y el rendimiento (transitorios, error en estado estacionario), añadiendo filtros adicionales y retroalimentación para optimizar el diseño.

Para los subsistemas de orden superior, se puede particionar la función del sistema e implementarla como una serie de bicuadros en cascada (es decir, por pares de ceros y polos, como conjugados complejos o raíces repetidas), lo que disminuye la inestabilidad causada por la cuantización. Una bicadena de forma canónica:

biquad section

3voto

Binarytales Puntos 1145

La parte difícil de un controlador PID no es el código en sí. Los problemas vienen en realidad cuando se trata de optimizar el controlador. Seguro que puedes hacer prueba y error y conseguir un controlador bastante decente, pero algunos sistemas son demasiado complejos para que un método de prueba y error sea fácil de realizar. Estos mismos sistemas tienden a ser los que necesitan un muy buen controlador en lugar de sólo uno decente. En este caso, la transformación Z es mucho más fácil de analizar.

Otra cosa que hay que tener en cuenta es la estabilidad de un sistema. Puede que se trate de un sistema que es bastante difícil que se vuelva inestable, o que incluso si lo hace no perjudique nada. Pero hay muchos sistemas que pueden tener resultados catastróficos si el controlador hace que se vuelva inestable. La transformación Z es otro lugar donde es mucho más fácil identificar si habrá algún problema.

Y una nota final. Cuando se analiza un sistema como un todo usted tendrá que obtener ecuaciones para todos los componentes en su sistema. Seguro que puedes obtenerlas del PID sin necesidad de un doctorado, pero si ya has estado trabajando con él en el método de la transformación Z hay mucho menos trabajo de ida y vuelta que tienes que hacer.

Ahora, como preferencia personal, siempre uso el método PID sin PhD. Esto es sólo porque sólo estoy usando microcontroladores con sistemas que no son terriblemente dependientes del controlador.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X