首页 > 代码库 > Simulink
Simulink
本文针对一个倒立摆系统进行了系统的建模、求解、控制系统的设计,并且使用Simulink对控制算法进行了仿真。
一、模型的描述
倒立摆系统如图(1),设有一个倒立摆装在只能沿轴方向移动的小车上,图中为小车的质量,为摆球的质量,为重力加速度,为摆长,为摆的转动惯量。当小车受到外力的作用时,小车产生位移,且摆产生角位移。
二、模型的建立
下面针对该倒立摆系统进行建模求解。
当小车在外力作用下产生位移时,摆球受力情况如图(2)所示。图中为摆球所受重力,为方向的惯性力,为垂直于摆杆方向的重力分量。在方向上,小车的惯性力矩为,摆球产生的位移量为;在垂直于摆杆的方向上,摆球的转动惯性力为;的分力为。
图(1)装有倒立摆的小车 图(2)倒立摆受力图
根据牛顿运动定律,按照力的平衡原理,可以分别列出该系统在方向上和垂直于摆杆方向上的的运动方程
(1)
(2)
三、模型的求解
3.1微分方程组的求解
联立式(1)、(2),经过方程组的恒等变形得
(3)
(4)
由式(3)、(4)令,可建立如下的微分方程组进行求解
3.2控制系统的分析与设计
在该模型中,对该倒立摆系统实施角度环、速度换的控制,并假设小车在运行过程中受到空气阻力,阻力大小与小车的速度成正比。通过调整的大小,达到在维持倒立摆保持平衡的条件下,使小车维持在给定的目标速度下。即控制目标有
下面就角度环和速度环分别介绍控制过程。
(1)角度环
为了使倒立摆能够保持平衡,首先就需要对摆的角位移进行控制。由于控制目标是角位移为零,自然需要引入角度反馈。首先考虑引入P控制。当有角度的偏差(假设偏差为正),P控制将会产生一个向前的推力,使角度回复为零。但是为了避免角度的来回震荡,需要引入一个阻尼项,即微分控制。只要角度有变化,微分控制便产生作用以阻碍角度的变化。综上,角度环采用PD控制,采取的为
(5)
在Simulink模型中通过调整Pa、Da参数来调节角度的控制。
(2)速度环
倒立摆系统的速度控制是一个难点。其与通常的负反馈不同。因为系统首要的任务是要保持平衡,因此系统的回复力应占据主导地位。而倒立摆系统要想获得速度,首先得有加速度,即必须得打破自身的平衡。换句话说,倒立摆系统是以牺牲部分的平衡为代价来换取速度的稳定。因此,倒立摆系统速度控制的大致思路是:若小车想获得向前的速度,首先小车得受到一个向后的力。当角度平衡被打破后,占据主导地位的回复力将会使小车向前加速,以使角位移恢复为零。当小车再次平衡后,已经具有了向前的速度。通过这样不断地干扰系统的平衡,小车最终将会达到并稳定地保持在设定速度附近。若小车想获得向后的速度,反之即可。
通过上面的分析可以得出结论,速度控制对于角度控制来说是一个弱干扰,并且是反向的。为了更加逼近真实的系统,假设小车在前进的过程中会受到空气阻力,其大小与速度成正比,即。由于模型中引入了空气阻力,会使速度控制产生静差,为了消除静差,速度环加入积分控制。综上,速度环的控制策略为PI控制,采取的为
(6)
在Simulink模型中通过调整Psp、Isp参数来调节速度的控制。
综合(5)、(6)式,并考虑空气阻力,可得
(7)
将(7)式带入上述微分方程组,便可以用Simulink进行求解。
3.3 Simulink模型的搭建
建立Simulink模型如图(3)所示:
图(3)
在建模过程中,使该模型文件(DaoLiBai.slx)与MATLAB的m文件(InitParam.m)建立连接,在该文件中完成倒立摆系统的参数初始化,该文件内容如下:
%本文件完成倒立摆系统的参数初始化
m1 = 3; %小车的质量(kg)
m2 = 10; %摆球的质量(kg)
l = 0.05; %摆长(m)
J = 3; %摆的转动惯量(kg*m^2)
setspeed = 100; %小车的设定速度(m/s)
theta0 = 30; %摆的初始角度(度)
st = 50; %速度换的起始时间(s)
et = 400; %仿真的结束时间(s)
3.4控制系统的参数分析
以下是求解得到的一些曲线(图中红色为,黄色为,蓝色为):
Pa = 150,Da = 15,Psp = 0.2,Isp = 0.002,Kf = 0.1(基准参数)
Pa = 150,Da = 15,Psp = 0.2,Isp = 0.01,Kf = 0.1
Pa = 200,Da = 15,Psp = 0.2,Isp = 0.002,Kf = 0.1
Pa = 150,Da = 25,Psp = 0.2,Isp = 0.002,Kf = 0.1
Pa = 150,Da = 15,Psp = 0.15,Isp = 0.002,Kf = 0.1
从以上参数的对比中可以发现,Pa增大可以减小角度的波动范围,但会使小车速度的波动变大;Da增大可以抑制角度的变化;Psp减小会导致速度波动变大,但角度的波动会减小;Isp增大会使速度出现震荡,也会使角度的波动变大。综上,Pa,Psp,Isp过大都会使系统不稳定,三者都会使一项性能(角度或速度)得到改善,而使另一项性能(速度或角度)变差,因此在实际应用中只能根据需要采取折中的策略。
四 Simulink各模块的代码
Fcn2: m2^2 * l^2 * sin(u(2)) * cos(u(2)) * (u(3)^2) - (m1 + m2) * m2 * 10 * l * sin(u(2))
Fcn4: 2 * J * m2 * l * sin(u(2)) * u(2)^2 - m2^2 * l^2 * 10 * sin(2 * u(2))
Fcn5: 2 * ((m1 + m2) * J - m2^2 * l^2 * (cos(u(2)))^2)
Fcn11: m2^2 * l^2 * (cos(u(2)))^2 - (m1 + m2) * J
Fcn8: -(setspeed * (u(1) > st) - u(5))
Gain1: 2 * J
Gain4: m2 * l
Simulink