Salta al contenuto
Note per Studenti 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 18dal filtro analogico all'algoritmo con la discretizzazione di Eulero, rete anticipatrice, passa-alto e PI (temi d'esame gennaio, luglio e settembre 2026)

Esame
In questa pagina 5

Testo (temi d'esame gennaio 2026 problema P8, luglio 2026 problema P8, settembre 2026 problema P6). Usando il metodo di discretizzazione di Eulero, scrivere l'algoritmo che realizza per via numerica ciascuno dei seguenti filtri analogici, con l'espressione dei coefficienti in funzione delle costanti di tempo specificate:

(a) F(s)=1+sτz1+sτpF(s)=\dfrac{1+s\tau_z}{1+s\tau_p} (gennaio 2026); (b) F(s)=sτz1+sτpF(s)=\dfrac{s\tau_z}{1+s\tau_p}, passa-alto (luglio 2026); (c) il regolatore PI R(s)=1+sτzsτp=kp+kisR(s)=\dfrac{1+s\tau_z}{s\tau_p}=k_p+\dfrac{k_i}s (settembre 2026), con anche kpk_p e kik_i in funzione di τz\tau_z e τp\tau_p.

Esempi numerici: (a) Tc=10 μT_c=10\ \mus, τz=200 μ\tau_z=200\ \mus, τp=50 μ\tau_p=50\ \mus; (b) Tc=50 μT_c=50\ \mus, τz=τp=1\tau_z=\tau_p=1 ms; (c) Tc=1T_c=1 ms, kp=2k_p=2, ki=500 s−1k_i=500\ \text{s}^{-1}.


Teoria usata: 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 PI e PID digitaliIl PI digitale è $y(k)=k_p,e(k)+y_I(k)$ con $y_I(k)=k_I',e(k)+y_I(k-1)$ e $k_I'=k_iT_c$ (con una MAC bastano 3 cicli). Nel PID la derivata si calcola come $\frac{k_d}{T_c}[e(k)-e(k-1)]$ ed è sensibile al rumore: si usa la versione filtrata $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)$ o una media su più campioni. Con la saturazione dell'attuatore serve l'anti-wind-up: $|y_I|\le L(k)=Y_{max}-|k_pe(k)|$. Il controllo dead-beatcontrollo che porta l'errore a zero in un numero finito di passi (predittivo) azzera l'errore in un numero finito di passi ma è poco usato in industria.Regolatori PI e PID digitali →.

Metodo

Si sostituisce s=1−z−1Tcs=\dfrac{1-z^{-1}}{T_c}, si moltiplicano numeratore e denominatore per TcT_c per eliminare le frazioni, si scrive la funzione di trasferimento in z−1z^{-1} e la si traduce in equazione alle differenze (z−1Y(z)↔y(k−1)z^{-1}Y(z)\leftrightarrow y(k-1)). Il coefficiente di y(k)y(k) si porta a 1 dividendo.

(a) Rete anticipatrice/attenuatrice

F(z)=1+τz1−z−1Tc1+τp1−z−1Tc=(Tc+τz)−τzz−1(Tc+τp)−τpz−1.F(z)=\frac{1+\tau_z\frac{1-z^{-1}}{T_c}}{1+\tau_p\frac{1-z^{-1}}{T_c}}=\frac{(T_c+\tau_z)-\tau_zz^{-1}}{(T_c+\tau_p)-\tau_pz^{-1}}. Quindi (Tc+τp) y(k)−τp y(k−1)=(Tc+τz) x(k)−τz x(k−1)(T_c+\tau_p)\,y(k)-\tau_p\,y(k-1)=(T_c+\tau_z)\,x(k)-\tau_z\,x(k-1) e y(k)=τpTc+τp y(k−1)+Tc+τzTc+τp x(k)−τzTc+τp x(k−1)\boxed{y(k)=\frac{\tau_p}{T_c+\tau_p}\,y(k-1)+\frac{T_c+\tau_z}{T_c+\tau_p}\,x(k)-\frac{\tau_z}{T_c+\tau_p}\,x(k-1)} con coefficienti a1=τpTc+τpa_1=\frac{\tau_p}{T_c+\tau_p}, b0=Tc+τzTc+τpb_0=\frac{T_c+\tau_z}{T_c+\tau_p}, b1=−τzTc+τpb_1=-\frac{\tau_z}{T_c+\tau_p}. Controllo: b0+b1=TcTc+τp=1−a1b_0+b_1=\frac{T_c}{T_c+\tau_p}=1-a_1, perciò il guadagno in continua è b0+b11−a1=1\frac{b_0+b_1}{1-a_1}=1, come F(0)=1F(0)=1.

Numeri: Tc+τp=60 μT_c+\tau_p=60\ \mus: a1=5060=0,833a_1=\frac{50}{60}=0{,}833, b0=10+20060=3,5b_0=\frac{10+200}{60}=3{,}5, b1=−20060=−3,333b_1=-\frac{200}{60}=-3{,}333. Risposta a un gradino unitario: y(0)=3,5y(0)=3{,}5, 3,0833{,}083, 2,7362{,}736, 2,4472{,}447, 2,2062{,}206, 2,005,⋯→12{,}005,\dots\to1. Confronto con il filtro analogico 1+3 e−t/τp1+3\,e^{-t/\tau_p} a t=kTct=kT_c: 4,004{,}00; 3,463{,}46; 3,013{,}01; 2,652{,}65; 2,352{,}35; 2,102{,}10: stessa forma, con uno scostamento iniziale (3,53{,}5 contro 4) dovuto alla discretizzazione; l'accuratezza di Eulero è migliore con Tc≪τpT_c\ll\tau_p.

(b) Passa-alto

F(z)=τz1−z−1Tc1+τp1−z−1Tc=τz(1−z−1)(Tc+τp)−τpz−1F(z)=\frac{\tau_z\frac{1-z^{-1}}{T_c}}{1+\tau_p\frac{1-z^{-1}}{T_c}}=\frac{\tau_z(1-z^{-1})}{(T_c+\tau_p)-\tau_pz^{-1}} y(k)=τpTc+τp y(k−1)+τzTc+τp [x(k)−x(k−1)]\boxed{y(k)=\frac{\tau_p}{T_c+\tau_p}\,y(k-1)+\frac{\tau_z}{T_c+\tau_p}\,\big[x(k)-x(k-1)\big]} (è il caso (a) con b0=−b1b_0=-b_1). Numeri: Tc=50 μT_c=50\ \mus, τz=τp=1\tau_z=\tau_p=1 ms: a1=11,05=0,952a_1=\frac{1}{1{,}05}=0{,}952 e τzTc+τp=0,952\frac{\tau_z}{T_c+\tau_p}=0{,}952: y(k)=0,952 y(k−1)+0,952 [x(k)−x(k−1)]y(k)=0{,}952\,y(k-1)+0{,}952\,[x(k)-x(k-1)] (è il filtro dell'esercizio precedente con λ=0,05\lambda=0{,}05, τ=20 Tc\tau=20\,T_c). Il guadagno in continua è 0: F(0)=0F(0)=0.

(c) Regolatore PI

R(z)=1+τz1−z−1Tcτp1−z−1Tc=Tc+τz−τzz−1τp (1−z−1)R(z)=\frac{1+\tau_z\frac{1-z^{-1}}{T_c}}{\tau_p\frac{1-z^{-1}}{T_c}}=\frac{T_c+\tau_z-\tau_zz^{-1}}{\tau_p\,(1-z^{-1})} y(k)=y(k−1)+Tc+τzτp x(k)−τzτp x(k−1)\boxed{y(k)=y(k-1)+\frac{T_c+\tau_z}{\tau_p}\,x(k)-\frac{\tau_z}{\tau_p}\,x(k-1)} Con R(s)=1sτp+τzτp=kp+kisR(s)=\frac1{s\tau_p}+\frac{\tau_z}{\tau_p}=k_p+\frac{k_i}s si legge kp=τzτpk_p=\dfrac{\tau_z}{\tau_p}, ki=1τpk_i=\dfrac1{\tau_p}. L'algoritmo è equivalente a y(k)=y(k−1)+kp [x(k)−x(k−1)]+kiTc x(k)y(k)=y(k-1)+k_p\,[x(k)-x(k-1)]+k_iT_c\,x(k) (forma "di velocità", con kI′=kiTc=Tcτpk_I'=k_iT_c=\frac{T_c}{\tau_p}): infatti kp x(k)+kiTc x(k)=τz+Tcτpx(k)k_p\,x(k)+k_iT_c\,x(k)=\frac{\tau_z+T_c}{\tau_p}x(k) e −kp x(k−1)=−τzτpx(k−1)-k_p\,x(k-1)=-\frac{\tau_z}{\tau_p}x(k-1) ✓.

Numeri: kp=2k_p=2, ki=500 s−1k_i=500\ \text{s}^{-1}, Tc=1T_c=1 ms: τp=1ki=2\tau_p=\frac1{k_i}=2 ms, τz=kpτp=4\tau_z=k_p\tau_p=4 ms; y(k)=y(k−1)+1+42x(k)−42x(k−1)=y(k−1)+2,5 x(k)−2 x(k−1)y(k)=y(k-1)+\frac{1+4}{2}x(k)-\frac42x(k-1)=y(k-1)+2{,}5\,x(k)-2\,x(k-1). Verifica con la forma di velocità: 2 [x(k)−x(k−1)]+0,5 x(k)2\,[x(k)-x(k-1)]+0{,}5\,x(k) ✓. Con errore costante x=1x=1: y(0)=2,5y(0)=2{,}5 (l'azione proporzionale agisce subito: kp=2k_p=2 più kiTc=0,5k_iT_c=0{,}5), poi y(k)=y(k−1)+0,5y(k)=y(k-1)+0{,}5: 2,5; 3; 3,5;…2{,}5;\ 3;\ 3{,}5;\dots (rampa).

Errori comuni

  • Dimenticare di dividere i coefficienti per (Tc+τp)(T_c+\tau_p) (per il PI per τp\tau_p): il coefficiente di y(k)y(k) deve essere 1.
  • Scrivere τz\tau_z al posto di (Tc+τz)(T_c+\tau_z) nel coefficiente di x(k)x(k).
  • Dimenticare il segno meno nel coefficiente di x(k−1)x(k-1).
  • Confondere kik_i (in s−1\text{s}^{-1}) con il coefficiente dell'algoritmo kiTck_iT_c.

Versione ripasso

Testo. Algoritmo di Eulero per 1+sτz1+sτp\frac{1+s\tau_z}{1+s\tau_p}, sτz1+sτp\frac{s\tau_z}{1+s\tau_p} e per il PI 1+sτzsτp\frac{1+s\tau_z}{s\tau_p} con kpk_p e kik_i (gennaio, luglio, settembre 2026).

Teoria collegata