• 大小: 25KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-07-27
  • 语言: Matlab
  • 标签: 算法  

资源简介

多输入多输出的不确定系统性能分析以及配套simulink仿真,将代码、仿真以及理论分析结合起来,是一个完整的案例,易学习。

资源截图

代码片段和文件信息

s = zpk(‘s‘)
clear all; close all;
G0=[87.8 -86.4; 108.2 -109.6];
G=tf([1][75 1])*G0;
G=minreal(ss(G)); % ss
% Inversed based controller
Kinv=0.7*tf([75 1][1 1e-5])*inv(G0);  %控制器带宽越大系统响应越快  (逆基控制器)
Kinv=minreal(ss(Kinv)); % ss
% Weights
wp=0.5*tf([10 1][10 1e-5]);  %
wp=minreal(ss(wp)); % ss
wi=tf([1 0.2][0.5 1]);
wi=minreal(ss(wi)); % ss
Wp=wp*eye(2); % 2x2
Wi=wi*eye(2); % 2x2

% Generalized plant P (构建广义P矩阵)
%             |----Wi----Detal->---------|        disturb
%        v    |    u                     |           |
%   (-1)-->--K_out----|------------------+-----G-----+-|----Wp---->
%    |                                                 |
%    |-----------------------<-------------------------|                                          -----(-1)-->
%
systemnames = ‘G Wp Wi‘;
inputvar    = ‘[uncertain(2); disturb(2) ; K_out(2)]‘;
outputvar   = ‘[Wi ; Wp ; -G-disturb]‘;
input_to_G  = ‘[K_out+uncertain]‘;
input_to_Wp = ‘[G+disturb]‘;
input_to_Wi = ‘[K_out]‘;
sysoutname  = ‘P‘;
cleanupsysic= ‘yes‘;
sysic;
N=minreal(lft(PKinv));
figure(1)
% mu for RP
blk=[1 1; 1 1; 2 2];
omega = logspace(-34101);
Nf=frd(Nomega);
[mubndsmuinfo]=mussv(Nfblk‘c‘);
muRP=mubnds(:1); muRPinf=fnorm(muRP); [muRPinfmuRPw] = norm(muRPinf) % muRPinf=5.7726

% Worst case weigthed sensitivity
Nsys=ltisys(N.aN.bN.cN.d1);  % E=ones(dim(A))
delta=ublock(21);
[muupmuupfreq]=muperf(Nsysdelta);   % muup=44.92

% mu for RS
Nrs=Nf(1:21:2); % Picking out wITi
blk=[1 1; 1 1];
[mubndsmuinfo]=mussv(Nrsblk‘c‘);
muRS=mubnds(:1); muRSinf=fnorm(muRS); [muRSinfmuRSw]=norm(muRSinf) % muRSinf=0.5242

% mu for NS (=max. singular value of Nrp)
Nnp=Nf(3:43:4); % Picking out wP*Si
[mubndsmuinfo]=mussv(Nnpblk‘c‘);
muNS=mubnds(:1); muNSinf=fnorm(muNS); [muNSinfmuNSw]=norm(muNSinf) % muNSinf=0.500
bodemag(muRP‘.‘muRS‘-*‘muNS‘--‘omega)
xlabel(‘Frequency‘);ylabel(‘ssv‘);
% text(0.010.5‘RS‘);
% text(200.8‘NP‘);
% text(0.34.5‘RP‘);
legend(‘muRP‘‘muRS‘‘muNS‘)
 
L = Kinv*G;
S = inv(eye(2)+L);  % (eye(2)+L) 增加的是单位阵D,(eye(1)+L)增加全1阵D  ABC矩阵均无变化
T = eye(2)-S;       % C阵元素一致,但符号相反,T.D阵为0 (eye(2)-S)对D阵数值操作,对C阵符号操作
%-------------目标,观察系统奇异值曲线-------------------------------
%Ms = S;
figure(3); 
sigma(S);
hold on;
% Output multiplicative robustness
sigma(T);
xlabel(‘Frequency‘);
legend(‘S‘‘T‘)
%都已经满足性能要求,且设计的频率没有发生重叠。但曲线过于完美。。。。。
%问题:双输入双输出系统为什么都只画了一条奇异值曲线;
%寻找方法验证:frd(换一种方法画奇异值曲线)
S=frd(Somega)
T=frd(Tomega)
blk=[1 1;1 1]
[mubndSmuinfo]=mussv(Sblk‘c‘)
[mubndTmuinfo]=mussv(Tblk‘c‘)
muS1=mubndS(:1)
muS2=mubndS(:2)
muT1=mubndT(:1)
muT2=mubndT(:2)
figure(4)
bodemag(muS1‘.‘muS2‘-‘muT1‘--‘muT2‘r.‘omega)
legend(‘muS1‘‘muS2‘‘muT1‘‘muT2‘)
%--发现两个通道的奇异值曲线只是重叠了
% t=0:0.01:15;
% %模拟动态系统T对任意输入的时间响应
% y1=lsim(Msones(size(t‘))*[1 0 0]t);
% y2=lsim(Msones(size(t‘))*[0 1 0]t);
% y3=lsim(Msones(size(t‘))*[0 0 1]t);
% figure(2); subplot(231);
% plot(ty1(:1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3630  2019-04-22 21:38  uncertainty_control_code_and_simulink\robust_analysis_reference.m
     文件       24303  2019-04-22 21:38  uncertainty_control_code_and_simulink\uncertainty_hinf_control.slx
     目录           0  2019-04-22 21:38  uncertainty_control_code_and_simulink\

评论

共有 条评论