Non capisco la parte integrale del controller PID. Supponiamo che questo pseudocodice 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
Integrale è impostato su zero all'inizio. E poi nel ciclo sta integrando l'errore nel tempo. Quando apporto una modifica (positiva) al setpoint, l'errore diventerà positivo e integralmente "mangeranno" i valori nel tempo (dall'inizio). Ma ciò che non capisco è che quando l'errore si stabilizza nuovamente a zero, la parte integrale avrà ancora un certo valore (errori integrati nel tempo) e contribuirà comunque al valore di uscita del controller, ma non dovrebbe, perché se l'errore è zero, anche l'output del PID dovrebbe essere zero, giusto?
Qualcuno può spiegarmi che per favore?