现代控制理论大作业北科.docx
《现代控制理论大作业北科.docx》由会员分享,可在线阅读,更多相关《现代控制理论大作业北科.docx(14页珍藏版)》请在冰豆网上搜索。
现代控制理论大作业北科
现代控制理论大作业
分析对象:
汽车悬架系统
指导老师:
***
专 业:
机械工程
姓 名:
白国星
学 号:
S********
1.建模
悬架是车轮或车桥与汽车承载部分之间具有弹性的连接装置的总称,具有传递载荷、缓和冲击、衰减振动以及调节汽车行驶中的车身位置等作用。
传统汽车悬驾系统是被动悬驾,其参数不能改变,无法控制其对不同路面激励的响应,因此对不同路面的适应性较差。
为提高汽车的行驶平顺性、操纵稳定性和制动性等性能,人们开始用主动悬架系统来代替传统的被动悬架系统。
主动悬架系统能根据路面的情况通过一个动力装置改变悬挂架的参数,改善汽车的各方面性能。
对悬驾系统进行仿真计算首先要建立悬驾系统动力学模型,随后对所建立的模型进行仿真分析。
为了简化模型,取汽车的一个车轮的悬驾系统进行研究,该模型可简化为一维二自由度的弹簧阻尼质量系统,图1所示为该模型的模拟图。
图1悬架系统模型的模拟图
其中u为动力装置的作用力,w为路面位移,x1为车身位移,x2为悬驾位移,用车身位移来度量车身的振动情况,并视为系统的输出。
路面状况以w为尺度,并视为系统的一个干扰输入。
当汽车从平面落入坑时,w可用一个阶跃信号来模拟。
u为主动悬架的作用力,它是系统的控制量。
进行受力分析,由牛顿第二规律可得车身悬架系统的动力学方程为:
设系统状态变量为:
则上面系统动力学方程可改写为状态空间表达式:
其中:
Matlab系统模型程序代码:
m1=800;m2=320;ks=10000;b=30000;
kt=10*ks;
a=[0010;0001;-ks/m1ks/m1-b/m1b/m1;
ks/m2-(ks+kt)/m2b/m2-b/m2];
b=[00;00;1/m10;-1/m2kt/m2];
c=[1000];
d=[00];
G=ss(a,b,c,d)
[num,den]=ss2tf(a,b,c,d,1);
tfsys=tf(num,den)
eig(a)
figure
(1)
impulse(G)
figure
(2)
step(G)
系统状态空间模型:
:
系统传递函数:
系统矩阵特征值:
系统矩阵特征值都在左半平面,故系统稳定。
系统脉冲响应:
系统阶跃响应:
2.系统能控性与能观性分析
Matlab系统能控性与能观性分析程序代码:
m1=800;m2=320;ks=10000;b=30000;
kt=10*ks;
a=[0010;0001;-ks/m1ks/m1-b/m1b/m1;
ks/m2-(ks+kt)/m2b/m2-b/m2];
b=[00;00;1/m10;-1/m2kt/m2];
c=[1000];
d=[00];
N=size(a);
n=N
(1)
ud=ctrb(a,b);%能控矩阵%
ob=obsv(a,c);%能观矩阵%
ifrank(ud)==n%判断能控性%
disp('系统能控')
elseifrank(ud)disp('系统不能控')
end
ifrank(ob)==n%判断能观性%
disp('系统能观')
elseifrank(ob)disp('系统不能观')
end
运行结果:
3.系统稳定性分析
Matlab系统稳定性分析程序代码:
m1=800;m2=320;ks=10000;b=30000;
kt=10*ks;
a=[0010;0001;-ks/m1ks/m1-b/m1b/m1;
ks/m2-(ks+kt)/m2b/m2-b/m2];
Q=eye(4,4);
P=lyap(a,Q);%求解矩阵P
flag=0;
n=length(a);
fori=1:
n
det(P(1:
i,1:
i))
if(det(P(1:
i,1:
i))<=0)
flag=1;
end
end
ifflag==1
disp('系统不稳定');
else
disp('系统稳定');
end
运行结果:
4.系统状态反馈控制器设计
若系统期望性能指标为超调量小于5%,峰值时间小于0.5秒,即:
则:
为计算方便取
则主导极点为:
另两个极点应选择成使其和原点距离远大于主导极点和原点的距离,取:
则
则期望特征多项式为:
Matlab系统状态反馈控制器设计程序代码:
m1=800;m2=320;ks=10000;b=30000;
kt=10*ks;
a=[0010;0001;-ks/m1ks/m1-b/m1b/m1;
ks/m2-(ks+kt)/m2b/m2-b/m2];
b=[00;00;1/m10;-1/m2kt/m2];
c=[1000];
d=[00];
OG=ss(a,b,c,d);%原系统状态空间模型
HPole=[-200-100-7.07+sqrt(-50)-7.07-sqrt(-50)];%期望极点
K=acker(a,b*[10]',HPole)
a0=a-b*[10]'*K;%极点配置后系统矩阵
eig(a0)%显示极点配置后特征根
NG=ss(a0,b,c,d)%状态反馈控制后系统状态空间模型
figure
(1)
impulse(NG)
holdon
impulse(OG)
axis([0,10,-4,4]);
grid
figure
(2)
step(NG)
holdon
step(OG)
axis([0,10,0,2]);
grid
状态反馈控制器增益矩阵:
状态反馈控制
后系统矩阵特征值:
状态反馈控制后系统状态空间模型:
系统脉冲响应对比:
绿色线为原系统脉冲响应,蓝色线为状态反馈控制后系统脉冲响应。
系统阶跃响应对比:
绿色线为原系统脉冲响应,蓝色线为状态反馈控制后系统脉冲响应。
5.系统状态观测器设计
Matlab系统状态观测器设计程序代码:
m1=800;m2=320;ks=10000;b=30000;
kt=10*ks;
a=[0010;0001;-ks/m1ks/m1-b/m1b/m1;
ks/m2-(ks+kt)/m2b/m2-b/m2];
b=[00;00;1/m10;-1/m2kt/m2];
c=[1000];
d=[00];
HPole=[-200-100-7.07+sqrt(-50)-7.07-sqrt(-50)];
K=acker(a,b*[10]',HPole);
op=[-50-50-50-50];
L=(acker(a',c',op))'
a1=[a-b*[10]'*K;L*ca-L*c-b*[10]'*K]
e0=[120.1-0.10000];
t=0:
0.01:
4;
sys=ss(a1,eye(8),eye(8),eye(8));
[y,t,e]=initial(sys,e0,t);
subplot(2,2,1)
plot(t,e(:
1))
grid
xlabel('time')
ylabel('e1')
subplot(2,2,2)
plot(t,e(:
2))
grid
xlabel('time')
ylabel('e2')
subplot(2,2,3)
plot(t,e(:
3))
grid
xlabel('time')
ylabel('e3')
subplot(2,2,4)
plot(t,e(:
4))
grid
xlabel('time')
ylabel('e4')
状态观测器增益矩阵:
状态估计误差曲线:
6.系统最优控制
Matlab系统最优控制程序代码:
m1=800;m2=320;ks=10000;b=30000;
kt=10*ks;
a=[0010;0001;-ks/m1ks/m1-b/m1b/m1;
ks/m2-(ks+kt)/m2b/m2-b/m2];
b=[00;00;1/m10;-1/m2kt/m2];
c=[1000];
d=[00];
Q=eye(4,4);
R=1;
[Kc,P]=lqr(a,b*[1,0]',Q,R)
Ac=[(a-b*[1,0]'*Kc)]
程序运行结果:
7.体会和建议
现代控制理论是许多新兴控制算法的基础,通过学习现代控制理论,对利用状态空间模型进行系统分析和设计有了一定了解,掌握了对系统的能控性、能观性和稳定性进行判断分析方法和对单输入单输出系统状态反馈控制器和状态观测器的设计方法,并逐步熟悉了应用MATLAB进行系统分析设计。
不过在后续的研究学习中,接触较多的是多输入多输出系统,而且多输入多输出系统的分析以及其控制器、观测器的设计更加复杂难懂,希望老师在以后的教学中能多涉及一些多输入多输出系统的内容。