主要内容

margin

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

说明

裕度图

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

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

系统的 GmPm 指示对 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 的波特响应图。当您处理稀疏模型(如 sparssmechss 模型对象)时,请使用此语法。

裕度值

[Gm,Pm,Wcg,Wcp] = margin(sys) 返回 sys 的以绝对单位表示的增益裕度 Gm、相位裕度 Pm 以及对应频率 WcgWcpWcg 是测量增益裕度的频率,即 –180° 相位穿越频率。Wcp 是测量相位裕度的频率,即 0 dB 增益穿越频率。这些频率以弧度/TimeUnit 表示,其中 TimeUnit 是在 sysTimeUnit 属性中指定的单位。当 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。您可以提供以任何单位表示的频率向量 wmargin 会返回以同样单位表示的 WcgWcp

示例

示例

全部折叠

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

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.6437
WcgH = 
Inf
WcpH = 
119.9618

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

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

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

[Gm,Pm,Wcg,Wcp] = margin(m,p,w)
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.3798  -11.4118  -11.4433
  -11.4059  -11.4296  -11.4532
  -11.4228  -11.4410  -11.4592

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

输入参数

全部折叠

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

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

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

[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 是在 sysTimeUnit 属性中指定的单位。

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

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

提示

  • 当您使用 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) |