不知道是否是盗版软件问题还是其他?最优Hinf性能指标和书上能对上,但是Ak,BK,Ck差好远!
最后画出有控-无控的bode图,没什么效果!把权系数改了也不行!
多谢指点!尤其是楼上那几位!
%example 4.4P64
%车辆悬浮系统控制
clear all;
m1=1.5e3;m2=1.0e4;
k1=5.0e6;k2=5.0e5;
b1=1.7e3;b2=50e3;
A=[0 0 1 0;0 0 0 1;-(k1+k2)/m1 k2/m1 -(b1+b2)/m1 b2/m1;k2/m2 -k2/m2 b2/m2 -b2/m2];
B=[b1/m1 0;0 0;k1/m1-(b1*(b1+b2))/(m1*m1) -1/m1;(b1*b2)/(m1*m2) 1/m2];
C1=[1 0 0 0;0 0 0 0;k2/m2 -k2/m2 b2/m2 -b2/m2;-1 1 0 0];
D1=[-1 0;0 1;(b1*b2)/(m1*m2) 1/m2;0 0];
C2=[k2/m2 -k2/m2 b2/m2 -b2/m2; -1 1 0 0];
D2=[(b1*b2)/(m1*m2) 1/m2;0 0];
sysG=ltisys(A,B,[C1;C2],[D1;D2]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% 双子端模型的传递函数 %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
syswq0=ltisys('tf',0.01,[0.4 1]);%考虑权重
syswz1=ltisys('tf',200,1);
syswz2=ltisys('tf',0.1,1);
syswz3=ltisys('tf',[3.18e-2 0.4],[3.16e-4 3.14e-2 1]);
syswz4=ltisys('tf',100,1);
syswz5=ltisys('tf',1,1);
syswz=sdiag(syswz1,syswz2,syswz3,syswz4,syswz5,syswz5);
syswq=sdiag(syswq0,syswz5);
sys=smult(syswq,sysG,syswz);
[gopt,K]=hinflmi(sys,[2 1]);
[Ak,Bk,Ck,Dk]=ltiss(K);%相应的闭环系统最优Hinf性能指标=0.5628,但Ak,Bk,Ck,Dk和书没有对上
%根据以上求出的控制器,分析闭环系统中扰动q0对被控变量Z=[q1-q0悬浮偏差 F轮胎作用力 ddq2水平振动 q2-q1悬浮偏差]的影响,为此,首先要得到从q0到Z的闭环传递函数Wq0z(s)。可以用slft得到:
sysqoz=slft(sysG,K,1,2);
%用ssub可以到q0到各个被控变量的传递函数,进一步用splot可以画出q0到这些被控变量之间的频响和时域阶跃响应曲线
tq0z1=ssub(sysqoz,1,1);
splot(tq0z1,'bo','r')
hold on;
%splot(tq0z1,'sv');
bode(A,B(:,1),C1(1,:),D1(1,:),1,'b--');%uncontrol
%%开/闭环传递函数进一步可以得到响应的均方差 |