【Simscape】用Simscape实现三维物理仿真(四)——用PID控制倒立摆系统

仿真文件下载:https://download.csdn.net/download/ReadAir/12232591


 1 建立一个倒立摆系统

我们使用【Simscape】用Simscape实现三维物理仿真(三)——创建一个滑块单摆系统中现成的模型开始下一步。

一个稳定闭环系统必须满足“能控”和“能观” ,因此我们下一步需要添加执行器传感器,我们首先设计一下整个闭环系统的控制框图:

2 为系统添加传感器

(1)双击编辑 旋转关节

(2)在属性中找到传感器(Sensing),在其子栏目中勾选位置(即角度)和速度(即角速度),然后Apply

(3) 可以看到这个模块多了两个输出q(角度)、w(角速度):

 3 添加控制器

控制器实质是控制滑块Y轴向的受力(Y轴是滑块的自由轴)

(1)双击编辑 三轴平动关节(注意,在上一篇博文中,我们已经用一种方法锁死了X和Z轴的平动。)

(2)在属性中找到驱动(Actuation),将受力(Force)选为“由输入提供(Provided bu input)”,运动(Motion)选为“自动计算(Automatically computed”,然后点击Apply

(3)可以看到模块多了一个Y轴受力输入: 

4 添加噪声

怎么评判一个控制系统的鲁棒性?最直观的办法就是看系统受到干扰后的性能,为此我们需要添加一点噪声。

(1)在之前的旋转关节中找到驱动,添加一个扭矩(Torque)输入:

(2)从Simulink库拖出一个脉冲发生器和一个信号转换器:

  • 脉冲发生器 (Simulink -> Sourses):
  • 信号转换器 (Simscape -> Utilities): 

(3)如图连接接入旋转关节 :

 (4)双击设置脉冲发生器参数:

  • 脉冲幅度:5
  • 周期:5
  • 脉冲宽度:5%
  • 脉冲延时:1

 5 添加PID控制律

  • 首先,我们目前的仿真是一个完全理想的环境,不存在机械死区和摩擦力(尽管你可以自己添加),因此积分部分我们可以不用,所以我要展示的严格来说是个PD控制器。
  • 其次,由于误差等于输入(给定)减去输出,而输入恒为零,因此误差就是负的输入。
  • 此外,误差的微分即角速度,我们这里可以用传感器直接读出。即可省去微分的计算过程。

了解这些后,我们开始着手于搭建控制器:

(1)从Simulink库中拖出两个增益模块(Gain),以及对应的两种信号转换器,并按图示连接:

(2)添加一个加模块(Add),按图示连接:、

(3)现在按照我们的控制框图完成全部连接,取Kp=200,Kd=1,如图所示连接:

6 大功告成,仿真看效果! 

这显然不是最优的参数,但是可以明显看到控制器在避免摆杆的倾倒,由于我们仅仅实现了摆杆角度的闭环,因此如果控制器一旦饱和(滑块触边)就失去了控制作用,摆杆也自然无法继续保持倒立。下一章,我们来讲讲双闭环:同时实现摆杆角度的闭环和滑块的位置闭环。


我是ReadAir,如果这篇教程能帮到你,请在右上角为我点个赞,谢谢!(求关注)

发布了46 篇原创文章 · 获赞 207 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/ReadAir/article/details/104702335