Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Ingegneria
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Gianmaria De Tommasi » 14.[MF] PID: implementazione digitale


Indice della lezione

  • Implementazione discreta di un controllore analogico
    • Metodi di discretizzazione 
  • Realizzazione digitale di un regolatore PID
  • Pseudocodice di un regolatore PID

Introduzione

  • I regolatori PID sono stati originalmente implementati utilizzando tecnologia analogica di varia natura (meccanica, pneumatica, elettronica, ecc.).
  • Al giorno d’oggi la quasi totalità dei regolatori viene implementata su dispositivi di controllo digitali

I possibili approcci per la progettazione di controllori tempo discreto sono:

  1. sintesi diretta nel tempo discreto;
  2. sintesi nel tempo continuo e successiva discretizzazione del controllore – questo è l’approccio che verrà adottato in questa lezione

Discretizzazione

Un regolatore tempo continuo è un sistema dinamico LTI e SISO:

\dot{x}(t)=Ax(t)+Be(t)

u(t)=Cx(t)+De(t)

  • Sia h è il periodo di campionamento del controllore tempo discreto che si vuole realizzare.
  • Per ottenere un implementazione discreta del regolatore bisogna integrare l’equazione differenziale nell’intervallo [kh,(k+1)h].

Ponendo x(k)=x(kh) e integrando l’equazione differenziale precedente nell’intervallo [kh,(k+1)h] si ottiene:
x(k+1)-x(k)=A\int_{kh}^{(k+1)h}x(t)dt+B\int_{kh}^{(k+1)h}e(t)dt
Conoscendo i valori delle grandezze in gioco agli istanti kh e (k+1)h, gli integrali riportati sopra possono essere approssimati utilizzando la seguente combinazione convessa:

\int_{kh}^{(k+1)h}f(t)dt\cong \left((1-\alpha)f(k)+\alpha f(k+1)\right)h\,,0\leq\alpha\leq1

Discretizzazione

Discretizzazione

Utilizzando la relazione l’approssimazione convessa, l’equazione di stato integrata può essere approssimata come

x(k+1)-x(k)\cong A\left((1-\alpha)x(k)+\alpha x(k+1)\right)h+B\left((1-\alpha)e(k)+\alpha e(k+1)\right)h

Inoltre andando a valutare l’equazione di uscita in t=kh si ha:

u(k)=Cx(k)+De(k)

Applicando la trasformata Z all’equazione alle differenze si ottiene:

X(z)=\left(\frac{1}{h}\frac{z-1}{\alpha z+1-\alpha}I-A\right)^{-1}BE(z)



 

Discretizzazione

Trasformando anche l’equazione d’uscita e utilizzando si ottiene la seguente relazione, nel dominio della trasformata Z, tra l’uscita del regolatore e l’errore di controllo:

U(z)=\left\{C\left[\frac{1}{h}\frac{z-1}{\alpha z+1-\alpha}I-A\right]^{-1}B+D\right\}E(z)

Ricordando che la f.d.t. di un sistema dinamico è data da:

R(s)=\frac{U(s)}{E(s)}=C\left(sI-A\right)^{-1}B+D

ne segue che la relazione precedente può essere vista come la f.d.t. del regolatore valutata per s=\frac{z-1}{h(\alpha z+1-\alpha)}

Quindi, se R(s) è la f.d.t. del regolatore tempo continuo, la f.d.t. della realizzazione tempo discreta del regolatore può essere ottenuta valutando

R(s)|_{s=\frac{z-1}{h(\alpha z+1-\alpha)}}

 

Discretizzazione

Trasformando anche le (6) e utilizzando la (7) si ottiene la relazione, nel dominio della trasformata Z, tra l’uscita del regolatore e l’errore di controllo:

Discretizzazione

NOTA: La realizzazione tempo discreta del controllore che si ottiene è una relazione approssimata.

Diverse approssimazioni sono possibili in base al valore di 0\leq\alpha\leq 1.

Le approssimazioni utilizzate nella pratica sono:

  •  \alpha=0\rightarrow s=\frac{z-1}{h} – Eulero in avanti
  •  \alpha=1\rightarrow s=\frac{z-1}{zh} – Eulero all’indietro
  •  \alpha=1/2\rightarrow s=\frac{z-1}{h(z+1)} – Tustin

Discretizzazione dell’azione proporzionale

L’azione proporzionale è puramente algebrica, quindi la sua discretizzazione non comporta nessuna approssimazione. Se p(k) è il contributo dell’azione proporzionale all’istante t=kh, si ha:
p(k)=K_Pe(k)=K_P\left(r(k)-y(k)\right)

Nel caso di regolatore PID ISA si deve tenere conto anche del parametro b:

p_{ISA}(k)=K_P\left(br(k)-y(k)\right)


Discretizzazione dell’azione integrale

Tipicamente l’azione integrale viene discretizzata utilizzando il metodo di Eulero all’indietro, con la quale si ottiene: i(k)=i(k-1)+\frac{K_Ph}{T_I}e(k)

Se si utilizzasse Eulero in avanti, l’algoritmo di controllo dovrebbe memorizzare anche il campione dell’errore all’istante t=(k-1)h.

Applicando Eulero in avanti, infatti, si ottiene:

i(k)=i(k-1)+\frac{K_Ph}{T_I}e(k-1)

Una considerazione analoga vale anche se si discretizza utilizzando il metodo di Tustin.

 

Discretizzazione dell’azione derivativa

Anche per l’azione derivativa si preferisce utilizzare il metodo di Eulero all’indietro, con il quale si ottiene: d(k)=\frac{T_D}{Nh+T_D}d(k-1)+\frac{K_PT_DN}{Nh+T_D}\left(e(k)-e(k-1)\right) Nel caso di regolatore PID ISA, bisogna considerare anche il parametro c, e si ottiene:

d_{ISA}(k)=\frac{T_D}{Nh+T_D}d(k-1)+\frac{K_PT_DN}{Nh+T_D}\left(c\left(r(k)-r(k-1)\right)+y(k-1)-y(k)\right)

Tipicamente si pone c\neq 1 per limitare l’azione derivativa, quindi non c’è la necessità di memorizzare e(k-1) se l’azione integrale viene discretizzata con Eulero all’indietro.

 

 

Discretizzazione dell’azione derivativa

Se, per discretizzare l’azione derivativa, si utilizza:

  •  il metodo di Eulero in avanti, allora per valori sufficientemente piccoli di T_D si avrebbe una legge di controllo instabile;
  •  il metodo di Tustin, allora quando T_D=0 il controllore presenta un polo in -1, associato ad un modo alternante, che è preferibile evitare.

Pseudocodice di un PID – Considerazioni preliminari

  • Il codice che implementa un regolatore PID dovrà essere eseguito in modalità periodica dal dispositivo di controllo, con periodo pari a h.
  • Prima di entrare nella modalità di esecuzione periodica è possibile calcolare alcune costanti, con l’obiettivo di ridurre il numero di operazioni da effettuare, per ridurre il ritardo tra l’istante in cui viene campionata l’uscita y(t) e l’istante in cui viene generata l’azione di controllo u(t).
Schema di riferimento di un regolatore tempo discreto.

Schema di riferimento di un regolatore tempo discreto.


Pseudocodice di un PID – Definizione delle costanti

Si supponga di aver definito le seguenti costanti nella fase di inizializzazione del codice: 

  • GP = KP*b; 
  • GI = KP*h/TI; 
  • GD1 = TD/(N*h+TD); 
  • GD2 = KP*N*GD1; 
  • GD3 = c*GD2;

E di inizializzare le variabili seguenti: 

  • d = 0;
  • i = 0; 
  • r_old = 0; 
  • y_old = 0;

Pseudocodice di un PID – 1/2

  • Attesa attivazione (clock interrupt o chiamata dal s.o.)
  • Acquisizione A/D di r e y
  • e = r-y% Calcolo dell’errore
  • p = GP*r-Kp*y; % Azione proporzionale
  • d = GD1*d+GD2*(y_old-y)+GD3*(r_old-r) % Azione derivativa 
  • if MANUALE then % Modalità manuale
    • u = u+delta_u; % Uscita manuale
    • i = u-d-p % Bumpless
  • else % Modalità automatica
    • i = i+GI*e % Azione integrale
    • u = p+i+d % Uscita complessiva
  • endif

Pseudocodice di un PID – 2/2

  • if u>u_max then % Anti wind-up – Saturazione superiore
    • u = u_max 
    • i = u-p-d
  • elseif u<u_min then
    • u = u_min
    • i = u-p-d
  • endif
  • Emissione di u e conversione D/A
  • r_old = r
  • y_old = y

 

Problemi numerici

Problemi numerici si possono avere a causa: 

  • della quantizzazione dei parametri e delle variabili di ingresso e uscita
  • degli arrotondamenti
  • di underflow e overflow del processore

In particolare: 

  • a causa della rappresentazione quantizzata e del verificarsi di underflow, l’errore a regime in presenza di riferimento costante è diverso da zero anche in presenza dell’azione integrale 
  • in presenza dell’azione integrale l’errore a regime sarà tanto più grande quanto più piccolo sarà h (quindi al crescere della frequenza di campionamento)

Scelta della frequenza di campionamento

La frequenza di campionamento è limitata verso il basso dal teorema di Shannon e dalla banda desiderata a ciclo chiuso. In particolare, se f_s=\frac{1}{h} è la frequenza di campionamento e f_{BW} è la banda del sistema controllato, si ha:

f_s>2f_{BW}

Il limite inferiore dato dal teorema di Shannon è solo teorico. Nella pratica si sceglie:

f_s>10f_{BW}

Per motivi legati ai filtro anti-aliasing il limite inferiore cresce ancora e tipicamente si ha

f_s>200f_{BW}

Esiste anche una limitazione verso l’alto per f_s, sia per problemi legati ai costi realizzativi, sia per rendere contenuto l’errore a regime dovuto alla realizzazione digitale dell’azione integrale.

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion