系统的H∞范数对应于bode图中幅值曲线的峰值,而系统的H2范数则对应于bode图中幅值曲线下方的面积。
H∞范数不超过一个上界,H2范数尽可能小,以保证系统对于不确定性具有鲁棒稳定性,并表现出更好的性能。
在状态反馈情况下,闭环系统的H∞性能并不能通过增加控制器的阶数来加以改进,因此,系统的H∞状态反馈控制器,总是能够选择一个静态控制律。
Matlab中计算Hinf最优控制器命令为:hinfsyn 或者 hinflmi。
连续系统控制器求解举例:
% hinflmi
clear;clc;
A = [0];
B = [1 2];
C = [1;-1];
D = [0 0;1 0];
P = ltisys(A,B,C,D);
% 计算性能指标,和最优控制器K的系统矩阵
[gopt,K] = hinflmi(P,[1,1])
% 计算控制器K的状态空间实现
[Ak,Bk,Ck,Dk] = ltiss(K)
% 如果要求满足Hoo性能gama<10的一个次优Hoo控制器,输入为:
% [g,K] = hinflmi(P,[1,1],10)
% 可以求出满足线性矩阵不等式矩阵X = y1,Y = x1
% [g,k,x1,x2,y1,y2] = hinflmi(P,[1,1],10);
%得到控制器矩阵K之后,计算闭环系统:
clsys = slft(P,K)
% 检测系统闭环稳定性,spol返回系统的闭环极点
spol(clsys)
% 从外部扰动w到被调输出z的闭环系统的RMS增益为:
norminf(clsys)
% 绘制闭环响应曲线
splot(clsys,'bo');
splot(clsys,'st');
% hinfsyn
Gp = ss(A,B,C,D);
[Kp,CL,gamma] = hinfsyn(Gp,1,1);
% CL相当于闭环之后的系统,也可以用下面语句求闭环系统
Gpc = lft(Gp,Kp);
step(CL)
% 闭环系统的奇异值图,以确定最大奇异值不超过gamma
sigma(CL,ss(gamma))
% 限制gamma的范围
ncont = 1;
nmeas = 1;
gamRange = [1.4 1.6];
[K,CL,gamma,info] = hinfsyn(Gp,nmeas,ncont,'GMIN',1.4,'GMAX',1.6)
step(CL)
% 如果尝试获得任何控制器都无法达到的性能水平,则会通知目标太小,
% 并返回空控制器和闭环系统。
为以下控制对象设计混合灵敏度控制器
Hinf控制器设计的关键是构建动态系统模型,系统模型具有以下形式:
如果P是具有不确定或可调控制设计块的广义状态空间模型,则hinfsyn将使用这些元素的标称值或当前值。
H∞控制的一种应用是直接对控制系统的闭环奇异值图进行整形。在此类应用中,可以通过加权函数(环路整形滤波器)来扩充控制对象的输入和输出,这些加权函数表示希望H∞控制器满足的控制目标。控制对象必须是能控和能观的。
默认情况下,hinfsyn会自动想控制对象中添加额外的干扰或者误差,以确保满足对P12,P21的限制,称为正则化。
CL是下面结构的闭环传递函数,也可以由CL = lft(P,K)得到。
算法:求解下述线性矩阵不等式:
hinfsyn提供了状态反馈增益和观测器增益,可以使用它们以观测器形式表达控制器。控制器K的观测器形式为:(其中Kx,Kw,Lx,Lu可以有info结构体得到)
% 定义控制对象,权重函数
s = zpk('s');
G = (s-1)/(s+1);
W1 = 0.1*(s+100)/(100*s+1);
W2 = 0.1;
W3 = [];
P = augw(G,W1,W2,W3);
% 控制器综合
[K,CL,gamma] = hinfsyn(P,1,1);
gamma
% 检查闭环奇异值
sigma(CL,ss(gamma))