倒立摆小车控制_第1页
倒立摆小车控制_第2页
倒立摆小车控制_第3页
倒立摆小车控制_第4页
倒立摆小车控制_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上仲恺农业工程学院课程设计报告电机拖动与运动控制综合设计院 系:自动化学院题 目:倒立摆小车控制班 级:工业自动化131姓 名:廖声雄学 号:6时 间:2016.10.10-2016.10.15指导老师:付根平专心-专注-专业一、实验目的:1、设计基于状态观测器的状态反馈控制系统。2、学习设计小车单级倒立摆系统,并用simulink仿真。3、使用M语言设计出单级倒立摆动画程序。二、实验任务三、实验设计1.倒立摆的模型摆杆长度为 L,质量为 m 的单级倒立摆(摆杆的质心在杆的中心处),小车的质量为 M。在水平方向施加控制力 u,相对参考系产生位移为 y。为了简化问题并且保

2、其实质不变,忽略执行电机的惯性以及摆轴、轮轴、轮与接触面之间的摩擦力及风力。如下图所示: 摆杆质心坐标为:在 y 轴方向上应用牛顿第二定律得到以下方程:而代入(1)式,化简为:(1)(3)或 (4) 简化后得 式(2)经过线性化处理后得: 式(5)经过线性化处理后得:不失一般性,不妨选取倒立摆的参数如下 :代入参数后2、倒立摆的控制系统设计选取状态变量: 则其状态空间表达式为:设L=0.8m、M=0.5kg、m=0.5kg、而g=9.8m/。则系统的状态空间表达式为首先判断系统的能控性和能观性,输入以下语句:a=0 1 0 0;13.475 0 0 0;0 0 0 1;-0.98 0 0 0;

3、b=0;-0.25;0;0.2;c=1 0 0 0;0 0 1 0;rc=rank(ctrb(a,b)ro=rank(obsv(a,c)语句的运行结果为:这表明系统能控性矩阵满秩,系统是能控的。所以,可以进行状态反馈来任意配置极点。能观性矩阵满秩。系统能观,可以设计状态观测器,因此可以设计具有状态观测器的状态反馈控制系统。再输入以下指令:eig(a),计算出系统矩阵a的特征值运行的结果为:因此,可以配置控制系统的极点为:-5、-5.2、-5.6、-6,并且可以设计状态观测器的极点为:-20、-21、-22、-23。输入并且运行以下命令:P=-5 -5.2 -5.6 -6;K=place(a,b

4、,p)P1=-20 -21 -22 -23G1=place(a',c',p1);G=G1'运行的结果为: 即:G= K=-1050.8 -297.6 -356.6 -263.0下图就是所设计的具有状态观测器的状态反馈控制系统Simulink仿真模型。在积分器中设置初值,然后运行仿真模型,如下图所示:基于状态观测器的单级倒立摆系统状态反馈控制系统仿真模型选择Matrix(k*u)四、实验结果及分析得到的的仿真曲线分别如图所示A = 0 1 0 0;13.475 0 0 0;0 0 0 1;-0.98 0 0 0;B = 0; -0.25 ;0;0.2;C =1 0 0 0

5、;0 0 1 0;K = -1050.8 -297.6 -356.6 -263.0;G = 42.85 1.04;471.83 22.39;0.94 43.15;19.17 464.64;sim('lsx1.mdl'); H_CAR = 0.4; H_WHEEL = 0.08; L = 0.8; N = length(yout.signals.values);LINEWIDTH = 6.0; CARWIDTH = 3.0; ARROWWIDTH = 2.5; for i=1:N clf; y = yout.signals.values(i,1); theta = yout.si

6、gnals.values(i,2)*pi/180; y_line = y+L*sin(theta); z_line = L*cos(theta)+H_CAR;plot(y+0.035),(y+0.35),(y+0.35),(y-0.35),(y-0.35),(y-0.04),H_CAR+0.3,H_CAR+0.3,H_WHEEL+0.4,H_WHEEL+0.4,H_CAR+0.3,H_CAR+0.3,'b','LineWidth',CARWIDTH);%画车体 hold on plot(+0.85),(-0.85),H_CAR+0.24,H_CAR+0.24,&

7、#39;k','LineWidth',0.7); hold on plot(+0.89,+0.89,H_CAR+0.2,H_CAR-0.38,'k','LineWidth',0.7); hold on plot(-0.89,-0.89,H_CAR+0.2,H_CAR-0.38,'k','LineWidth',0.7); hold on plot(+0.87),(-0.87),H_CAR-0.4,H_CAR+-0.4,'k','LineWidth',0.7); hold on

8、plot(+0.85),(-0.85),H_CAR-0.36,H_CAR-0.36,'k','LineWidth',1.0); hold on plot(+0.7),(-0.7),H_CAR,H_CAR,'k','LineWidth',1.0); hold on plot(-0.85),(-0.7),H_CAR+0.2,H_CAR,'k','LineWidth',1.0); hold on plot(+0.7),(+0.85),H_CAR,H_CAR+0.2,'k','Lin

9、eWidth',1.0); hold on plot(y,y,H_CAR+0.3,H_CAR+L+0.2,'-k','LineWidth',0.7); hold on r = 0.04; hseta = 0:0.001:pi; yh = y+r*cos(hseta); zh = H_CAR+0.3+r*sin(hseta); plot(yh,zh,'b','LineWidth',CARWIDTH); hold on; r = 0.04; hseta = 0:0.001:2*pi; yh = y_line+r*cos(hse

10、ta); zh = z_line+0.03+r*sin(hseta); plot(yh,zh,'k','LineWidth',CARWIDTH); hold on; yl_circle = y-0.2; yr_circle = y+0.2; z_circle = H_WHEEL/2; r = H_WHEEL/2; seta = 0:0.001:2*pi; yyl = yl_circle+r*cos(seta); yyr = yr_circle+r*cos(seta); zz = z_circle+0.4+r*sin(seta); plot(yyl,zz,yyr,

11、zz,'b','LineWidth',CARWIDTH); hold on; %电动机和右下角滑轮 yl_circle = -0.85; yr_circle = +0.85; z_circle = 0.1; r = 0.04; seta = 0:0.001:2*pi; yyl = yl_circle+r*cos(seta); yyr = yr_circle+r*cos(seta); zz = z_circle+r*sin(seta)-0.06; plot(yyl,zz,'k',yyr,zz,'k','LineWidth&#

12、39;,CARWIDTH); hold on; %滑轮 yl_circle = -0.85; yr_circle = +0.85; z_circle = H_WHEEL/2; r = H_WHEEL/2; seta = 0:0.001:2*pi; yyl = yl_circle+r*cos(seta); yyr = yr_circle+r*cos(seta); zz = z_circle+0.56+r*sin(seta); plot(yyl,zz,'k',yyr,zz,'k','LineWidth',CARWIDTH); hold on; plo

13、t(y,y_line,H_CAR+0.32,z_line,'r','LineWidth',LINEWIDTH);%画单摆杆 hold on if i>1 && i<N %画出表示行车方向的箭头 if yout.signals.values(i,1) > yout.signals.values(i-1,1) plot(y-0.08),(y+0.08),(H_CAR+H_WHEEL)/2+0.4,(H_CAR+H_WHEEL)/2+0.4,'m','LineWidth',ARROWWIDTH); ho

14、ld on plot(y+0.08),(y+0.08)-0.05*cos(pi/6),(H_CAR+H_WHEEL)/2+0.4,(H_CAR+H_WHEEL)/2+0.4+0.05*sin(pi/6),'m','LineWidth',ARROWWIDTH); hold on plot(y+0.08),(y+0.08)-0.05*cos(pi/6),(H_CAR+H_WHEEL)/2+0.4,(H_CAR+H_WHEEL)/2+0.4-0.05*sin(pi/6),'m','LineWidth',ARROWWIDTH); hold

15、 on elseif yout.signals.values(i,1) < yout.signals.values(i-1,1) plot(y-0.08),(y+0.08),(H_CAR+H_WHEEL)/2+0.4,(H_CAR+H_WHEEL)/2+0.4,'m','LineWidth',ARROWWIDTH); hold on plot(y-0.08),(y-0.08)+0.05*cos(pi/6),(H_CAR+H_WHEEL)/2+0.4,(H_CAR+H_WHEEL)/2+0.4+0.05*sin(pi/6),'m','LineWidth',ARROWWIDTH); hold on plot(y-0.08),(y-0.08)+0.05*cos(pi/6),(H_CAR+H_WHEEL)/2+0.4,(H_CAR+H_WHEEL)/2+0.4-0.05*sin(pi/6),'m','LineWidth',ARROWWIDTH); hold on end end xlabel('y(t) / m'), ylabel('z(t) / m'),title('倒立

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论