Contenuto principale

Valutazione dei margini di guadagno e di fase

Questo esempio mostra come esaminare l'effetto dei margini di stabilità sulle caratteristiche di risposta a loop chiuso di un sistema di controllo.

Stabilità di un loop di feedback

In linea generale, stabilità significa che tutti i segnali interni rimangono limitati. Si tratta di un requisito standard per i sistemi di controllo, volto a evitare la perdita di controllo e danni alle apparecchiature. Per i sistemi di feedback lineari, la stabilità può essere valutata osservando i poli della funzione di trasferimento a loop chiuso. Si consideri, ad esempio, il loop di feedback SISO:

Figura 1: Loop di feedback SISO.

Per un guadagno a loop unitario k, è possibile calcolare la funzione di trasferimento a loop chiuso T utilizzando:

G = tf([.5 1.3],[1 1.2  1.6 0]);
T = feedback(G,1);

Per ottenere i poli di T, digitare

pole(T)
ans =

  -0.2305 + 1.3062i
  -0.2305 - 1.3062i
  -0.7389 + 0.0000i

Il loop di feedback per k=1 è stabile in quanto tutti i poli hanno parti reali negative.

Quanto è stabile la stabilità?

Il controllo dei poli a loop chiuso fornisce una valutazione binaria della stabilità. In pratica, è più utile sapere quanto la stabilità sia robusta (o fragile). Un'indicazione della robustezza è la misura in cui il guadagno del loop può variare prima che si perda la stabilità. È possibile utilizzare il grafico del luogo della radice per stimare l'intervallo di valori k per i quali il loop è stabile:

rlocus(G)

Cliccando sul punto in cui il luogo geometrico interseca l'asse y, si scopre che questo loop di feedback è stabile per

$$ 0 < k < 2.7 $$

Questo intervallo mostra che con k=1, il guadagno del loop può aumentare del 270% prima di perdere la stabilità.

Margini di guadagno e di fase

Le variazioni del guadagno del loop sono solo un aspetto della stabilità robusta. In generale, una modellazione imperfetta dell'impianto indica che sia il guadagno che la fase non sono noti con esattezza. Poiché gli errori di modellazione sono più dannosi in prossimità della frequenza di crossover del guadagno (frequenza alla quale il guadagno a loop aperto è 0 dB), risulta inoltre importante la variazione di fase che può essere tollerata a questa frequenza.

Il margine di fase misura la variazione di fase necessaria alla frequenza di crossover del guadagno per perdere stabilità. In modo analogo, il margine di guadagno misura la variazione di guadagno relativa necessaria alla frequenza di crossover di fase per perdere stabilità. Insieme, questi due numeri forniscono una stima del "margine di sicurezza" per la stabilità a loop chiuso. Quanto più piccoli sono i margini di stabilità, tanto più fragile è la stabilità.

È possibile visualizzare i margini di guadagno e di fase in un grafico di Bode come segue. Per prima cosa creare il grafico:

bode(G), grid

Quindi, fare clic con il tasto destro del mouse sul grafico e selezionare il sottomenu Characteristics -> Minimum Stability Margins (Caratteristiche -> Margini minimi di stabilità). Infine, fare clic sui marcatori a punti blu. Il grafico risultante è mostrato di seguito:

Questo indica un margine di guadagno di circa 9 dB e un margine di fase di circa 45 gradi. La corrispondente risposta al gradino a loop chiuso mostra un overshoot di circa il 20% e alcune oscillazioni.

step(T), title('Closed-loop response for k=1')

Se si aumenta il guadagno a k=2, i margini di stabilità si riducono a

[Gm,Pm] = margin(2*G);
GmdB = 20*log10(Gm)   % gain margin in dB
Pm  % phase margin in degrees
GmdB =

    2.7435


Pm =

    8.6328

e la risposta a loop chiuso ha oscillazioni poco smorzate, segno di una quasi instabilità.

step(feedback(2*G,1)), title('Closed-loop response for k=2')

Sistemi con più guadagni o attraversamenti di fase

Alcuni sistemi presentano più frequenze di crossover di guadagno o di crossover di fase che portano a diversi valori del margine di guadagno o di fase. Ad esempio, si consideri il loop di feedback

Figura 2: Loop di feedback con più crossover di fase

La risposta a loop chiuso per k=1 è stabile:

G = tf(20,[1 7]) * tf([1 3.2 7.2],[1 -1.2 0.8]) * tf([1 -8 400],[1 33 700]);
T = feedback(G,1);
step(T), title('Closed-loop response for k=1')

Per valutare la robustezza della stabilità di questo loop, tracciare il relativo grafico di Bode:

bode(G), grid

Quindi, fare clic con il tasto destro del mouse sul grafico e selezionare il sottomenu Characteristics -> All Stability Margins (Caratteristiche -> Tutti i margini di stabilità) per visualizzare tutte le frequenze di crossover e i margini di stabilità associati. Il grafico risultante è mostrato di seguito.

Si noti che sono presenti due attraversamenti di fase a 180 gradi con margini di guadagno corrispondenti di -9,35 dB e +10,6 dB. I margini di guadagno negativi indicano che la stabilità viene persa diminuendo il guadagno, mentre i margini di guadagno positivi indicano che la stabilità viene persa aumentando il guadagno. Questo è confermato tracciando la risposta al gradino a loop chiuso per una variazione di guadagno di più o meno 6 dB, circa k=1:

k1 = 2;     T1 = feedback(G*k1,1);
k2 = 1/2;   T2 = feedback(G*k2,1);
step(T,'b',T1,'r',T2,'g',12),
legend('k = 1','k = 2','k = 0.5')

Il grafico mostra oscillazioni in aumento sia per i valori di guadagno più piccoli che per quelli più grandi.

È possibile utilizzare il comando allmargin per calcolare tutti i margini di stabilità. Si noti che i margini di guadagno sono espressi come rapporti di guadagno, non in dB. Utilizzare mag2db per convertire i valori in dB.

m = allmargin(G)

GainMargins_dB = mag2db(m.GainMargin)
m = 

  struct with fields:

     GainMargin: [0.3408 3.3920]
    GMFrequency: [1.9421 16.4807]
    PhaseMargin: 68.1140
    PMFrequency: 7.0776
    DelayMargin: 0.1680
    DMFrequency: 7.0776
         Stable: 1


GainMargins_dB =

   -9.3510   10.6091

Vedi anche

| | (Robust Control Toolbox)

Argomenti