Quali sono le buone strategie per sintonizzare gli anelli PID?

Cercherò di espandere un po’ dalla mia esperienza per coloro che possono essere interessati. Penso che il problema sia che abbiamo un sacco di teoria del controllo che è un po’ inaccessibile (e a volte non utile) e poi abbiamo regole empiriche che fanno supposizioni sui sistemi che sono spesso imprecise.

Stabilità

Parliamo prima del perché i loop di controllo diventano instabili. Per questa discussione assumerò un sistema lineare. Informalmente questo significa che se il vostro segnale di controllo è un’onda sinusoidale ad una data frequenza, allora l’uscita osservata è alla stessa frequenza e se cambiate l’ampiezza del vostro sistema di controllo l’uscita risponde allo stesso rapporto. Questa assunzione è una buona approssimazione per molti sistemi del mondo reale e ci permette di guardare le diverse frequenze in modo isolato.

Se si guarda al percorso di controllo si ha un set-point, il controller PID, il sistema (alias “Impianto”), e poi il sensore. Immaginate un set-point fisso e un’onda sinusoidale dal vostro sensore (questo è uguale a un disturbo del mondo reale al sensore, alimentato di ritorno). In un sistema instabile, la vostra retroazione fa sì che l’anello di controllo amplifichi l’errore piuttosto che ridurlo, così che all’aumentare del tempo aumenta la vostra ampiezza. Il motivo per cui questo accade è dovuto a un ritardo, o per questa particolare frequenza a uno spostamento di fase tra l’ingresso e l’uscita. Per una data frequenza possiamo guardare lo spostamento ad anello aperto (cioè senza feedback) e l’ampiezza dell’uscita e quando disegniamo tutto questo su un grafico otteniamo qualcosa come un grafico di Bode. Se abbiamo una situazione in questo grafico ad anello aperto in cui l’errore continua ad essere amplificato, allora abbiamo un sistema instabile. Se il ritardo è inferiore a 1/2 della lunghezza d’onda o il guadagno è inferiore a x1 il sistema sarà stabile. In pratica vogliamo un certo margine da quel punto (margine di guadagno e di fase) che è il motivo per cui vedrete questo “backing off” in molti dei metodi manuali/heuristici.

Il problema principale con questi metodi manuali è che state volando alla cieca e siete praticamente garantiti per ottenere un sistema di controllo scadente.

Tenete anche a mente che il significato P, I e D è legato a ciò che il vostro sensore sta misurando e quale controllo state applicando. Un errore comune nei controllori costruiti in casa è che le persone pensano di applicare P quando in realtà non è così. I controllori del motore hanno spesso un loop di posizione, in esecuzione su un loop di velocità in esecuzione su un loop di coppia. (Una cascata)

OK ma questo come ci aiuta?

Il primo punto che vorrei fare è che se stai costruendo il tuo controller PID dovresti anche costruire un modo per misurare la risposta ad anello aperto. Fate uno sweep di frequenza all’ingresso del vostro controllore e misurate l’uscita del sensore con il feedback scollegato. Poi puoi disegnare il diagramma di Bode ad anello aperto e vedere perché il tuo sistema è stabile ed essere in grado di scambiare i vari controlli. È anche utile misurare la risposta ad anello chiuso e potete farlo con qualsiasi sistema facendo uno sweep di frequenza del vostro set-point mentre l’anello è chiuso. Entrambe queste cose non sono così difficili e non richiedono molte conoscenze teoriche.

Se stai semplicemente modificando i controlli senza alcuna comprensione di ciò che sta succedendo sotto il cofano non sarai in grado di ottimizzare il tuo sistema. Costruire qualche intuizione su questi sistemi non è così difficile. Per esempio, il guadagno proporzionale non ha effetto sulla fase ma semplicemente aumenta il guadagno ad anello aperto su tutte le frequenze. Quindi quello che state facendo quando aumentate il guadagno proporzionale in tutti quei metodi di regolazione manuale è trovare la frequenza dove la fase va a -180. Guarda questo per farti un’idea dell’impatto dei vari controlli sulla tua risposta in frequenza.

Spesso per ottenere le migliori prestazioni ad anello chiuso bisogna modificare il sistema e non solo i guadagni del controller. Quello che volete è rendere il sistema il più “rigido” possibile. Questo vi permetterà di aumentare i parametri di controllo e di ottenere la migliore larghezza di banda ad anello aperto e chiuso. Nella mia esperienza nelle applicazioni di controllo del motore, il guadagno proporzionale è quello che dovrebbe fare la maggior parte del “lavoro” e l’integratore il “resto”. Non credo proprio che tu abbia bisogno di un termine D. Avere un filtro passa basso e un filtro notch aiuta molto in situazioni in cui si può avere qualche risonanza meccanica, ma impostarli senza un diagramma di Bode è molto difficile (la frequenza di oscillazione che si osserva in anello chiuso può essere diversa da quella in anello aperto).

Se la sicurezza è una preoccupazione (motori molto potenti o un sistema che potrebbe essere distrutto dal motore che va fuori controllo) è necessario inserire alcuni limiti prima di iniziare la messa a punto (ad esempio limite di corrente, errore massimo di posizione) per proteggere il sistema. Poi è necessario ottenere una sorta di sensazione per la gamma dei parametri. Se il tuo feedback ha 40 conteggi per rotazione o 4000 conteggi per rotazione i tuoi parametri saranno un fattore di 100 per un dato sistema. Il mio approccio sarebbe quello di trovare prima un intervallo in cui hai una scarsa controllabilità e poi salire da lì iniziando con P e poi I (anche se ancora una volta stai volando alla cieca). L’arretramento crea questo margine di stabilità.

Oltre l’anello chiuso

L’anello chiuso cerca di togliere l’errore dal sistema. Avrà sempre un rendimento un po’ limitato. Quello che volete fare è minimizzare l’errore che il vostro controllore ad anello chiuso vede e un modo per farlo è attraverso una tecnica chiamata feed forward. Nel feed-forward si aggira il controllore e si trasmette un comando direttamente al sistema. Un esempio di questo sarebbe il feed-forward dell’accelerazione. Se si conosce la costante di coppia del motore e si conosce il carico, si può dire più o meno quanta corrente è necessario guidare per ottenere una certa accelerazione del carico. Si prende semplicemente l’accelerazione di ingresso del comando, la si moltiplica per una costante e la si aggiunge al comando di azionamento del controller. Fondamentalmente stai facendo quello che ci vorrebbe per guidare il sistema se non ci fosse un controller e più vicino puoi ottenere meno errore il tuo loop deve togliere e meglio il tuo sistema funzionerà. Fa una differenza enorme nella pratica.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *