Salta al contenuto
Note per Studenti Regolatori PI e PID digitali

Regolatori PI e PID digitali

In questa pagina 5
** (predittivo) azzera l'errore in un numero finito di passi ma è poco usato in industria. -->

Il controllo digitale a catena chiusaregolazione in cui un algoritmo numerico confronta continuamente l'uscita con il riferimento e comanda l'attuatore di un sistema richiede che il µC o DSP elabori i segnali prelevati dal campo con un algoritmo che realizza il regolatoreil blocco che calcola il comando da dare al sistema in funzione dell'errore: il segnale di erroredifferenza tra il riferimento e la grandezza misurata e=uref−ye=u_{ref}-y entra nell'algoritmo, l'uscita pilota l'attuatoredispositivo che applica il comando al sistema, per esempio un convertitore di potenza (spesso tramite un PWM: Modulazione PWM - duty-cycle, risoluzione e demodulazioneLa PWM trasferisce un segnale modulante $V^$ nella larghezza degli impulsi di un'onda quadra a frequenza fissa: con duty-cycle $d=t_1/T$ e livelli $\pm\frac E2$ la media è $V_{med}=(d-\frac12)E=E,\frac{V^}{V_p}$. L'informazione sta nel valor medio; il resto dello spettro (armoniche della portante) si elimina con un passa-basso (demodulazione). Il modulatore digitale è un timer: contatore + comparatore, $N=f_{clk}/f_{PWM}$ conteggi per periodo, risoluzione $n=\log_2N$ bit (massima frequenza per $n$ bit: $f_{clk}/2^n$), registro di compare = duty-cycle. Servono almeno 8 bit per evitare cicli limite.Modulazione PWM - duty-cycle, risoluzione e demodulazione →). Il progetto dei regolatori richiede la teoria dei controlli automatici estesa al tempo discreto; la realizzazione richiede le tecniche di signal processing dei filtri (Filtri numerici IIR e FIRUn filtro numerico è una equazione alle differenzerelazione che dà il campione di uscita in funzione di campioni di ingresso e di uscita passati $y(k)=\sum_ib_ix(k-i)+\sum_ia_iy(k-i)$. IIR (ricorsivo: qualche $a_i\ne0$) ha risposta impulsiva infinita e bastano pochi termini; FIR (tutti $a_i=0$) è sempre stabile ma richiede molti termini. Il passa-basso IIR del primo ordine $y(k)=b,x(k)+a,y(k-1)$ con $a+b=1$ ha guadagno 1 ed è stabile se $|a|<1$; la risposta al gradino è $y(k)=1-a^{k+1}$. Il filtro analogico equivalente (Eulero) ha $\tau=\dfrac{a,T_c}{1-a}$ e $f_T=\dfrac1{2\pi\tau}$. La media mobile di $N$ campioni è un FIR passa-basso che si assesta in $N$ passi.Filtri numerici IIR e FIR →). Il caso più semplice è tradurre in algoritmo, per discretizzazione (Discretizzazione di Eulero e TustinPer realizzare numericamente un filtro o regolatore $F(s)$ si approssima $\frac1s$ con un integratore a tempo discreto. Eulero: $\boxed{s=\dfrac{1-z^{-1}}{T_c}}$ (da $\mathrm{Int}(nT)=\mathrm{Int}((n-1)T)+T,x(n)$). Così $\dfrac{1+s\tau_z}{1+s\tau_p}$ diventa $y(k)=\dfrac{\tau_p}{T_c+\tau_p}y(k-1)+\dfrac{T_c+\tau_z}{T_c+\tau_p}x(k)-\dfrac{\tau_z}{T_c+\tau_p}x(k-1)$. Il passaggio inverso (da algoritmo a $F(s)$) usa $z^{-1}\approx1-sT_c$. L'approssimazione è affidabile solo fino a circa $f_c/10$ (distorsione, warping); Tustin $s=\frac2{T_c}\frac{1-z^{-1}}{1+z^{-1}}$ è più fedele.Discretizzazione di Eulero e Tustin →), regolatori progettati nel continuo: i PID.

Perché i PID. Nella larga maggioranza dei casi in ambito industriale i regolatori sono PID: compromesso molto buono tra complessità e prestazioni, algoritmi robusti, pochi parametri da tarare. Le prestazioni sono di solito più che soddisfacenti, anche se inferiori a quelle dell'equivalente analogico. In alternativa si usano algoritmi senza equivalente continuo, per esempio i regolatori predittivi.

Regolatore PI

In forma analogica PI(s)=Y(s)E(s)=kp+kisPI(s)=\dfrac{Y(s)}{E(s)}=k_p+\dfrac{k_i}s, con kpk_p guadagno proporzionalecoefficiente per cui si moltiplica l'errore istantaneo e kik_i guadagno integrale. Con la discretizzazione di Eulero si ottengono le equazioni di controllo  y(k)=kp e(k)+yI(k),yI(k)=kI′ e(k)+yI(k−1),kI′=ki Tc \boxed{\ y(k)=k_p\,e(k)+y_I(k),\qquad y_I(k)=k_I'\,e(k)+y_I(k-1),\qquad k_I'=k_i\,T_c\ } (yIy_I è la parte integrale, un accumulatore). Il PI "in parallelo" ha un ramo proporzionale e uno con integratore a tempo discreto (somma e ritardo z−1z^{-1}).

Costo di calcolo. Su un DSP con istruzione MACmoltiplica e accumula in un ciclo servono 3 cicli: (1) precaricare l'accumulatore con yI(k−1)y_I(k-1); (2) calcolare yI(k)y_I(k) con MAC  e(k),kI′\mathrm{MAC}\;e(k),k_I'; (3) calcolare y(k)y(k) con MAC  e(k),kp\mathrm{MAC}\;e(k),k_p. Naturalmente, in ogni moltiplicazione possono sorgere overflow ed effetti di quantizzazione (Quantizzazione, fattori di scala e cicli limiteUn algoritmo di filtro o regolatore pensato per un processore ideale va adattato alla realtà: temporizzazionedistribuzione nel tempo delle operazioni di un algoritmo (l'algoritmo nella ISR dell'ADC, durata minore di $T_c$), acquisizione (condizionamento del segnale per sfruttare tutto il fondo scala dell'ADC), fattori di scala (normalizzazione intera o 1.15; evitare overflow), quantizzazione di ingresso, uscita, coefficienti e prodotti (sposta i poli, genera errori a regime e cicli limite). Una frequenza di campionamento troppo alta rende più critica la quantizzazione dei coefficienti: va scelta coerente con la lunghezza di parola.Quantizzazione, fattori di scala e cicli limite →).

Esempio. kp=2k_p=2, ki=100 s−1k_i=100\ \text{s}^{-1}, Tc=1T_c=1 ms: kI′=0,1k_I'=0{,}1. Con e=1e=1 costante: yI(k)=0,1 (k+1)y_I(k)=0{,}1\,(k+1) e y(k)=2+0,1(k+1)=2,1; 2,2; 2,3;…y(k)=2+0{,}1(k+1)=2{,}1;\ 2{,}2;\ 2{,}3;\dots: il termine proporzionale agisce subito, quello integrale cresce linearmente finché e≠0e\ne0.

Attenzione ai fattori di scala. Se i coefficienti hanno valori molto diversi (tipicamente kp≫kI′k_p\gg k_I') la gestione in virgola fissa è delicata: un cattivo uso dell'aritmetica può rendere instabile il sistema anche con un progetto corretto: serve un opportuno cambio di scala (per esempio kpk_p in 4.12 e kI′k_I' in 0.16 con shift distinti: Realizzare un filtro o un regolatore a virgola fissaRealizzare in C un filtro a virgola fissa vuol dire scegliere per ogni dato il formato (coefficienti $<1$ in 0.16 U, coefficienti $>1$ in 1.15, 4.12, 5.11 S...), moltiplicare con aritmetica a 32 bit ($16\times16\to32$) e riportare il prodotto al formato di arrivo con uno shift a destrascorrimento dei bit verso destra: equivale a dividere per una potenza di 2; per sommare due prodotti con scale diverse si fa lo shift prima di sommare. Con $a+b=2^{16}$ il filtro $y=\big(a,y_{k-1}+b,(u\ll4)\big)\gg16$ non va in overflow in un uint32_t. Nel codice il formato di ogni variabile va dichiarato in un commento; la funzione $\sin x\approx x-\frac{x^3}6+\frac{x^5}{120}$ mostra come si approssima una funzione con polinomi a coefficienti in virgola fissa.Realizzare un filtro o un regolatore a virgola fissa →).

Regolatore PID

PID(s)=kp+kis+s kd.PID(s)=k_p+\frac{k_i}s+s\,k_d . L'azione derivativa pura non è fisicamente realizzabile (la funzione di trasferimento non è propriacon grado del numeratore maggiore del denominatore: non è realizzabile fisicamente), ma si può calcolare numericamente come differenza: yd(k)=kd′ [e(k)−e(k−1)],kd′=kdTc.y_d(k)=k_d'\,[e(k)-e(k-1)],\qquad k_d'=\frac{k_d}{T_c}. La derivata amplifica il rumore: va usata con attenzione. Un accorgimento comune è aggiungere un polo alla derivata (kds1+sτL\frac{k_ds}{1+s\tau_L}, termine passa-basso che limita l'azione in alta frequenza); con Eulero: yd(k)=kdTc+τL [e(k)−e(k−1)]+τLTc+τL yd(k−1).y_d(k)=\frac{k_d}{T_c+\tau_L}\,[e(k)-e(k-1)]+\frac{\tau_L}{T_c+\tau_L}\,y_d(k-1). Altrimenti si usa una media su più campioni: si costruisce un campione fittizio e∗e^* a metà dell'intervallo (media di 4 campioni) e si media il rapporto incrementale rispetto a e∗e^*: dedt≈16Tc [e(k)+3e(k−1)−3e(k−2)−e(k−3)].\frac{de}{dt}\approx\frac1{6T_c}\,[e(k)+3e(k-1)-3e(k-2)-e(k-3)]. Più campioni si mediano meno rumore, ma la risposta è più lenta: non conviene andare oltre qualche campione. Esistono anche configurazioni alternative, in cui a parità di guadagno di anello la parte derivativa è separata da proporzionale e integrale (PI più D sul solo segnale misurato, oppure PD più I).

Anti-wind-up

Con una saturazione del segnale di controllo (limiti dell'attuatore) in presenza di transitori di grande segnale, l'integratore continua ad accumulare l'errore: quando il sistema esce dalla saturazionelimite massimo e minimo del segnale di controllo che l'attuatore può realizzare deve scaricare l'integrale cresciuto in modo anomalo, producendo sovraelongazioni (anche del 35%, inaccettabili). L'anti-wind-up limita l'integrale. Un metodo molto efficace: a ogni passo si calcola L(k)=Ymax−∣kp e(k)∣L(k)=Y_{max}-|k_p\,e(k)| e si limita la parte integraletermine dell'uscita che accumula l'errore nel tempo in [−L(k),+L(k)][-L(k),+L(k)]: così ∣y∣<Ymax|y|<Y_{max}. L'algoritmo si complica (confronti con LL e salti condizionati), e alcuni µC/DSP hanno istruzioni di assembly apposite. Con l'anti-wind-uptecnica che impedisce all'integratore di accumulare l'errore durante la saturazione non ci sono sovraelongazioni alla risposta a un gradino del riferimentoil valore che si vuole far assumere alla grandezza controllata che porta in saturazione.

Regolatore predittivo (cenni)

Se si dispone di un modello affidabile del sistema, si può realizzare un controllo predittivo o dead-beat: la dinamica a catena chiusa, in assenza di errori di modello, equivale a un numero finito di ritardi elementari (l'uscita è una versione ritardata dell'ingresso). Richiede una stima dello stato, con controreazione sullo stato e un integratore kIT1−z−1\frac{k_IT}{1-z^{-1}}. È molto potente ma poco usato in ambito industriale: teoria complessa, progetto difficile, serve l'identificazione del processo, sensibilità al rumore di misura. Un esempio con polo in z=0z=0 è l'algoritmo del PLL digitale con i timerUn PLL (anello ad aggancio di fase) tiene un segnale generato a frequenza e fase in relazione costante con un riferimento. In un µC si realizza con un timer in capture (misura il periodo del riferimento) e uno in compare (genera gli impulsi). L'errore di fase $\Delta\phi$ (intervallo tra due eventi) va portato a 0 con un regolatore sul periodo $P$ degli impulsi: compensare solo l'errore istantaneo non basta, serve un PI: $P_{int}(k)=P_{int}(k-1)+\frac{\Delta\phi(k)}N$, $P(k+1)=P_{int}(k)+\frac{\Delta\phi(k)}N$ (con $N$ = rapporto delle frequenze), che è dead-beat (errore nullo in un passo, polo in $z=0$). In pratica si riducono i guadagni per robustezza.PLL digitale con i timer →, un PI con kp=kI′=111k_p=k_I'=\frac1{11} che annulla l'errore in un passo.

Errori comuni

  • Confondere kik_i (guadagno integrale analogico, in s−1\text{s}^{-1}) con kI′=kiTck_I'=k_iT_c (coefficiente dell'algoritmo).
  • Calcolare la derivata come e(k)−e(k−1)1\frac{e(k)-e(k-1)}1 senza dividere per TcT_c.
  • Dimenticare l'anti-wind-up con attuatori saturabili: sovraelongazionemassimo superamento del valore finale durante la risposta a un gradino ed errori persistenti.
  • Usare la derivata non filtrata con segnali rumorosi.

Versione ripasso

Esercizi su questo argomento

Teoria collegata