仿真文件下载: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,如果这篇教程能帮到你,请在右上角为我点个赞,谢谢!(求关注)