1本科生课程设计题 目: 基于双闭环 PID 控制的一阶倒立摆控制系统设计 姓 名: 学 号: 系 别: 电气工程系 专 业: 电气工程与自动化 年 级: 07 级 指导教师: 2010 年 4 月 28 日2目 录1、系统模型的建立………………………………………………… 3.2、模型验证……………………………………………….………. 4.3、设计的内外环的 PID 控制器……………………………………… 10.4、SIMULIN 仿真…………………………………………………... 13.5、检测系统的鲁棒性……………………………………………… 16.6、遇到问题………………………………………………………… 19.7、心得体会…………………………………………………………..20.8、结论…………………………………...…………………………21.9、参考文献…………………………………………………………..22.31.系统模型的建立如图 01 所示的“一阶倒立摆控制系统”中,设计一个能通过检测小车的位置与摆杆的摆动角,来适当控制电动机驱动力的大小的控制系统。
图 011)对模型的理论分析建立一阶倒立摆的精确模型(实际模型)如下所示:2).点进行线性化后得到( 近似模型):若只考虑摆角在工作点等零附近的细微变化,这是可以将模型线性化,得到近似模型,将 J=m(l^2)/3,M=1kg 代入即可得到要求的关于参数 m、l 的模型,让后再进行线性化表达式在模型验证中4二.模型验证1)子系统的建立 实际模型图 1Fcn:(((4*m*(l^2))/3)*u[1]+l*m*((4*m*(l^2))/3)*sin(u[3])*(u[2]^2)-10*(m^2)*(l^2)*sin(u[3])*cos(u[3]))/(((4*m*(l^2))/3)*(1+m)-(m^2)*(l^2)*power(cos(u[3]),2)) Fcn1:(m*l*cos(u[3])*u[1]+(m^2)*(l^2)*sin(u[3])*cos(u[3])*(u[2]^2)-10*(1+m)*m*l*sin(u[3]))/((m^2)*(l^2)*power(cos(u[3]),2)-(1+m)*(4*m*(l^2))/3)线性模型图 2Fcn2:(30*(1+m*u[2]-3*u[1])/(l*(4+m)Fcn3:(5*u[1]-30*m*u[2])/(4+m)做完以上之后点击鼠标左键不放对图形进行选定,接着右击 creat subsystem 如下图所示:5图 32)模型的封装:倒立摆的振子质量 m 和倒摆长度 L 作为子系统的参数:图 4 双击函数模块:图 56欲改变其中的任一个参数只要点击其中二者之一的函数方块就行,在其中的 m,l 改就行了。
有两种实现的方法:一种是利用示波器观察如下图所示,另一种是采用绘图程序实现1)示波器实现如图 6:图 6示波器显示结果如图 7 所示7图 72)用程序实现:%Inerted pendulum%Model test in open loop%Signals recuperation%将导入到xy.mat 中的仿真试验数据读出load xy.matt=signals(1,: ); %读取时间信号f=signals(2,: ); %读取作用力F信号x=signals(3,: ); %读取精确模型中的小车位置信号q=signals(4,: ); %读取精确模型中的倒摆摆角信号xx=signals(5,: ); %读取简化模型中的小车位置信号=signals(6,: ); %读取简化模型中的倒立摆摆角信号%Drawing control and x(t) response signals%画出在控制力的作用下的系统响应曲线%定义曲线的纵坐标、标题、坐标范围和曲线的颜色等特征figure(1) %定义第一个图形hf=line(t,f (:)); %连接时间-作用力曲线grid on;xlabel('Time (s)') %定义横坐标ylabel('Force (N)') %定义纵坐标axis([0 1 0 0.12]) %定义坐标范围8axet=axes('Position',get (gca,'Position'),...'XAxisLocation','bottom',...'YAxisLocation','right','Color','None',...'XColor','k','YClor','k'); %定义曲线属性ht=line(t,x,'color','r','parent',axet); %连接时间-小车位置曲线ht=line(t,xx,'color','r','parent',axet); %连接时间-小车速度曲线ylabel('Evolution of the x position (m)') %定义坐标名称axis([0 1 0 0.1]) %定义坐标范围title('Response x and x'' in meter to a f (t)pulse of 0.1 N')%定义曲线标题名称gtext ( '\leftarrow f (t)'),gext('x (t) \rightarrow'),gtext ( '\leftarrow x''(t)')%drawing control and theta (t)response singalsfigure (2)hf=line (t, f (:));grid onxlabel('Time')ylabel('Force in N')axet=axes('Position',get (gca,'Position'),...'XAxisLocation','bottom',...'YAxisLocation','right','Color','None',...'XColor','k','YClor','k');ht=line(t,q,'color','r','parent',axet);ht=line(t,,'color','r','parent',axet);ylabel('Angle evolution (rad)')axis([0 1 -0.3 0])title('Response\theta (t) and \theta'' (t)in rad to a f (t)pulse of 0.1 N')gtext ( '\leftarrow f (t)'),gext('\theta (t) \rightarrow'),gtext ( '\leftarrow\theta ''(t)')在·m文件里写入如上程序,在运行该程序之前,先运行系统。
之后再运行此程序得出波形图如图所示9观察结果如图 8 所示:图 8 10三、设计的内外环的 PID 控制器一阶倒立摆系统为“自不稳定的非最小相位系统” 将系统小车位置作为“外环” ,将摆杆摆角作为“内环” ,设计的内外环的 PID 控制器其模型图如图 9 所示:图 93.1 内环控制器设计对系统内环采用反馈校正进行控制 ,其方框图如图 6 所示1 . 6()s2()Gs2'()Ds--K()rs()s+图 6 内环反馈校正方框图反馈校正采用 PD 控制器,设其传递函数为 ,为了抑制干扰,2'12()sK在前向通道上加上一个比例环节 2()s设 的增益 ,则内环控制系统的闭环传递函数为:2()Ds0K22 ' 212()641 0sGWDsKs11令 则内环控制器的传递函数为内环控制系统的闭环传递函数为:3.2 外环控制器设计图 7 外环系统结构图由图 7 可知外环系统前向通道的传递函数为:可见,系统开环传递函数为一个高阶且带不稳定零点的“非最小相位系统” 因此,首先对系统外环模型进行降阶处理,若忽略 W2 (s)的高次项,则可近似为一阶传递函数为:其次,对模型 1G (s)进行近似处理,则 1G (s)的传递函数为:外环控制器也采用 PD 形式,其传递函数为为了使系统有较好的跟随性,采用单位反馈构成外环反馈通道,即 1D’' (s) =1,则系统的开环传递函数为0.72164064.7K 120.756K'()15.6Dss224()1.6Wss221264(0.1)() 64sWsGs264()1.ss120()Gs131)DK21 3257()()()(1)()WssGDsKs12采用第十章基于 Bode 图法的希望特性设计方法,得 K3 = 0.12,τ = 0.877,取 τ =1,则外环控制器的传递函数为:一级倒立摆双闭环控制系统的方框图如图 8 所示。
图 8 一级倒立摆双闭环控制系统的方框图 1()0.2(1)Dss0.21 . 6 ()Ws()XF()rXs--一级倒立摆- 2 0 .75.2sX 调节器θ 调节器134、在单位阶跃输入下,进行的 SIMULINK 仿真如下以及用示波 器观察的结果:1)用示波器现实结果如图 10 所示:图 10 2)程序结果:load PID.matt=signals(1,: );q=signals(2,: );x=signals(3,: );%drawing x(t)and theta(t) response signals%画小车位置和摆杆角度的响应曲线figure(1)hf=line(t,q));grid on;xlabel('Time (s)')ylabel('Angle evolution(rad)')axis([0 10 -0.3 1.2])axet=axes('Position',get (gca,'Position'),...'XAxisLocation','bottom',...'YAxisLocation','right','Color','None',...'XColor','k','YClor','k');14ht=line(t,x,'color','r','parent',axet);ylabel('Evolution of the x potion(m)')axis([0 1 -0.3 1.2])title(' \theta (t) and \x (t)Res。