Я не розумію невід'ємну частину PID-контролера. Припустимо цей псевдокод з Вікіпедії:
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
На початку інтеграл встановлюється на нуль. А потім у циклі вона інтегрує помилку з часом. Коли я внесу (позитивну) зміну заданої точки, помилка стане позитивною і цілісна з часом «з’їсть» значення (з початку). Але я не розумію, що коли помилка стабілізується назад до нуля, невід'ємна частина все одно матиме деяке значення (інтегровані помилки з часом) і все одно сприятиме вихідному значенню контролера, але це не повинно, оскільки якщо помилка дорівнює нулю, вихід PID також повинен бути нульовим, правда?
Може хтось мені це пояснить?