2026a

# h2syn


生成 H2 最优控制器

函数库: TyRobustControl

# 语法

K,CL,Gamma,Info = h2syn(P,Nmeas,Ncon)

# 说明

K, CL, Gamma, Info = h2syn(P,Nmeas,Ncon) 计算出系统 的 H2 最优稳定控制器 可以分解成以下形式:

其中,

  • 代表扰动输入;
  • 代表控制输入;
  • 代表被控输出;
  • 代表测量输出。

Nmeas 和 Ncon 分别是 y 和 u 中的信号个数。y 和 u 分别是 的最后输出和输入。 h2syn 生成一个能使 稳定且状态数与其相同的控制器 。闭环系统 CL = lft(P,K) 能达到性能水平 Gamma,即 的 H2 范数(详细信息,请参见 norm)。h2syn 还会返回一个结构体,其中包含了有关 h2syn 综合的附加信息。

# 示例

MIMO系统的稳定控制器

为一个具有 3 个状态变量、2 个测量输出和 1 个控制输入的 5 × 4 不稳定系统 设计稳定控制器。

实际上, 是一个增广系统,通过将被控系统模型与适当的 H2 加权函数相结合而构建。本示例使用的系统模型如下:

using TyRobustControl
using TyControlSystems

A = [5    6    -6
     6    0     5
    -6    5     4];
B = [0     4     0     0
     1     1    -2    -2
     4     0     0    -3];
C = [-6     0     8
     0     5     0
    -2     1    -4
     4    -6    -5
     0   -15     7];
D = [0     0     0     0
     0     0     0     1
     0     0     0     0
     0     0     3     6
     8     0    -7     0];
P = ss(A,B,C,D);

通过计算 的极点(其中一些位于右半平面内),确认 是不稳定的。

pole(P)
3-element Vector{Float64}:
 -8.564832502984688
  6.861222121938602
 10.703610381046085

利用 h2syn 设计稳定控制器,假设 Nmeas 测量信号和 Ncon 控制信号分别是 的最后的输出和最后的输入。

Nmeas = 2;
Ncon = 1;
K,CL,Gamma,_ = h2syn(P,Nmeas,Ncon);

计算闭环系统的极点,以确认控制器 能够使闭环系统稳定。

pole(CL)
6-element Vector{ComplexF64}:
   -31.6235904580711 + 0.0im
 -12.646049256002659 + 3.8044787361003194im
 -12.646049256002659 - 3.8044787361003194im
  -9.607336259720187 + 0.0im
  -9.239311846488453 + 0.0im
  -8.693885387955788 + 0.0im
混合灵敏度 H2 回路成形

绘制灵敏度 和混合灵敏度 的奇异值图。 为此,需要找到一个稳定控制器 ,使 H2 范数最小化:

假设受控系统及其加权函数如下:

利用它们构造增广系统

using TyRobustControl
using TyControlSystems
using TyPlot

s = zpk("s")

G  = 5 / ((s + 1) * (0.2s + 1))

W1 = 8 * (s/30 + 1) / (s/0.8 + 1)
W2 = tf(0.1)

P = augw(G, W1, W2, nothing)

利用 h2syn 生成控制器。该增广系统有 1 个测量信号和 1 个控制信号,分别对于 的最后输出和最后输入。

K,CL,Gamma,_ = h2syn(P,1,1);

绘制系统频率响应的奇异值图,检查生成的回路形状。

L = G*K; 
S = inv(1+L); 
T = 1-S;
sigmaplot(L,"k-.",S,"r",T,"g")
legend(["open-loop","sensitivity","closed-loop"])

# 输入参数

P - 受控系统
动态系统模型

受控系统,指定为动态系统模型(例如状态空间模型)。 可以是任意 LTI 模型,输入为 ,输出为 ,其中:

  • 代表扰动输入;
  • 代表控制输入;
  • 代表被控输出;
  • 代表测量输出。

测量输出 y 是最后的输出,控制输入 u 是最后的输入。 的状态空间表达式如下所示:

如果 P 是带有不确定或可调模块的广义状态空间模型,则 h2syn 会采用受控系统的标称值。

数据类型: LTISystem

Nmeas - 测量输出信号个数
正整数

系统中测量输出信号的数量,指定为正整数。函数将系统的最后 Nmeas 个输出作为测量值 y,返回的控制器 有 Nmeas 个输入。

数据类型: Integer

Ncon - 控制输入信号个数
正整数

目标 H∞ 性能水平,指定为正标量。

系统控制输入信号的数量,指定为正整数。函数将系统的最后 Ncon 个输入作为控制 u,返回的控制器 有 Ncon 个输出。

数据类型: Integer

# 输出参数

K - 控制器
状态空间模型

控制器,作为状态空间模型对象返回。控制器具有与 相同的状态数,有 Nmeas 个输入和 Ncon 个输出。

数据类型: StateSpace

CL - 系统闭环传递函数
状态空间模型

闭环传递函数,以状态空间模型对象的形式返回。闭环传递函数为 CL = lft(P,K),如下图所示。

数据类型: StateSpace

Gamma - 控制器的性能水平
状态空间模型

控制器性能水平,以非负标量值或 Inf 的形式返回。该值是控制器 K 能够达到的性能水平,同样也是 CL 的 H2 范数(详细信息,请参见 norm)。

数据类型: Real

Info - 附加信息
H2Info类型

附加的合成数据,以 H2Info 类型的结构体返回。Info 包含以下字段。

  • NORMS:控制器的控制成本,以向量形式 [FI,OE,DF,FC] 返回,其中:

    • FI 是全信息控制成本;
    • OE 是输出估计成本;
    • DF 是干扰前馈成本;
    • FC 是全控制成本。

    这些参数存在以下关系:

  • KFI:全信息状态反馈增益,以矩阵形式返回。全信息问题假定完全了解状态 x 和扰动 w,并寻找最优状态反馈控制形式:

    • 连续时间下的 。在连续时间内,u 只取决于 x。KFI 中与 w 相对应的条目为零;
    • 离散时间下的
  • GFI:控制器 KFI 从 w 到 z 的全信息闭环传输,以状态空间 (StateSpace) 模型返回。GFI 的 H2 范数为 FI。

  • HAMX:X 哈密顿矩阵(状态反馈)

  • HAMY:Y 哈密顿矩阵(卡尔曼滤波)

数据类型: H2Info

# 局限性

  • 系统 必须是可稳定且可检测的;
  • 必须是列满秩, 必须是行满秩。

# 另请参阅

hinfsyn | mixsyn | ncfsyn | norm