Regolatori PI e PID digitali
In questa pagina 5
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 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 , con guadagno proporzionalecoefficiente per cui si moltiplica l'errore istantaneo e guadagno integrale. Con la discretizzazione di Eulero si ottengono le equazioni di controllo ( è la parte integrale, un accumulatore). Il PI "in parallelo" ha un ramo proporzionale e uno con integratore a tempo discreto (somma e ritardo ).
Costo di calcolo. Su un DSP con istruzione MACmoltiplica e accumula in un ciclo servono 3 cicli: (1) precaricare l'accumulatore con ; (2) calcolare con ; (3) calcolare con . 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. , , ms: . Con costante: e : il termine proporzionale agisce subito, quello integrale cresce linearmente finché .
Attenzione ai fattori di scala. Se i coefficienti hanno valori molto diversi (tipicamente ) 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 in 4.12 e 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
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: La derivata amplifica il rumore: va usata con attenzione. Un accorgimento comune è aggiungere un polo alla derivata (, termine passa-basso che limita l'azione in alta frequenza); con Eulero: Altrimenti si usa una media su più campioni: si costruisce un campione fittizio a metà dell'intervallo (media di 4 campioni) e si media il rapporto incrementale rispetto a : 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 e si limita la parte integraletermine dell'uscita che accumula l'errore nel tempo in : così . L'algoritmo si complica (confronti con 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 . È 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 è 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 che annulla l'errore in un passo.
Errori comuni
- Confondere (guadagno integrale analogico, in ) con (coefficiente dell'algoritmo).
- Calcolare la derivata come senza dividere per .
- 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
- PI: , , ; 3 cicli con MAC. Esempio , , : .
- PID: ; derivata (rumore!); filtrata: ; media su 4 campioni: .
- Anti-wind-up: (evita sovraelongazioni, ad es. 35%).
- Predittivo/dead-beat: modello e stima dello stato; azzera l'errore in passi finiti; poco usato.
- Errori: contro ; derivata senza ; niente anti-wind-up; derivata non filtrata (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 →).
Esercizi su questo argomento
- Esercizio 18 · dal filtro analogico all'algoritmo con la discretizzazione di Eulero, rete anticipatrice, passa-alto e PI (temi d'esame gennaio, luglio e settembre 2026)
- Esercizio 20 · regolatore PI in C per il controllo PWM di un motore, valore del duty-cycle e risoluzione (tema d'esame gennaio 2023)
- Esercizio 21 · controllo digitale della velocità di un motore con regolatore PI, scale, timer e trasmissione seriale (tema d'esame 3 settembre 2020)
- Esercizio 29 · PLL digitale con timer, regolatore dead-beat e margini di tempo di calcolo (esempio del corso)
- Esercizio 31 · sistema di controllo di un ascensore con microcontrollore a 8 bit (tema d'esame 18 luglio 2006)