Eu não entendo parte integrante do controlador PID. Vamos assumir esse pseudocódigo da 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 é definido como zero no início. E então, no loop, ele integra o erro ao longo do tempo. Quando eu faço uma alteração (positiva) no ponto de ajuste, o erro se torna positivo e a integral "come" os valores ao longo do tempo (desde o início). Mas o que eu não entendo é que, quando o erro estabilizar de volta a zero, a parte integral ainda terá algum valor (erros integrados ao longo do tempo) e ainda contribuirá para o valor de saída do controlador, mas não deve, porque se o erro for zero, a saída do PID também deve ser zero, certo?
Alguém pode me explicar isso, por favor?
Imagine que você configurou um controlador PID em seu próprio braço, para poder segurar uma xícara de café bem na sua frente.
Parece que a parte do código em que você está preso é que o sistema deve, de alguma forma, medir o peso do café, e uma maneira de fazer isso é acumular o erro de posição ao longo do tempo. A maioria dos controladores PID possui um termo adicional para especificar um limite razoável no tamanho que o elemento integral pode ter.
fonte
Aqui está um vídeo que fornece uma compreensão "intuitiva" dos loops PID. Tem uma explicação do termo integral, bem como dos termos proporcional e derivativo.
https://www.youtube.com/watch?v=l03SioQ9ySg
Há um vídeo de acompanhamento que explica a matemática e mostra como derivar o código da fórmula geral.
https://www.youtube.com/watch?v=sDd4VOpOnnA
fonte