基于bangbang算法的倒立摆由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“bangbang控制算法”。
Bang-bang起摆控制系统设计
1、bang-bang控制原理
bang-bang控制最早由庞特里亚金提出。
对调速范围宽、静态误差小和动态响应快的随动系统来说,单闭环控制是不能满足要求的,所以随动系统采用电流环、速度环和位置环来完成控制。在随动系统控制中,pid控制具有结构简单且在对象模型不确知的情况下也可达到有效控制的特点,但对模型参数变化及干扰的适应能力较差。bang-bang控制在系统偏差大,可加大系统的控制力度,提高系统的快速性,因此,bang-bang控制是随动系统中不可缺少的控制方式。
2.基于Bang-Bang反馈的起摆算法
我们可将起摆分为以下四个阶段(定义摆杆自然下垂位置0,以逆时针方向为正,箭头代表摆杆运动方向)。
图3-59 倒立摆能量起摆过程
在初始时刻,小车位于导轨中心,摆杆自然下垂。当进行起摆实验时,先向负方向给小车一个较大的力(小车有加速度),使摆杆运动,随后紧接着令小车停止,摆杆会在惯性的作用下,继续沿着与小车连接处的转轴向上运动(Ⅰ),达到最高点后,摆杆速度为零,在重力的作用下沿摆杆的轴心自动下落(Ⅱ),这时给小车施加一个相反的作用力,小车反向运动的同时通过连接轴给摆杆一个反向的力。当再次到达初始点(0)时,令小车制动,摆杆此时的速度不为零,在惯性的作用下继续运动,此时0(Ⅲ)。当0,0时,即摆杆达到负方向的最高点,在重力的的作用下,摆杆回落,继续给小车施加负方向的力,直到0下车制动(Ⅳ)。反复以上动作,摆杆在小车驱动力的作用下,抛起的高度会不断增加,直到进入稳摆区域,切换到稳摆控制算法。
对以上的四种情况进行分析,可转化成控制算法:
nv(1)0,0,控制量u,初始时刻
000(2)
unvunv
0u0(3)
3、系统工作原理
便携式直线一级倒立摆工作原理图
便携式直线一级倒立摆的工作原理是:数据采集卡采集到旋转编码器数据和电机尾部编码器数据,旋转编码器与摆杆同轴,电机与小车通过皮带连接,所以通过计算就可以得到摆杆的角位移以及小车位移,角位移差分得角速度,位移差分可得速度,然后根据自动控制中的各种理论转化的算法计算出控制量。控制量由计算机通过USB数据线下发给伺服驱动器,由驱动器实现对电机控制,电机尾部编码器连接到驱动器形成闭环,从而可以实现摆杆直立不倒以及自摆起。
物理模型
直线一级倒立摆模型
4.系统设计
倒立摆系统自摆起控制目标:通过控制小车运动,将摆杆从自由下垂状态摆到倒置平衡位置,并使系统能保持摆杆倒置状态,具有一定的抗干扰能力,同时还要控制小车回到初始零位附近,使整个系统处于动态平衡状态。该过程分为两个阶段:摆起控制与稳摆控制。两者模型的差异性决定了两个过程中控制方法的不同,要使倒立摆的整体性能好,两者之间的切换控制尤为重要。
4.1、模块的搭建
1、从
中拉出两个S-Function模块,双击该模块,将S-function name分别改为Initpend和MUL_timer。
2、从
中拉出一个Enabled Subsystem模块,并将MUL_timer模块与它连接。
3、双击Enabled Subsystem模块,进入之后搭建如下图所示的模块组成
4.2、参数设置
按Ctrl+E出现如下图所示的对话框,进行参数设置。将Stop time 设置为inf,将Solver options中的Type选择为Fixed-step,右侧选项为ode1(Euler),将Fixed step size设置为0.01,Mode选择Single Tasking.,设置完成之后点击OK.说明: 实验模块所在的文件夹一定要包含该实验所用到的库函数模块所生成的动态链接库,即(.dll)文件。例如在实验七模块所在的文件夹中必须要有Initpend.dll,MUL_timer.dll,ReadTwoChannelPulse.dll,SetMotorAcc.dll,bangbangswingup.dll。
5.Simulink仿真
下图: 直线一级倒立摆Bang-Bang自摆起仿真模型
其中“Bang-Bang控制器”为封装(Mask)后的Bang-Bang起摆控制器,如
Bang-Bang起摆控制器
“LQR Controller”为封装后的LQR控制器,双击该模块可以进行LQR参数设置:
LQR稳摆控制器
设置好各项参数后,点击“”运行仿真,得到仿真结果:
Bang-Bang自摆起仿真结果
根据仿真结果我们可以看出,系统在2秒内起摆成功,2秒后由稳摆算法接管控制,系统可以很好的稳定,稳态误差较小。但在实物控制实验中系统是不可能在这么短的时间内起摆成功的,仿真只是在理想状态下进行的,比如仿真时并不考虑导轨的长度,实物控制实验时还必须考虑安全问题,摆杆摆起的速度必须加以限制,所以仿真实验只是为了让实验者熟悉起摆算法,在此仅供参考。
5.1 Simulink实时控制实验
鼠标双击主界面上的Select Experiment模块,在弹出的对话框中选择实验编号7,然后单击右侧对应的Enabled Subsystem模块后出现下图所示界面。
实验7 LQR控制(Bang-Bang自摆起)实验
确定摆杆此时竖直向下。不用编译连接,直接单击“”按钮,倒立摆进行自摆起,当摆杆与竖直向上的方向夹角小于0.5弧度时(因为Bang_Bang控制要求导轨要长一些,而基于便携,我们设计的导轨要短,所以要在一个相对大的角度进度稳摆范围,来抵消掉对导轨长度的要求)进入稳摆范围,稳摆采用LQR控制算法。如果不能正常摆起,用户可根据实际情况修改小车加速度值直到正常摆起,可以观察到,摆杆直立不倒,小车会稳定在初始位置,一段时间后单击“”停止仿真。双击打开“示波器”模块,观察得到的曲线图(上面为小车位移,下面为摆杆角度),分析原因,得到相应结论。
6、利用bang-bang控制的实物展示