一阶直线倒立摆系统姓名:班级:学号:目录摘要 (3)第一部分单阶倒立摆系统建模 (4)(一)对象模型 (4)(二)电动机、驱动器及机械传动装置的模型 (6)第二部分单阶倒立摆系统分析 (7)第三部分单阶倒立摆系统控制 (11)(一)内环控制器的设计 (11)(二)外环控制器的设计 (14)第四部分单阶倒立摆系统仿真结果 (16)系统的simulink仿真 (16)摘要:该问题源自对于娱乐型”独轮自行车机器人”的控制,实验中对该系统进行系统仿真,通过对该实物模型的理论分析与实物仿真实验研究,有助于实现对独轮自行车机器人的有效控制。
控制理论中把此问题归结为“一阶直线倒立摆控制问题”。
另外,诸如机器人行走过程中的平衡控制、火箭发射中的垂直度控制、卫星飞行中的姿态控制、海上钻井平台的稳定控制、飞机安全着陆控制等均涉及到倒立摆的控制问题。
实验中通过检测小车位置与摆杆的摆动角,来适当控制驱动电动机拖动力的大小,控制器由一台工业控制计算机(IPC)完成。
实验将借助于“Simulink封装技术——子系统”,在模型验证的基础上,采用双闭环PID控制方案,实现倒立摆位置伺服控制的数字仿真实验。
实验过程涉及对系统的建模、对系统的分析以及对系统的控制等步骤,最终得出实验结果。
仿真实验结果不仅证明了PID方案对系统平衡控制的有效性,同时也展示了它们的控制品质和特性。
第一部分单阶倒立摆系统建模(一) 对象模型由于此问题为”单一刚性铰链、两自由度动力学问题”,因此,依据经典力学的牛顿定律即可满足要求。
如图1.1所示,设小车的质量为0m ,倒立摆均匀杆的质量为m ,摆长为2l ,摆的偏角为θ,小车的位移为x ,作用在小车上的水平方向上的力为F ,1O 为摆杆的质心。
图1.1 一阶倒立摆的物理模型根据刚体绕定轴转动的动力学微分方程,转动惯量与角加速度乘积等于作用于刚体主动力对该轴力矩的代数和,则1)摆杆绕其重心的转动方程为sin cos y x l F J F l θθθ=-&& (1-1)2)摆杆重心的水平运动可描述为22(sin )x d F m x l dtθ=+ (1-2) 3)摆杆重心在垂直方向上的运动可描述为22(cos )y d F mg m l dtθ-= (1-3) 4)小车水平方向运动可描述为202x d x F F m dt-= (1-4)由式(1-2)和式(1-4)得20()(cos sin )m m x ml F θθθθ++⋅-⋅=&&&&& (1-5) 由式(1-1)、式(1-2)和式(1-3)得2()cos lgsin J ml ml x m θθθ++⋅=&&&& (1-6) 整理式(1-5)和式(1-6),得2222222220222022220()()sin sin cos ()()cos cos sin cos ()lgsin cos ()()J ml F lm J ml m l g x J ml m m m l ml F m l m m m m l m m J ml θθθθθθθθθθθθ⎧+++⋅-=⎪++-⎪⎨⋅+⋅-+⎪=⎪-++⎩&&&&&& (1-7) 因为摆杆是匀质细杆,所以可求其对于质心的转动惯量。
因此设细杆摆长为2l ,单位长度的质量为l ρ,取杆上一个微段dx ,其质量为l m dx ρ=,则此杆对于质心的转动惯量有23()2/3l l lJ dx x l l ρρ==-⎰杆的质量为 2l m l ρ=所以此杆对于质心的转动惯量有 23ml J = 由式(2-20)可见,一阶直线倒立摆系统的动力学模型为非线性微分方程组。
为了便于应用经典控制理论对该控制系统进行设计,必须将其简化为线性定常的系统模型。
若只考虑θ在其工作点00θ=附近(1010θ︒︒-<<)的细微变化,则可近似认为 20sin cos 1θθθθ⎧≈⎪≈⎨⎪≈⎩&在这一简化思想下,系统精确模型式(1-7)可简化为 2222000200()()()lg ()J ml F m l g x J m m mm l m m m mlF J m m mm l θθθ⎧+-=⎪++⎪⎨+-⎪=⎪++⎩&&&&若给定一阶直线倒立摆系统的参数为:小车的质量02m kg =;倒摆振子的质量1m kg =;倒摆长度20.6l m =;重力加速度取210/g m s =,则可得到进一步的简化模型为 0.44 3.330.412x F F θθθ=-⎧⎨=-+⎩&&&& (1-8) 上式为系统的”微分方程模型”,对其进行拉普拉斯变换可得系统的传递函数模型为 12222()0.4()()12() 1.110()()s G s F s s X s s G s s s θθ-⎧==⎪-⎪⎨-+⎪==⎪⎩(1-9) (二)电动机、驱动器及机械传动装置的模型假设:选用日本松下电工MSMA021型小惯量交流伺服电动机,其有关参数如下: 驱动电压:U=0~100V 额定功率:N P =200W额定转速:n=3000r/min 转动惯量:62310J kg m -=⨯⋅额定转矩:0.64N T N m =⋅ 最大转矩: 1.91M T N m =⋅电磁时间常数:l T =0.001s 电机时间常数:m T =0.003s经传动机构变速后输出的拖动力为:F=0~16N ;与其配套的驱动器为:MSDA021A1A ,控制电压:DA U =(0~±10)V 。
若忽略电动机的空载转矩和系统摩擦,就可以认为驱动器和机械传动装置均为纯比例环节,并假设这两个环节的增益分别为d K 和m K 。
对于交流伺服电动机,其传递函数可近似为12++s T s T T Kv m l m 由于是小惯性的电动机,其时间常数l T 、m T 相对都很小,这样可以进一步将电动机模型近似等效为一个比例环节v K 。
综上所述,电动机。
驱动器。
机械传动装置三个环节就可以合成为一个比例环节()d v m s G s K K K K == maxmax 16 1.610s F K U === 第二部分 单阶倒立摆系统分析尽管上述数学模型系经 机理建模得出,但其准确性(或正确性)还需运用一定的理论方法加以验证,以保证以其为基础的仿真实验的有效性。
采用仿真实验的方法在MATLAB 的Simulink 图形仿真环境下进行模型验证试验,其原理如图1.2所示。
其中,上半部分为精确模型仿真图,下半部分为简化模型仿真图。
图1.2 模型验证原理图利用Simulink 压缩子系统功能可将验证原理图更加简捷的表示为图1.3所示的形式。
其中,由得到的精确模型和简化模型的状态方程,可得到Fcn 、Fcn1、Fcn2和Fcn3的函数形式为:Fcn (0.12*u[1]+0.036*sin(u[3])*power(u[2],2)-0.9*sin(u[3])*cos(u[3]))/(0.24-0.09*power(cos(u[3]),2))(1):Fcn (0.3*cos(u[3])*u[1]+0.09*sin(u[3])*cos(u[3])*power(u[2],2)-6*sin(u[3]))/(0.09*power(cos(u[3]),2)-0.24)(2):Fcn0.8*u[1]-0.6*u[3]Fcn40*u[3]-2.0*u[1](3):图1.3 利用子系统封装后的框图θ==)初始状态下突加微小冲击力作用,则依据经假定使倒立摆在(0,0x验知,小车将向前移动,摆杆降倒下。
下面利用仿真实验来验证正确数学模型的这一必要性质。
编制绘图子程序:% Inverted pendulum% Model test in open loop% Singnals recuperation% 将导入到xy.mat中的仿真实验数据读出load xy.matt=signals(1,:); % 读取时间信号f=signals(2,:); % 读取作用力F信号x=signals(3,:); % 读取精确模型中的小车位置信号q=signals(4,:); % 读取精确模型中的倒立摆摆角信号xx=signals(5,:); % 读取简化模型中的小车位置信号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,‘position’),…‘XAxisLocation’,‘bottom’,…‘YAxisLocation’,’right’,’Color’,’None’,…‘XColor’,’k’,’YColor’,’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 the meter to a f (t) pulse of 0.1 N’) % 定义曲线标题名称gtext (‘\leftarrow f (t)’), gtext (‘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’)axis ([0 1 0 0.12])axet=axes (‘Position’, get (gca,’Position’),…‘XAxisLocation’,’bottom’,…‘YAxisLocation’,’right’,’Color’,’None’,…‘XColor’,’k’,’YColor’,’k’);ht=line (t, q,‘color’,’r’,’parent’,axet);ht=line (t, qq,’color’,’r’,’parent’,axet);ylabel (‘Angle evolution (red)’)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)’),gtext (‘\theta(t)\rightarrow’),gtext (‘\leftarrow \theta’’(t)’)执行该程序的结果如图1.4所示。