Non capisco la parte integrale del controller PID. Supponiamo questo pseudocodice da Wikipedia:Non capisco Parte integrante del controller 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
L'integrale è impostato su zero all'inizio. E poi nel ciclo sta integrando l'errore nel tempo. Quando eseguo un cambiamento (positivo) nel valore misurato o nel setpoint, l'errore diventa positivo e l'integrale "mangia" i valori nel tempo (dall'inizio). Ma quello 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 continuerà a contribuire al valore di uscita del controller, ma non dovrebbe.
Qualcuno può spiegarmi che per favore?
per chiunque fosse interessato, ho implementato questo algoritmo esatto per controllare la velocità del loop. http://stackoverflow.com/questions/38377820/throttling-await-for-inbound-messages – Jim