💥1 概述
提升技术已成为采样系统设计的主要工具,但提升变换不能保证频率响应不变,故不适用于加权(函数)H∞设计。为此,针对采样控制系统的结构特点,将频率响应分为两个通道进行计算,采用经典的多速率感知环境下的状态观测器,既可以得到频率响应,又可以求得系统的L2诱导范数。方法简单直观,物理概念清楚。讨论了一类不确定时变时滞切换系统基于状态观测器的非脆弱H∞控制问题。首先,给出基于观测器的非脆弱H∞控制器形式,在同时限定时滞上界和时滞导数上界的条件下,利用单李雅普诺夫函数方法和凸组合技术,构造李雅普诺夫泛函和其对应的切换规则;其次,利用不等式引理对求导后的李雅普诺夫泛函进行不等式放缩进而消除不等式中的时变时滞项;再次,引入J函数得到满足H∞性能指标的非线性矩阵不等式,并利用Schur补引理将非线性矩阵不等式转化为等价的2个线性矩阵不等式,得到一类不确定变时滞切换系统存在基于状态观测器的H∞控制器且满足H∞性能指标的充分条件;最后,给出由2个子系统构成的一个切换系统,利用LMI工具箱进行数值例子仿真说明定理的有效性和实用性。
📚2 运行结果
部分代码:
set(0,'DefaultAxesLinewidth',2,'DefaultLineLineWidth',2); set(0,'defaultAxesFontSize',14); set(0,'defaultAxesFontName','arial'); set(0,'defaultTextFontName','arial'); %close all %clear al1 = 0.01; al2 = 0.01; A = [0.95 0.5 0.2;-0.1 0.9 -0.2;0 0.1 0.85]; % Stable Plant %A = [1.2 0.5 0.2;-0.1 1 -0.2;0 0.1 1]; % Unstable Plant B = [1;1.5;2]; C = [1 1 0;0 1 1]; D = [1 0;0 1]; S0 = [1 0;0 1]; S1 = [0 0;0 0]; S2 = [1 0;0 0]; S3 = [0 0;0 1]; S4 = [1 0;0 0]; S5 = [0 0;0 0]; C0 = S0*C; C1 = S1*C; C2 = S2*C; C3 = S3*C; C4 = S4*C; C5 = S5*C; D0 = S0*D; D1 = S1*D; D2 = S2*D; D3 = S3*D; D4 = S4*D; D5 = S5*D; setlmis([]) [gamma2,n,sgamma2] = lmivar(1,[1 1]); [P1,n,sP1] = lmivar(1,[3 1]); [P2,n,sP2] = lmivar(1,[3 1]); [P3,n,sP3] = lmivar(1,[3 1]); [P4,n,sP4] = lmivar(1,[3 1]); [P5,n,sP5] = lmivar(1,[3 1]); [P0,n,sP0] = lmivar(1,[3 1]); [Y1,n,sY1] = lmivar(2,[3 2]); [Y2,n,sY2] = lmivar(2,[3 2]); [Y3,n,sY3] = lmivar(2,[3 2]); [Y4,n,sY4] = lmivar(2,[3 2]); [Y5,n,sY5] = lmivar(2,[3 2]); [Y0,n,sY0] = lmivar(2,[3 2]); S1 = newlmi; lmiterm([-S1 1 1 P1],1,1) lmiterm([-S1 1 2 P1],1,A) lmiterm([-S1 1 2 Y1],1,C1) lmiterm([-S1 2 2 P0],1,1) lmiterm([-S1 2 2 0],-1) lmiterm([-S1 1 3 P1],1,B) lmiterm([-S1 3 3 gamma2],1,eye(1,1)) lmiterm([-S1 1 4 Y1],1,D1) lmiterm([-S1 4 4 gamma2],1,eye(2,2)) S2 = newlmi; lmiterm([-S2 1 1 P2],1,1) lmiterm([-S2 1 2 P2],1,A) lmiterm([-S2 1 2 Y2],1,C2) lmiterm([-S2 2 2 P1],1,1) lmiterm([-S2 2 2 0],-1) lmiterm([-S2 1 3 P2],1,B) lmiterm([-S2 3 3 gamma2],1,eye(1,1)) lmiterm([-S2 1 4 Y2],1,D2) lmiterm([-S2 4 4 gamma2],1,eye(2,2)) S3 = newlmi; lmiterm([-S3 1 1 P3],1,1) lmiterm([-S3 1 2 P3],1,A) lmiterm([-S3 1 2 Y3],1,C3) lmiterm([-S3 2 2 P2],1,1) lmiterm([-S3 2 2 0],-1) lmiterm([-S3 1 3 P3],1,B) lmiterm([-S3 3 3 gamma2],1,eye(1,1)) lmiterm([-S3 1 4 Y3],1,D3) lmiterm([-S3 4 4 gamma2],1,eye(2,2)) S4 = newlmi; lmiterm([-S4 1 1 P4],1,1) lmiterm([-S4 1 2 P4],1,A) lmiterm([-S4 1 2 Y4],1,C4) lmiterm([-S4 2 2 P3],1,1) lmiterm([-S4 2 2 0],-1) lmiterm([-S4 1 3 P4],1,B) lmiterm([-S4 3 3 gamma2],1,eye(1,1)) lmiterm([-S4 1 4 Y4],1,D4) lmiterm([-S4 4 4 gamma2],1,eye(2,2)) S5 = newlmi; lmiterm([-S5 1 1 P5],1,1) lmiterm([-S5 1 2 P5],1,A) lmiterm([-S5 1 2 Y5],1,C5) lmiterm([-S5 2 2 P4],1,1) lmiterm([-S5 2 2 0],-1) lmiterm([-S5 1 3 P5],1,B) lmiterm([-S5 3 3 gamma2],1,eye(1,1)) lmiterm([-S5 1 4 Y5],1,D5) lmiterm([-S5 4 4 gamma2],1,eye(2,2)) S6 = newlmi; lmiterm([-S6 1 1 P0],1,1) lmiterm([-S6 1 2 P0],1,A) lmiterm([-S6 1 2 Y0],1,C0) lmiterm([-S6 2 2 P5],1,1) lmiterm([-S6 2 2 0],-1) lmiterm([-S6 1 3 P0],1,B) lmiterm([-S6 3 3 gamma2],1,eye(1,1)) lmiterm([-S6 1 4 Y0],1,D0) lmiterm([-S6 4 4 gamma2],1,eye(2,2)) LMIs = getlmis; c = [1 zeros(1,72)]; [copt,xopt] = mincx(LMIs,c); P0opt = dec2mat(LMIs,xopt,P0); Y0opt = dec2mat(LMIs,xopt,Y0); P1opt = dec2mat(LMIs,xopt,P1); Y1opt = dec2mat(LMIs,xopt,Y1); P2opt = dec2mat(LMIs,xopt,P2); Y2opt = dec2mat(LMIs,xopt,Y2); P3opt = dec2mat(LMIs,xopt,P3); Y3opt = dec2mat(LMIs,xopt,Y3); P4opt = dec2mat(LMIs,xopt,P4); Y4opt = dec2mat(LMIs,xopt,Y4); P5opt = dec2mat(LMIs,xopt,P5); Y5opt = dec2mat(LMIs,xopt,Y5); L0 = -P0opt^(-1)*Y0opt; L1 = -P1opt^(-1)*Y1opt; L2 = -P2opt^(-1)*Y2opt; L3 = -P3opt^(-1)*Y3opt; L4 = -P4opt^(-1)*Y4opt; L5 = -P5opt^(-1)*Y5opt; x(1,1) = 0; x(2,1) = 0; x(3,1) = 0; xp(1,1) = 0; xp(2,1) = 0; xp(3,1) = 0; Ts = 0.01; t = 0:1:600; a = 0:0.01:2*pi; u = sin(a); u_proposed = 0; y_proposed = 0; uy_proposed_sum = 0; e_proposed_sum = 0; for k = 1:600; if k <= 600 u_proposed = al1*randn; y_proposed = al2*[randn;randn]; else u_proposed = 0; y_proposed = 0; end xp(:,k+1) = A * xp(:,k) + B * u(:,k) + B *u_proposed; yp(:,k) = C * xp(:,k) + D * y_proposed ; if rem(k,6) == 0 x(:,k+1) = (A - L0*C) * x(:,k) + B * u(:,k) + L0*yp(:,k); y(:,k) = C * x(:,k); elseif rem(k,6) == 1 x(:,k+1) = (A - L1*C) * x(:,k) + B * u(:,k) + L1*yp(:,k); y(:,k) = C * x(:,k); elseif rem(k,6) == 2 x(:,k+1) = (A - L2*C) * x(:,k) + B * u(:,k) + L2*yp(:,k); y(:,k) = C * x(:,k); elseif rem(k,6) == 3 x(:,k+1) = (A - L3*C) * x(:,k) + B * u(:,k) + L3*yp(:,k); y(:,k) = C * x(:,k); elseif rem(k,6) == 4 x(:,k+1) = (A - L4*C) * x(:,k) + B * u(:,k) + L4*yp(:,k); y(:,k) = C * x(:,k); elseif rem(k,6) == 5 x(:,k+1) = (A - L5*C) * x(:,k) + B * u(:,k) + L5*yp(:,k); y(:,k) = C * x(:,k); end uy_proposed_sum = uy_proposed_sum + u_proposed^2 + norm(y_proposed)^2; e_proposed_sum = e_proposed_sum + norm(x(:,k)-xp(:,k))^2; end figure(1),stairs(t,xp(1,:),'k','LineStyle','--'),hold on,stairs(t,xp(2,:),'k','LineStyle','--'),hold on,stairs(t,xp(3,:),'k','LineStyle','--') figure(1),stairs(t,x(1,:),'k'),hold on,stairs(t,x(2,:),'k'),hold on,stairs(t,x(3,:),'k') ylabel('x,x_{ob}') xlabel('k') %figure(4),stairs(t,xp(1,:)-x(1,:),'k'),hold on,stairs(t,xp(2,:)-x(2,:),'k'),hold on,stairs(t,xp(3,:)-x(3,:),'k'),axis([0 500 -5 5]); % %ylabel('e') %xlabel('k') figure(2) %z,zQ1 subplot(3,1,1); hold on; %grid on stairs(t,xp(1,:)-x(1,:),'k','LineWidth',0.5); axis([0 500 -0.5 0.5]) %set(gca,'fontsize',14); xlabel('k') ylabel('e_1') box on % %figure(12) %v1 subplot(3,1,2); hold on; %grid on stairs(t,xp(2,:)-x(2,:),'k','LineWidth',0.5); axis([0 500 -0.5 0.5]) %set(gca,'fontsize',14); xlabel('k') ylabel('e_2') box on subplot(3,1,3); hold on; %grid on stairs(t,xp(3,:)-x(3,:),'k','LineWidth',0.5); axis([0 500 -0.5 0.5]) %set(gca,'fontsize',14); xlabel('k') ylabel('e_3') box on gamma_proposed = sqrt(copt) gamma_proposed_sim = sqrt(e_proposed_sum/uy_proposed_sum)
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]刘彦文,王广雄,何朕.采样系统的频率响应和L_2诱导范数[J].控制与决策,2005(10):1133-1136.DOI:10.13195/j.cd.2005.10.55.liuyw.011.
[2]Hiroshi Okajima (2023) State Observer under Multi-rate Sensing Environment and Its Design using l2-Induced Norm [Source Code].