📄 ch6_1.m
字号:
format short e
w=logspace(-2,6,100);
%设一般被控制对象
%定义控制对象和加权函数
Psys=nd2sys([1],[1 0 0],3.87e7);
W1sys=nd2sys([1 125.7],[1 1e-4],5e-1);
W2num1=[1 1e+4 5.7e+7];
W2dencof=1;
W2den1=[1 1.2e+4 4.04e+8];
W2sys1=nd2sys(W2num1,W2den1);
W2sys=mmult(W2sys1,W2sys1,23.9);
W3sys=0.1;
W4sys=nd2sys([10 10*0.5*0.5e4],[1 10*5e4]);
%显示加权函数的Bode图
Pfr=frsp(Psys,w);
W1fr=frsp(W1sys,w);
W2fr=frsp(W2sys,w);
W3fr=frsp(W3sys,w);
W4fr=frsp(W4sys,w);
figure(1);
vplot('liv,lm',W1fr,W2fr,W3fr,W4fr);
title('Weightign Functions')
xlabel('Freprency [rad/s]')
ylabel('Gain')
grid;
%设一般被控对象
systemnames='Psys W1sys W2sys W3sys W4sys';
inputvar='[w1;w2;u]';
outputvar='[W1sys;W2sys;W4sys;w2+Psys]';
input_to_W3sys='[w1]';
input_to_Psys='[u+W3sys]'
input_to_W1sys='[Psys+w2]';
input_to_W2sys='[Psys]';
input_to_W4sys='[u]';
sysoutname='Gpsys';
cleanupsysic='yes';
sysic;
%设计控制器
disp(['H00 controller Design with hinfsyn'])
K=[];
glow=0;ghigh=10;tol=1e-2;
while isempty(K)==1 & ghigh<1e6;
[K,CL,gopt]=hinfsyn(Gpsys,1,1,glow,ghigh,tol);
if isempty(K)==1 & ghigh<1e6;
ghigh=ghigh*10;
tol=ghigh*1e-3;
end
clear CL ghigh glow tol
end;
if isempty(K)==1
break;
end;
%显示控制器的Bode图
Kfr=frsp(K,w)';
figure(2);
subplot(2,1,1)
vplot('liv,lm',Kfr');
title('Bode plot of Controller')
xlabel('Frepquency[rad/s]')
ylabel('Gain')
grid;
subplot(2,1,2)
vplot('liv,p',Kfr');
xlabel('Frequency[rad/s]')
ylabel('Phase(degrees)')
grid;
%仿真
systemnames='Psys K';
inputvar='[w;r]';
outputvar='[Psys+r;K]';
input_to_Psys='[K+w]';
input_to_K='[Psys+r]';
sysoutname='Clsys';
cleanupsysic='yes';
sysic;
%仿真(H∞控制器)
[pa,pb,pc,pd]=unpck(Psys);
[ka,kb,kc,kd]=unpck(K);
[da,db,dc,dd]=unpck(sel(Clsys,1,1));
[ua,ub,uc,ud]=unpck(sel(Clsys,2,1));
%干扰响应
t=[0:0.0001:0.1];
[y,x,t]=step(da,db,dc,dd,1,t);
[u,x,t]=step(ua,ub,uc,ud,1,t);
figure(3)
subplot(2,1,1)
plot(t,y)
axis([0 0.1 0 16])
xlabel('Time[s]')
ylabel('Amplitude')
title('Step disturbance response')
grid on;
%控制输入
subplot(2,1,2)
plot(t,u)
axis([0 0.01 -1.7 0])
xlabel('Time[s]')
ylabel('u[V]')
title('Input')
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -