主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

margin

R2026a

增益裕度、相位裕度和穿越频率

描述

裕度图

margin(sys) 在屏幕上绘制 sys 的波特响应图,并在图上指示增益裕度和相位裕度。增益裕度在图上以 dB 为单位表示。

垂直实线标记增益裕度和相位裕度。垂直虚线指示 Wcp(测量相位裕度的频率)和 Wcg(测量增益裕度的频率)的位置。图标题中包括增益裕度和相位裕度的幅值和位置。

系统的 Gm 和 Pm 指示对 sys 应用单位负反馈所形成的闭环系统的相对稳定性,如下图所示。

Gm 是使环路增益在相位角为 –180°(以 360° 为模)的频率 Wcg 下达到单位 1 所需的增益变化量。换句话说,如果 g 是 –180° 相位频率下的增益,则增益裕度为 1/g。同样,相位裕度是当环路增益为 1.0 时,响应相位与 –180° 之间的差值。幅值为 1.0 的频率 Wcp 称为单位增益频率或增益穿越频率。当 sys 有多个穿越时,margin 指示增益裕度最接近 0 dB 且相位裕度最接近 0° 时的频率。

通常,3 或更大的增益裕度与介于 30° 和 60° 之间的相位裕度相结合,可以在带宽和稳定性之间实现合理的权衡。然而,在一些多变量系统中,如果有更小的增益和相位变化,在不同的频率下可能会失去稳定性。对于此类系统,磁盘裕度的概念提供了对真实增益裕度和相位裕度的更可靠估计。有关磁盘裕度的详细信息,请参阅 diskmargin (Robust Control Toolbox)。

示例

margin(sys,w) 使用以 rad/TimeUnit 为单位的频率向量 w 绘制 sys 的波特响应图。当您处理稀疏模型(如 sparss 或 mechss 模型对象)时,请使用此语法。

裕度值

[Gm,Pm,Wcg,Wcp] = margin(sys) 返回 sys 的以绝对单位表示的增益裕度 Gm、相位裕度 Pm 以及对应频率 Wcg 和 Wcp。Wcg 是测量增益裕度的频率,即 –180° 相位穿越频率。Wcp 是测量相位裕度的频率,即 0 dB 增益穿越频率。这些频率以弧度/TimeUnit 表示,其中 TimeUnit 是在 sys 的 TimeUnit 属性中指定的单位。当 sys 有多个穿越时,margin 返回最小的增益裕度和相位裕度以及对应频率。

如果您的系统不具备内部稳定性(即系统不是闭环稳定的,或系统包含开左半平面之外的零极点相消),margin 会返回警告。

示例

[Gm,Pm] = margin(sys,J1,...,JN) 返回模型数组 sys 中下标为 (J1,...,JN) 的各条目的增益裕度 Gm 和相位裕度 Pm。

示例

[Gm,Pm,Wcg,Wcp] = margin(sys,Focus=[fmin,fmax]) 计算频率范围 [fmin,fmax] 内的增益裕度和相位裕度,而忽略该范围外的稳定性问题。例如,可使用此语法忽略极低频率的动态特性,以计算稳定裕度。 (自 R2024a 起)

示例

[Gm,Pm,Wcg,Wcp] = margin(mag,phase,w) 从频率响应数据中派生增益裕度和相位裕度。需要提供以绝对单位表示的增益数据 mag 和以度数表示的相位数据 phase。您可以提供以任何单位表示的频率向量 w,margin 会返回以同样单位表示的 Wcg 和 Wcp。

示例

示例

全部折叠

对于此示例,请创建一个连续传递函数。

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

以图形方式显示增益裕度和相位裕度。

margin(sys)

MATLAB figure

标题中显示的增益裕度 (6.02 dB) 和相位裕度(21.4 度)用垂直实线标记。垂直虚线指示 Wcg(测量增益裕度的频率)和 Wcp(测量相位裕度的频率)的位置。

对于此示例,请创建一个离散时间传递函数。

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

计算增益裕度、相位裕度和频率。

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

结果表明,在 5.43 弧度/秒的相位穿越频率下,增益变化超过 2.05 (6.24 dB) 将导致系统不稳定。同样,在 4.35 弧度/秒的增益穿越频率下,相位变化超过 13.57 度将导致系统失去稳定性。

自 R2024a 起

在某些应用中,您可能希望计算特定频率范围内的稳定裕度,而忽略该范围外的动态特性。例如,以如下系统为例,该系统同时具有相对低频和相对高频下的动态特性。

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    

闭环系统 CL = feedback(sys,1) 在低频下对扰动的稳定性与高频下的稳定性不同。要查看差异,请使用 Focus 选项。首先,检查低于 10 弧度/秒的裕度。

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

检查大约 10 弧度/秒的裕度。

[GmH,PmH,WcgH,WcpH] = margin(sys,Focus=[10 Inf])
GmH = 
Inf
PmH = 
28.6538
WcgH = 
NaN
WcpH = 
119.9527

对于此示例,请加载开环系统的频率响应数据,包括在 w 中的频率下测得的幅值 (m) 和相位值 (p)。

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

计算增益裕度和相位裕度。

[Gm,Pm,Wcg,Wcp] = margin(m,p,w)
Warning: The closed-loop system is unstable.
Gm = 
0.6249
Pm = 
48.9853
Wcg = 
1.2732
Wcp = 
1.5197

对于此示例,请加载 invertedPendulumArray.mat,其包含一个由倒立摆模型组成的 3×3 数组。摆的质量随着您沿 sys 的单个列在模型间移动而变化,摆的长度随着您沿单个行移动而变化。所用的质量值分别为 100g、200g 和 300g,所用的摆长度分别为 3m、2m 和 1m。

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.

求数组中所有模型的增益裕度和相位裕度。

[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.3800  -11.4120  -11.4435
  -11.4061  -11.4298  -11.4534
  -11.4230  -11.4412  -11.4594

margin 返回两个数组 Gm 和 Pm,其中每个条目是 sys 中对应条目的增益裕度值和相位裕度值。例如,摆重量为 100g、长度为 2m 的模型的增益裕度和相位裕度分别为 Gm(1,2) 和 Pm(1,2)。

输入参数

全部折叠

动态系统,指定为一个 SISO 动态系统模型或 SISO 动态系统模型数组。您可以使用的动态系统包括连续时间或离散时间数值 LTI 模型,如 tf、zpk、ss、sparss 或 mechss 模型。

如果 sys 是广义状态空间模型 genss 或不确定状态空间模型 uss,则 margin 返回 sys 的当前值或标称值的增益裕度和相位裕度。如果 sys 是模型数组,则 margin 返回与 sys 中的下标 J1,...,JN 对应的模型的 Gm 和 Pm。有关模型数组的详细信息,请参阅模型数组。

数组中要提取其增益裕度和相位裕度的模型的索引,指定为正整数。您可以提供与 sys 中的数组维度数一样多的索引。例如,如果 sys 是一个由动态系统模型组成的 4×5 数组,以下命令将提取该数组中条目 (2,3) 的 Gm 和 Pm。

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

自 R2024a 起

稳定性分析中要考虑的频率范围,指定为包含范围下限和上限的二元素向量。裕度计算会忽略该范围外的动态特性。以 rad/TimeUnit 为单位指定频率,其中 TimeUnit 是输入动态系统的 TimeUnit 属性。

示例: [1e-3,1e6]

以绝对单位表示的系统响应的幅值,指定为三维数组。由于 margin 只接受 SISO 系统,因此 mag 是一个 1×1×N 数组,其中 N 是频率点的数量。有关示例,请参阅 获取幅值和相位数据。

以度为单位的系统响应的相位,指定为三维数组。由于 margin 只接受 SISO 系统,因此 phase 是一个 1×1×N 数组,其中 N 是频率点的数量。有关示例,请参阅 获取幅值和相位数据。

获得系统响应的幅值和相位值的频率,指定为列向量。

输出参量

全部折叠

增益裕度,以标量或数组形式返回。如果 sys 为:

  • 单个模型,则 Gm 以标量形式返回。

  • 模型数组,则 Gm 是由 sys 中每个模型的增益裕度组成的数组。

Gm 是使环路增益在相位角为 –180°(以 360° 为模)的频率 Wcg 下达到单位 1 所需的增益变化量。换句话说,如果 g 是 –180° 相位频率下的增益,则增益裕度为 1/g。当 sys 有多个穿越频率时,margin 返回最接近 0 dB 的增益裕度。负增益裕度表示降低增益会失去稳定性,而正增益裕度表示增加增益会失去稳定性。

增益裕度 Gm 以绝对单位计算。您可通过以下等式计算增益裕度(以 dB 为单位),

Gm_dB = 20*log10(Gm)

相位裕度,以标量或数组形式返回。如果 sys 为:

  • 单个模型,则 Pm 以标量形式返回。

  • 模型数组,则 Pm 是由 sys 中每个模型的相位裕度组成的数组。

相位裕度是环路增益为 1.0 时响应相位与 –180° 之间的差值。当 sys 有多个穿越频率时,margin 返回最接近 0° 的相位裕度。

相位裕度 Pm 以度为单位表示。

相位穿越频率,以标量形式返回。Wcg 是测量增益裕度的频率,即 –180° 相位穿越频率。

Wcg 以弧度/TimeUnit 为单位表示,其中 TimeUnit 是在 sys 的 TimeUnit 属性中指定的单位。

增益穿越频率,以标量形式返回。Wcp 是测量相位裕度的频率,即 0 dB 增益穿越频率。

Wcp 以弧度/TimeUnit 为单位表示,其中 TimeUnit 是在 sys 的 TimeUnit 属性中指定的单位。

提示

  • 当您使用 margin(mag,phase,w) 时,margin 依赖于插值来逼近裕度,这通常会产生不太准确的结果。例如,如果 w 范围内没有穿越 0 dB 的频率点,则 margin 返回 Inf 的相位裕度。因此,如果您有一个分析模型 sys,则使用 [Gm,Pm,Wcg,Wcp] = margin(sys) 是获得裕度的更可靠方法。

  • 如果您有 Robust Control Toolbox™ 软件,则可以使用 diskmargin (Robust Control Toolbox) 来计算基于磁盘的裕度,这些裕度定义了反馈环保持稳定的“安全”增益和相位变化范围。

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| | (Robust Control Toolbox) |