Controllore PID
Introduzione
I tre termini del controllore
Le caratteristiche dei controllori P, I e D
Esempio
Risposta a Ciclo Aperto
Controllore ad azione Proporzionale
Controllore ad azione Proporzionale e Derivativa
Controllore ad azione Proporzionale ed Integrale
Controllore ad azione Proporzionale, Integrale e Derivativa
Punti principali per la costruzione di un controllore PID
I comandi Matlab usati in questa sezione del corso sono: step, cloop.
Nota: I comandi Matlab del Control Systems Toolbox sono evidenziati in rosso.
Questa sezione mostrerà le caratteristiche del controllore ad azione Proporzionale (P), Integrale (I) e Derivativo (D), e come usarlo per ottenere la risposta desiderata. Consideriamo il seguente Sistema a retroazione unitaria:
P(s): Rappresenta il sistema da controllare
G(s): Blocco di eccitazione del Sistema, costruito per controllare il sistema complessivo.
La funzione di trasferimento di un controllore PID si presenta sotto questa forma generale:
Prima analizziamo come lavora un controllore PID in un sistema a ciclo chiuso usando lo schema visto sopra. La variabile (e) rappresenta l'errore tra l'uscita desiderata (R) e quella del sistema (Y); questo segnale è l'ingresso del controllore PID, il quale ne calcola sia la derivata che l'integrale. Il segnale (u) all'uscita del controllore è dato dalla somma dei tre termini: Proporzionale, dato dal prodotto dell'errore con il guadagno "Kp"; Integrale, prodotto del corrispondente guadagno "Ki" con l'integrale di "e"; Derivativo, dato da Kd per la derivata di "e".
Il segnale (u) viene inviato al sistema da controllare e quindi si ottiene una nuova uscita (Y). Questa nuova uscita (Y) viene di nuovo confronta con l'ingresso (R) e all'errore che ne deriva viene applicato il controllore PID e il processo continua con questo ciclo.
Un controllore proporzionale (Kp) avrà l'effetto di ridurre il tempo di salita (parametro che caratterizza la prontezza della risposta) e ridurre, ma non eliminare, l'errore a regime permanente. Un'azione Integratrice (regolatore I con cost. Ki) ha l'effetto di eliminare l'errore in Regime Permanente ma peggiora la risposta transitoria (noie con la stabilità). Un controllore derivativo (Kd) ha l'effetto di aumentare la stabilità del sistema, migliorando la risposta transitoria. Questo tipo di di controllore non è fisicamente realizzabile e viene abbinato con un controllore proporzionale ed integratore. Gli effetti di uni controllore in un sistema a ciclo chiuso sono riassunti nella seguente tabella:
CONTROLLORE/RISPOSTA |
TEMPO DI SALITA |
SOVRAELONGAZIONI |
TRANSITORI |
ERRORE A REG.PERM. |
Kp |
Diminuisce |
Aumentano |
Non Influisce |
Diminuisce |
Ki |
Diminuisce |
Aumentano |
Aumenta |
Eliminato |
Kd |
Non Influisce |
Diminuiscono |
Diminuisce |
Non Influisce |
Queste relazioni non sono accurate; infatti i tre controllori sono dipendenti l'uno dall'altro. Lo schema è indicativo nella determinazione dei valori di Kp, Ki e Kd.
Consideriamo un sistema composto da una massa su cui agiscono: una forza F, una molla con costante elastica k e l'attrito con coefficiente b.
Il modello di questo sistema è
(1)
Eseguite le trasformate di Laplace del modello (1) si ha
La fuzione di trasferimento X(s)/F(s) è
Consideriamo le seguenti costanti
Sostituendo i valori si ottiene:
Vogliamo mostrare come ciascun coefficente Kp, Ki e Kd influisce per ottenere.
Prima di continuare nella risposta a ciclo aperto creiamo un nuovo m-file e aggiungiamo il seguente codice:
num=1; den=[1 10 20]; step(num,den)
Eseguiamo questo m-file in Matlab per ottenere il grafico riportato sotto.
Il guadagno della funzione di trasferimento del sistema a ciclo aperto è 1/20, e 0.05 è il valore dell'uscita del sistema alimentato da un gradino unitario. Questo corrisponde ad un elevato errore a regime permanente di 0.95. Inoltre il tempo di salita è di circa un secondo, e il transitorio è circa 1.5 secondi. Costruisci un controllore che riduca il tempo di salita e il transitorio, ed elimini l'errore a regime permanente.
Dalla tabella precedentemente mostrata si può vedere che Kp riduce il tempo di salita,
incrementa le sovraelongazioni e riduce l'errore in regime permanente. La funzione
di trasferimento del sistema a ciclo chiuso, data da W(s)= G(s) P(s)/[1+G(s) P(s)], con il
controllore G(s)=Kp, è:
Poniamo Kp=300 e modifichiamo l'm- file come mostrato sotto:
Kp=300; num=[Kp]; den=[1 10 20+Kp]; t=0:0.01:2; step(num,den,t)
Eseguedo il file in Matlab si ottiene il seguente grafico.
Nota: La funzione Matlab cloop può essere usata per ottenere automaticamente, da una funzione a ciclo aperto, la funzione di trasferimento a ciclo chiuso. Usando il comando cloop il file viene così modificato:
num=1; den=[1 10 20]; Kp=300; [numCL,denCL]=cloop(Kp*num,den); t=0:0.01:2; step(numCL, denCL,t)
Il grafico mostra che il controllore Kp riduce sia il tempo di salita che l'errore a regime permanente, aumenta le oscillazioni e decresce leggermente il transitorio.
Dalla tabella vista si può vedere che il controllore Kd riduce le sovraelongazioni del transitorio. La funzione di trasferimento del precedente sistema con controllore PD è:
Imponendo Kp=300 e Kd=10 e inserendo i comandi sotto riportati in un m-file, si ottiene il grafico riportato sotto.
Kp=300; Kd=10; num=[Kd Kp]; den=[1 10+Kd 20+Kp]; t=0:0.01:2; step(num,den,t)
Il grafico mostra, come ci si attendeva, che l'azione derivativa diminuisce sia la sovraelongazione che il transitorio e influisce poco sul tempo di salita e sull'errore a regime permanente.
Consideriamo ora un controllore PI. Ci si aspetta che il controllore Ki diminuisca il tempo di salita, incrementi sia le sovraelongazioni che il transitorio ed elimini l'errore a regime permanente. Per il sistema dato, la funzione di trasferimento a ciclo chiuso con un controllore PI è:
Riduciamo il Kp a 30 e consideriamo Ki=70. Il nuovo m-file è:
Kp=30; Ki=70; num=[Kp Ki]; den=[1 10 20+Kp Ki]; t=0:0.01:2; step(num,den,t)
Eseguendo il file appena creato nella finestra dei comandi di Matlab si ottiene il
seguente grafico:
Si è ridotto il guadagno proporzionale Kp perché il controllore Ki stesso riduce il tempo di salita e incrementa le sovraelongazioni (anche il controllore Kp ha questi effetti).Nota che l'aggiuta del controllore ad azione integrale ha eliminato l'errore a regime permanente.
Analizziamo ora un controllore di tipo PID. La funzione di trasferimento del sistema dato con un controllore PID è:
Dopo vari tentativi la risposta desiderata è stata trovata con i seguenti valori dei guadagni: Kp=350, Ki=300 e Kd=50. Per confermare, inseririamo i comandi che seguono in un m-file ed eseguiamolo. Dovremmo ottenere la risposta mostrata nel grafico sotto.
Kp=350; Ki=300; Kd=50; num=[Kd Kp Ki]; den=[1 10+Kd 20+Kp Ki]; t=0:0.01:2; step(num,den,t)
Si è ottenuto un sistema che non ha oscillazioni, ha un basso tempo di salita ed ha un errore nullo in regime permanente.
Nella costruzione di un controllore PID per un sitema dato, segui i punti riportati sotto per avere la risposta desiderata.
Tieni presente che non è necessario implementare tutti e tre i controllori (proporzionale, derivativo, integrale) in un singolo sistema, se non è necessario. Per esempio, se un controllore PI dà una buona risposta, come in questo esempio, non c'è bisogno di aggiungere un controllore ad azione derivativa. E' preferibile mantenere il controllore più semplice possibile.