Controllo PID: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ensahequ (discussione | contributi)
vedi precedente modifica di anonimo. visto che più di una volta si è detto che non va bene, meglio toglierlo
Ensahequ (discussione | contributi)
facciamo così va...
Etichetta: Annulla
Riga 90:
|<math>{P_u}/8</math>
|}
 
== Pseudocodice ==
Questa è una semplice implementazione pratica di un controllo PID, attraverso semplificazioni ingegneristiche (dato che normalmente, se la funzione da controllare fosse conosciuta matematicamente, non sarebbe necessario controllarla dinamicamente). Questo pseudocodice somma tre componenti per capire quanto manovrare l'output, in base all'errore calcolato volta per volta. <br>
La parte proporzionale è direttamente proporzionale all'errore. <br>
La parte integrativa somma nel tempo gli errori volta per volta; questo riporta nel lungo periodo la variabile di uscita sui binari corretti. Purtroppo questo non impedisce un'oscillazione una volta raggiunto il valore desiderato. <br>
La parte derivativa limita le oscillazioni della variabile di output, rendendo le variazioni di "actual position" più dolci.<br>
Questo pseudocodice funziona di per sé, ma c'è da valutare ogni quanto campionare e quindi eseguire questi calcoli, e soprattutto i valori delle 3 costanti K. Inoltre non è presente una funzione anti-windup.
 
<syntaxhighlight lang="text">
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
</syntaxhighlight>
 
== Note ==