1专业实验报告学生姓名学号指导老师实验名称倒立摆与自动控制原理实验实验时间7月5日一、实验内容(1)完成.直线倒立摆建模、仿真与分析;(2)完成直线一级倒立摆PID控制实验:1)理解并掌握PID控制的原理和方法,并应用于直线一级倒立摆的控制;2)在Simulink中建立直线一级倒立摆模型,通过实验的方法调整PID参数并仿真波形;3)当仿真效果达到预期控制目标后,下载程序到控制机,进行物理实验并获得实际运行图形。二、实验过程1.实验原理(1)直线倒立摆建模方法倒立摆是一种有着很强非线性且对快速性要求很高的复杂系统,为了简化直线一级倒立摆系统的分析,在实际的建模过程中,我们做出以下假设:1、忽略空气阻力;2、将系统抽象成由小车和匀质刚性杆组成;3、皮带轮和传送带之间无滑动摩擦,且传送带无伸长现象;4、忽略摆杆和指点以及各接触环节之间的摩擦力。2实际系统的模型参数如下表所示:M小车质量0.618kgm摆杆质量0.0737kgb小车摩擦系数0.1N/m/secl摆杆转动轴心到杆质心的长度0.1225mI摆杆惯量0.0034kg*m*mg重力加速度9.8kg.m/s(3)直线一级倒立摆PID控制原理经典控制理论的研究对象主要是单输入单输出的系统,控制器设计时一般需要有关被控对象的较精确模型。PID控制器因其结构简单,容易调节,且不需对系统建立精确的模型,在控制上应用较广。比例(P作用)增大,系统响应快,对提高稳态精度有益,但过大易引起过度的振荡,降低相对稳定性。微分(D作用)对改善动态性能和抑制超调有利,但过强,即校正装置的零点靠近原点或者使开环的截止频率增大,不仅不能改善动态性能,反而易引入噪声干扰。积分(I作用)主要是消除或减弱稳态误差,但会延长调整时间,参数调整不当容易振荡。2.实验方法(1)MatlabSimulink环境下电机控制实现在MATLABSimulink仿真环境中,利用“GoogolEducationProducts\GT-400-SVBlockLibrary”建立模型,然后进行仿真并分析结果。(2)直线倒立摆建模、仿真与分析利用牛顿-欧拉方法建立直线一级倒立摆系统的数学模型;利用MATLABSimulink实时控制工具箱“GoogolEducationProducts”中的工具进行仿真分析。(3)直线一级倒立摆PID控制利用MATLABSimulink实时控制工具箱“GoogolEducationProducts”来实现PID控制参数设定和仿真,并利用该参数来设定只限一级倒立摆的PID值,分析和仿真倒立摆的运行情况。33.实验装置直线单级倒立摆控制系统硬件结构框图如图1所示,包括计算机、I/O设备、伺服系统、倒立摆本体和光电码盘反馈测量元件等几大部分,组成了一个闭环系统。图1一级倒立摆实验硬件结构图对于倒立摆本体而言,可以根据光电码盘的反馈通过换算获得小车的位移,小车的速度信号可以通过差分法得到。摆杆的角度由光电码盘检测并直接反馈到I/O设备,速度信号可以通过差分法得到。计算机从I/O设备中实时读取数据,确定控制策略(实际上是电机的输出力矩),并发送给I/O设备,I/O设备产生相应的控制量,交与伺服驱动器处理,然后使电机转动,带动小车运动,保持摆杆平衡。图2是一个典型的倒立摆装置。铝制小车由6V的直流电机通过齿轮和齿条机构来驱动。小车可以沿不锈钢导轨做往复运动。小车位移通过一个额外的与电机齿轮啮合的齿轮测得。小车上面通过轴关节安装一个摆杆,摆杆可以绕轴做旋转运动。系统的参数可以改变以使用户能够研究运动特性变化的影响,同时结合系统详尽的参数说明和建模过程,我们能够方便地设计自己的控制系统。图2一级倒立摆实验装置图上面的倒立摆控制系统的主体包括摆杆、小车、便携支架、导轨、直流伺服电机等。主4体、驱动器、电源和数据采集卡都置于实验箱内,实验箱通过一条USB数据线与上位机进行数据交换,另有一条线接220v交流电源。,其特征在于:其蜗杆通过轴承固定于基座上,与之啮合的涡轮扇的轴通过轴承固定于动座下边,大皮带轮轴一端联接电机,另一端电位计由支座固定于动座上并电机共轴,大皮带轮与2个小皮带轮通过皮带连结,并通过轴承固定于动座之上;滑块固定联接于皮带轮之间的皮带上,同时滑块与动座固定的导轨动配合;摆杆机构通过下摆支座与滑块绞接;控制箱连电位计,电机。4.实验内容及步骤(1)直线倒立摆建模、仿真与分析1)应用经典力学的理论,结合实验手册建立直线一级倒立摆系统的抽象数学模型;(2)直线一级倒立摆PID控制实验1)PID控制参数设定及仿真在Simulink中打开如图5所示的直线一级倒立摆模型。图3基于PID控制的直线一级倒立摆Simulink仿真模型其中PIDController为封装(Mask)后的PID控制器,双击模块打开参数设置窗口,先设置PID控制器为P控制器,令Kp=9,Ki=0,Kd=0,得到以下仿真结果:5图4直线一级倒立摆P控制仿真结果图从图中可以看出,控制曲线不收敛,因此增大控制量,Kp=40,Ki=0,Kd=0,得到以下仿真结果:图5直线一级倒立摆P控制仿真结果图从图中可以看出,闭环控制系统持续振荡,周期约为0.7s。为消除系统的振荡,增加微分控制参数Kd,令Kp=40,Ki=0,Kd=1,得到仿真结果如下:图6直线一级倒立摆PD控制仿真结果图从图中可以看出,系统在两个振荡周期后才能稳定,因此再增加微分控制参数Kd,令Kp=40,Ki=0,Kd=2,仿真得到如下结果:6图7直线一级倒立摆PD控制仿真结果图从上图可以看出,系统在1.5秒后达到平衡,但是存在一定的稳态误差。为消除稳态误差,我们增加积分参数Ki,令Kp=40,Ki=60,Kd=2,得到以下仿真结果:图8直线一级倒立摆PID控制仿真结果图从上面仿真结果可以看出,系统可以较好的稳定,但由于积分因素的影响,稳定时间明显增大。双击“Scope1”,得到小车的位置输出曲线为:图9施加PID控制器后小车位置输出曲线图由于PID控制器为单输入单输出系统,所以只能控制摆杆的角度,并不能控制小车的位置,所以小车会往一个方向运动,PID控制分析中的最后一段,若是想控制电机的位置,使得倒立摆系统稳定在固定位置附近,那么还需要设计位置PID闭环。7一级倒立摆的matlab实现除去用simulink仿真的方法。我也通过编写matlab源代码的方式实现对一级倒立摆的仿真(源码附在报告最后)由于已经在simulink中仿真得到相对最佳的结果。在此不再一一仿真。仅展示仿真得到最佳值的matlab图像。图10小车摆角状态曲线系统稳定时间约为3秒,超调约为0.023,响应满足指标要求。图11小车位置状态曲线82)PID控制实验打开直线一级倒立摆PID控制界面入下图所示图12直线一级倒立摆Simulink实时控制界面双击“PID”模块进入PID参数设置,如下图所示:图13PID参数设定把仿真得到的参数输入PID控制器,点击“OK”保存参数;点击编译程序,完成后点击使计算机和倒立摆建立连接;点击运行程序,检查电机是否伺服使能。缓慢提起倒立摆的摆杆到竖直向上的位置,在程序进入自动控制后松开,当小车运动到正负限位的位置时,用工具挡一下摆杆,使小车反9向运动。三、结果1.完成直线倒立摆建模、仿真与分析运行后,倒立摆经过一段时间自动起摆,到达平衡位置后稳定;如果给以一定范围内的干扰,倒立摆能较快地重新恢复平衡状态。需要注意的是,尽量让小车处于轨道中间位置附近。2.完成直线一级倒立摆PID控制实验(1)倒立摆平衡实验结果如下图所示:图14直线一级倒立摆PID控制实验结果从图中可以看出,倒立摆可以实现较好的自我调节能力及稳定性。(2)扰动实验在系统处于稳态时,考察系统的抗扰动能力。在给定干扰的情况下,小车位置和摆杆角度的变化曲线如下图所示:10图15直线一级倒立摆PID控制实验结果2(施加干扰)可以看出,系统可以较好的抵换外界干扰,在干扰停止作用后,系统能很快回到平衡位置。(3)实验结果分析从图15所示的变化曲线可知,当小车位置受到外界干扰而变化时,系统控制程序总能使其在一定时间内,逐渐回到一个固定角度范围内;如果不受到干扰,将一直保持在这个角度范围内,最后趋于定值,保持稳定。通过本次实验,对PID控制理论以及倒立摆的相关知识有了一定的了解,实现了利用PID理论来控制直线一级倒立摆。实验证明,PID在倒立摆控制中,在精度、稳定性和抗干扰性上面都有良好的表现,并且其系统成本低、安装简单、维护调试方便,更易于扩展。本次实验也让我更加了解matlab软件的操作,并加深认识信号之间的处理和图像的处理,matlab的功能很强大,很多实验实不能做的实验都可以用matlab仿真,表现了matlab强大的仿真及数据分析处理能力。matlab作为当前空寂控制技术界最流行的面向工程与科学计算的高级语言,他可以轻易地再现C语言几乎全部的功能。从本次的实验看来,在线性控制系统的分析和仿真中,matlab拥有非常方便快捷的数据处理能力。其实我了解matlab只是一小部分,在今后的日子我会继续学习matlab,经过这次论文的写作,我对matlab的认识和应用有了更加深刻的理解。11附1:Matlab源代码Ployadd函数代码:function[poly]=polyadd(poly1,poly2)%polyadd(poly1,poly2)addstwopolynominalspossiblyofunevenlengthiflength(poly1)length(poly2)short=poly1;long=poly2;elseshort=poly2;long=poly1;endmz=length(long)-length(short);ifmz0poly=[zeros(1,mz),short]+long;elsepoly=long+short;end小车摆角状态曲线代码:M=0.618;m=0.0737;b=0.1;I=0.0034;g=9.8;l=0.1225;q=(M+m)*(I+m*l^2)-(m*l)^2;%simplifiesinputnum=[m*l/q00]den=[1b*(I+m*l^2)/q-(M+m)*m*g*l/q-b*m*g*l/q0]kd=40k=60ki=2numPID=[kdkki];denPID=[10];numc=conv(num,denPID)denc=polyadd(conv(denPID,den),conv(numPID,num))t=0:0.05:5;impulse(numc,denc,t)小车运行轨迹状态曲线代码:M=0.618;m=0.0737;b=0.1;I=0.0034;g=9.8;l=0.1225;q=(M+m)*(I+m*l^2)-(m*l)^2;%simplifiesinputnum1=[m*l/q00]den1=[1b*(I+m*l^2)/q-(M+m)*m*g*l/q-b*m*g*l/q0]num2=[-(I+m*l^2)/q0m*g*l/q]den2=den1kd=4012k=60ki=2numPID=[kdkki];denPID=[10];numc=conv(num2,denPID)denc=polyadd(conv(denPID,den2),conv(numPID,num1))t=0:0.05:5;impulse(numc,denc,t)实验指导教师评语:教师签名:年月日13