1、(m*l*cos(u3)*u1+(m2)*(l2)*sin(u3)*cos(u3)*(u22)-10*(1+m)*m*l*sin(u3)/(m2)*(l2)*power(cos(u3),2)-(1+m)*(4*m*(l2)/3)线性模型 图2Fcn2:(30*(1+m*u2-3*u1)/(l*(4+m)Fcn3:(5*u1-30*m*u2)/(4+m)做完以上之后点击鼠标左键不放对图形进行选定,接着右击creat subsystem如下图所示: 图32)模型的封装:倒立摆的振子质量m和倒摆长度L作为子系统的参数:图4 双击函数模块: 图5欲改变其中的任一个参数只要点击其中二者之一的函数方块就行
2、,在其中的m,l改就行了。 有两种实现的方法:一种是利用示波器观察如下图所示,另一种是采用绘图程序实现。1)示波器实现如图6: 图6示波器显示结果如图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,
3、: %读取简化模型中的小车位置信号qq=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) %定义坐标范围axet=axes(Position,get (gca,),. XAxisLocati
4、on,bottom,.YAxisLocationrightColorNoneXColorkYClor); %定义曲线属性ht=line(t,x,colorrparent,axet); %连接时间-小车位置曲线ht=line(t,xx, %连接时间-小车速度曲线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) rightar
5、row),gtext ( leftarrow x(t)%drawing control and theta (t)response singalsfigure (2)hf=line (t, f (:grid onTimeForce in Nht=line(t,q,ht=line(t,qq,Angle evolution (rad)axis(0 1 -0.3 0)Responsetheta (t) and theta (t)in rad to a f (t)pulse of 0.1 Ntheta (t) rightarrowleftarrowtheta 在m文件里写入如上程序,在运行该程序之前,
6、先运行系统。之后再运行此程序得出波形图如图所示。观察结果如图8所示: 图8 三、设计的内外环的PID控制器一阶倒立摆系统为“自不稳定的非最小相位系统”。将系统小车位置作为“外环”,将摆杆摆角作为“内环”,设计的内外环的PID控制器。其模型图如图9所示: 图93.1 内环控制器设计对系统内环采用反馈校正进行控制 ,其方框图如图6所示。图6 内环反馈校正方框图反馈校正采用PD控制器,设其传递函数为,为了抑制干扰,在前向通道上加上一个比例环节。设的增益,则内环控制系统的闭环传递函数为:令 则内环控制器的传递函数为内环控制系统的闭环传递函数为:3.2 外环控制器设计图7 外环系统结构图由图7可知外环系
7、统前向通道的传递函数为:可见,系统开环传递函数为一个高阶且带不稳定零点的“非最小相位系统”。因此,首先对系统外环模型进行降阶处理,若忽略W2 (s)的高次项,则可近似为一阶传递函数为:其次,对模型 1G (s)进行近似处理,则1G (s)的传递函数为:外环控制器也采用 PD 形式,其传递函数为为了使系统有较好的跟随性,采用单位反馈构成外环反馈通道,即1D (s) =1,则系统的开环传递函数为采用第十章基于 Bode 图法的希望特性设计方法,得K3 = 0.12, = 0.877,取 =1,则外环控制器的传递函数为:一级倒立摆双闭环控制系统的方框图如图8所示。图8 一级倒立摆双闭环控制系统的方框
8、图 4、在单位阶跃输入下,进行的SIMULINK仿真如下以及用示波 器观察的结果:1)用示波器现实结果如图10所示: 图10 2)程序结果:load PID.matq=signals(2,:%drawing x(t)and theta(t) response signals%画小车位置和摆杆角度的响应曲线figure(1)hf=line(t,q);Angle evolution(rad)axis(0 10 -0.3 1.2)Evolution of the x potion(m)axis(0 1 -0.3 1.2) theta (t) and x (t)Response to a step i
9、nputleftarrow x (t)theta (t)uppwrrow同上可知,得出的波形图如图11所示: 图113)编程求解系统性能指标:最大超调量( max_overshoot)、 调节时间(settling_time)、 上升时间(rise_time)。Load PID2049.matt=ans(1,:y=ans(2:3,:hf=line(t,q(:ht=line(t,y,C=1;C=dcgain(y); max_overshoot=100*(max_y-C)/C %超调量计算 s=length(t); %调整时间计算while y(s)0.98*C&y(s)1.02*Cs=s-1;e
10、ndsettling_time=t(s)r1=1; %上升时间计算,以从稳态值的10%上升到90%定义while (y(r1)0.1*C) r1=r1+1;r2=1;while (y(r2)0.9*C) r2=r2+1;rise_time=t(r2)-t(r1) step(sys) 运行完原理图之后,打开程序PID2049.m文件运行。之后会出现波形,把波形图复制在word里,而在MATLAB中会出现x和theta的最大超调量( max_overshoot)、调节时间(settling_time)、 上升时间(rise_time)。数据,把这些数据记录在报告书中。y_max_overshoot
11、 = 15.7314y_rise_time = 1.2981y_settling_time = 7.8013q_max_overshoot = 0.0979q_rise_time = 1.3267q_settling_time = 4.2530 五、 检验系统的鲁棒性将对象作如下变换后,同样在单位阶跃的输入下,检验所设计控制系统的鲁棒性能,列表比较系统地性能指标(最大超调量、调节时间、上升时间)。倒摆长度L不变,倒立摆的振子质量m从1kg分别改变为1.5kg、2kg、2.5kg、0.8、0.5kgm=1,L=0.3m=1.5,L=0.3m=2,L=0.3m=2.5,L=0.3m=0.8,L=0
12、.3m=0.5,L=0.3 m=1,L=0.5m=1,L=0.6m=1,L=0.1 m=1,L=0.2倒摆长度L不变,倒立摆的振子质量m从1kg分别改变为1.5kg、2kg、2.5kg、0.8kg、0.5kg;(2)质量m不变,倒摆长度L从0.3m分别改变为0.5m、0.6m、0.2、0.1m。对象参数性能指标振子质量m/kg倒摆长度L/m最大超调量调节时间上升时间X10.313.81980.12617.00104.05241.29571.34011.510.18480.14155.02563.77541.356425.02820.16383.99873.32371.03881.49572.5
13、9.09210.19545.05284.85281.05111.52570.815.10140.12057.70644.08230.68661.33160.516.89040.11278.22824.21661.38561.320011.89280.15585.41763.81931.34381.43140.611.94340.16965.58314.58311.13331.47870.214.85770.11047.49494.13351.19931.34320.115.73140.09797.80134.25301.29811.3267六、遇到的问题及解决1.函数表达式语法的错误。比如u3
14、2*cos(u3),应该改为(u32)*cos(u3)2.在仿真之前应该对m和l的值进行相应的赋值,不然会出现错误。3. xy.mat文件中的variable name 和程序中的变量取名要一直,比如xy.mat文件中的variable name 的名字是ans 而程序中的变量名是signals ,则系统会提示找不到signals变量值。要查看空间变量可以用who命令。4.起先以为说是按照课本的要求画图就可以了,于是就按照课本画出模型的原理图和利用子系统封装后的框图。而且还按照课本要求把函数输入进去。可是运行的时候发现错误。提示说是函数输入有误,于是就很认真的对照课本跟自己输入的函数是否一致。
15、发现算是粗心大意了,原来该模型的函数算是比较繁琐的,在输函数的时候一定要注意认真的对待每个括弧。5.在画模型图时,由于对SIMULINK有一点点的熟悉,所以画图比较快,但是却忘记在输出端加入示波器而按照课本里面的图形进行运行,发现运行出来不懂哪里去看波形,我百般不得起解,于是课余,我问同学,同学跟我说得在输出端加入示波器,运行的时候才能自动跳出波形图。6.模型验证完之后,就是采用程序进行绘图,事先我糊里糊涂的桉书上程序照搬,可是发现程序好像有错。之后问同学才知道说要在封装的系统双击把“ans”改成“signals”才能把程序运行出来。7.做到PID内外环设计的时候,首先遇到的就是比例系数如何确
16、定,这边也是在老师的提示下我才明白要用公式去推,其实真正的意义上是要懂得他代表什么。还有就是所用的函数快要的是精确的模型才是正确。8.在进行编程实现性能指标(超调量、上升时间、调整时间、终值)的要求上,对程序的编写以及理解能力提出了要求整个过程下来,还是懵懵懂懂的,我想这些都需要的是时间,最终在终值的问题上为难了我,不过还是同学帮我解决了。七、心得体会在设计的过程中,遇到了很多问题,在经过一次次测试、认真思考和讨论的过程中得到了解答。总之一周的课设,让我觉得很累,但从中收获了很多,最终的成功让我觉得累也是值得的。在此,感谢同学们的帮助以及老师在此次实验中的指导。到大三下学期了,已经做过很多课程
17、设计,而且也都是跟软件有关系的,发现像工科的课程每一门都有一款软件和之关系。我们在平时的学习当中只是存在在教室里面,看着老师PPT上面的每个窗口,而没有亲身体验,我觉得是得不到知识,得不到动手自己实现输出结果的东西的。每天坐在教室里只会让我们纸上谈兵而已,以上我犯的错误我认为都是没有平时亲身体验的结果,导致了做课设的时候按照课本按部就班的操作着,而后才知道是错误的,有的也是多此一举的。matlab跟其他语言不一样(我用的比较多的编程语言,除了matlab就应该是c或c了,VB和Delphi也接触过,我想版面(matlab版)大部分人也差不多),如果你抱着“把其他语言的思想运用在matlab里面
18、”的话,那么我想,即使程序运行不出错,也很难把握matlab的精髓,也就很难发挥matlab的作用了。所以,如果你是希望matlab作为VC的附属品,即你不想在matlab上面花太多功夫,只纯粹想用matlab来完成VC做不了或很难做成的任务的话,那么,这篇文章你也不需要再阅读下去了;如果你是希望掌握一门语言、一个工具,使它更有效为你服务的话,那么,希望本文对你有所帮助。 Matlab是一个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用的时候(就是在编程的时候),许多人(特别是初学者)往往没有注意到这个问题,因此,for循环(包括while循环)满天飞.这不仅是暴殄天物(没有发
19、挥matlab所长),还浪费了你宝贵的时间。八、结论(1) 从理论上证明了所设计的“一阶倒立摆”双闭环控制的方案是可行的。(2) “一阶倒立摆”的控制问题是一个非常典型且具有明确物理意义的运动控制系统问题,对其深入的分析和使用研究,有助于我们分析问题和解决问题的能力。(3)不难得到所设计PID控制器可以是系统有较好的稳定性,抗干扰能力较强。我认为该控制器下的校正系统达到比较合适的动态和稳定性能,能够保证系统正常工作,取得较好的控制性能。通过该系统的设计,也说明了PID控制系统设计的一般步骤,提供了一套利用matlab进行控制器设计的有效方法,对PID控制系统设计具有借鉴意义。九、参考文献1. MATLAB 5.3 精要、编程及高级使用 / 程卫国 / 机械工业出版社2. MATLAB 5.0语言和程序设计 / 高俊斌 / 华中理工大学出版社3. 控制系统数字仿真和cad / 张晓华 / 哈尔滨工业大学4.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1