[Controlli Automatici] #1 - progettazione di un controllore
Sto tentando di risolvere questa traccia d'esame

mediante il metodo del loop shaping.
Sia $L(s)$ la funzione di trasferimento ad anello aperto del sistema retroazionato, data dal prodotto $R(s)$, ossia la funzione di trasferimento del regolatore incognito, e $G(s)$, ossia la funzione di trasferimento del processo assegnato.
Per il punto 1), affinché l'errore a regime sia nullo con riferimento a gradino, bisogna avere un sistema di tipo uno, ossia suppongo che
$L(s) = \mu_L/s$.
Per il punto 2), affinché la risposta indiciale abbia sovraelongazione minore del $20%$, è necessario che i poli complessi coniugati della funzione di trasferimento ad anello chiuso, ossia la funzione di sensitività complementare, abbiano smorzamento $\zeta$ almeno maggiore o uguale di $0.45$.
Dalla relazione approssimata $\phi_m = 100\zeta$, si ha che bisogna garantire un margine di fase $\phi_m$ di almeno $45°$.
Per il punto 3), affinché il disturbo $d(t)$ sull'uscita sia attenuato di almeno $20_{dB}$, è necessario imporre che
$|L(j\omega)| = \frac{\mu_L}{0.1} = 10$, da cui $\mu_L = 1$.
Lo stesso dicasi per il punto 4), imponendo che alla pulsazione $50 \frac{rad}{s}$ il modulo della funzione valga $-20_{dB}$
$|L(j\omega)| = \frac{\mu_L}{50} = 0.1$, da cui $\mu_L = 5$.
Tracciando i diagrammi di Bode delle due rette $\frac{1}{j\omega}$ e $\frac{5}{j\omega}$, si ottiene quanto segue:

Adesso, devo raccordare le due rette. Scelgo come pulsazione critica $\omega_c = 5$, che si trova una decade prima di $50$ e più di una decade a destra di $0.1$, così da non intaccare le specifiche sull'attenuazione dei disturbi.
In $\omega_c = 5$, il diagramma deve passare per l'asse a $0_{dB}$ con pendenza -1, per "partire" con un margine di fase di $90°$. Siccome la retta $\frac{5}{j\omega}$ rispetta già questo requisito, decido di prolungarla fino all'asse a $20_{dB}$, ottenendo come pulsazione di intersezione $0.5 \frac{rad}{s}$.
Dunque, inserendo nella mia $L(s)$ uno zero proprio in $0.1$ e un polo in $0.5$, ottengo:
$L(s) = \frac{(1 + 10s)}{s(1 + 2s)}$, che ha grado relativo 1 < 2, quindi il regolatore è fisicamente irrealizzabile. Per risolvere tale problema, posso far si che la $L$ abbia un ulteriore polo in alta frequenza, magari una decade a destra di 50, ottenendo quindi in definitiva:
$L(s) = \frac{(1 + 10s)}{s(1 + 2s)(1 + s/500)}$
Con il comando margin del Matlab scopro che il margine di fase è di $94°$, che rispetterebbe certamente la condizione sulla sovraelongazione, quasi addirittura annullandola.
Supponiamo di voler far sì che il margine sia proprio intorno a $45°$ (abbassando così il margine di circa $50°$). Allora, anziché usare quel polo in alta frequenza per la fisica realizzabilità, lo sostituisco con uno che soddisfi la specifica:
$arg(\omega_c\tau) = 50°$
$\omega_c\tau = tan(50°)$
che, usando il matlab, risulta $\tau = 0.24 s$.
La nuova e definitiva $L(s)$ risulta essere
\(\displaystyle L(s) = \frac{(1 + 10s)}{s(1 + 2s)(1 + 0.24s)} \)
che, usando ancora margin, ha un margine di fase di $54°$ alla pulsazione critica $3.7$.
Per rispondere al punto sulla banda passante del sistema a ciclo chiuso, sempre con l'ausilio del Matlab risulta essere pari a $5.8 \frac{rad}{s}$.
Le mie domande sono queste:
1) Il procedimento svolto sino a questo punto è corretto?
2) Non riesco a capire come soddisfare il punto 5). Per aumentare la banda passante della funzione di sensitività complementare devo aumentare la pulsazione critica? Come faccio a capire a quale valore massimo posso portarla senza intaccare le specifiche sui disturbi?
Grazie.

mediante il metodo del loop shaping.
Sia $L(s)$ la funzione di trasferimento ad anello aperto del sistema retroazionato, data dal prodotto $R(s)$, ossia la funzione di trasferimento del regolatore incognito, e $G(s)$, ossia la funzione di trasferimento del processo assegnato.
Per il punto 1), affinché l'errore a regime sia nullo con riferimento a gradino, bisogna avere un sistema di tipo uno, ossia suppongo che
$L(s) = \mu_L/s$.
Per il punto 2), affinché la risposta indiciale abbia sovraelongazione minore del $20%$, è necessario che i poli complessi coniugati della funzione di trasferimento ad anello chiuso, ossia la funzione di sensitività complementare, abbiano smorzamento $\zeta$ almeno maggiore o uguale di $0.45$.
Dalla relazione approssimata $\phi_m = 100\zeta$, si ha che bisogna garantire un margine di fase $\phi_m$ di almeno $45°$.
Per il punto 3), affinché il disturbo $d(t)$ sull'uscita sia attenuato di almeno $20_{dB}$, è necessario imporre che
$|L(j\omega)| = \frac{\mu_L}{0.1} = 10$, da cui $\mu_L = 1$.
Lo stesso dicasi per il punto 4), imponendo che alla pulsazione $50 \frac{rad}{s}$ il modulo della funzione valga $-20_{dB}$
$|L(j\omega)| = \frac{\mu_L}{50} = 0.1$, da cui $\mu_L = 5$.
Tracciando i diagrammi di Bode delle due rette $\frac{1}{j\omega}$ e $\frac{5}{j\omega}$, si ottiene quanto segue:

Adesso, devo raccordare le due rette. Scelgo come pulsazione critica $\omega_c = 5$, che si trova una decade prima di $50$ e più di una decade a destra di $0.1$, così da non intaccare le specifiche sull'attenuazione dei disturbi.
In $\omega_c = 5$, il diagramma deve passare per l'asse a $0_{dB}$ con pendenza -1, per "partire" con un margine di fase di $90°$. Siccome la retta $\frac{5}{j\omega}$ rispetta già questo requisito, decido di prolungarla fino all'asse a $20_{dB}$, ottenendo come pulsazione di intersezione $0.5 \frac{rad}{s}$.
Dunque, inserendo nella mia $L(s)$ uno zero proprio in $0.1$ e un polo in $0.5$, ottengo:
$L(s) = \frac{(1 + 10s)}{s(1 + 2s)}$, che ha grado relativo 1 < 2, quindi il regolatore è fisicamente irrealizzabile. Per risolvere tale problema, posso far si che la $L$ abbia un ulteriore polo in alta frequenza, magari una decade a destra di 50, ottenendo quindi in definitiva:
$L(s) = \frac{(1 + 10s)}{s(1 + 2s)(1 + s/500)}$
Con il comando margin del Matlab scopro che il margine di fase è di $94°$, che rispetterebbe certamente la condizione sulla sovraelongazione, quasi addirittura annullandola.
Supponiamo di voler far sì che il margine sia proprio intorno a $45°$ (abbassando così il margine di circa $50°$). Allora, anziché usare quel polo in alta frequenza per la fisica realizzabilità, lo sostituisco con uno che soddisfi la specifica:
$arg(\omega_c\tau) = 50°$
$\omega_c\tau = tan(50°)$
che, usando il matlab, risulta $\tau = 0.24 s$.
La nuova e definitiva $L(s)$ risulta essere
\(\displaystyle L(s) = \frac{(1 + 10s)}{s(1 + 2s)(1 + 0.24s)} \)
che, usando ancora margin, ha un margine di fase di $54°$ alla pulsazione critica $3.7$.
Per rispondere al punto sulla banda passante del sistema a ciclo chiuso, sempre con l'ausilio del Matlab risulta essere pari a $5.8 \frac{rad}{s}$.
Le mie domande sono queste:
1) Il procedimento svolto sino a questo punto è corretto?
2) Non riesco a capire come soddisfare il punto 5). Per aumentare la banda passante della funzione di sensitività complementare devo aumentare la pulsazione critica? Come faccio a capire a quale valore massimo posso portarla senza intaccare le specifiche sui disturbi?
Grazie.
Risposte
Solo un’osservazione. Se ho capito bene il controllore che ne risulta dovrebbe implementare complessivamente 3 zeri e 3 poli: sei sicuro che per la consegna non fosse sufficiente un semplice controllore proporzionale-integrativo?
Sulla realizzazione del controllore non dovrebbero esserci restrizioni.
Tuttavia, le metodologie di progetto su cui ci siamo maggiormente soffermati e che il docente ha utilizzato negli esercizi svolti sono il loop shaping (che ho scelto di adottare perché le specifiche, per come sono fornite, sembrano essere proprio adatte ad essere implementate nel dominio frequenziale), il metodo delle reti correttrici e il luogo delle radici.
Suppongo che tu voglia utilizzare un regolatore PI, che è uno specifico regolatore PID, ma su questi non ci siamo soffermati granché, quindi non ho idea di come realizzarlo.
Tuttavia, le metodologie di progetto su cui ci siamo maggiormente soffermati e che il docente ha utilizzato negli esercizi svolti sono il loop shaping (che ho scelto di adottare perché le specifiche, per come sono fornite, sembrano essere proprio adatte ad essere implementate nel dominio frequenziale), il metodo delle reti correttrici e il luogo delle radici.
Suppongo che tu voglia utilizzare un regolatore PI, che è uno specifico regolatore PID, ma su questi non ci siamo soffermati granché, quindi non ho idea di come realizzarlo.
Io allora inizierei con lo studio di un controllore a semplice integratore, utilizzando il luogo delle radici. Dopodiché valuterei gli effetti dell’aggiunta di uno zero reale per migliorare la stabilità.
Ho cercato di intraprendere la strada di progetto che mi hai suggerito.
Considero un regolatore integrale
$R(s) = \frac{\mu_{R}}{s}$
che garantisce astatismo rispetto al riferimento, quindi il punto 1) è rispettato. Resta libero il $\mu_{R}$.
Il punto 2) si traduce nella scelta di un coefficiente di smorzamento maggiore o uguale di $0.45$.
Lo scelgo pari a $0.5$.
Considero quindi la f.d.t. ad anello aperto
\(\displaystyle L(s) = \frac{15\mu_{R}}{s(s+10)(s+1)} \)
e ne traccio il luogo delle radici diretto, che risulta essere il seguente

e si vede che in prossimità dello smorzamento circa pari a $0.5$, a cui corrisponde una sovraelongazione della risposta al gradino del $16%$, i poli complessi dominanti a ciclo chiuso sono
$p_1 = -0.455 + j0.783$
$p_2 = -0.455 - j0.783$
e la costante di trasferimento della $L(s)$, in prossimità di tali poli, vale $\rho = 0.552$.
A questo punto, posso ricavare il $\mu_R$:
$0.552 = 15\mu_R$, da cui $\mu_R = 0.036$.
Quindi, fino a questo punto, il regolatore è il seguente
$R(s) = \frac{0.036}{s}$
che permette di soddisfare le prime due specifiche.
A questo punto, per capire come soddisfare i punti 3) e 4), traccio il diagramma di Bode della $L(s)$, scoprendo che:
- in $\omega = 0.1 \frac{rad}{s}$, il modulo vale $-5.24_{dB}$ (in naturale $0.54$), quando dovrebbe valere almeno $20_{dB}$ (in naturale $10$);
- in $\omega = 50 \frac{rad}{s}$, il modulo vale $-108_{dB}$, che soddisfa già abbondantemente la specifica 4).
Dunque, dovrei avere un'amplificazione del modulo in $0.1$, per portarlo a $20_{dB}$.
Ciò è possibile tramite l'aggiunta di uno zero al regolatore, il cui modulo vale proprio il valore dell'amplificazione (in scala naturale), ossia:
$|1 + j \omega \tau| = \frac{10}{0.54}$
$|1 + j \omega \tau| = 19$
$\sqrt{1 + \omega^2 \tau^2) = 19$ per $\omega = 0.1 \frac{rad}{s}$
da cui, si ha che $\tau = 190 s$.
La nuova f.d.t. ad anello aperto vale:
$L(s) = \frac{104.5(s + 0.005263)}{s(s+10)(s+1)}$
che, stavolta:
- in $\omega = 0.1 \frac{rad}{s}$, il modulo vale $21_{dB}$;
- in $\omega = 50 \frac{rad}{s}$, il modulo vale $-27_{dB}$;
e quindi entrambe le specifiche sui segnali esogeni sono rispettate.
Inoltre, la funzione ha un margine di fase di $58°$ a una pulsazione critica pari a $8.07 \frac{rad}{s}$.
Infine, la banda passante della f.d.t. ad anello chiuso risulta pari a $12.71 \frac{rad}{s}$.
Il regolatore completo vale quindi:
$R(s) = \frac{0.056(1 + 190s)}{s}$
che è proprio proporzionale-integrativo, come tu mi hai indicato.
Noto che lo zero del regolatore, che tu mi hai suggerito per migliorare la stabilità, io invece l'ho usato per soddisfare la specifica sul disturbo.
Cosa intendevi con "migliorare la stabilità tramite lo zero"?
Come aumento la banda passante a ciclo chiuso?
Considero un regolatore integrale
$R(s) = \frac{\mu_{R}}{s}$
che garantisce astatismo rispetto al riferimento, quindi il punto 1) è rispettato. Resta libero il $\mu_{R}$.
Il punto 2) si traduce nella scelta di un coefficiente di smorzamento maggiore o uguale di $0.45$.
Lo scelgo pari a $0.5$.
Considero quindi la f.d.t. ad anello aperto
\(\displaystyle L(s) = \frac{15\mu_{R}}{s(s+10)(s+1)} \)
e ne traccio il luogo delle radici diretto, che risulta essere il seguente

e si vede che in prossimità dello smorzamento circa pari a $0.5$, a cui corrisponde una sovraelongazione della risposta al gradino del $16%$, i poli complessi dominanti a ciclo chiuso sono
$p_1 = -0.455 + j0.783$
$p_2 = -0.455 - j0.783$
e la costante di trasferimento della $L(s)$, in prossimità di tali poli, vale $\rho = 0.552$.
A questo punto, posso ricavare il $\mu_R$:
$0.552 = 15\mu_R$, da cui $\mu_R = 0.036$.
Quindi, fino a questo punto, il regolatore è il seguente
$R(s) = \frac{0.036}{s}$
che permette di soddisfare le prime due specifiche.
A questo punto, per capire come soddisfare i punti 3) e 4), traccio il diagramma di Bode della $L(s)$, scoprendo che:
- in $\omega = 0.1 \frac{rad}{s}$, il modulo vale $-5.24_{dB}$ (in naturale $0.54$), quando dovrebbe valere almeno $20_{dB}$ (in naturale $10$);
- in $\omega = 50 \frac{rad}{s}$, il modulo vale $-108_{dB}$, che soddisfa già abbondantemente la specifica 4).
Dunque, dovrei avere un'amplificazione del modulo in $0.1$, per portarlo a $20_{dB}$.
Ciò è possibile tramite l'aggiunta di uno zero al regolatore, il cui modulo vale proprio il valore dell'amplificazione (in scala naturale), ossia:
$|1 + j \omega \tau| = \frac{10}{0.54}$
$|1 + j \omega \tau| = 19$
$\sqrt{1 + \omega^2 \tau^2) = 19$ per $\omega = 0.1 \frac{rad}{s}$
da cui, si ha che $\tau = 190 s$.
La nuova f.d.t. ad anello aperto vale:
$L(s) = \frac{104.5(s + 0.005263)}{s(s+10)(s+1)}$
che, stavolta:
- in $\omega = 0.1 \frac{rad}{s}$, il modulo vale $21_{dB}$;
- in $\omega = 50 \frac{rad}{s}$, il modulo vale $-27_{dB}$;
e quindi entrambe le specifiche sui segnali esogeni sono rispettate.
Inoltre, la funzione ha un margine di fase di $58°$ a una pulsazione critica pari a $8.07 \frac{rad}{s}$.
Infine, la banda passante della f.d.t. ad anello chiuso risulta pari a $12.71 \frac{rad}{s}$.
Il regolatore completo vale quindi:
$R(s) = \frac{0.056(1 + 190s)}{s}$
che è proprio proporzionale-integrativo, come tu mi hai indicato.
Noto che lo zero del regolatore, che tu mi hai suggerito per migliorare la stabilità, io invece l'ho usato per soddisfare la specifica sul disturbo.
Cosa intendevi con "migliorare la stabilità tramite lo zero"?
Come aumento la banda passante a ciclo chiuso?
C'è solo qualche problema di normalizzazione. Con il solo integratore io ottengo lo stesso diagramma con guadagno K=8.3 anziché 0.552.

Si, devo aver plottato per errore il luogo di
\( \displaystyle L(s) = \frac{15}{s(s+10)(s+1)} \)
anziché di
\( \displaystyle L(s) = \frac{1}{s(s+10)(s+1)} \)
infatti, con il nuovo luogo mi trovo come te

dove
$\mu_{R} = 8.3/15 = 0.55$
e quindi il regolatore corretto è
$ R(s) = \frac{0.55(1 + 190s)}{s} $
Resta ancora aperto il dubbio su come ampliare al massimo la banda passante a ciclo chiuso.
\( \displaystyle L(s) = \frac{15}{s(s+10)(s+1)} \)
anziché di
\( \displaystyle L(s) = \frac{1}{s(s+10)(s+1)} \)
infatti, con il nuovo luogo mi trovo come te

dove
$\mu_{R} = 8.3/15 = 0.55$
e quindi il regolatore corretto è
$ R(s) = \frac{0.55(1 + 190s)}{s} $
Resta ancora aperto il dubbio su come ampliare al massimo la banda passante a ciclo chiuso.
Hai studiato il luogo delle radici con il nuovo controllore?
Facciamo un passo indietro.
E' assodato che la parte di regolatore che soddisfa i punti 1 e 2 dell'esercizio è
$R(s) = 0.55/s$
con
$L(s) = \frac{8.3}{s(s+1)(s+10)}$
e le radici a ciclo chiuso sono quelle pubblicate nell'ultimo post.
Ora, per soddisfare i punti 3 e 4, devo valutare la $L(s)$ nelle pulsazioni $0.1 {rad}/s$ e $50 {rad}/s$:
-nella prima, risulta valere in modulo circa $18.33_{dB}$, quasi vicino al valore desiderato;
-nella seconda, risulta valere in modulo circa $-83.72_{dB}$, che è un valore più che soddisfacente.
Inoltre, la pulsazione critica (che confondiamo con la banda passante a ciclo chiuso) vale circa $0.68 {rad}/s$
con circa $51°$ di margine di fase.
Possiamo introdurre a questo punto lo zero nel regolatore per aumentare la pulsazione critica.
Una prima idea è quella di far sì che lo zero amplifichi di circa $63_{dB}$ la $L(s)$ alla pulsazione di $50 {rad}/s$, visto che è richiesto un valore pari a $-20_{dB}$.
Scrivo quindi la relazione di modulo
$sqrt(1 + 50^2\tau_z) = 10^(63/20)$
da cui si ricava $\tau_z = 28 s$.
Il regolatore
$R(s) = 0.55(1+28s)/s$
fa sì che la nuova $L(s)$ associata, ossia
$L(s) = \frac{231s + 8.25}{s^3 + 11s^2 + 10s}$
abbia rispettate le specifiche 3 e 4, con una pulsazione critica decisamente più grande, ossia $13.6 {rad}/s$, ma presenta un margine di fase minore del minimo necessario ($45°$, rispettando la specifica sulla sovraelongazione col segno di uguaglianza), ossia circa $40°$.
Allora, posso provare a ridurre l'amplificazione su $50 {rad}/s$, provando con un valore di $60_{dB}$.
Lo zero che permette questo vale, stavolta
$\tau_z = 20 s$.
Il regolatore
$R(s) = 0.55(1+20s)/s$
fa sì che la nuova $L(s)$ associata, ossia
$L(s) = \frac{165s + 8.25}{s^3 + 11s^2 + 10s}$
abbia rispettate le specifiche 3 e 4, pulsazione critica $11 {rad}/s$ e margine di fase di $47°$.
La risposta al gradino del sistema a ciclo chiuso è la seguente

perché la funzione ad anello chiuso, ossia
$F(s) = \frac{165(s+0.05)}{(s+0.04728)(s^2 + 10.95s + 174.5)}$
presenta un polo e uno zero reali entrambi molto vicini, quindi il valore di regime è raggiunto lentamente.
Corretto?
E' assodato che la parte di regolatore che soddisfa i punti 1 e 2 dell'esercizio è
$R(s) = 0.55/s$
con
$L(s) = \frac{8.3}{s(s+1)(s+10)}$
e le radici a ciclo chiuso sono quelle pubblicate nell'ultimo post.
Ora, per soddisfare i punti 3 e 4, devo valutare la $L(s)$ nelle pulsazioni $0.1 {rad}/s$ e $50 {rad}/s$:
-nella prima, risulta valere in modulo circa $18.33_{dB}$, quasi vicino al valore desiderato;
-nella seconda, risulta valere in modulo circa $-83.72_{dB}$, che è un valore più che soddisfacente.
Inoltre, la pulsazione critica (che confondiamo con la banda passante a ciclo chiuso) vale circa $0.68 {rad}/s$
con circa $51°$ di margine di fase.
Possiamo introdurre a questo punto lo zero nel regolatore per aumentare la pulsazione critica.
Una prima idea è quella di far sì che lo zero amplifichi di circa $63_{dB}$ la $L(s)$ alla pulsazione di $50 {rad}/s$, visto che è richiesto un valore pari a $-20_{dB}$.
Scrivo quindi la relazione di modulo
$sqrt(1 + 50^2\tau_z) = 10^(63/20)$
da cui si ricava $\tau_z = 28 s$.
Il regolatore
$R(s) = 0.55(1+28s)/s$
fa sì che la nuova $L(s)$ associata, ossia
$L(s) = \frac{231s + 8.25}{s^3 + 11s^2 + 10s}$
abbia rispettate le specifiche 3 e 4, con una pulsazione critica decisamente più grande, ossia $13.6 {rad}/s$, ma presenta un margine di fase minore del minimo necessario ($45°$, rispettando la specifica sulla sovraelongazione col segno di uguaglianza), ossia circa $40°$.
Allora, posso provare a ridurre l'amplificazione su $50 {rad}/s$, provando con un valore di $60_{dB}$.
Lo zero che permette questo vale, stavolta
$\tau_z = 20 s$.
Il regolatore
$R(s) = 0.55(1+20s)/s$
fa sì che la nuova $L(s)$ associata, ossia
$L(s) = \frac{165s + 8.25}{s^3 + 11s^2 + 10s}$
abbia rispettate le specifiche 3 e 4, pulsazione critica $11 {rad}/s$ e margine di fase di $47°$.
La risposta al gradino del sistema a ciclo chiuso è la seguente

perché la funzione ad anello chiuso, ossia
$F(s) = \frac{165(s+0.05)}{(s+0.04728)(s^2 + 10.95s + 174.5)}$
presenta un polo e uno zero reali entrambi molto vicini, quindi il valore di regime è raggiunto lentamente.
Corretto?
Ok, ma resta il problema del polo così vicino all’origine da causare il fenomeno che hai segnalato. Io in realtà pensavo ad uno zero posto a sinistra del polo $(s+1)$ in modo da orientare verso sinistra, anziché verso destra, il ramo dei poli complessi coniugati del solo integratore. Ad esempio uno zero del tipo: $(s+2)$.

Ho verificato che con la tua soluzione effettivamente tutte le specifiche sono rispettate.
Solo una cosa: come si fa, guardando il luogo delle radici, a capire che le specifiche 3 e 4 sono soddisfatte?
Solo una cosa: come si fa, guardando il luogo delle radici, a capire che le specifiche 3 e 4 sono soddisfatte?
Partendo dal solo integratore (che era comunque necessario) i requisiti di sistema erano in realtà già quasi soddisfatti: per qualcuno di questi sarebbe solo stato necesssario aumentare un po’ il K ma allora si sarebbe peggiorato lo smorzamento. Inserire uno zero a sinistra ha attirato il luogo delle radici dei poli complessi coniugati migliorando la stabilità, consentendo quindi la scelta di guadagni maggiori.

Grazie.
