Contenu principal

margin

Marges de gain et de phase, et fréquences de crossover

Description

Tracés de marges

margin(sys) trace la réponse de Bode de sys sur l'écran et indique les marges de gain et de phase sur le tracé. Les marges de gain sont exprimées en dB sur le tracé.

Les lignes verticales pleines indiquent les marges de gain et de phase. Les lignes verticales en pointillés indiquent les emplacements de Wcp, la fréquence à laquelle la marge de phase est mesurée, et de Wcg, la fréquence à laquelle la marge de gain est mesurée. Le titre du tracé reprend l'amplitude et l'emplacement des marges de gain et de phase.

Gm et Pm d'un système indiquent la stabilité relative du système en boucle fermée formé par l'application d'une rétroaction négative unitaire à sys, comme l’illustre la figure suivante.

Gm correspond à la variance de gain nécessaire pour que le gain de la boucle soit unitaire à la fréquence Wcg où l'angle de phase est de -180° (modulo : 360°). Autrement dit, la marge de gain est de 1/g si g correspond au gain à la fréquence de phase de -180°. De la même manière, la marge de phase correspond à la différence entre la phase de la réponse et -180° lorsque le gain de la boucle est de 1,0. La fréquence Wcp à laquelle l'amplitude est de 1,0 est appelée fréquence de gain unitaire ou fréquence de croisement du gain. Lorsque sys présente plusieurs croisements, margin indique les fréquences pour laquelle la marge de gain est la plus proche de 0 dB et la marge de phase la plus proche de 0°.

Habituellement, des marges de gain d’au moins 3 alliées à des marges de phase comprises entre 30° et 60° permettent d'obtenir des compromis raisonnables entre la bande passante et la stabilité. Toutefois, avec certains systèmes multivariables, on peut assister à une perte de stabilité à une fréquence différente pour des variations de gain et de phase beaucoup plus faibles. Pour ces systèmes, la notion de marges de disque fournit des estimations plus fiables des véritables marges de gain et de phase. Pour plus d'informations sur les marges de disque, consultez diskmargin (Robust Control Toolbox).

exemple

margin(sys,w) trace la réponse de Bode de sys au moyen du vecteur de fréquences w en rad/TimeUnit. Utilisez cette syntaxe en présence de modèles parcimonieux comme les objets de modèle sparss ou mechss.

Valeurs de marges

[Gm,Pm,Wcg,Wcp] = margin(sys) renvoie la marge de gain Gm en unités absolues, la marge de phase Pm et les fréquences correspondantes Wcg et Wcp de sys. Wcg correspond à la fréquence à laquelle la marge de gain est mesurée. Il s’agit d’une fréquence de croisement de phase de -180°. Wcp correspond à la fréquence à laquelle la marge de phase est mesurée. Il s’agit d’une fréquence de croisement de gain de 0 dB. Ces fréquences sont exprimées en radians/TimeUnit, où TimeUnit désigne l'unité spécifiée dans la propriété TimeUnit de sys. Lorsque sys présente plusieurs croisements, margin renvoie les marges de gain et de phase les plus faibles et les fréquences correspondantes.

margin renvoie un avertissement si votre système n'est pas stable en interne, autrement dit s'il n'est pas stable en boucle fermée ou s'il contient des annulations pôle-zéro en dehors du demi-plan gauche ouvert.

exemple

[Gm,Pm] = margin(sys,J1,...,JN) renvoie les marges de gain Gm et de phase Pm des entrées du tableau de modèles sys avec les indices (J1,...,JN).

exemple

[Gm,Pm,Wcg,Wcp] = margin(sys,Focus=[fmin,fmax]) calcule les marges de gain et de phase dans la plage de fréquences [fmin,fmax] en ignorant les problèmes de stabilité en dehors de cette plage. Par exemple, utilisez cette syntaxe pour ignorer les dynamiques à très basse fréquence, dans le but de calculer les marges de stabilité. (depuis R2024a)

exemple

[Gm,Pm,Wcg,Wcp] = margin(mag,phase,w) obtient les marges de gain et de phase à partir des données de réponse en fréquence. Spécifiez les données de gain mag en unités absolues et les données de phase phase en degrés. Vous pouvez spécifier le vecteur de fréquence w dans n'importe quelle unité. margin renverra Wcg et Wcp dans les mêmes unités.

exemple

Exemples

réduire tout

Pour cet exemple, créez une fonction de transfert en temps continu.

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

Affichez les marges de gain et de phase graphiquement.

margin(sys)

MATLAB figure

Les marges de gain (6,02 dB) et de phase (21,4 degrés) indiquées dans le titre sont repérées par des lignes verticales pleines. Les lignes verticales en pointillés indiquent les emplacements de Wcg, la fréquence à laquelle la marge de gain est mesurée, et de Wcp, la fréquence à laquelle la marge de phase est mesurée.

Pour les besoins de cet exemple, créez une fonction de transfert en temps discret.

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

Calculez les marges de gain et de phase, et les fréquences correspondantes.

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

Les résultats indiquent qu'une variation de gain supérieure à 2,05 (6,24 dB) à la fréquence de crossover de phase de 5,43 rad/s rendrait le système instable. De la même manière, une variation de phase supérieure à 13,57 degrés à la fréquence de crossover du gain de 4,35 rad/s entraînerait une perte de stabilité du système.

Depuis R2024a

Dans certaines applications, vous voudrez peut-être calculer les marges de stabilité dans une certaine plage de fréquences en négligeant la dynamique en dehors de cette plage. Par exemple, considérons le système suivant, avec une dynamique à la fois à des fréquences relativement basses et à des fréquences relativement élevées.

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é du système en boucle fermée CL = feedback(sys,1) contre les perturbations à basse fréquence peut être différente de celle constatée à des fréquences plus élevées. Pour voir la différence, utilisez l'option Focus. Commencez par examiner les marges inférieures à 10 rad/s.

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

Examinez les marges autour de 10 rad/s.

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

Pour les besoins de cet exemple, chargez les données de réponses fréquentielles d'un système en boucle ouverte, consistant en des amplitudes (m) et des valeurs de phase (p) mesurées aux fréquences en w.

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

Calculez les marges de gain et de phase.

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

Pour les besoins de cet exemple, chargez invertedPendulumArray.mat qui contient un tableau 3 par 3 de modèles de pendule inversé. La masse du pendule varie lorsque vous vous déplacez d'un modèle à l'autre le long d'une colonne unique de sys, et la longueur du pendule varie lorsque vous vous déplacez le long d'une ligne unique. Les valeurs de masse utilisées sont 100 g, 200 g et 300 g, tandis que les longueurs du pendule utilisées sont respectivement de 3 m, 2 m et 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.

Trouvez les marges de gain et de phase pour tous les modèles dans le tableau.

[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 renvoie deux tableaux, Gm et Pm, dans lesquels chaque entrée présente les valeurs de marge de gain et de phase de l'entrée correspondante dans sys. Par exemple, les marges le gain et de phase du modèle correspondant à un pendule de 100 g et d’une longueur de 2 m sont respectivement de Gm(1,2) et Pm(1,2).

Arguments d'entrée

réduire tout

Système dynamique spécifié en tant que modèle de système dynamique SISO ou en tant que tableau de modèles de systèmes dynamiques SISO. Parmi les systèmes dynamiques que vous pouvez utiliser, citons les modèles numériques LTI en temps continu ou en temps discret comme les modèles tf, zpk, ss, sparss ou mechss.

Si sys est un modèle de représentation d’état généralisé genss ou un modèle de représentation d’état incertain uss, margin renvoie les marges de gain et de phase de la valeur actuelle ou nominale de sys. Si sys est un tableau de modèles, margin renvoie les Gm et Pm du modèle correspondant à son indice J1,...,JN dans sys. Pour plus d'informations sur les tableaux de modèles, consultez Tableaux de modèles.

Indices des modèles du tableau dont vous souhaitez extraire les marges de gain et de phase, spécifiés en tant qu’entiers positifs. Vous pouvez fournir autant d'indices qu'il existe de dimensions de tableau dans sys. Par exemple, si sys est un tableau 4 par 5 de modèles de systèmes dynamiques, la commande suivante extrait Gm et Pm pour l'entrée (2,3) dans le tableau.

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

Depuis R2024a

Plage de fréquences à prendre en compte dans l'analyse de stabilité, spécifiée sous la forme d'un vecteur à deux éléments contenant les limites inférieure et supérieure de la plage. Le calcul de la marge ignore les dynamiques en dehors de cette plage. Indiquez les fréquences exprimées en rad/TimeUnit, où TimeUnit désigne la propriété TimeUnit du système de dynamique en entrée.

Exemple : [1e-3,1e6]

Amplitude de la réponse du système en unités absolues, spécifiée sous la forme d'un tableau 3D. Étant donné que margin ne prend en charge que les systèmes SISO, mag est un tableau 1 par 1 par N, où N désigne le nombre de points de fréquence. Pour un exemple, voir Obtenir des données d'amplitude et de phase.

Phase de la réponse du système en degrés, spécifiée sous la forme d'un tableau 3D. Étant donné que margin ne prend en charge que les systèmes SISO, phase est un tableau 1 par 1 par N, où N désigne le nombre de points de fréquence. Pour un exemple, voir Obtenir des données d'amplitude et de phase.

Fréquences d’obtention des valeurs d'amplitude et de phase de la réponse du système, spécifiées sous la forme d’un vecteur colonne.

Arguments en sortie

réduire tout

Marge de gain renvoyée en tant que scalaire ou tableau. Si sys est :

  • Un modèle unique, Gm est renvoyé en tant que scalaire.

  • Un tableau de modèles, Gm est un tableau des marges de gain de chaque modèle dans sys.

Gm correspond à la variance de gain nécessaire pour que le gain de la boucle soit unitaire à la fréquence Wcg où l'angle de phase est de -180° (modulo : 360°). Autrement dit, la marge de gain est de 1/g si g correspond au gain à la fréquence de phase de -180°. Lorsque sys présente plusieurs croisements, margin renvoie la marge de gain la plus proche de 0 dB. Les marges de gain négatives indiquent une perte de stabilité due à une réduction du gain, tandis que les marges de gain positives indiquent une perte de stabilité due à une augmentation du gain.

La marge de gain Gm est calculée en unités absolues. Vous pouvez calculer la marge de gain en dB avec :

Gm_dB = 20*log10(Gm)

Marge de phase renvoyée en tant que scalaire ou tableau. Si sys est :

  • Un modèle unique, Pm est renvoyé en tant que scalaire.

  • Un tableau de modèles, Pm est un tableau des marges de phase de chaque modèle dans sys.

La marge de phase correspond à la différence entre la phase de la réponse et -180° lorsque le gain de la boucle est de 1,0. Lorsque sys présente plusieurs croisements, margin renvoie la marge de phase la plus proche de 0°.

La marge de phase Pm est exprimée en degrés.

Fréquence de crossover de phase, renvoyée sous forme de scalaire. Wcg correspond à la fréquence à laquelle la marge de gain est mesurée, autrement dit une fréquence de croisement de phase de -180°.

Wcg est exprimée en radians/TimeUnit, où TimeUnit désigne l'unité spécifiée dans la propriété TimeUnit de sys.

Fréquence de crossover de gain, renvoyée sous forme de scalaire. Wcp correspond à la fréquence à laquelle la marge de phase est mesurée, autrement dit une fréquence de crossover de gain de 0 dB.

Wcp est exprimée en radians/TimeUnit, où TimeUnit désigne l'unité spécifiée dans la propriété TimeUnit de sys.

Conseils

  • Lorsque vous utilisez margin(mag,phase,w), margin s'appuie sur l'interpolation pour approximer les marges. En règle générale, cela se traduit par des résultats moins précis. Par exemple, en l’absence de croisement à 0 dB dans la plage w, margin renvoie une marge de phase de Inf. Par conséquent, si vous disposez d'un modèle analytique sys, il peut être judicieux d’utiliser [Gm,Pm,Wcg,Wcp] = margin(sys) pour obtenir les marges.

  • Si vous disposez du logiciel Robust Control Toolbox™, vous pouvez utiliser diskmargin (Robust Control Toolbox) pour calculer les marges basées sur disque qui définissent une plage de variations de gain et de phase « sûres » pour lesquelles la boucle de rétroaction demeure stable.

Historique des versions

Introduit avant R2006a

développer tout