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.