Я не понимаю неотъемлемую часть ПИД-регулятора. Предположим, этот псевдокод из Википедии:
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
Интеграл изначально равен нулю. А затем в цикле он интегрирует ошибку с течением времени. Когда я делаю (положительное) изменение измеренного значения или заданного значения, ошибка становится положительной, а интеграл «съедает» значения с течением времени (с самого начала). Но чего я не понимаю, так это того, что когда ошибка стабилизируется до нуля, интегральная часть по-прежнему будет иметь некоторое значение (интегральные ошибки с течением времени) и все равно будет вносить вклад в выходное значение контроллера, но не должна.
Может кто-нибудь объяснить мне это, пожалуйста?