No entiendo parte integral del controlador PID. Asumamos este pseudocódigo de Wikipedia:
previous_error = 0
integral = 0
start:
error = setpoint - measured_value
integral = integral + error*dt
derivative = (error - previous_error)/dt
output = Kp*error + Ki*integral + Kd*derivative
previous_error = error
wait(dt)
goto start
Integral se establece en cero al principio. Y luego en el ciclo está integrando el error con el tiempo. Cuando realizo un cambio (positivo) en el punto de ajuste, el error se volverá positivo y la integral "comerá" los valores a lo largo del tiempo (desde el principio). Pero lo que no entiendo es que, cuando el error se estabiliza de nuevo a cero, la parte integral seguirá teniendo algún valor (errores integrados a lo largo del tiempo) y seguirá contribuyendo al valor de salida del controlador, pero no debería, porque si el error es cero, la salida de PID también debería ser cero, ¿verdad?
¿Alguien puede explicarme eso por favor?
Imagine que configura un controlador PID en su propio brazo, para poder sostener una taza de café directamente frente a usted.
Parece que la parte del código en la que está atascado es que el sistema debe medir de alguna manera el peso del café, y una forma de hacerlo es acumular el error de posición con el tiempo. La mayoría de los controladores PID tienen un término adicional para especificar un límite razonable en el tamaño que puede tener el elemento integral.
fuente
Aquí hay un video que brinda una comprensión "intuitiva" de los bucles PID. Tiene una explicación del término integral, así como los términos proporcionales y derivados.
https://www.youtube.com/watch?v=l03SioQ9ySg
Hay un video de seguimiento que explica las matemáticas y muestra cómo derivar el código de la fórmula general.
https://www.youtube.com/watch?v=sDd4VOpOnnA
fuente