¿Cuál es la ventaja de una implementación PID derivada de transformación Z?


29

He visto muchos artículos PID, como este , que usan una transformación Z de la ecuación PID genérica para derivar alguna ecuación de diferencia loca que luego se puede implementar en el software (o en este caso, un FPGA). Mi pregunta es, ¿cuál es la ventaja de tal implementación frente al PID tradicional y mucho más intuitivo sin un doctorado?implementación de tipo? El segundo parece más fácil de entender e implementar. El término P es multiplicación directa, la integral usa una suma continua y la derivada se estima restando la muestra anterior de la muestra actual. Si necesita agregar una función como la protección Integral Windup, es álgebra directa. Intentar agregar protección 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 fanfarronear "Soy un mal culo al que le gusta hacer transformaciones Z por diversión" que lo acompañan?

EDITAR: El PID sin un artículo de PHD que vinculé es un ejemplo de la implementación más simple que utiliza una suma acumulada para el término integral y la diferencia entre muestras consecutivas para el término derivado. Puede implementarse con matemática de punto fijo de manera determinista y puede incluir información constante en tiempo real en el cálculo, si se desea. Básicamente estoy buscando una ventaja práctica para el método de transformación Z. No puedo ver cómo podría ser más rápido o usar menos recursos. En lugar de mantener una suma de la integral, el método Z parece usar la salida anterior y restar los componentes P y D anteriores (para llegar a la suma integral por cálculo). Entonces, a menos que alguien pueda señalar algo que me falta, 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 uno, pero al final, creo que Angry está en lo cierto, ya que es solo una cuestión de preferencia. Las dos formas:

e(k-2)=e(k-1),

u(k)=u(k1)+Kp(e(k)e(k1)+KiTie(k)+KdTi(e(k)2e(k1)+e(k2))
u ( k - 1 ) = u ( k )
e(k2)=e(k1),e(k1)=e(k)
u(k1)=u(k)

o

u ( k ) = K p e ( k ) + K i T isuma + K d

sum=sum+e(k)
e(k-1)=e(k)
u(k)=Kpe(k)+KiTisum+KdTi(e(k)e(k1))
e(k1)=e(k)

evaluará esencialmente lo mismo. Algunos mencionan que el primero se puede implementar en un DSP o FPGA más rápido, pero no compro eso. Cualquiera de los dos podría ser vectorizado. El primero requiere dos operaciones posteriores, el segundo requiere una operación previa y una posterior, por lo que parece igualarse. El primero también requiere 1 multiplicación más en el cálculo real.


¿Quiso decir "ecuación diferencial"?
Kevin Vermeer el

Debo haber entendido mal sus comentarios, basándome en estos comentarios que hice al menos. ¡Eliminaré mi comentario!
Kortuk

1
Vaya a dsp.stackexchange.com
Jason S

Respuestas:


7

Te estás confundiendo con toda la fantasía de la transformación Z. Los dos enfoques son básicamente los mismos: el enfoque PID sin PHD solo tiene menos subíndices. Realizan la misma función básica y usan las mismas matemáticas básicas.

La única diferencia importante entre las 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 transformación Z en este caso es que no puede usarlo sin tener en cuenta el tiempo de muestreo: lo obliga a mostrar su trabajo y lo ayuda a diseñar un sistema más estable.

También parece que el estudio de caso que encontró al implementar el enfoque de transformación Z fue diseñado para ser altamente determinista. Esto explica su uso de FPGA: los cálculos siempre tomarán la misma cantidad de tiempo. El PID sin implementación de PHD es decididamente no 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 uC con una FPU). El estudio de caso está trabajando en un nivel completamente diferente de complejidad en comparación con el enfoque PID sin PHD.

Básicamente, el enfoque matemático y de control es el mismo, pero el enfoque de estudio de caso / transformación Z es más riguroso y teóricamente basado. El enfoque PID sin PHD solo funcionará para un sistema muy simple, no crítico con el tiempo, que sea relativamente estable.


El PID sin un artículo PHD es solo un ejemplo de la implementación más simple, que utiliza una suma continua para la integral y la diferencia entre muestras consecutivas para la derivada. El artículo establece que el tiempo de muestreo debe ser consistente. El tiempo de muestreo podría agregarse fácilmente a los cálculos de I y D, pero en la mayoría de los casos no se realiza en el cálculo real. La GUI del controlador (u otra interfaz) presentará los términos I y D al usuario en términos de segundos en función del tiempo de bucle.
bt2

@ bt2 parece que tiene un caso muy específico en el que el PID sin un doctorado es el mejor enfoque. La mayoría de los sistemas no tienen una visualización de los términos I y D de ninguna manera. Es el resultado del controlador PID que tiene algún cambio en el sistema en su conjunto que luego se vuelve a colocar en sí mismo. Si solo se lo muestra a un usuario, entonces no hay realmente ninguna razón para preocuparse por la estabilidad.
Kellenjb

"El enfoque PID sin PHD solo funcionará de manera muy simple", no estoy de acuerdo. Definitivamente puede optimizar los sistemas de control digital utilizando el análisis de transformación Z, pero la otra cara es que puede verse atrapado en el modelado de su sistema con tanta precisión que se pierde el bosque por los árboles.
Jason S

10

El método de transformación Z para diseñar el controlador PID eventualmente producirá una implementación mucho más eficiente. Esto es fundamental si está diseñando el FPGA / DSP / Microcontrolador más pequeño para su aplicación.

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

Además, la transformación Z se presta mejor para diseñar en un dominio discreto (digital). El método tradicional de diseño (transformación de Laplace) es más para el tiempo continuo. Hay varias formas de conversión entre las dos (retención de orden cero, interpolación lineal, colocación de polos, bilineal / Tustin), cada una viene con sus fortalezas y desventajas en términos de estabilidad y respuesta del sistema. En general, es más fácil hacer todo el diseño en el dominio discreto.

En pocas palabras, si está utilizando un sistema relativamente "lento" (todos los comportamientos principales suceden significativamente a menos de 100 kHz), entonces el primer diseño probablemente esté bien. Puede implementarlo en un microcontrolador o PC y terminar con él. A medida que los sistemas se vuelven más rápidos, es posible que deba usar el método de transformación Z para obtener las velocidades que necesita (el artículo menciona 9.5MHz, suponiendo que tenga A / D y DAC que puedan mantener el ritmo).


1
El mismo número de operaciones matemáticas, diferente representación de números. Los dobles son una representación de números mucho más compleja que el método de punto fijo utilizado en el estudio de caso. Menos complejo significa menos operaciones (en el silicio).
AngryEE

2
@ bt2, diría que es más eficiente en el sentido de que los chips DSP están configurados para los conjuntos de instrucciones SIMD (Single Instruction, Multiple Data). Si bien es el mismo número de operaciones matemáticas, la transformación Z le permite hacer todas las multiplicaciones en un ciclo de instrucción, luego sumar todos los elementos del vector resultante en un ciclo (depende de la plataforma). Entonces, aunque las matemáticas son las mismas, la complejidad del tiempo es significativamente menor, lo que produce mayores aceleraciones.
mjcarroll

1
@ bt2, la forma z se presta a la implementación como una ecuación de diferencia, que depende solo de las salidas pasadas y la entrada actual, sin requerir una suma continua que en algún momento se desborde (o desborde). Los DSP están diseñados para permitir la implementación eficiente de filtros digitales a través del enfoque de ecuación de diferencias. Ver en.wikipedia.org/wiki/Digital_filter esp. formas directas: para eso están optimizados los DSP.
espacio libre

1
Creo que te estás perdiendo algo. La suma acumulada nunca se desbordará en circunstancias normales. Los filtros IIR no siempre se saturarán, y en el caso de un control PID, ese normalmente no será el caso. Decir que lo hará con un algoritmo pero no lo hará con otro es falso. La suma acumulada también se basa en salidas anteriores. Si uno causa desbordamiento, ambos lo harán. Piénselo de esta manera, la segunda implantación ES la primera, con algunas matemáticas calculadas ... u (k-1) - kp (e (k-1) - kd / Ti (e (k-1) - e ( k-2) == (suma
acumulada

1
-1: las transformaciones Z no le brindan una implementación más eficiente. De hecho, si compara un filtro de paso bajo de 1 polo utilizando el método digital "ingenuo" con un filtro de paso bajo de 1 polo utilizando la transformación bilineal, obtendrá una implementación ligeramente menos eficiente con este enfoque. Independientemente de la derivación del filtro, el mismo número de variables de estado = aproximadamente la misma eficiencia de implementación. En gran parte, esta es una cantidad independiente de la forma en que se diseñó el filtro.
Jason S

5

Aquí está el trato, en mi experiencia:

  • La ayuda de las transformaciones Z para algunos análisis: la teoría de los sistemas de muestreo de tiempo discreto se modela mejor a través de las transformaciones Z.
  • El diseño de controladores PID o filtros de paso bajo se puede realizar tanto a través de transformaciones Z como de análisis clásico, con una de varias aproximaciones utilizadas para transformar derivados / integrales de tiempo continuo a tiempo discreto. Si sus polos y ceros están en bajas frecuencias en comparación con la frecuencia de muestreo, no importa. Quédese con cualquier enfoque con el que se sienta más seguro.
  • La derivación de transformación Z de filtros y controladores a menudo oscurece el significado físico de los parámetros de esos filtros y controladores. Si tengo un bucle PID con una ganancia integral, una ganancia proporcional y una ganancia diferencial, sé lo que hace cada uno de esos parámetros directamente. Si uso transformaciones Z, son solo números que tuve que derivar de alguna manera.
  • La implementación de filtros y controladores puede oscurecer o no el significado físico de los parámetros de esos filtros y controladores. Esta calidad 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. Su ejemplo en FINAL EDIT es bueno porque la segunda implementación mantiene al integrador (" sum") separado en su propia variable de estado. Esa variable de estado tiene significado. La primera implementación mantiene la variable de estado como historial pasado del error; eso tiene significado, pero proporciona menos información en mi opinión.

Finalmente, hay otros problemas relacionados con la no linealidad o el análisis que a menudo te hacen elegir una implementación sobre otra (para mí siempre es el enfoque clásico para los controladores, para los filtros FIR es la transformación Z, y para los filtros IIR de 1 o 2 polos suele ser el enfoque clásico):

  • Para los controladores, siempre mantengo un integrador como una variable de estado, en lugar de muestras de errores anteriores. La razón es que los sistemas reales a menudo requieren anti-windup donde tienes que sujetar la integral para que no sea demasiado positiva o demasiado negativa. (Y si está implementando en punto fijo, debe hacer esto de todos modos, porque la condición envolvente cuando golpea el desbordamiento afectará negativamente el comportamiento de su ciclo de control)

  • Por la misma razón, también calculo siempre el integrador de una manera referida a la salida: por ejemplo, en sum += Ki*error; out = stuff + sumlugar de sum += error; out = stuff + Ki*sum. Con el segundo enfoque, si cambia la ganancia Ki, eso escala el efecto del integrador en la salida hacia arriba y hacia abajo, lo que probablemente no sea lo que desea, y el límite cambia según la ganancia. Si multiplica el error por Ki antes de la integración, sus unidades del integrador son las mismas que las unidades de la salida del bucle de control, y tiene un significado físico más obvio.

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


4

Editar :

El uso de la transformación Z facilita la combinación y simplificación de los sistemas LTI para el análisis . Por ejemplo, una serie en cascada de sistemas k 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 ciclo de retroalimentación negativa es T = G/(1 + G*H), donde H está en la ruta de retroalimentación. Una vez que tenga una función de transferencia general, puede analizar la estabilidad (ubicación de los polos) y el rendimiento (transitorios, error de estado estacionario), agregando filtros y comentarios adicionales para optimizar el diseño.

Para subsistemas de orden superior, puede dividir la función del sistema e implementarla como una serie de biquads 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 biquad de forma canónica:

sección biquad


Tu respuesta suena impresionante, pero no tengo ni idea de lo que dijiste. ¿Qué es la estabilidad de cuantificación, por ejemplo, y cómo es superior para una forma de la ecuación que la otra?
bt2

1
La función de transferencia H (z) es una función racional B (z) / A (z). Cada polinomio en z es un factor de N ceros para un sistema de enésimo orden. Los ceros de A (z), los que están en el denominador, se llaman polos (esta es la ruta de retroalimentación). Para un factor de escala constante, un sistema Linear Time Invariant (LTI) se describe por sus ceros y polos.
Eryk dom

1
Un sistema LTI de tiempo discreto es estable si todos sus polos están dentro del círculo unitario en el plano z. Pero la cuantización con precisión digital finita introduce ruido que puede hacer que un sistema sea marginalmente estable, inestable o se convierta en inestabilidad con el tiempo. Al factorizar H (z) en un producto biquadratics (biquads), este tipo de error se minimiza.
Eryk dom

2
Una biquad es la partición mínima preferida ya que los ceros de un polinomio con coeficientes reales son reales o en pares de conjugados complejos. La biquad B (z) / A (z) es (b0 + b1z ^ -1 + b2z ^ -2) / (a0 + a1z ^ -1 + a2z ^ -2).
Eryk dom

Agregué y luego eliminé un ejemplo para el ruido de cuantificación que compara un cuadrático en cascada con un poli directo de 4to orden. Pero fue demasiado. Necesito dormir un poco. Lo siento, tyblu.
Eryk dom

3

La parte difícil de un controlador PID no es el código en sí. Los problemas realmente surgen cuando se trata de optimizar el controlador. Claro que puede hacer prueba y error y obtener 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 controlador muy bueno en lugar de uno decente. En este caso, la transformación Z es mucho más fácil de analizar.

Otra cosa para pensar es la estabilidad de un sistema. Puede estar lidiando con un sistema que es bastante difícil de volverse inestable, o incluso si lo hace, no hace daño a 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 1 nota final. Al analizar un sistema en su conjunto, deberá obtener ecuaciones para todos los componentes de su sistema. Claro que puede obtenerlo del PID sin un doctorado, pero si ya ha estado trabajando con él en el método de transformación Z, hay mucho menos trabajo de ida y vuelta que debe hacer.

Ahora, como preferencia personal, siempre uso el PID sin un método de doctorado. Esto se debe a que solo estoy usando microcontroladores con sistemas que no dependen mucho del controlador.


2

Hay varios puntos por los que la forma de transformación Z tiene mayor utilidad.

Pregúntele a cualquiera que promueva el enfoque basado en el tiempo / simple / sans-PHD cuál es el conjunto de su término Kd. Es probable que respondan 'cero' y que digan que D es inestable (sin un filtro de paso bajo). Antes de aprender cómo se combina todo esto, habría dicho y dije esas cosas.

Sintonizar Kd es difícil en el dominio del tiempo. Cuando puede ver la función de transferencia (la transformación Z del subsistema PID) puede ver fácilmente cuán estable es. También puede ver fácilmente cómo el término D afecta al controlador en relación con los otros parámetros. Si su parámetro Kd contribuye 0.00001 a los coeficientes del polinomio z pero su término Ki está poniendo en 10.5 entonces su término D es demasiado pequeño para tener un efecto real en el sistema. También puede ver el equilibrio entre los términos Kp y Ki.

Los DSP están diseñados para calcular ecuaciones de diferencias finitas (FDE). Tienen códigos de operación que multiplicarán un coeficiente, sumarán un acumulador y cambiarán un valor en un búfer en un ciclo de instrucción. Esto explota la naturaleza paralela de los FDE. Si la máquina carece de este código de operación ... no es un DSP. Los PowerPC (MPC) integrados tienen un periférico dedicado al cálculo de los FDE (lo llaman la unidad de diezmado). Los DSP están diseñados para calcular los FDE porque es trivial transformar una función de transferencia en un FDE. 16 bits no es suficiente rango dinámico para cuantificar fácilmente los coeficientes. Muchos de los primeros DSP en realidad tenían palabras de 24 bits por este motivo (creo que las palabras de 32 bits son comunes hoy en día).

IIRC, la llamada transformación bilineal toma una función de transferencia (una transformación z de un controlador de dominio de tiempo) y la convierte en un FDE. Demostrar que es 'difícil', usarlo para obtener un resultado es trivial: solo necesita la forma expandida (multiplicar todo) y los coeficientes polinómicos son los coeficientes FDE.

Un controlador PI no es un gran enfoque: un mejor enfoque es construir un modelo de cómo se comporta su sistema y usar PID para la corrección de errores. El modelo debe ser simple y estar basado en la física básica de lo que está haciendo. Este es el avance hacia el bloque de control. Un bloque PID luego corrige el error utilizando la retroalimentación del sistema bajo control.

Si utiliza valores normalizados, [-1 .. 1] o [0 ... 1], para el punto de referencia (referencia), retroalimentación y avance, puede implementar un algoritmo de 2 polos y 2 ceros en conjunto DSP optimizado y puede usarlo para implementar cualquier filtro de segundo orden que incluya PID y el filtro de paso bajo (o paso alto) más básico. Esta es la razón por la cual los DSP tienen códigos de operación que presumen valores normalizados, por ejemplo, uno que generará una estimación de la raíz cuadrada inversa para el rango (0..1) Puede poner dos filtros 2p2z en serie y crear un filtro 4p4z, esto permite puede aprovechar su código DSP de 2p2z para, por ejemplo, implementar un filtro Butterworth de paso bajo de 4 toques.

La mayoría de las implementaciones en el dominio del tiempo incorporan el término dt en los parámetros PID (Kp / Ki / Kd). La mayoría de las implementaciones de dominio z no lo hacen. dt se coloca en las ecuaciones que toman Kp, Ki y Kd y las convierten en coeficientes [] & b [] para que su calibración (ajuste) del controlador PID sea ahora independiente de la velocidad de control. Puede hacerlo funcionar diez veces más rápido, aumentar las matemáticas a [] & b [] y el controlador PID tendrá un rendimiento constante.

Un resultado natural del uso de FDE es que el algoritmo está implícitamente "sin fallas". Puede cambiar las ganancias (Kp / Ki / Kd) sobre la marcha mientras se ejecuta y se comporta bien; dependiendo de la implementación del dominio del tiempo, esto puede ser malo.

Por lo general, se dedica un gran esfuerzo a los controladores PID de dominio de tiempo para evitar la liquidación integral. Hay un truco simple con el formulario FDE que hace que el PID se comporte bien, puede fijar su valor en el búfer de historial. No he hecho los cálculos para ver cómo esto afecta el comportamiento del filtro (con respecto a los parámetros Kp / Ki / Kd), pero el resultado empírico es que es 'suave'. Esto está explotando la naturaleza 'sin fallas' de la forma FDE. Un modelo de retroalimentación contribuye a evitar la liquidación integral y el uso del término D ayuda a equilibrar el término I. PID realmente no funciona según lo previsto con una ganancia D. (El cambio de los puntos de ajuste es otra característica clave para evitar la liquidación excesiva).

Por último, las transformaciones Z son un tema de pregrado no "Ph.D." Debería haber aprendido todo sobre ellos en Análisis complejo. Aquí es donde va la universidad, el instructor que tiene y el esfuerzo que pone en aprender las matemáticas y aprender a usar las herramientas disponibles puede marcar una diferencia significativa en su capacidad de desempeño en la industria. (Mi clase de Análisis complejo fue horrible).

La herramienta de la industria de facto es Simulink (que carece de un sistema de álgebra computacional, CAS, por lo que necesita otra herramienta para producir ecuaciones generales). MathCAD o wxMaxima son solucionadores simbólicos que puedes usar en una PC y aprendí cómo hacerlo usando una calculadora TI-92. Creo que la TI-89 también tiene un sistema CAS.

Puede buscar ecuaciones de dominio z o dominio laplace en wikipedia para PID y filtros de paso bajo. Hay un paso aquí que no entiendo, creo que necesita la forma de dominio de tiempo discreto del controlador PID y luego necesita tomar la transformación z del mismo. La transformada de Laplace debería ser muy similar a la transformada z y se da como PID {s} = Kp + Ki / s + Kd · s. Creo que la transformada z explicaría mejor los Dt en las siguientes ecuaciones. Dt es delta-t [ime], uso Dt para no confundir esta constante con una derivada 'dt'.

b[0] = Kp + (Ki*Dt/2) + (Kd/Dt)
b[1] = (Ki*Dt/2) - Kp - (2*Kd/Dt)
b[2] = Kd/Dt

a[1] = -1
a[2] = 0

Y este es el FDE 2p2z:

y[n] = b[0]·x[n] + b[1]·x[n-1] + b[2]·x[n-2] - a[1]·y[n-1] - a[2]·y[n-2]

Los DSP normalmente solo tenían una multiplicación y suma (no una multiplicación y resta), por lo que puede ver la negación en los coeficientes a []. Agregue más b para más polos, agregue más a para más ceros.


1

Es mejor utilizar el método de transformación Z en general, porque al hacerlo, conserva el comportamiento exacto del sistema analógico equivalente. Existen métodos de ajuste bien conocidos, como Ziegler-Nichols, que funcionan en el dominio analógico tal como se publica. Si usa el método de transformación Z, tiene una expectativa matemáticamente rigurosa de que su controlador resultante hará lo mismo para los mismos valores de las ganancias P, I y D, que lo hará en el dominio analógico, dadas esas ganancias. Además, puede dibujar un lugar de raíz discreto para el sistema y predecir la estabilidad para un conjunto dado de ganancias, lo que no puede hacer si crea un controlador ad hoc directamente en el código.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.