1、机械运动系统设计与实践报告 学 院: 工程学院 专 业: 机械设计及理论 姓 名: 学 号: 指导教师: 2012 年 3 月环形倒立摆Adams与Mat lab联合仿真分析一、实践目的1. 熟悉和理解环形倒立摆的组成部件及运动原理。2. 通过ADAMS软件对环形倒立摆进行建模,熟练该款软件。3. 通过运用ADAMS导出模块与mat lab进行对接处理,熟悉mat lab软件的PID运行控制以及掌握simulink的相关设置。二、实验原理环形倒立摆是通过电机驱动,带动连杆,同时连杆来带动摆杆运动。中间需要测量的物理参数主要有:连杆的角度、连杆的角速度、摆杆的角度、摆杆的角速度。通过两个光电编码
2、器进行反馈。从反馈过程中来调节电机的转速及转向,进而达到摆杆的倒立并保持相对平衡。下图1即为实验室固高环形倒立摆系统组成框架:图1 环形倒立摆组成框架机房中matlab6.5中控制倒立摆的原理图二老师给的程序% this is a new simulation program for new arm-type inverted pendulum % by lgr input on the state of 0 of arm and that of 0 of pendulum% ! CAUTION ,changed base of direction of arm% Suc.clear allc
3、lose all%-Ma=0.21;Mp=0.062;la=0.133;lp=0.068;La=0.25;Lp=0.19;Ja=5E-3;Jp=5.65E-4;Ca=5.52E-3;Cp=1.69E-4;kt=0.0419;g=9.8;%-continuous state equation-ce= 1 0 0 0 ; 0 1 0 0 ; 0 0 Mp*La2+Ja Mp*La*lp ; 0 0 Mp*La*lp Jp ;ca= 0 0 1 0 ; 0 0 0 1 ; -(Mp*la+Mp*La)*g 0 -(Ca+Cp) Cp ; 0 Mp*g*lp Cp -Cp ;cb=0;0;kt;0;C
4、A=inv(ce)*ca;CB=inv(ce)*cb;C=1 0 0 0 ; 0 1 0 0;%-Q=diag(100,10,1,1);R=1;f,s,e=lqr(CA,CB,Q,R);%-dt=0.005;%sampling timeth_a=0.1 %accdd(Initial angle of arm ,0.1);% ! caution,clock di%rection th_p=pi;% =accdd(Initial angle of pendulum ,pi);% ! caution,clock dir%ection +d_th_a =0.0;%d_th_p =0.0;%initia
5、l values of statesdd_th_a =0.0;%dd_th_p =0.0;%u =0.0;z =0.0;energy =0.0;i =1;%- input parameter-alpha =30.0 ; %alpha =accdd(Design Parameter alpha,30.0);energy_d =1.5*Mp*g*lp; %accdd(Desired Energy,1.5*Mp*g*lp);zeta =1 % accdd(Damping Factor,1.0);wc =1 % accdd(Damping Factor,1.0);flag =0;%- starting
6、 loop -for i =1:6.0/dt th_a_0 =th_a;%th_p_0 =th_p;%d_th_a_0 =d_th_a;%d_th_p_0 =d_th_p;%dd_th_a_1 =dd_th_a;%dd_th_p_0 =dd_th_p;% if cos (th_p)=cos(0.2); flag=1;endif flag=0 %- swimping up - dd_th_a = z-(2*zeta*wc*d_th_a+wc2*th_a); ydd_temp = -Mp*La*lp*cos(th_a-th_p)*dd_th_a+Mp*La*lp*d_th_a2*sin(th_a-
7、th_p); dd_th_p =(ydd_temp+Mp*g*lp*sin(th_p)+Cp*d_th_a-Cp*d_th_p)/Jp; d_th_a =d_th_a_0+dd_th_a*dt; d_th_p =d_th_p_0+dd_th_p*dt; th_a =th_a_0+d_th_a_0*dt+dd_th_a*dt2*0.5; th_p =th_p_0+d_th_p_0*dt+dd_th_p*dt2*0.5;else eq_1_1 =-Mp*La*lp*d_th_p2*sin(th_a-th_p)-(Mp*la+Mp*La)*g*sin(th_a); eq_1_2 =-(Ca+Cp)*
8、d_th_a+Cp*d_th_p+kt*u; eq_1_left =eq_1_1+eq_1_2; eq_2_1 =Mp*La*lp*d_th_a2*sin(th_a-th_p)+Mp*lp*g*sin(th_p); eq_2_2 =Cp*d_th_a-Cp*d_th_p; eq_2_left =eq_2_1+eq_2_2;%- calculation of inverse matrix - M11 =Mp*La2+Ja; M12 =Mp*La*lp*cos(th_a-th_p); M21=Mp*La*lp*cos(th_a-th_p); M22=Jp; M=M11 M12;M21 M22; M
9、I=inv(M);%-calculation of parameters- dd_th_a=MI(1,1)*eq_1_left+MI(1,2)*eq_2_left; dd_th_p=MI(2,1)*eq_1_left+MI(2,2)*eq_2_left; d_th_a= d_th_a_0+ dd_th_a*dt; d_th_p= d_th_p_0+ dd_th_p*dt; th_a= th_a_0+ d_th_a_0*dt+ dd_th_a*dt2*0.5; th_p= th_p_0+ d_th_p_0*dt+ dd_th_p*dt2*0.5;endenergy=0.5*Jp*d_th_p2+
10、Mp*g*lp*cos(th_p);%energy of pendulumpotential=Mp*g* lp*cos(th_p);kinetic=0.5*Jp*d_th_p2;%-if flag=0 error=energy-energy_d; u1=(Mp*La2+Ja)*dd_th_a+Mp*La*lp* cos(th_a-th_p)*dd_th_p+(Ca+Cp)*d_th_a; u2=Mp*La*lp*d_th_p2*sin(th_a-th_p)+(Ma*la+Mp*La)*g*sin(th_a)-Cp*d_th_p; u=(u1+u2)/kt; z=alpha*d_th_p*cos
11、(th_p)*error;else u=-f*th_a;th_p;d_th_a;d_th_p;end%-Limit input-if u=4.995 u=4.995;else if u Controls_Plant_1ans =16-Mar-2012 16:59:13% INFO : ADAMS plant actuators names :1 VARIABLE_liju% INFO : ADAMS plant sensors names :1 VARIABLE_3 2 VARIABLE_baiganjiaodu 3 VARIABLE_baiganjiaosudu 4 VARIABLE_lia
12、nganjiaosudu adams_sysWarning: Loading model adams_sys_template generated with a newer version (7.3) ofSimulink. In adams_sys at 86Warning: adams_sys_template.mdl, line 32: block_diagram does not have a parameter namedSampleTimeAnnotations. In adams_sys at 86Warning: adams_sys_template.mdl, line 41:
13、 block_diagram does not have a parameter namedShowSignalResolutionIcons. In adams_sys at 86Warning: adams_sys_template.mdl, line 72: block_diagram does not have a parameter namedCovModelRefEnable. In adams_sys at 86Warning: adams_sys_template.mdl, line 73: block_diagram does not have a parameter nam
14、edCovExternalEMLEnable. In adams_sys at 86Warning: adams_sys_template.mdl, line 131: Value Nonadaptive is incompatible toparameter ZeroCrossAlgorithm. In adams_sys at 86Warning: adams_sys_template.mdl, line 524: block_diagram does not have a parameter namedBlockRotation. In adams_sys at 86Warning: a
15、dams_sys_template.mdl, line 525: block_diagram does not have a parameter namedBlockMirror. In adams_sys at 86Warning: adams_sys_template.mdl, line 821: Adams Plant block (mask) does not have aparameter named MaskPortRotate. In adams_sys at 86Warning: adams_sys_template.mdl, line 964: ToWorkspace blo
16、ck does not have a parameternamed BlockMirror. In adams_sys at 863. 在程序运行一段时间后即可出现PID控制模块如图12所示:图12 控制模块为了验证改控制模块的功能,可以新建一个分析界面,同时开始采取输入值为定常量,加入simulink模块,加入定常量1。观察四个输出的结果。新建的分析界面如图13所示图13 新建控制模块单击运行后,即可观察到四个输出变量分别如图14-a、14-b、14-c、14-d所示:图14-a连杆的角速度 图14-b连杆的角度图14-c 摆杆的角速度 图14-d 摆杆的角度4. 结论:分析对比matlab
17、中得到的运动图像和admas中的图像基本吻合,但也存在一定的误差,此属于正常范围。因此可以看到此次admas和matlab联合仿真成功。5. 改变输入变量参数模型,将上一步运用的定常量1换为正弦输入,整体效果如图15:图15 正弦输入图单击运行后,即可观察到四个输出变量分别如图16-a、16-b、16-c、16-d所示: 图16-a 连杆的角速度(2) 图16-b 连杆的角度(2)图16-b 摆杆的角速度(2) 图16-b 摆杆的角度(2)由以上图可以知道,matlab仿真的效果与adams的模拟比较接近。两者模拟仿真结合还算比较成功。五、 总结通过本次环形倒立摆实验的操作,我感觉自己收获很大
18、。基本掌握了Adams的建模、参数化设置以及Matlab的控制模块的建立。通过这个实验,可以说是达到真正意义上的Adams和Matlab的联合仿真。自己在下面的一些练习 IMULINK 交互式仿真集成环境向量化模块和标量扩展参数扩展常用的Sourse 库信源.如何调用MATLAB 工作空间中的信号矩阵作为模型输入 编译程序:function TU=source925_1(T0,N0,K) t=linspace(0,K*T0,K*N0+1); N=length(t); u1=t(1:(N0+1).2;u2=(t(N0+2):(2*N0+1)-2*T0).2; u3(1:(N-(2*N0+2)+1
19、)=0; u=u1,u2,u3;TU=t,u; TU=source925_1(1,100,4); Sg25-1,TU模块没有找到? 积分模块的功用 搭建好siulink模块,然后点击运行,观察scope输出的图像为下图:传递函数模块弹簧质量阻尼Simulink 仿真曲柄滑块机构functionx=compv(u) % x 为函数的输出,u 为m 函数的输入; % u(1)=w2 % u(2)=sita2 % u(3)=sita3r2=15;r3=55; a=r3*sin(u(3) 1; -r3*cos(u(3) 0;b=-r2*u(1)*sin(u(2); r2*u(1)*cos(u(2);
20、x=inv(a)*b; 建立siulink模块,然后点击运行,观察scope输出的图像为下图:通过运动学仿真求解加速度 程序:在function x=compa(u)% u(1)=a2% u(2)=w2% u(3)=w3% u(4)=sita2% u(5)=sita3r2=15.0;r3=55.0;a=r3*sin(u(5) 1; -r3*cos(u(5) 0;b=-r2*u(1)*sin(u(4)-r2*u(2)2*cos(u(4)-r3*u(3)2*cos(u(5);r2*u(1)*cos(u(4)-r2*u(2)2*sin(u(4)-r3*u(3)2*sin(u(5);x=inv(a)*
21、b;习题1. 在安装MATLAB 软件时,哪个组件是必须选择的?假如不“勾选”这个组件,那么就不可能建立MATLAB 工作环境。MATLAB,这是最核心的部分。没有它就没有MATLAB环境。有了它,就可以对各类数据(除符号类数据以外)进行操作、运算和可视化。2. 数字1.5e2,1.5e3 中的哪个与1500 相同?1.5e33. 请指出如下5 个变量名中,哪些是合法的?abcd-2 xyz_3 3chan a 变量ABCDefghxyz_3 , ABCDefgh4. 在MATLAB 环境中,比1 大的最小数是多少?1eps5. 设a = -8 , 运行以下三条指令,问运行结果相同吗?为什么?
22、w1=a(2/3)w2=(a2)(1/3)w3=(a(1/3)2w1 = -2.0000 + 3.4641i w2 = 4.0000 w3 = -2.0000 + 3.4641i6. 指令clear, clf, clc 各有什么用处?clear, 清除内存变量和函数;clf 清除图对象;clc 清除指令窗7. 以下两种说法对吗?(1)“MATLAB 的数值表达精度与其指令窗中的数据显示精度相同。”(2)MATLAB 指令窗中显示的数值有效位数不超过7 位。”(1)错。MATLAB进行数值的表达精度使用双精度进行。指令窗中的数据显示精度可由用户设定,仅仅为了显示简洁才采用较少位数显示。(2)错。
23、指令窗中的数据显示精度可由用户设定,仅仅为了显示简洁才采用较少位数显示。8. 想要在MATLAB 中产生二维数组1 2 34 5 67 8 9 ,下面哪些指令能实现目的?S=1,2,3;4,5,6;7,8;9S=1 2 3;4 5 6;7 8 9S=1,2,3;4,5,6;7,8,9 %整个指令在中文状态下输入S=1 2 3;4 5 6;7 8 9能产生二维数组9. 试为例1.3-5 编写一个解题用的M 脚本文件?clear; z1=4+3*i; z2=1+2*i; z=z1+z2课上和网上搜集的资料Matlab 控制环形倒立摆一、控制对象 倒立摆系统是自动控制理论中比较典型的控制对象,许多抽
24、象的控制理论概念如系统稳定性、可控性和系统抗干扰能力等,都可以通过倒立摆系统直观地表现出来。因此它成为自动控制理论研究的一个较为普遍的研究对象。倒立摆系统作为一个被控对象,是快速、多变量、开环不稳定、非线性的高阶系统,必须施加十分有力的控制手段才能使之稳定。对倒立摆的研究在现实中也有一定的指导意义,航天器的发射就是很好的例子, 未来仿人类机器人的发展也离不开倒立摆模型。一直以来,很多种控制方法已经应用到倒立摆的控制当中本文采用了一种模糊控制方法实现了对一级旋转倒立摆的控制。目标是使倒立摆在保持平衡的同时,旋臂还能够快速跟踪一个位置给定信号。 该次设计所研究的旋转倒立摆系统模型如图1所示,倒立摆
25、模块由倒立摆的摆杆和一个支撑摆杆的旋转臂组成,摆杆固定在旋转臂一端,可以在垂直于转臂的方向上做360度的转动。旋臂的另一端安装在一个旋转伺服装置上,伺服装置通过电机驱动齿轮转动来实现旋臂在水平面内做360度的旋转。在摆杆的底端以及旋臂的里端均装有光电编码器,用来检测角度的变化并将信号传送给计算机。 涉及到的参数有: 1 旋转臂的旋转角 l1 旋转臂从电机轴到摆支撑点的长度0 . 25m J1 为旋转臂的转动惯量0 . 01kg m2 2 倒立摆的旋转角 l2 倒立摆的旋转轴到重心的长度0 . 1m m2 倒立摆的质量0 . 1kg J2 倒立摆的转动惯量0 . 001kgm2 M 电机产生的转
26、矩二、设计方案既涉及设计过程(一)、建模: 系统采用拉格朗日动力学分析法1 建立运动方程为:因摆杆摆动幅度小, 可认为sin11 , sin22 , cos (2 +1) 1 , 由此将(1) 式和(2) 式作线性化处理,得: 由(3) 式和(4) 式可求出:令系统的状态矢量为x = x1 x2 x3 x4 =1 2 12,得状态空间方程: 即输入 而输出部分的 故输出为 由于旋转倒立摆系统自身的特点,在没有控制或控制效果不佳的情况下很难稳定。对于倒立摆的控制有和两个变量,只是对于这两个变量的控制并不能使倒立摆达到平衡,因为除了位置信号以外还缺少了反映运动情况的信号,控制器必须在兼顾这些因素的
27、情况下进行对倒立摆的控制。所以在倒立摆的控制中要对1和1,2和2一同考虑。(二)、分析:1、该次设计涉及到两个方面的控制,一个是向上摆动控制(起摆控制),即使的摆杆由静止位置(垂直向下)旋转到向上并且以零角速度靠近垂直位置;一个是摆杆的平衡控制。2、由于旋转倒立摆系统自身的特点,在没有控制或控制效果不佳的情况下很难稳定。对于倒立摆的控制有和两个变量,只是对于这两个变量的控制并不能使倒立摆达到平衡,因为除了位置信号以外还缺少了反映运动情况的信号,控制器必须在兼顾这些因素的情况下进行对倒立摆的控制。所以在倒立摆的控制中要对1和1, 2和2一同考虑。虽然选定了控制的参量,但是这里有一个问题:如果设计
28、的模糊控制器有4个输入,而每个输入又选定7个词集的话,那么规则将有74 = 2401条,规则的编辑将变得十分复杂。而且由于这些变量之间又存在着较强的耦合关系,控制的效果也将不是十分理想。于是我们这样来设计,把1和1分为一组单独设计一个模糊控制器, 2和2分为一组单独设计一个PD控制器。这样分开后,不仅减少了模糊控制规则的数量,也使每个控制器有了明确的控制对象,控制规则的编写也变得相对简单了。收集的材料中的控制设计(三)、模糊控制器的设计:设计一个二维模糊控制器,其结构如图2所示 图2 模糊控制器的结构将2和2的控制都分别:“负大”(NB) 、“负中”(NM) 、“负小”(NS) 、“零”(ZE
29、) 、“正小”(PS) 、“正中”(PM) 和“正大”(PB) 这7 个语言变量值来描述,即NB,NM,NS,ZE,PS,PM,PB模糊集, 其中NB=负方向大的偏差(Negative Big)NM=负方向中的偏差(Negative Medium)NS=负方向小的偏差(Negative Small)ZO=近于零的偏差(Zero)PS=正方向小的偏差(Positive Small)PM=正方向中的偏差(Positive Medium)PB=正方向大的偏差(Positive Big)控制规则是模糊控制器的核心,规则的正确与否直接影响控制器的性能,而规则数目的多也是一个重要因素,通常用if.then
30、的型式来表示。在这次课程设计中,我们把7*7=49条模糊规则全部写出,有:1If theta is PB and dtheta is ZO then u is PB 2If theta is ZO and dtheta ix NB then u is NB3If theta is NB and dtheta is ZO then u is NB49If theta is ZO and dtheta is PB then u is PB要是列表则有如下模糊控制规则表: 在模糊集合论域的选择上,这里取2的论域为对称的 - 12 + 12 ,2的论域也为对称的 - 12 + 12 , 输出mu 的论
31、域为对的 - 2.1 + 2.1 。在输入端或者输出端, 论域与实际控制量的匹配都以通过添加增益环节来进行调节。只要正确地调节增益的大小, 便可以达到良好的匹配。在隶属曲线的选择上, 3个模糊控制量都使用Matlab模糊工具箱中的默认三角型曲线, 7个三角形在论域上平均分配,解决模糊的方法使用重心法。 (a) 控制器输入theta 的隶属度函数图像(b) 控制器输入dtheta 的隶属度函数图像(c) 控制器输出变量mu的隶属度函数图像 如此,一个二维的模糊控制器就建立好了,截面图如下图所示: 图3 两输入一输出系统的图形界面 图4 隶属函数编辑器界面 图5 模糊规则编辑器界面 在View菜单下执行ViewRules,激活模糊规则浏览器,观察规则推理是否正确
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922