Professional Documents
Culture Documents
Simbologia e glossario
Antiwindup
Tracking o inseguimento
Logiche di blocco
Commutazione automatico/manuale
Derivatore reale
Conclusioni
SIMBOLOGIA E GLOSSARIO
In questa introduzione al PID industriale si far essenzialmente riferimento, salvo diverso avviso, allo schema a blocchi
seguente, che rappresenta in modo molto semplificato un singolo loop di controllo:
PID
u+
+
P(s)
w +
y
+
Sinonimi
y(t)
w(t)
y(t)
e(t)
u(t)
d(t)
n(t)
PID
P(s)
v(s)
v*(z)
SP
PV
CS
de(t )
dt
oppure
de(t )
1
Questo significa che il controllo calcolato come somma di tre contributi, detti
1. P
o azione proporzionale
2. I
o azione integrale
3. D
o azione derivativa,
proporzionali rispettivamente allerrore, al suo integrale e alla sua derivata, ossia aventi le espressioni
P(t ) = K p e(t )
oppure
I (t ) = K i e(t )dt
oppure
de(t )
dt
oppure
D (t ) = K d
P(t ) = Ke(t )
K
I (t ) = e(t )dt
Ti
de(t )
D (t ) = KTd
dt
P(t ) = K p e(t )
oppure
P(t ) = Ke(t )
I (t ) = K i e(t )dt
oppure
I (t ) =
K
e(t )dt
Ti
D (t ) = K d
de(t )
dt
D (t ) = KTd
oppure
de(t )
dt
Serve a far dipendere il controllo dal futuro dellerrore, cio dalla direzione in cui esso si muove e
dalla velocit con cui varia
Infatti (con riferimento alla seconda delle due espressioni di D(t) ed alla figura seguente) essa fa dipendere il
controllo da una sorta di predizione dellerrore Td istanti di tempo in avanti.
e(t)
Td
Td
evero = e(t+Td)-e(t)
estimato = Td de(t)
dt
e(t)
estimato = Td de(t)
dt
Td
Td
evero = e(t+Td)-e(t)
In parole povere
Lazione derivativa cerca di capire da che parte e con che velocit va lerrore e di reagire di conseguenza,
il parametro Td d la misura di quanto lontano nel futuro si spinge la predizione e K assume qui il ruolo di
fattore di proporzionalit tra la variazione dellerrore prevista e la reazione del controllo (nellaltra
formulazione di D(t) il parametro Kd riunisce le due cose).
Lazione derivativa la pi pronta a reagire (anche ai rumori di misura, purtroppo) e aiuta solo se la
predizione buona, ossia se Td non troppo grande rispetto alle dinamiche temporali dellerrore: la
differenza si nota osservando i casi A e B in figura.
Lazione derivativa idealmente nulla a regime, ove in realt per segue e tende ad amplificare il rumore di
misura; aiuta pertanto solo nelle fasi iniziali dei transitori. Pu essere di grande aiuto ma anche pericolosa,
soprattutto se la misura della variabile controllata rumorosa. Pertanto va usata con cautela e cognizione di
causa, e molti sistemi industriali ne limitano a priori lintensit.
Alla luce di quanto si detto sul ruolo e sulle caratteristiche delle tre azioni di controllo P, I e D, ora utile fare alcune
considerazioni.
PID
u+
+
P(s)
+
+
Pertanto
A meno che la risposta del processo non sia praticamente
istantanea, lazione proporzionale subisce una decisa variazione a
scalino e questa si riflette sulla variabile di controllo. Se ne trae
che, desiderando che il controllo abbia una risposta pronta, questo
si ottiene impiegando in misura sufficiente lazione proporzionale.
Bisogna per stare attenti che lattuatore sia in grado di
sopportare variazioni potenzialmente brusche
della sua variabile di comando.
Si pu anche notare che, in questo transitorio, lazione derivativa
opera in modo da abbattere il contributo di quella proporzionale
pi in fretta, poich se lerrore positivo ma decresce lazione
derivativa negativa. Quindi, in termini intuitivi, lazione
derivativa pu servire a togliere pi in fretta leffetto di quella
proporzionale dopo che essa ha dato il suo contributo rendendo
pronta nei primi istanti lazione di controllo. Usata cos, pertanto,
essa utile per evitare o ridurre le sovraelongazioni della
variabile controllata.
10
PID
u+
+
P(s)
+
+
Pertanto
A meno che la risposta del processo non sia praticamente
istantanea, un disturbo di carico a scalino non provoca uno
scalino dellerrore. Quindi nessuna delle tre azioni di controllo
subisce variazioni brusche.
Il problema principale che fino a quando luscita del processo
non si mossa il regolatore non pu accorgersi del disturbo, e
pertanto la sua reazione pu giungere solo dopo che il processo ne
ha subito gli effetti (in senso dinamico, cio come influenza si suoi
stati) abbastanza perch essi siano rilevabili dalluscita. Per
questo linseguimento del set point e la reiezione dei disturbi di
carico sono due problemi di controllo alquanto diversi.
Le considerazioni sul ruolo delle tre azioni sono qui pi complesse,
salvo notare il ruolo sempre dominante a regime dellazione
integrale, e premature: si torner a parlare di disturbi di carico al
momento di affrontare i metodi di taratura.
11
Nessun regolatore industriale implementa la legge di controllo PID nella sua forma primitiva, anche se
sarebbe un grosso errore ritenere tale espressione del tutto inutile a descrivere le leggi di controllo reali.
Alcuni degli accorgimenti introdotti per passare dalla legge ideale a quelle reali sono dovuti a questioni di realizzabilit o
convenienza algoritmica (derivatore reale, antiwindup); altri servono a conferire maggiore flessibilit al regolatore (peso
sul set point nelle azioni proporzionale e derivativa); altri sono infine legati al fatto che il regolatore dovr funzionare
entro un sistema di controllo complesso e coordinare il suo comportamento a quello delle altre parti di questo sistema
(logiche di blocco, tracking, commutazione automatico/manuale).
Per poter proseguire nella direzione delle tecniche di taratura (che dovranno usare una qualche espressione della legge di
controllo, preferendone ovviamente una che tenga conto il pi possibile della struttura effettiva del PID) si esamineranno
ora questi accorgimenti implementativi.
Alcuni di essi verranno inglobati nellespressione della legge di controllo, che pertanto si complicher un po e
risulter avere dei parametri addizionali rispetto alla legge ideale, come peraltro li hanno i dispositivi industriali; altri
(non essendo descrivibili in modo lineare) verranno solo illustrati a parole o al pi come soluzione algoritmica, e quando
si parler dei metodi di taratura si vedr se e come necessario tenerne conto.
12
P(t ) = K p (by(t ) y (t ) )
P(t ) = K (by(t ) y (t ) )
oppure
Serve ad evitare sbalzi troppo bruschi della variabile di controllo a fronte di brusche variazioni dellerrore
(cio essenzialmente del set point, perch la variabile controllata si muove con la dinamica del processo).
NOTE:
P(t)
y(t)
y(t)
e(t)
Kb
P(t)
13
D (t ) = K d
d
(cy(t ) y (t ) )
dt
D (t ) = KTd
oppure
d
(cy(t ) y (t ) )
dt
Anchesso serve ad evitare sbalzi troppo bruschi della variabile di controllo a fronte di brusche variazioni
dellerrore (cio essenzialmente del set point). Di solito simpiega un peso c pari a 0, ottenendo il cosiddetto
PID a derivazione duscita.
c=1
Picco idealmente
infinito, possibile
saturazione
D(t)
y(t)
y(t)
e(t)
D(t)
c=0
D (t ) = K d
d
y (t )
dt
NOTE:
1. Siccome y varia in generale di rado, specie in applicazioni di
processo, porre c=0 non fa cambiare di molto la dinamica del
sistema di controllo: di fatto c ha influenza solo nei (pochi) istanti
dove y varia, perch quando essa costante la sua derivata
nulla e calcolare lazione derivativa facendo la derivata di e o di
y lo stesso.
2. Ovviamente questo non vero ad esempio negli anelli interni dei
controlli in cascata, il cui set point pu variare di continuo.
3. Vi sono tecniche di taratura avanzate (non trattate qui) che fanno
uso esplicito del parametro c; in generale lo si mette a 0 oppure a
1, riservando questultima scelta al caso in cui si sia certi che y
non possa mai variare a scalino.
oppure
14
D (t ) = KTd
d
y (t )
dt
Alberto Leva, marzo 2000
Derivatore reale
Com noto, un derivatore ideale un oggetto fisicamente inesistente: lo si pu solo approssimare. Nei PID industriali, di
fatto, invece di
D (t ) = K d
d
y (t )
dt
oppure
D (t ) = KTd
d
y (t )
dt
D (t ) +
K d dD (t )
dy (t )
= Kd
N dt
dt
oppure
D (t ) +
Td dD (t )
dy (t )
= KTd
N dt
dt
Il significato di queste espressioni quello di impiegare dei cosiddetti derivatori reali, detti anche talvolta derivatori
filtrati. Il derivatore reale stato introdotto come sopra perch scriverne la relazione ingresso/uscita nel dominio del
tempo il modo di descriverlo pi vicino a come poi simplementa nel codice la relativa parte della legge di controllo,
tuttavia il significato delle espressioni riportate sopra poco intuitivo da comprendere vedendole in questa forma;
pertanto vi si torner e lo si vedr meglio quando (tra poco) sintrodurr la descrizione del PID nel dominio della
frequenza.
15
NOTA IMPORTANTE:
G p (s) = K
dB
Gi ( s ) =
K
sTi
K
sTi
K/Ti
Derivatore
ideale
dB
Gd ( s ) =
sKTd
1 + sTd / N
sKTd
KN
sKTd
1+sTd/N
Derivatore
reale
N/Td
16
-1
+
-
Gp(s)
+
-
Gi(s)
+ + u
+
Gd(s)
Alberto Leva, marzo 2000
+
-
Gp(s)
+
-
Gi(s)
+ + u
+
Gd(s)
-1
Definizione importante
Una struttura di regolatore cos fatta si dice a due gradi di libert, intendendo con questo che i cammini di
segnale da y a u e da y a u sono diversi, e pertanto possibile assegnare le caratteristiche della risposta del
regolatore a y e a y in modo indipendente (naturalmente entro certi limiti perch vi sono parti, cio
parametri, comuni ad ambedue i cammini).
Perch importante?
Perch poter assegnare indipendentemente la risposta della variabile di controllo al set point ed alla variabile
misurata permette in buona misura di separare i problemi relativi al grado di stabilit e alla reiezione dei
disturbi (che dipendono soltanto da come il regolatore risponde alla variabile misurata) da quelli relativi
allinseguimento del set point (che dipendono anche da come il regolatore risponde a questultimo). Su questi
importanti concetti si ritorner nel seguito ma bene notarli e impadronirsene fin da subito, ricordando per
comprenderli meglio anche gli schemi a blocchi delle pagine 10 e 11 .
17
Antiwindup
E un accorgimento che serve ad evitare il blocco prolungato delluscita del regolatore a fronte di saturazioni
dellattuatore
Set point
Variabile controllata
t
Errore
t
Controllo
calcolato
Controllo
effettivo
L'operatore
modifica il
set point
18
Per capire come simplementa lantiwindup e quali sono i parametri che esso eventualmente introduce, serve per una
(non piccolissima) premessa:
Fino a questo punto il PID stato descritto come uno schema a blocchi contenente funzioni di trasferimento a tempo
continuo. In altre parole, si finora omesso di parlare di come esso viene effettivamente realizzato.
Ora questo nascondimento non pi possibile, nel senso che per spiegare i concetti che seguono (quelli relativi al
windup ma non solo) non si pu fare a meno delle nozioni di
Regolatore digitale
Discretizzazione
Espressione della legge di controllo a tempo discreto
Regolatore posizionale e incrementale
ovvero di sapere quanto basta su come un regolatore descritto (e sintetizzato) come funzione di trasferimento a tempo
continuo si realizza in un sistema digitale (non che sia obbligatorio: si pu realizzare un regolatore in modo analogico e a
volte lo si fa, ma si tratta di situazioni molto particolari e di fatto la realizzazione digitale copre praticamente la totalit
dei casi)
Quindi, nel seguito si far un intermezzo mirato a richiamare sinteticamente, per quanto in modo completo almeno ai
fini di questa presentazione, i concetti elencati sopra
chi non ne ha bisogno, prosegua pure a pagina 34.
19
Secondo intermezzo: un cenno al PID reale a tempo discreto e alla sua forma incrementale
Senza voler entrare a fondo nel merito della discretizzazione di un regolatore a tempo continuo e della scrittura della
relativa legge di controllo nel dominio del tempo (il che richiederebbe diverse ore), necessario per il prosieguo della
presentazione introdurre alcuni concetti fondamentali:
1. Ai fini di questa presentazione si pensa che il regolatore PID debba essere fisicamente realizzato come un
programma, o meglio come una funzione (nel senso che al termine si d nel contesto della programmazione dei
calcolatori) la quale riceve i valori del set point e della variabile controllata e produce il valore della variabile di
controllo. In tutti i casi pratici dinteresse, il tempo che intercorre tra unesecuzione di questa funzione e la
successiva (ossia la cadenza temporale con cui il regolatore fa variare il controllo) costante e si sceglie in sede di
sintesi del regolatore stesso. Esso dunque un ulteriore suo parametro, che si chiama tempo di campionamento o
tempo di ciclo e che qui sindicher col simbolo Ts .
2. Occorre dunque saper passare dalla descrizione del regolatore in termini di schema a blocchi con funzioni di
trasferimento a tempo continuo (come lo si visto cio a pag. 16) alla scrittura della suddetta funzione, la quale
giusto per averne unidea e includendo i soli parametri introdotti fino ad ora potrebbe avere una sintassi del tipo
varControllo = PID(setPoint,varControllata,K,Ti,Td,N,b,Ts)
3. Questo passaggio si fa in due fasi:
a)
b)
Si scrive per ognuna di esse lespressione della variabile duscita in funzione dei valori
(presenti e passati, perch si tratta di sistemi dinamici) della stessa e della variabile
dingresso.
20
Esempio
G(s) =
1 + sT
Esempio
G * ( z) =
zTs
z (Ts + T ) T
0
0
T s 2Ts 3T s
1 2 3
...
NOTA:
Nel caso a tempo discreto sono state riportate due curve: una (i punti rossi) fa riferimento ai valori calcolati passo per passo e corrisponde
appunto alla graduazione dellasse dei tempi in passi (k=0,1,2); laltra (la linea azzurra a gradini) rappresenta il segnale che sarebbe
effettivamente prodotto da un dispositivo digitale preposto a simulare il sistema a tempo continuo di partenza. Infatti, ritornando a pensare
che il suddetto sistema sia un regolatore, la logica del tutto intuitiva usata in tutti i casi dinteresse (cio non lunica possibile, ma la sola che
utile citare qui) che ad ogni passo di campionamento si calcola la variabile di controllo e poi la si tiene costante fino al prossimo passo.
Questo procedimento spesso indicato come uso di un mantenitore di ordine zero, perch operare cos come interporre tra il calcolo - a
tempo discreto - e lattuazione - a tempo continuo - un dispositivo che mantiene (da cui il nome) il valore della sua uscita (continua) fino a
che riceve il successivo valore dellingresso (discreto), e che per mantenere luscita usa solo lultimo valore dellingresso, ossia ne fa
appunto uninterpolazione polinomiale di ordine zero.
21
1 + sT
z 1
zTs
G* ( z ) =
zTs
zTs
=
=
zTs + zT T
z (Ts + T ) T
1 + z 1T
zTs
NOTA:
Pur non avendo spazio per fare nemmeno un minimo di teoria sullargomento, vale per la pena di giustificare in parole
povere il metodo per quanto si pu, il che costringer per a fare un intermezzo nellintermezzo.
22
Punto 2. Quindi, ricordando che nel dominio del tempo continuo la funzione di trasferimento del derivatore s mentre a
tempo discreto quella del ritardo di un passo z-1, si pu fare ad esempio (chiamando v(t) il segnale in questione, v(t) la
sua derivata a tempo continuo, v*(k) il segnale corrispondente a tempo discreto ossia il campionamento di v(t) con
passo Ts e v*(k) il desiderato campionamento della derivata) lapprossimazione seguente:
Dal dominio del tempo continuo
dv(t )
v' (t ) =
dt
v' ( s ) = sv ( s )
v * (k ) v * (k 1)
v'*(k )
Ts
v ( z ) z 1v ( z ) z 1
v'*( z ) =
=
v( z)
Ts
zTs
23
Punto 3. Procedendo, se usiamo questapprossimazione possiamo trasformare uno schema a blocchi a tempo continuo in
uno a tempo discreto equivalente
a. elaborando lo schema in modo da evidenziare tutti i derivatori, ovvero da farvi comparire soltanto blocchi la cui
funzione di trasferimento (a tempo continuo) s,
b. sostituendo tutti i segnali a tempo continuo con i loro campionamenti a passo Ts, e infine
c. rimpiazzando tutti i blocchi derivatori con blocchi la cui funzione di trasferimento (stavolta ovviamente a tempo
discreto) (z-1)zTs.
Punto 4. Consideriamo ora una generica funzione di trasferimento a tempo continuo, nella forma
0 + 1s + 2 s 2 + L + m s m
G(s) =
1 + 1s + 2 s 2 + L + n s n
con n m. Detto u(t) lingresso del sistema rappresentato da G(s) e y(t) la sua uscita, possiamo allora scrivere che
y ( s) 0 + 1s + 2 s 2 + K + m s m
=
u( s )
1 + 1s + 2 s 2 + L + n s n
cio che
y ( s) 1 + 1s + 2 s 2 + L + n s n = u( s) 0 + 1s + 2 s 2 + L + m s m
cio ancora, indicando con lapice (i) la i-esima derivata temporale e ricordando che sv(s) la trasformata di v(t), che
24
Punto 5. Scriviamo ora lo schema a blocchi a tempo continuo che corrisponde a G(s) ed evidenzia tutti e soli i blocchi
derivatori: in base allespressione trovata comprendiamo subito chesso
s
1
s
2
m
y
Punto 6. Ora sostituiamovi tutti i segnali coi loro campionamenti a passo Ts, e poniamo i blocchi con funzione di
trasferimento discreta (z-1)/zTs al posto dei derivatori (continui). Otteniamo cos
u*
z 1
zT s
z 1
zT s
z 1
zT s
m
y*
2
z 1
zT s
25
1
z 1
zT s
z 1
zT s
dv(t )
dt
t = kTs
v * (k ) v * (k 1)
Ts
dv(t )
v * (k + 1) v * (k )
dt t =kTs
Ts
26
col che avremmo sostituito i derivatori con blocchi di funzione di trasferimento (z-1)/Ts. Osserviamo ora
queste due espressioni, e noteremo che la differenza consiste nel fatto che nel primo caso la derivata
calcolata come (campione presente meno campione passato) diviso passo di campionamento, mentre nel
secondo calcolata come (prossimo campione meno campione presente) diviso passo di campionamento.
Quindi in ambedue i casi si usa il rapporto incrementale, e la differenza sta soltanto in qual listante
temporale al quale il valore di derivata calcolato viene attribuito: in altre parole, si calcola sempre
v * (k ) v * (k 1)
Ts
ma nel primo caso si dice che questo il valore della derivata al passo k, mentre nel secondo si dice che il
suo valore al passo k-1. Fare luna assunzione o laltra porta ad avere delle funzioni di trasferimento a tempo
discreto diverse ma ambedue approssimanti di quella a tempo continuo di partenza (coerentemente col fatto
che nessuna approssimazione unica) e che tendono a divenire sempre pi simili com intuitivo - al
decrescere di Ts. Nel seguito useremo la prima approssimazione (quella impiegata negli schemi a blocchi
riportati) perch risulta preferibile, per delle ragioni che per davvero trascendono questa presentazione.
d. Con riferimento ai due schemi a blocchi precedenti, possiamo fare un altro commento. In quello a tempo
continuo si vedeva coerentemente col significato di funzione di trasferimento a tempo continuo - come
luscita dipende dai valori istantanei delle sue derivate, tanti quanto lordine del sistema, dellingresso e
delle derivate dellingresso. In quello a tempo discreto, viceversa, luscita venuta a dipendere dai suoi
valori passati, tanti quanto lordine del sistema a tempo continuo di partenza, e dai valori presente e
passati dellingresso, il che coerente col significato di funzione di trasferimento a tempo discreto.
Punto 8. Lapprossimazione impiegata (detta metodo di Eulero implicito o allindietro) stata quindi perlomeno
giustificata in modo intuitivo. Oltre a ci essa veramente facile da usare in pratica, bastando eseguire i calcoli mostrati
a pagina 22, e dunque ai nostri fini la si adotter come metodo standard per la discretizzazione.
e questo conclude lintermezzo nell'intermezzo sulla discretizzazione.
27
Come passa da una funzione di trasferimento a tempo discreto alla corrispondente relazione ingresso-uscita nel
dominio del tempo?
Si ricorda ancora che la variabile complessa z ha, nel dominio della trasformata Zeta, il significato di operatore di
anticipo unitario, nel senso che se un segnale a tempo discreto si ottiene da un secondo anticipandolo di un passo, allora
la trasformata Zeta del primo uguale a quella del secondo moltiplicata per z. Pertanto, se un sistema a tempo discreto
con ingresso u*(k) e uscita y*(k) descritto dalla funzione di trasferimento G*(z), la corrispondente relazione ingressouscita nel dominio del tempo (cio la formula per calcolare di volta in volta il nuovo valore delluscita noti quelli passati
della stessa e dellingresso) si ottiene nel modo seguente:
Si parte da G*(z), che per
definizione il rapporto tra la
trasformata Zeta di y*(k) e quella
di u*(k)
b0 + b1 z... + bm z m
G( z) =
a0 + a1 z... + an z n
La si scrive come
(a
y * (k + n) =
an 1 *
a
b
b
y (k + n 1)... 0 y * (k ) + m u * (k + m)... + 0 u * (k )
an
an
an
an
a
a
b
b
y * (k ) = n 1 y (k 1)... 0 y * (k n) + m u * (k + m n)... + 0 u * (k n)
an
an
an
an
28
Nellesempio, quindi, si ha
G* ( z ) =
zTs
z (Ts + T ) T
( z (Ts + T ) T ) y* ( z ) = zTs u* ( z )
(Ts + T ) y* (k + 1) Ty* (k ) = Tsu* (k + 1)
e pertanto la relazione ingresso-uscita nel dominio del tempo discreto che approssima, col passo di campionamento Ts, il
comportamento del sistema descritto a tempo continuo da G(s) risulta essere
y * (k ) =
T
Ts *
y * (k 1) +
u (k )
Ts + T
Ts + T
29
G p (s) = K
G*p ( z ) = K
P* ( k ) = K (by o* (k ) y* (k ) )
Gi ( s ) =
Gd ( s ) =
K
sTi
sKTd
1 + sTd / N
Gi* ( z ) =
Gd* ( z ) =
KTs z
Ti z 1
I * (k ) = I * (k 1) +
KTd ( z 1)
z (Td / N + Ts ) Td / N
D* ( k ) =
KTs o*
(
y (k ) y* (k ) )
Ti
Td
KNTd
D* (k 1)
( y(k ) y(k 1) )
Td + NTs
Td + NTs
30
I * (k ) = I * (k 1) +
KTs o*
(
y (k ) y* (k ) )
Ti
mentre, se lasciamo da parte per semplicit gli effetti del rumore di misura,
P* ( k ) = K (by o* (k ) y* (k ) )
D* ( k ) =
Td
KNTd
D* (k 1)
( y(k ) y(k 1) )
Td + NTs
Td + NTs
Morale:
Anche se spesso nella documentazione dei prodotti industriali si parla di stato del PID, un regolatore PID reale ha due
stati, ossia I*(k-1) e D*(k-1); per il secondo lo stato di un sistema asintoticamente stabile, mentre il primo no. Per
converso, la parte D ha come ingresso (nel caso a derivazione duscita, ma a set point fermo la cosa irrilevante) la sola
variazione della variabile controllata, e pertanto lazione di controllo che produce per sua natura di tipo transitorio. In
conclusione, il PID pu essere visto come il parallelo di due sistemi a due ingressi e unuscita (uno per la parte PI e uno
per la parte D) ambedue del primordine, dei quali per il secondo asintoticamente stabile e ha guadagno statico nullo,
mentre il primo non asintoticamente stabile e anzi contiene unazione di tipo integrale. Questo vuol dire che solo lo
stato della parte I importante ai fini dellantiwindup, e dunque che impedire il superamento delle soglie di saturazione
alla sola azione integrale oppure a tutta lazione di controllo , ai fini pratici, (circa) la stessa cosa.
31
v* ( k ) = v* (k ) v* (k 1)
e quindi
v* ( z ) = v* ( z ) z 1v* ( z ) =
z 1 *
v ( z)
z
Azioni P e I
Queste si scrivono in forma incrementale in modo del tutto naturale, e risulta
P* ( k ) = K (by o* (k ) y* (k ) )
KT
I (k ) = I (k 1) + s ( y o* (k ) y * (k ) )
Ti
*
P * (k ) = K (by o* ( k ) y * (k ) )
I * ( k ) =
KTs o*
(
y (k ) y * (k ))
Ti
Si osservi che P*(k) e I*(k) non dipendono dai loro valori passati, ossia che ponendo la parte PI del regolatore in forma
incrementale il calcolo della variazione del controllo corrisponde ad un sistema che non ha stato.
32
Azione D
Questa si pu ovviamente scrivere in forma incrementale, ma nel farlo non si ottiene un sistema privo di stato. Infatti
risulta
D * (k ) =
Td
KNTd
D * (k 1)
(
y * (k ) y * (k 1) )
Td + NTs
Td + NTs
D * (k ) =
Td
KNTd
(
D * (k 1)
y * (k ) y * (k 1) )
Td + NTs
Td + NTs
33
Implementazione dellantiwindup
Per maggior praticit si parler qui di un PID digitale, ossia implementato su di un calcolatore e che aggiorna la variabile
di controllo non di continuo ma bens in istanti discreti, con un periodo temporale fisso (in ogni applicazione dinteresse)
detto tempo di campionamento o tempo di ciclo e indicato con il simbolo Ts: pertanto sar lecito dire che tutti i
segnali sono funzioni non del tempo (continuo) t ma del passo (discreto) k, potendosi altres parlare di valore corrente,
valore precedente e cos via. Per maggior chiarezza, quando si operer a tempo discreto tutte le quantit in gioco
(segnali e funzioni di trasferimento) saranno distinti con un asterisco in apice (*).
Inoltre distingueremo tra i due modi tipici che si usano per realizzare un PID digitale, detti posizionale e
incrementale: nel primo si calcola ad ogni passo direttamente il nuovo valore del controllo, nel secondo si calcola ad
ogni passo la variazione da dare al controllo e poi la si somma al valore precedente di esso per avere il valore nuovo. In
estrema sintesi, si potranno dunque schematizzare i due possibili assetti del PID digitale con i due schemi seguenti:
Forma posizionale
SP
PV
Calcolo
di u*
SP
PV
Calcolo
di u*
Forma incrementale
dove appunto si indica con
CS
u*(k)
CS
u*(k)
-1
u*(k-1)
u(k+1)
u*(k+1)=u*(k)+
34
La fonte del windup sostanzialmente la saturazione degli attuatori. Questa si evidenzia tramite il cosiddetto
errore di attuazione
indicato qui con e*a (k) e definito come la differenza tra il controllo u*(k) calcolato dal regolatore e quello,
detto controllo attuato e indicato con u*a (k), che lattuatore applica effettivamente al processo. Lerrore di
attuazione pertanto dato da
NOTA:
Nel seguito diremo che lerrore di attuazione diverso da zero solo in caso di saturazione dellattuatore. E tuttavia bene
ricordare che esso pu non essere nullo anche per colpa di cattive tarature dellattuatore stesso, tali da causare ad
esempio offset, errori di fondo scala e cos via. Inoltre, vi pu essere transitoriamente errore di attuazione anche per
colpa della dinamica dellattuatore, che a rigore - non risponde mai al comando del regolatore in modo istantaneo.
Tuttavia questi fenomeni non sono rilevanti adesso: nel parlare del windup supporremo che lattuatore sia ben tarato e
che la sua dinamica sia molto veloce, come del resto di solito si tende a far s che avvenga, col che sar lecito dire che
lunica sorgente di errore di attuazione la saturazione.
35
Per implementare lantiwindup in un PID posizionale, occorre procurarsi una misura dellerrore di
attuazione.
e*
a
e*
a
u*
a
u*
u*
umax
u*a
umin
36
Una volta ottenuto lerrore di attuazione, in un PID posizionale lantiwindup simplementa di solito come
nello schema seguente:
SP
b
Calcolo
di P
PV
e
-1
Calcolo
di I
CS
Calcolo
di D
1
Tt
ea
NOTA:
Come si vede, il parametro Tt ha una notevole influenza sul modo in cui il regolatore entra ed esce dalla saturazione e di conseguenza - sulla forma dei transitori ottenuti: permette dunque di governare l'antiwindup con finezza, ma non
semplice da tarare se non facendo delle prove "sul campo". Dove Tt disponibile e vi sono problemi di saturazione del
controllo, conveniente pensare di usarlo. Peraltro, essendo un parametro la cui comprensione non semplice, molti
regolatori non lo prevedono.
37
u*(k)
umax
CS
umin
u*(k)
z -1
u*(k-1)
38
Tracking o Inseguimento
A volte necessario imporre ad un regolatore che la sua uscita segua istante per istante un segnale prodotto altrove, e
questa funzionalit va comunemente sotto il nome di tracking o "inseguimento". Un caso per esempio quello del
controllo manuale (che verr trattato a parte perch ha delle particolarit sue), ma la cosa pi generale: tanto generale
che, prima di descrivere le soluzioni tecniche che limplementazione del tracking richiede, bene rendersi conto di dove
sta e come pu presentarsi il problema tramite un esempio.
Selezione del tipo
di controllo
Set
point
R1
Se sono accesi chiss cosa calcolano come loro uscita, visto che
il processo non sta reagendo al loro controllo ma ad altro.
R2
R3
Processo
R4
Soluzione
I regolatori che non sono attivi devono essere obbligati a tracciare (o "inseguire", donde il nome) quello
attivo, ossia la loro uscita deve seguire istante per istante quella di questultimo.
39
TS(k)
TR(k)
yo*(k)
Regolatore
posto in forma
incrementale
y*(k)
u*(k)
Calcolo
di u*(k)
u*(k)
u*(k-1)
+ +
1/z
Funzionamento normale
Funzionamento in tracking
TS(k)
TR(k)
TS(k)
TR(k)
yo*(k)
yo*(k)
y*(k)
Calcolo
di u*(k)
y*(k)
u*(k)
u*(k)
+ +
u*(k-1)
Calcolo
di u*(k)
1/z
u*(k)
+ +
u*(k-1)
1/z
u*(k)
40
Logiche di blocco
Per introdurre la questione, si consideri il sistema di controllo schematizzato nella figura seguente:
Portata in ingresso (variabile di disturbo)
SP
PV
Regolatore
di livello
Sensore di livello
CS
SP
PV
Regolatore
di portata
Sensore di portata
CS
Valvola
Qui vi sono due anelli annidati: quello esterno controlla il livello, e l'uscita del relativo regolatore il set point di portata;
quello interno riceve appunto tale set point e agisce sulla valvola per ottenerlo. Si tratta di una struttura detta "controllo
in cascata", molto usata perch offre il vantaggio di gestire la dinamica e le eventuali non linearit dell'attuatore con
l'anello interno: se questo ben sintonizzato e veloce rispetto all'anello esterno, il regolatore di livello si pu mettere a
punto - facendo riferimento all'esempio - come se si potesse effettivamente imporre al processo la portata, dimenticando
(appunto grazie all'anello interno) che in realt al processo s'impone l'apertura della valvola e la relazione tra questa e la
portata non lineare e comprende di minimo la dinamica del posizionatore. Come osservazione "a latere", si pu quindi
dire che conviene pensare ad un controllo in cascata quando la relazione tra la variabile di comando disponibile (qui il
comando al posizionatore che determina l'apertura della valvola) e la variabile che si vuole regolare (qui il livello)
presenta delle dinamiche e/o delle non linearit abbastanza fastidiose da rendere complessa e/o critica la sintonizzazione
di un sistema con un solo anello (ossia, in questo caso, di un sistema in cui il blocco regolatore indicato come "regolatore
di livello" fosse il solo presente e agisse direttamente sul posizionatore della valvola).
Introduzione al PID industriale
41
Supponiamo ora che si voglia far diminuire il livello, e che - ad esempio per colpa di una portata d'ingresso troppo
elevata - la valvola, per quanto si apra tutta, non sia in grado di far raggiungere al livello il valore voluto. Quello che
allora succede illustrato nella figura seguente:
Set point di livello
Livello
t
Set point di portata
t
L'operatore
abbassa il
set point
di livello: quello
di portata sale
e la valvola
apre
L'operatore si accorge
del problema e modifica
di nuovo il set point
di livello: la richiesta
di portata scende...
42
In generale
Quando il regolatore dell'anello interno in saturazione,
non si deve permettere a quello dell'anello esterno di spingervelo ulteriormente
ovvero
Quando il regolatore dell'anello interno in saturazione, si deve permettere a quello dell'anello esterno
di modificare la sua uscita soltanto nella direzione che fa uscire l'altro dalla saturazione.
/* Fplus e Fminus sono i due ingressi
di blocco, HIsat e LOsat i segnali
di saturazione; i valori booleani
TRUE e FALSE sono rappresentati
con 1 e 0 rispettivamente*/
Implementazione
I regolatori industriali, almeno quelli di fascia medio-alta,
hanno due uscite booleane (di solito dette HIsat e
LOsat) preposte a segnalare con un livello logico alto le
saturazioni superiore e inferiore.
Inoltre, hanno due ingressi booleani (di solito detti F+ e
F-) che, se posti a livello alto, impediscono all'uscita del
regolatore rispettivamente di crescere o decrescere.
L'implementazione particolarmente semplice in un
regolatore incrementale, e questo un altro punto a
favore di tale struttura, bastando "arricchire" il codice di
pagina 38 come mostrato a fianco.
43
Risultati ottenuti
Livello
F+
SP
PV
Regolatore
di livello
F-
HIsat
CS
SP
PV
Regolatore
di portata
CS
LOsat
t
Sensore di livello
Sensore di portata
Valvola
NOTE:
Gl'ingressi F+ e F- del regolatore di portata non
sono usati.
Negli schemi di controllo consuetudine
distinguere i segnali logici da quelli modulanti
disegnando i collegamenti relativi ai primi con
linea tratteggiata.
ATTENZIONE
A costo di essere ripetitivi, si badi a non confondere questo
problema con quello del windup: il valore a cui si ferma (salendo)
il set point di portata in quest'esempio non la sua saturazione
superiore, bens il valore che fa saturare l'anello interno.
44
Commutazione automatico/manuale
Contrariamente a quanto si potrebbe pensare, non si tratta affatto di una questione banale. Esprimendo il problema in
linguaggio corrente, si potrebbe dire che
Ogni regolatore deve permettere all'operatore di passare in qualsiasi momento
dalla situazione in cui il regolatore a calcolare la variabile di controllo (automatico o AUTO)
a quella dove il valore di quest'ultima direttamente governato dall'operatore stesso (manuale o MAN).
Scendiamo per un poco pi a fondo, e subito ne vengono alcune osservazioni interessanti:
v
Anzitutto bisogna notare che nella condizione manuale l'anello aperto e, se l'operatore a governare la variabile di
controllo, quasi certamente questo fa s che la variabile controllata non vada al valore di set point.
Poi, bisogna specificare cosa s'intende dicendo che "l'operatore governa direttamente la variabile di controllo".
Desiderando che questa non abbia salti, pare logico (ed quel che si fa in tutti i casi d'interesse) richiedere quanto
segue:
Al passaggio da automatico a manuale (apertura dell'anello) il controllo si deve fermare al valore corrente - col
che certamente non vi sono salti - e l'operatore deve poterlo incrementare o decrementare con due comandi,
tipicamente due tasti "+" e "-".
Al passaggio da manuale ad automatico (chiusura dell'anello) il controllo deve muoversi, a partire dal valore
corrente e verso quello richiesto dal regolatore per rendere la variabile controllata eguale al set point, senza fare
salti.
45
Pensando poi a quali possono essere i motivi per cui un regolatore dev'essere messo in manuale (a parte le emergenze o
manovre particolari che non hanno nessun titolo ad entrare in una casistica generale), possiamo osservare anche i fatti
seguenti:
v
Vi sono casi in cui un regolatore dev'essere forzato in manuale, ossia andarvi non per diretta richiesta dell'operatore.
Questo vero ad esempio per i regolatori esterni dei controlli in cascata: se il regolatore interno va in manuale
anche l'anello esterno aperto, e dunque il regolatore esterno deve andare in manuale per evitare di porsi in una
situazione inconsistente, giacch quello interno (essendo appunto in manuale) si disinteressa del set point ch'esso gli
fornisce. Sar quindi necessario che i regolatori - di nuovo, almeno quelli di fascia alta e concepiti per sistemi
complessi - abbiano un ingresso di forzamento in manuale, che nel sistema di controllo complessivo sar governato
da una logica da costruirsi caso per caso.
46
L'implementazione di tutto questo si mostra "arricchendo" ulteriormente il codice di pagina 43: il significato dei nomi
delle variabili si omette perch immediato, e si assume di aver convenientemente definito i simboli AUTO e MAN:
/* Verifica lo stato del comando A/M locale e del forzamento remoto
e agisce di conseguenza */
if ((StatoAM = (ComandoAMlocale == MAN ? MAN : ComandoAMremoto)) == AUTO) {
/* Automatico: qui va il codice per il calcolo di DeltaCS */
/* Verifica lo stato dei blocchi Fplus e Fminus e agisce di conseguenza */
if ((DeltaCS > 0 && Fplus == 1) || (DeltaCS < 0 && Fminus == 1))
DeltaCS = 0;
/* Aggiorna il controllo in automatico */
CSnew = CSold + DeltaCS; }
else {
/* Manuale: verifica lo stato dei comandi locali d'incremento e decremento
e agisce di conseguenza: IncrementoUnitarioCS un parametro del
regolatore */
if (ComandoIncrementoCS == 1) CSnew = CSold + IncrementoUnitarioCS;
if (ComandoDecrementoCS == 1) CSnew = CSold - IncrementoUnitarioCS; }
/* In ogni caso (sia automatico che manuale) gestisce l'antiwindup
e, se del caso, segnala la saturazione */
if (HIsat = (CSnew >= CSmax)) CSnew = CSmax;
if (LOsat = (CSnew <= CSmin)) CSnew = CSmin;
/* Aggiorna lo stato dell'integratore finale */
CSold = CSnew;
47
48
Ingressi
Modulanti
Logici
Uscite
Modulanti
Logiche
Parametri
Reali
Logici
SP
PV
TR
F+
FTS
CS
HIsat
LOsat
A/M
K
Ti
Td
N
b
Ts
Tt
D/I
Segnale di riferimento
Variabile controllata
Segnale di tracking
Blocco in salita
Blocco in discesa
Track switch
Segnale di controllo
Saturazione alta
Saturazione bassa
Condizione (automatico o manuale)
Guadagno
Tempo integrale
Tempo derivativo
Rapporto tra Td e la costante di tempo del derivatore reale
Peso sul segnale di riferimento nell'azione proporzionale
PasTempo di campionamento
Parametro dell'antiwindup posizionale
Azione diretta o inversa
49
CONCLUSIONI
Richiamando quanto detto a pagina 12, si visto come la legge di controllo presente in un PID industriale sia ben pi
complessa della sua mera funzione di trasferimento. Questo potrebbe far sorgere dubbi sull'utilit pratica della seconda
nel descrivere il primo, e quindi bene fare alcune considerazioni.
Anzitutto, va detto che descrivere un PID con la sua funzione di trasferimento rimane l'approccio principe alla sua sintesi
sulla base di un modello del processo e/o di misure ingresso/uscita fatte su di esso, non foss'altro perch soltanto con tale
descrizione del regolatore possibile applicare i potenti metodi di sintesi provenienti dalla teoria del controllo lineare. Se
poi si vuol essere un poco pi precisi, rappresentando ad esempio la pesatura del set point, si potr impiegare per
descrivere il regolatore non un singolo blocco ma uno schema che distingua le tre azioni, come ad esempio quello di
pagina 16, e ancora la teoria lineare e i suoi metodi potranno essere usati.
In secondo luogo, si visto che vi sono accorgimenti implementativi i quali - uscendo dall'ambito lineare - con le
funzioni di trasferimento non si potranno rappresentare mai. E' per vero che questi fanno riferimento eminentemente al
comportamento "in grande" del sistema di controllo, ovvero al caso in cui i segnali in gioco abbiano variazioni cos
grandi da far intervenire appunto gli aspetti non lineari non tanto del singolo regolatore ma del processo - comprendendo
in quest'ultimo i sensori, gli attuatori e le loro saturazioni - oppure del sistema di controllo nel suo complesso, come ad
esempio le modifiche strutturali alla sua dinamica complessiva che avvengono quando un loop messo in manuale.
In conclusione, quindi, la sintesi di un sistema di controllo basato su PID pu considerarsi in estrema sintesi un
procedimento in due fasi: prima si ottiene il comportamento desiderato dei singoli loop per piccoli segnali, cosa che pu
farsi tranquillamente in ambito lineare e conduce a calcolare la maggioranza dei parametri dei regolatori; poi si
considerano i grandi transitori e le interazioni dei loop tra di loro, con le logiche e con l'operatore, e dei regolatori si
"mettono a posto" le parti rimanenti.
Lo scopo di questa trattazione, oltre a far conoscere i regolatori industriali con un sufficiente grado di dettaglio, voleva
essere quello di mettere il progettista di un sistema di controllo in grado di affrontare il problema con cognizione di causa
sulla base proprio di tale conoscenza.
50