1、倒立摆建模 1.一阶倒立摆建模在忽略了空气流动阻力,以及各种摩擦之后,可将倒立摆系统抽象成小车和匀质杆组成的系统,如下图所示,其中: M:小车质量 m:为摆杆质量 J:为摆杆惯量 F:加在小车上的力 x:小车位置 :摆杆与垂直向上方向的夹角 l :摆杆转动轴心到杆质心的长度 根据牛顿运动定律以及刚体运动规律,可知:(1) 摆杆绕其重心的转动方程为 (2) 摆杆重心的运动方程为得(3)小车水平方向上的运动为联列上述4个方程,可以得出一阶倒立精确气模型:式中J为摆杆的转动惯量: 若只考虑在其工作点附近0=0附近()的细微变化,则可以近似认为: 2.2 模型建立及封装1、建立以下模型: 图2 模型验
2、证原理图 2、 由状态方程可求得:Fcn:(4/3*u1+4/3*m*l*sin(u3)*power(u2,2)-10*m*sin(u3)*cos(u3)/(4/3*(1+m)-m*power(cos(u3),2)Fcn1:(cos(u3)*u1+m*l*sin(u3)*cos(u3)*power(u2,2)-10*(1+m)*sin(u3)/(m*l*power(cos(u3),2)-4/3*l*(1+m)Fun2:(4*u1-30*m*u3)/(4+m)Fun3:(u1-10*(1+m)*u3)/(m*l-4/3*l*(1+m)(其中J =mL2/3,小车质量M=1kg,倒摆振子质量m=1
3、Kg,倒摆长度l=1m,重力加速度g=10m/s2)将以上表达式导入函数。3、匡选要封装区后选择EditCreate Subsystem便得以下系统: 图3 子系统建立 4、鼠标右击子系统模块,在模块窗口选项中选择EditEdit MaskParameters,则弹出如下窗口,添加参数m和l。 图4 添加参数5、将精确模型subsystem和简化模型subsystem1组合成以下系统以供验证(输入信号是由阶跃信号合成的脉冲,幅值及持续时间为0.1s)。图5 系统模块封装3 仿真验证3.1 实验设计假定使倒立摆在(=0,x=0)初始状态下突加微小冲击力作用,则依据经验知,小车将向前移动,摆杆将倒
4、下。3.2 编制绘图子程序 1、新建M文件输入以下程序并保存。clcload xy.matt=signals(1,:); %读取时间信号f=signals(2,:); %读取作用力F信号 x=signals(3,:); %读取精确模型中的小车位置信号q=signals(4,:); %读取精确模型中倒摆摆角信号xx=signals(5,:); %读取简化模型中的小车位置信号qq=signals(6,:); %读取简化模型中倒立摆摆角信号figure(1) %定义第一个图形 hf=line(t,f(:); %连接时间-作用力曲线grid on;xlabel(Time(s) %定义横坐标 ylabe
5、l(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 xposition(m) %定义坐标名称
6、axis(0 1 0 0.1) %定义坐标范围title(Response x and xin meter to a f(t) pulse of 0.1 N ) %定义曲线标题名称gtext (leftarrow f (t),gtext (x (t) rightarrow) , gtext ( leftarrow x(t)figure (2)hf=line(t,f(:);grid onxlabel(Time)ylabel(Force(N)axis(0 1 0 0.12)axet=axes(Position,get(gca,Position),. XAxisLocation,bottom,. Y
7、AxisLocation,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 (rad)axis(0 1 -0.3 0)title(Response theta(t)and theta in rad to a f(t) pulse of 0.1 N )gtext(leftarrow f (t), gtext (theta (t) rightarrow), gtext ( leftarrow t
8、heta(t)3.3 仿真验证2、在系统模型中,双击子系统模块,则会弹出一个新窗口,在新窗口中输入m和l值,点击OK并运行,如图7所示。 图6 参数输入3、运行M文件程序,执行该程序的结果如图8所示。图7 模型验证仿真结果从中可见,在0.1N的冲击力下,摆杆倒下(由零逐步增大), 小车位置逐渐增加,这一结果符合前述的实验设计,故可以在一定程度上确认该“一阶倒立摆系统”的数学模型是有效的。同时,由图中也可以看出,近似模型在0.8s以前与精确模型非常接近,因此,也可以认为近似模型在一定条件下可以表达原系统模型的性质。4 双闭环PID控制器设计一级倒立摆系统位置伺服控制系统如图10所示。图10 一级
9、倒立摆系统位置伺服控制系统方框图 4.1内环控制器的设计内环采用反馈校正进行控制。图11 内环系统结构图控制器参数的整定:令:内环控制器的传递函数为:内环控制系统的闭环传递函数为:4.2外环控制器的设计外环系统前向通道的传递函数为:图12 外环系统结构图外环控制器采用PD形式,其传递函数为: 图13 系统仿真结构图 5 仿真实验1、根据已设计好的PID控制器,可建立图14系统,设置仿真时间为20ms,单击运行。(其中的对象模型为精确模型的封装子系统形式)图14 SIMULINK仿真框图2、新建M文件,输入以下命令并运行。%将导入到PID.mat中的仿真试验数据读出load PID.matt=s
10、ignals(1,:);q=signals(2,:);x=signals(3,:);%drawing x(t) and thera(t) response signals%画小车位置和摆杆角度的响应曲线figure(1)hf=line(t,q(:);grid onxlabel (Time (s)axis(0 10 -0.3 1.2)ht=line(t,x,color,r);axis(0 10 -0.3 1.2)title(theta(t) and x(t) Response to a step input)gtext(leftarrow x(t),gtext(theta(t) uparrow)执行该程序的结果如图9所示,从中可见,双闭环PID控制方案是有效的。图15 系统仿真结果图