目录
1.H∞控制器概述
H∞控制器(H-infinity控制器)是一种线性控制器设计方法,旨在优化控制系统的鲁棒性和性能。它是现代控制理论中的一个重要概念,特别适用于需要应对不确定性、噪声和扰动的复杂控制系统。下面是对H∞控制器的详细介绍:
H∞控制的核心是H∞范数,也称为“无穷范数”。对于一个线性时不变系统,其传递函数表示为G(s),H∞范数是一个度量系统传递函数的性能和鲁棒性的方式。
H∞控制的目标是设计一个控制器,将系统的H∞范数最小化。这意味着在系统的所有可能工作条件下,系统对于外部扰动和噪声的敏感性都会被最小化。H∞控制通常涉及到代数矩阵不等式(LMI)的解决,这些不等式约束了控制器的性能和稳定性。H∞控制旨在实现系统的最佳鲁棒性,即系统能够在不确定性和扰动存在的情况下保持稳定性和性能。H∞控制还可用于实现一些性能指标的优化,如跟踪误差的最小化或某些输出的最优估计。
H∞控制是一种具有很好鲁棒性的设计方法,具有设计思想明确、控制效果好等优点,尤其适用于模型摄动的多输入多输出(MIMO)系统。H∞控制在控制理论、设计方法及应用等方面,经过多年不断发展和完善,已成为一种具有较完整体系的鲁棒控制理论。为适应控制系统稳定性、自适应性、智能化及工程化的更高要求,基于线性矩阵不等式(LMI)的H∞控制、非线性H∞控制以及H∞控制与神经网络和模糊控制结合,成为近年来H∞控制研究的热点。随着H∞控制研究的深入,其存在的诸如理论复杂、计算量大和参数摄动范围有限等问题将会逐步得到解决,适用范围也会更广、应用前景会更好。
2.MATLAB核心程序
clear;
tau1=0.1;
delta1=0;
tau2=0.1;
delta2=0;
g1=nd2sys([1],[tau1 1]);
g2=nd2sys([1],[tau2 0]);
We=nd2sys([100],[.01 1]);
P = nd2sys([1/(tau2*(1+delta2))],[tau1*(1+delta1) 1 0]);
% di : input disturbance
% do : output disturbance
% We : weight function
systemnames = 'g1 g2 We';
inputvar = '[di;do;u]';
outputvar = '[We;u;-g2-do]';
input_to_g1 = '[u+di]';
input_to_g2 = '[g1]';
input_to_We = '[g2+do]';
sysoutname = 'G';
cleanupsysic = 'yes';
sysic;
[K,Gp,gamma]=hinfsyn(G,1,1,0,5000,0.1)
Gp=starp(G,K,1,1);
[ak,bk,ck,dk]=unpck(K)
[z,p,k0]=ss2zp(ak,bk,ck,dk)
[agp,bgp,cgp,dgp]=unpck(Gp);
sys_Gp=ss(agp,bgp,cgp,dgp);
w=logspace(-3,3,100);
Gp_bode=bode(sys_Gp,w);
KP=mmult(K,P);
[akp,bkp,ckp,dkp]=unpck(KP);
sys_KP=ss(akp,bkp,ckp,dkp);
[gm,pm]=margin(sys_KP)
% closed-loop system %
systemnames = 'P K';
inputvar = '[ref]';
outputvar = '[P;K]';
input_to_P = '[K]';
input_to_K = '[ ref-P ]';
sysoutname = 'KG';
cleanupsysic = 'yes';
sysic;
[acl,bcl,ccl,dcl]=unpck(KG);
h=ss(acl,bcl,ccl,dcl);
t = 0:0.001:10; % vector of time samples
ref = (rem(t,5)>=2.5)*1; % square wave values
[ys ts xs]=lsim(h,ref,t);
% plot states
subplot(2,1,1);
plot(ts,ys(:,1),'-');
axis([0 10 -0.5 1.5])
% plot control
subplot(2,1,2)
plot(ts,ys(:,2),'-');
3.仿真结论
其余代码截图
D121