La regolazione dei guadagni del controller può essere difficile, cosa generale le strategie funzionano bene per ottenere un sistema stabile che converga alla giusta soluzione?
Commenti
- Una domanda mirata a una domanda più specifica sarebbe più utile. Altrimenti, dovresti semplicemente guardare larticolo PID , con una sezione sullottimizzazione
- I ‘ ho sempre riscontrato che la sintonizzazione dei PID dipende molto dalle caratteristiche del sistema, motivo per cui ‘ non ho mai trovato sistemi di sintonizzazione automatica terribilmente utile. Vanno bene per un primo passaggio, set di parametri a basse prestazioni, ma sono lontani dallottimale e avrai lo stesso problema con qualsiasi strategia generale che non sia ottimizzata per gli aspetti meccanici, elettrici e di controllo di un dato sistema.
Risposta
Per motori piccoli, a bassa coppia con poca o nessuna trasmissione, una procedura che puoi usare per ottenere una buona sintonizzazione di base è di sondare la sua risposta a un disturbo.
Per mettere a punto un PID usa i seguenti passaggi:
- Imposta tutti i guadagni su zero.
- Aumenta il guadagno P fino a quando la risposta a un disturbo è unoscillazione costante.
- Aumenta il guadagno D fino a quando le oscillazioni scompaiono (es. è criticamente smorzato).
- Ripeti i passaggi 2 e 3 finché laumento del guadagno D non interrompe le oscillazioni.
- Imposta P e D sugli ultimi valori stabili.
- Aumenta il guadagno I fino a portarti al setpoint con il numero di oscillazioni desiderato (normalmente zero ma si può avere una risposta più rapida se non ti dispiace un paio di oscillazioni di overshoot)
Il disturbo utilizzato dipende dal meccanismo a cui è collegato il controller. Normalmente è sufficiente allontanare manualmente il meccanismo dal setpoint e lasciarlo andare. Se le oscillazioni diventano sempre più grandi, è necessario ridurre il Guadagno P.
Se si imposta un guadagno D troppo alto, il sistema inizierà a vibrare (vibrerà a una frequenza più alta rispetto alle oscillazioni del guadagno P). In tal caso, ridurre il guadagno D finché non si arresta.
Credo che questa tecnica abbia un nome. Lo metterò qui quando lo troverò.
Commenti
- Suona come Ziegler-Nichols: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
- @ Throwback1986, Questo è decisamente non Ziegler-Nichols che usa solo il guadagno P e dove I guadagni I e D vengono quindi calcolati di conseguenza dal guadagno P oscillante e dal periodo di oscillazione
- Hai ulteriori consigli per mettere a punto in modo specifico un braccio robotico che ha più articolazioni che necessitano di regolazione? Inizi dalla base e lavori verso lesterno fino alleffettore finale, o viceversa, o ha importanza?
- In un ambiente accademico o industriale vorrai un metodo di controllo più sofisticato. Per un hobbiest; la gravità ha un effetto di smorzamento, quindi sintonizza ogni giunto allangolo in cui la gravità influisce meno sui motori. Ad esempio, con il braccio rivolto verso lalto in modo che la gravità agisca sui cuscinetti e non sul motore. Lordine non ha importanza. Aggiungere un termine di compensazione della gravità feedforward al tuo controllo è probabilmente il miglioramento più semplice (usa Newton-Eulero ricorsivo per un braccio seriale) se puoi ‘ per ottenere le prestazioni che desideri.
- Lo strumento pidtuner.com mi ha fornito risultati migliori rispetto al metodo Ziegler-Nichols, che presenta diversi inconvenienti noti; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…
Answer
Un metodo sperimentale simile alla risposta di hauptmech che mi è stato insegnato al college:
- Imposta tutti i guadagni su 0.
- Aumenta Kd finché il sistema non oscilla.
- Riduci K d di un fattore 2-4.
- Imposta Kp su circa l1% di K d .
- Aumenta Kp finché non iniziano le oscillazioni.
- Diminuisci Kp di un fattore 2-4.
- Imposta Ki su circa 1% di Kp .
- Aumenta Ki finché non iniziano le oscillazioni.
- Diminuisci Ki di un fattore 2-4.
Il Il metodo Ziegler-Nichols è più preciso se puoi ottenere un numero preciso per il periodo di oscillazione. Generalmente causa oscillazioni utilizzando il “cla ssic PID “sono dati, quindi non è sempre ottimale.
Per le regole generali sulleffetto di ciascun termine su tempo di salita, overshoot, tempo di assestamento, errore di stato stazionario e stabilità, vedere la Tabella 1 di “PID Control System Analysis and Design” , di Li, Ang e Chong in IEEE Control Systems Magazine.
Commenti
- Prima Kd? Ho sempre pensato che fosse meglio iniziare con Kp.
- ‘ trascrivo da vecchie diapositive di lezioni, se ‘ è un buon motivo per non farlo in questo modo, ‘ sarei curioso di ascoltarlo.
- Questo ‘ è lalgoritmo che propongo per la regolazione ” seat of the pants “. ‘ ti porterà il più vicino possibile senza modellare il sistema o misurarne la risposta. (Modellare e / o misurare è lunica strada da percorrere se hai davvero bisogno della giusta messa a punto).
- La messa a punto di Kd prima non ‘ non ha alcun senso per me , come in ogni PID I ‘ implementato il segno di Kd è negativo. ‘ viene utilizzato per ridurre il segnale di controllo quando si verificano cambiamenti molto grandi negli errori, in sostanza smorzando il sistema. Se hai solo Kd, il sistema si muoverà nella direzione opposta, aumentando lerrore e aggravando il problema. Se Kd è positivo, ogni volta che si verifica un grande cambiamento nellerrore nella giusta direzione, ‘ lo farai cambiare ancora più velocemente e supererai il tuo obiettivo.
- In realtà, la regolazione prima del guadagno D ha un senso, ma ‘ m presumo che ” aumenti ” Guadagno D significa aumentare il valore assoluto e ‘ sta solo aumentando lo smorzamento. Il problema più grande con il guadagno D è che amplifica il rumore ad alta frequenza ed è ‘ vedere quelleffetto senza il guadagno P. Quindi, ‘ stai essenzialmente iniziando a cercare i guadagni ai quali smette di comportarsi come smorzamento e inizia ad amplificare il rumore e i segnali di errore ritardati. ‘ presumo che per il passaggio 2, devi colpire la tua pianta per vedere se oscilla.
Rispondi
Embedded.com ha spostato di nuovo il mio articolo, ma qui è dove si trova ora. Questo mostra sia come scrivere un ciclo PID (capire come farlo in qualcosa di diverso dal punto mobile è lasciato come esercizio al lettore) sia come ottimizzarlo.
PID senza un dottorato di ricerca
Il modo migliore dipende molto dalle tue capacità. Il modo per ottenere la migliore messa a punto , supponendo che tu sia un esperto di sistemi di controllo, di solito è misurare la risposta della pianta (“pianta” == “la cosa che” stai controllando “), quindi, a seconda di come hai eseguito le misurazioni, estrai un modello della pianta e progettalo, oppure progetta direttamente sulle misurazioni.
Per alcune piante difficili scoprirai che non potrai mai rendere soddisfacente misurazioni, nel qual caso devi andare da soli modelli. Quelli sono rari, ma soddisfacenti quando li fai funzionare.
Risposta
Sebastian Thrun ha presentato un semplice algoritmo per la regolazione del PID nel suo Lezione “Come programmare unauto robotica”. Si chiama “twiddle”, lo descrive qui .
Twiddle è molto incline a trovare i minimi locali – questo significa che tu potrebbe trovare un insieme di tre costanti che vanno bene, ma non ottimali per la situazione. Il problema della regolazione delle costanti PID è un sottoinsieme di un problema di ricerca più generale per trovare determinati parametri per massimizzare lutilità ( in questo caso, riducendo al minimo lerrore dellalgoritmo PID). Puoi cercare altre soluzioni generali a questo problema, come scalate in salita, ricottura simulata, algoritmi genetici, ecc. che potrebbero finire per trovare soluzioni più ottimali.
Risposta
In contrasto con le altre due risposte, direi che un buon modo manuale per sintonizzare un PID è ignorare il Kd. Quindi inizia da 0 e aumenta Kp fino a raggiungere lobiettivo, quindi aumenta Ki per eliminare lerrore di stato stazionario.
Kd può confondere il problema poiché risponde male al rumore, quindi inizi ad aggiungere filtri sul tuo ingresso analogico e poi chiediti cosa fa oltre a rallentare il tuo controllo e rendere lintera cosa più difficile da risolvere …
Unaltra cosa destinata a confondermi è se lequazione PID è nella forma standard o in una forma indipendente (parallela in wikipedia). Leffetto del Ki sembra invertirsi quando la forma è nel modo sbagliato di ciò che pensi che sia. Entrambi i tipi vengono utilizzati nellautomazione, a volte con la possibilità di passare da uno allaltro.
Risposta
Modellazione del sistema
Ovviamente lottimizzazione sperimentale può essere eseguita come menzionato nelle altre risposte, ma se sei in grado di definire un modello dinamico ragionevole per qualsiasi cosa tu voglia controllare e sei in grado di identifica i suoi parametri , dovresti essere in grado di progettare il tuo controller in base a criteri ben definiti come overshoot , tempo di salita , tempo di assestamento , costante -state e così via.
Ci sono anche strumenti in MATLAB che sono in grado di regolare il tuo controller per ottimizzare per una combinazione di questi criteri, il che lo rende ancora migliore da utilizzare.
Conosci il tuo controller
Impara cosa ogni parametro nella Anche il controller PID è molto utile. Tutti gli algoritmi sperimentali si basano in qualche modo su questo tipo di conoscenza. Se non solo segui le istruzioni, ma sei in grado di provare questa sensazione da solo, potresti trovare più facile regolare manualmente il controller.
Problemi del mondo reale
Esiste la possibilità che una di queste cose, tra le altre, ti venga incontro durante la messa a punto del controller: windup , frequenza di campionamento inadeguata , saturazione .
Conclusione
Alla fine, tutto dipende da cosa puoi effettivamente fare con il tuo sistema per avere una certa conoscenza di come funziona e che tipo di sperimentazione può essere fatta. La cosa migliore è effettivamente imparare di più sui controller PID e sulla teoria del controllo in generale, IMO, ma io “sono di parte 🙂
Commenti
- I don ‘ t capire perché le persone continuano a suggerire euristiche per la messa a punto del PID mentre oggigiorno ci vengono forniti molti strumenti automatici per lidentificazione dellimpianto e la progettazione del controller che non ‘ t richiede un background teorico approfondito. Allora pollice su per questa risposta.
Risposta
Cercherò di espandere un po la mia esperienza per coloro che potrebbero essere interessati. Penso che il problema sia che abbiamo molta teoria del controllo che è alquanto inaccessibile (e talvolta non utile) e poi abbiamo regole pratiche che fanno ipotesi sui sistemi che sono spesso imprecise.
Stabilità
Parliamo prima del motivo per cui i circuiti di controllo diventano instabili. Per questa discussione assumerò un sistema lineare . Informalmente, questo significa che se il segnale di controllo è unonda sinusoidale a una determinata frequenza, luscita osservata è alla stessa frequenza e se si modifica lampiezza del sistema di controllo, luscita risponde allo stesso rapporto. Questa ipotesi è una buona approssimazione per molti sistemi del mondo reale e ci consente di guardare le diverse frequenze in isolamento.
Se guardi il percorso di controllo hai un set-point, il tuo controller PID, il tuo sistema (aka “Pianta”), quindi il tuo sensore. Immagina un setpoint fisso e unonda sinusoidale dal tuo sensore (questo è uguale a un disturbo del mondo reale al sensore, retroazionato). In un sistema instabile il feedback fa sì che il circuito di controllo amplifichi lerrore anziché ridurlo in modo tale che con laumentare del tempo la tua ampiezza aumenta. Il motivo per cui ciò accade è dovuto ad un ritardo, o per questa particolare frequenza uno sfasamento tra lingresso e luscita. Per una data frequenza possiamo guardare lo spostamento ad anello aperto (cioè nessun feedback) e lampiezza delloutput e quando disegniamo tutti quelli su un grafico otteniamo qualcosa come un Bode Plot . Se abbiamo una situazione in questo grafico a ciclo aperto in cui lerrore continua a essere amplificato, allora abbiamo un sistema instabile. Se il ritardo è inferiore alla metà della lunghezza donda o il guadagno è inferiore a x1, il sistema sarà stabile . In pratica vogliamo un certo margine da quel punto (margine di guadagno e margine di fase) motivo per cui vedrai questo “arretramento” in molti dei metodi manuali / euristici.
Il problema principale con quei manuali metodi è che “stai volando alla cieca” e hai praticamente la certezza di avere un sistema di controllo scadente.
Tieni anche presente che il significato P, I e D è correlato a ciò che il tuo sensore sta misurando e quale controllo stai applicando. Un errore comune nei controller costruiti in casa è che le persone pensino di “applicare P” quando in realtà non lo sono. I controllori motore hanno spesso un anello di posizione, che corre su un anello di velocità che scorre su un anello di coppia. (A a cascata )
OK, ma come ci aiuta?
Il primo punto che vorrei sottolineare è che se stai costruendo il tuo controller PID dovresti anche costruire un modo per misurare il circuito aperto risposta. Esegui uno sweep di frequenza allingresso del controller e misura luscita del sensore con il feedback scollegato. Quindi puoi disegnare il diagramma di Bode ad anello aperto e vedere perché il tuo sistema è stabile ed essere in grado di fare trading È anche utile misurare la risposta del loop chiuso e puoi farlo con qualsiasi sistema eseguendo uno sweep di frequenza del tuo setpoint mentre il loop è chiuso. Entrambi non sono così difficili e non richiedono molta conoscenza teorica.
Se “stai semplicemente modificando i controlli senza alcuna comprensione di cosa sta succedendo sotto il cofano” non sarai in grado per ottimizzare il tuo sistema. Costruire un po di intuizione su questi sistemi non è così difficile. Per esempio. il guadagno proporzionale non ha effetto sulla fase ma aumenta semplicemente il guadagno ad anello aperto su tutte le frequenze. Quindi quello che stai facendo quando aumenti il guadagno proporzionale in tutti quei metodi di sintonizzazione manuale è trovare la frequenza dove la fase va a -180. Vedere questo per avere unidea più chiara dellimpatto dei vari controlli sulla risposta in frequenza.
Molto spesso ottenere le migliori prestazioni a ciclo chiuso implica modificando il sistema e non solo il controller guadagna. Quello che vuoi è rendere il sistema il più “rigido” possibile. Ciò ti consentirà di aumentare i parametri di controllo e ottenere la migliore larghezza di banda a circuito 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 lintegratore il “resto”. Non credo che tu abbia bisogno di un termine in Re. Avere un filtro passa basso e un filtro notch aiuta molto in situazioni in cui potresti avere qualche risonanza meccanica ma impostarli senza un diagramma di Bode è molto difficile (la frequenza di oscillazione che osservi ad anello chiuso può essere diverso da quello ad anello aperto).
Se la sicurezza è un problema (motori molto potenti o un sistema che potrebbe essere distrutto dal motore che va fuori controllo) è necessario inserire alcuni limiti prima di iniziare lottimizzazione (ad es. limite di corrente, errore di posizione massimo) per proteggere il sistema. Quindi è necessario avere una sorta di sensazione per la gamma dei parametri. Se il feedback ha 40 conteggi per rotazione o 4000 conteggi per rotazione, i parametri sarà 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 aumentare da lì iniziando con P e poi I (anche se stai volando alla cieca). Fare marcia indietro crea questo margine di stabilità.
Oltre il circuito chiuso
Circuito chiuso tenta di eliminare lerrore dal sistema. Avrà sempre prestazioni alquanto limitate. Quello che vuoi fare è ridurre al minimo lerrore visualizzato dal tuo controller a circuito chiuso e un modo per farlo è attraverso una tecnica chiamata feed avanti . In feed-forward si aggira il controller e si invia un comando direttamente al sistema. Un esempio di ciò sarebbe il feed-forward dellaccelerazione. Se si sa che la costante di coppia del motore è “re” e si conosce la load puoi praticamente dire quanta corrente hai bisogno di guidare per ottenere una certa accelerazione del carico: prendi semplicemente il comando input acceleration, moltiplicalo per una costante e aggiungilo al comando drive 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 errori deve eliminare il tuo loop e migliori saranno le prestazioni del tuo sistema. Fa una grande differenza in pratica.
Commenti
- ” Nella mia esperienza nelle applicazioni di controllo del motore il guadagno proporzionale è quello che dovrebbe essere facendo la maggior parte del ” lavoro ” e lintegratore il ” rest “. Non ‘ penso che tu abbia bisogno di un termine D. ” Concordo con quello per applicazioni tipiche di controllo motore. La P fa il lavoro principale e io compenso derive / errori a lungo termine. Ma qui, il quadricottero sarà soggetto a molte turbolenze esterne, quindi il termine D è importante per ottenere una risposta rapida. per il termine I, a meno che il quad non sia in modalità di navigazione autonoma, non è così cruciale.
- @ dm76: La maggior parte della mia esperienza è con il controllo motorio, e faccio questo disclaimer 😉 La mia intuizione però dice che ‘ cè ancora spazio per I nellapplicazione quadricottero e penso che se P è molto alto potrebbe gestire disturbi esterni (proprio come fa nel controllo motore). Avrei davvero bisogno di dare unocchiata più da vicino a quei sistemi per dire qualcosa di definito sui quadricotteri …Penso che molto di quello che dico qui si applichi (in particolare fai la tua sintonizzazione nel dominio della frequenza e hai la risposta ad anello aperto del sistema).
- @ dm76: E davvero quelli ” regola pratica ” La regolazione del PID si traduce in prestazioni molto mediocri nei motori e presumibilmente le stesse nei quadricotteri. A volte un filtro notch ben posizionato può fare una differenza di ordine di grandezza …
Risposta
Ziegler-Nichols è un semplice metodo manuale. Esistono anche metodi più robusti – questi di solito si basano su soluzioni matematiche (analitica, ottimizzazione iterativa, ecc.)
Oltre a ciò, google “PID di auto-regolazione” per alcune tecniche automatizzate. La mia preferita è lapplicazione delle reti neurali alla sintonizzazione PID.
Risposta
Se vuoi avere un coefficiente PID accurato:
- Ottieni i dati statistici dellattuatore (ad esempio raccolta di tensioni di ingresso + impulsi encoder in una const frequentemente (
0.01sec
) tempo per20secs
come matrice3
x2000
) - Ottieni la funzione di trasferimento (TF) del tuo attuatore (utilizzando Ident toolbox in MATLAB).
- Infine, usa PIDTool in MATLAB e carica la tua funzione di trasformazione.
O in modo semplice e veloce:
Esiste un approccio più rapido chiamato Ziegler – Nichols :