Contenuto principale

margin

Margine di guadagno, margine di fase e frequenze di crossover

Descrizione

Grafici di margine

margin(sys) traccia la risposta di Bode di sys sullo schermo e indica i margini di guadagno e di fase sul grafico. I margini di guadagno sono espressi in dB sul grafico.

Il margine di guadagno e il margine di fase sono indicati da linee verticali continue. Le linee verticali tratteggiate indicano la posizione di Wcp, la frequenza in cui viene misurato il margine di fase, e la posizione di Wcg, la frequenza in cui viene misurato il margine di guadagno. Il titolo del grafico include la grandezza e la posizione del margine di guadagno e di fase.

Gm e Pm di un sistema indicano la stabilità relativa del sistema a loop chiuso formato, applicando un feedback negativo unitario a sys, come mostrato nella figura seguente.

Gm è la quantità di varianza di guadagno necessaria per rendere il guadagno del loop unitario alla frequenza Wcg, dove l'angolo di fase è -180° (modulo a 360°). In altre parole, il margine di guadagno è 1/g se g è il guadagno alla frequenza di fase di –180°. In modo analogo, il margine di fase è la differenza tra la fase della risposta e -180°, quando il guadagno del loop è 1,0. La frequenza Wcp, alla quale la grandezza è 1,0, viene chiamata frequenza di guadagno unitario o frequenza di crossover del guadagno. Quando sys presenta più di un crossover, margin indica le frequenze con il margine di guadagno più vicino a 0 dB e il margine di fase più vicino a 0°.

Di solito, margini di guadagno pari o superiori a 3, combinati con margini di fase compresi tra 30° e 60°, determinano compromessi accettabili tra larghezza di banda e stabilità. Tuttavia, in alcuni sistemi a più variabili, la stabilità può essere persa a una frequenza diversa per variazioni di guadagno e di fase molto più piccole. Per tali sistemi, la nozione di margini del disco fornisce stime più affidabili dei margini di guadagno e di fase effettivi. Per ulteriori informazioni sui margini del disco, vedere diskmargin (Robust Control Toolbox).

esempio

margin(sys,w) traccia la risposta di Bode di sys utilizzando il vettore di frequenze w in rad/TimeUnit. Utilizzare questa sintassi quando si dispone di modelli radi come sparss o oggetti del modello mechss.

Valori di margine

[Gm,Pm,Wcg,Wcp] = margin(sys) restituisce il margine di guadagno Gm in unità assolute, il margine di fase Pm e le frequenze corrispondenti Wcg e Wcp di sys. Wcg è la frequenza in cui viene misurato il margine di guadagno, ossia una frequenza di attraversamento di fase a –180°. Wcp è la frequenza in cui viene misurato il margine di fase, ossia una frequenza di attraversamento di guadagno a 0 dB. Queste frequenze sono espresse in radianti/TimeUnit, dove TimeUnit è l'unità specificata nella proprietà TimeUnit di sys. Quando sys presenta diversi crossover, margin restituisce i margini di guadagno e di fase più piccoli e le frequenze corrispondenti.

margin restituisce un avviso se il sistema non è internamente stabile, ovvero se non è stabile a loop chiuso o contiene cancellazioni polo-zero al di fuori del semipiano sinistro aperto.

esempio

[Gm,Pm] = margin(sys,J1,...,JN) restituisce il margine di guadagno Gm e il margine di fase Pm delle voci nell'array del modello sys con pedici (J1,...,JN).

esempio

[Gm,Pm,Wcg,Wcp] = margin(sys,Focus=[fmin,fmax]) calcola i margini di guadagno e di fase nell'intervallo di frequenza [fmin,fmax], ignorando i problemi di stabilità al di fuori di questo intervallo. Ad esempio, utilizzare questa sintassi per ignorare le dinamiche a frequenza molto bassa allo scopo di calcolare i margini di stabilità. (da R2024a)

esempio

[Gm,Pm,Wcg,Wcp] = margin(mag,phase,w) ricava i margini di guadagno e di fase dai dati di risposta in frequenza. Fornire i dati di guadagno mag in unità assolute e i dati di fase phase in gradi. È possibile fornire il vettore di frequenza w in qualsiasi unità e margin restituisce Wcg e Wcp nelle stesse unità.

esempio

Esempi

comprimi tutto

Per questo esempio, creare una funzione di trasferimento continuo.

sys = tf(1,[1 2 1 0])
sys =
 
         1
  ---------------
  s^3 + 2 s^2 + s
 
Continuous-time transfer function.
Model Properties

Visualizzare graficamente i margini di guadagno e di fase.

margin(sys)

MATLAB figure

Il margine di guadagno (6,02 dB) e il margine di fase (21,4 gradi), visualizzati nel titolo, sono contrassegnati da linee verticali continue. Le linee verticali tratteggiate indicano la posizione di Wcg, la frequenza in cui viene misurato il margine di guadagno e la posizione di Wcp, la frequenza in cui viene misurato il margine di fase.

Per questo esempio, creare una funzione di trasferimento a tempo discreto.

sys = tf([0.04798 0.0464],[1 -1.81 0.9048],0.1)
sys =
 
   0.04798 z + 0.0464
  ---------------------
  z^2 - 1.81 z + 0.9048
 
Sample time: 0.1 seconds
Discrete-time transfer function.
Model Properties

Calcolare il margine di guadagno, il margine di fase e le frequenze.

[Gm,Pm,Wcg,Wcp] = margin(sys)
Gm = 
2.0519
Pm = 
13.5711
Wcg = 
5.4376
Wcp = 
4.3544

I risultati indicano che una variazione di guadagno superiore a 2,05 (6,24 dB) alla frequenza di crossover della fase di 5,43 rad/s causerebbe l'instabilità del sistema. In modo analogo, una variazione di fase di oltre 13,57 gradi alla frequenza di crossover del guadagno di 4,35 rad/s causerà la perdita di stabilità del sistema.

Da R2024a

In alcune applicazioni, si potrebbero voler calcolare i margini di stabilità entro un certo intervallo di frequenza, trascurando le dinamiche al di fuori di questo intervallo. Si consideri, ad esempio, il seguente sistema, con dinamiche sia a frequenze relativamente basse che relativamente alte.

sys = tf(5,[1 1 10]) + tf(5e3,[1 20 1e4]);
damp(sys)
                                                                       
         Pole              Damping       Frequency      Time Constant  
                                       (rad/seconds)      (seconds)    
                                                                       
 -5.00e-01 + 3.12e+00i     1.58e-01       3.16e+00         2.00e+00    
 -5.00e-01 - 3.12e+00i     1.58e-01       3.16e+00         2.00e+00    
 -1.00e+01 + 9.95e+01i     1.00e-01       1.00e+02         1.00e-01    
 -1.00e+01 - 9.95e+01i     1.00e-01       1.00e+02         1.00e-01    

La stabilità del sistema a loop chiuso CL = feedback(sys,1) a fronte delle perturbazioni a bassa frequenza può essere diversa rispetto a quella a frequenze più elevate. Per vedere la differenza, utilizzare l'opzione Focus. Innanzitutto, esaminare i margini inferiori a 10 rad/s.

[GmL,PmL,WcgL,WcpL] = margin(sys,Focus=[0 10])
GmL = 
Inf
PmL = 
80.9920
WcgL = 
NaN
WcpL = 
3.5137

Esaminare i margini a circa 10 rad/s.

[GmH,PmH,WcgH,WcpH] = margin(sys,Focus=[10 Inf])
GmH = 
Inf
PmH = 
28.6437
WcgH = 
Inf
WcpH = 
119.9618

Per questo esempio, caricare i dati di risposta in frequenza di un sistema a loop aperto, costituito da grandezze (m) e valori di fase (p) misurati alle frequenze in w.

load('openLoopFRD.mat','p','m','w');

Calcolare i margini di guadagno e di fase.

[Gm,Pm,Wcg,Wcp] = margin(m,p,w)
Gm = 
0.6249
Pm = 
48.9853
Wcg = 
1.2732
Wcp = 
1.5197

Per questo esempio, caricare invertedPendulumArray.mat, che contiene un array 3x3 di modelli di pendoli invertiti. La massa del pendolo varia passando da un modello all'altro lungo una singola colonna di sys, mentre la lunghezza del pendolo varia spostandosi lungo una singola riga. I valori di massa utilizzati sono 100 g, 200 g e 300 g, mentre le lunghezze del pendolo utilizzate sono rispettivamente 3 m, 2 m e 1 m.

Column1Column2Column3Row1100g,3m100g,2m100g,1mRow2200g,3m200g,2m200g,1mRow3300g,3m300g,2m300g,1m

load('invertedPendulumArray.mat','sys');
size(sys)
3x3 array of transfer functions.
Each model has 1 outputs and 1 inputs.

Trovare il margine di guadagno e di fase per tutti i modelli nell'array.

[Gm,Pm] = margin(sys)
Gm = 3×3

    0.9800    0.9800    0.9800
    0.9800    0.9800    0.9800
    0.9800    0.9800    0.9800

Pm = 3×3

  -11.3798  -11.4118  -11.4433
  -11.4059  -11.4296  -11.4532
  -11.4228  -11.4410  -11.4592

margin restituisce due array, Gm e Pm, in cui ogni voce è costituita dai valori dei margini di guadagno e di fase della voce corrispondente in sys. Ad esempio, il margine di guadagno e di fase del modello con peso del pendolo di 100 g e lunghezza di 2 m è rispettivamente Gm(1,2) e Pm(1,2).

Argomenti di input

comprimi tutto

Sistema dinamico, specificato come modello di sistema dinamico SISO o come array di modelli del sistema dinamico SISO. I sistemi dinamici che è possibile utilizzare includono modelli LTI numerici a tempo continuo o a tempo discreto, come i modelli tf, zpk, ss, sparss o mechss.

Se sys è un modello stato-spazio generalizzato genss o un modello stato-spazio incerto uss, margin restituisce il margine di guadagno e il margine di fase del valore corrente o nominale di sys. Se sys è un array di modelli, margin restituisce Gm e Pm del modello corrispondente al suo pedice J1,...,JN in sys. Per ulteriori informazioni sugli array di modelli, vedere Array del modello.

Indici dei modelli nell'array di cui si desidera estrarre i margini di guadagno e di fase, specificati come numeri interi positivi. È possibile fornire tanti indici quante sono le dimensioni dell'array in sys. Ad esempio, se sys è un array 4x5 di modelli di sistemi dinamici, il comando seguente estrae Gm e Pm per la voce (2,3) nell'array.

[Gm,Pm] = margin(sys,2,3);

Da R2024a

Intervallo di frequenza da considerare nell'analisi di stabilità, specificato come vettore a due elementi contenente i limiti inferiore e superiore dell'intervallo. Il calcolo del margine ignora le dinamiche al di fuori di questo intervallo. Specificare le frequenze in rad/TimeUnit, dove TimeUnit è la proprietà TimeUnit del sistema dinamico di input.

Esempio [1e-3,1e6]

Grandezza della risposta del sistema in unità assolute, specificata come array tridimensionale. Poiché margin accetta solo sistemi SISO, mag è un array 1x1xN, dove N è il numero di punti di frequenza. Per un esempio, vedere Acquisizione dei dati di grandezza e di fase.

Fase della risposta del sistema in gradi, specificata come array tridimensionale. Poiché margin accetta solo sistemi SISO, phase è un array 1x1xN, dove N è il numero di punti di frequenza. Per un esempio, vedere Acquisizione dei dati di grandezza e di fase.

Frequenze alle quali si ottengono i valori di grandezza e fase della risposta del sistema, specificate come vettore colonna.

Argomenti di output

comprimi tutto

Margine di guadagno, restituito come scalare o array. Se sys è:

  • Un singolo modello, Gm è restituito come scalare.

  • Un array di modelli, Gm è un array dei margini di guadagno di ciascun modello in sys.

Gm è la quantità di varianza di guadagno necessaria per rendere il guadagno del loop unitario alla frequenza Wcg, dove l'angolo di fase è -180° (modulo a 360°). In altre parole, il margine di guadagno è 1/g se g è il guadagno alla frequenza di fase di –180°. Quando sys presenta diversi crossover, margin restituisce il margine di guadagno più vicino a 0 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.

Il margine di guadagno Gm è calcolato in unità assolute. È possibile calcolare il margine di guadagno in dB mediante

Gm_dB = 20*log10(Gm)

Margine di fase, restituito come scalare o array. Se sys è:

  • Un singolo modello, Pm è restituito come scalare.

  • Un array di modelli, Pm è un array dei margini di fase di ciascun modello in sys.

Il margine di fase è la differenza tra la fase della risposta e -180°, quando il guadagno del loop è 1,0. Quando sys presenta diversi crossover, margin restituisce il margine di fase più vicino a 0°.

Il margine di fase Pm è espresso in gradi.

Frequenza di crossover della fase, restituita come scalare. Wcg è la frequenza in cui viene misurato il margine di guadagno, ossia una frequenza di attraversamento di fase a -180°.

Wcg è espresso in radianti/TimeUnit, dove TimeUnit è l'unità specificata nella proprietà TimeUnit di sys.

Frequenza di crossover del guadagno, restituita come scalare. Wcp è la frequenza in cui viene misurato il margine di fase, ossia una frequenza di attraversamento di guadagno a 0 dB.

Wcp è espresso in radianti/TimeUnit, dove TimeUnit è l'unità specificata nella proprietà TimeUnit di sys.

Suggerimenti

  • Quando si utilizza margin(mag,phase,w), margin si avvale dell'interpolazione per approssimare i margini, che generalmente producono risultati meno accurati. Ad esempio, se non è presente un attraversamento a 0 dB all'interno dell'intervallo w, margin restituisce un margine di fase di Inf. Pertanto, se si dispone di un modello analitico sys, l'utilizzo di [Gm,Pm,Wcg,Wcp] = margin(sys) è un modo più robusto per ottenere i margini.

  • Se si dispone del software Robust Control Toolbox™, è possibile utilizzare diskmargin (Robust Control Toolbox) per calcolare i margini basati su disco che definiscono un intervallo di variazioni di guadagno e fase "sicure" per le quali il loop di feedback rimane stabile.

Cronologia versioni

Introduzione prima di R2006a

espandi tutto