文章目录
一. 给关节施加力和建立传感器
建立完模型之后,我们最想要做的就是模拟系统在受力情况下是怎么运动的,这就是动力学仿真的真谛。上一节我们其实已经观察了自由单摆在只受重力作用下的运动,其实就是一个正弦变动,由于没有摩擦力,所以他会一直等幅振荡。
接着上一节的内容,本次我们的目标是给单摆施加驱动力矩,同时记录单摆的摆动位置和速度。在Multibody里面施加力和增加传感器都是在关节当中进行的。
打开我们上一节的模型,双击打开Revolute Joint,像下面这样设置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ga8c94zv-1647610691488)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\Dhau7T6MyI.png)]](https://file.cfanz.cn/uploads/png/2022/03/18/13/aMQ6710eb5.png)
Internal Mechanics是施加弹性力(Spring Stiffness)与阻尼(Damping Coefficient),以前都学过的,弹性力与位移成正比,阻尼力与速度成正比(力是广义力,包含力矩)这样设置完之后其实就是一个标准的质量—弹簧—阻尼系统了,一个二阶系统。
Actuation是驱动力,在Torque里面选择Provided by Input,就是通过输入力驱动,当然可以选择直接给一个值的。
Sensing就是传感器,这里勾选Position和velocity,位置和速度。
完事之后Revolute Joint就多出了几个接口,分别是输入力与输出位置、速度。
加进去一个正弦信号,一个Simulink-PS Converter,一个PS-Simulink Converter,一个Scope,一个to workspace块,连接起来。最后像下面这样。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-03SJ5umk-1647610691489)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\MATLAB_yk8Z8UUSjX.png)]](https://file.cfanz.cn/uploads/png/2022/03/18/13/feUf1B8d31.png)
说明一下,所有的部件都可以在Simulink library里面找到,找不到就搜索,最快的是直接在模型里面打字,它会自己出来的,比如搜索To Worksapce模块
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8yw6ioZ-1647610691489)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\MATLAB_rXjFvsmB7v.png)]](https://file.cfanz.cn/uploads/png/2022/03/18/13/1M621fQMa3.png)
这样就加入了力和传感器,Simulink-PS Converter和PS-Simulink Converter的作用已经说过了,是实现Simulink信号与Multibody信号的转换,没有这个东西它是不让你连接的。
点击运行,观察三维视图里面的真实运动,打开Scope观察位移和速度的曲线,然后在Matlab Workspce里面可以使用导出的数据绘图。这里我就不截图了,很简单。
二. 加入PID控制器
接下来是重头戏,我们看如何加入PID控制器,控制输入力矩,实现单摆的角度控制。
有了上面的基础其实答案已经呼之欲出了,我们只需要像在simulink里面仿真一样加入PID控制器、比较器就行了。只不过Simulink里面的Plant是建立的数学模型(传递函数或状态空间或S-function别的什么东东),而Multibody里面是虚拟样机。
直接给出连接关系,如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JqZi9Lea-1647610691489)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\MATLAB_eKN8QhGBtw.png)]](https://file.cfanz.cn/uploads/png/2022/03/18/13/M51c566686.png)
这里面PID控制器的参数调整采用里面提供的PID整定器,双击打开PID控制器,点击Tune,打开PID Turner
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E23CdJY6-1647610691490)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\mM3KqIwpvr.png)]](https://file.cfanz.cn/uploads/png/2022/03/18/13/284E85QA04.png)
PID Turner的页面如下,TURNING TOOLS里面拖动两个按钮就可以调整输出曲线。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UEVz4Szc-1647610691490)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\AHcXdG2fkT.png)]](https://file.cfanz.cn/uploads/png/2022/03/18/13/BcA0612EE1.png)
调完之后点击RESULT,点击UPDATE Block,将参数更新到PID控制器。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4WMA6bja-1647610691490)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\54BDxd0wYM.png)]](https://file.cfanz.cn/uploads/png/2022/03/18/13/e1416G1GLe.png)
三.观察运行结果
点击运行,看看效果。很快就调整到倒立位置了,也就是设立的参考输入180度。
可以加一个示波器看看角度曲线。可以看到跟PID整定的曲线是一样的,大家可以调整一下PID,看看变化。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mpAANYOE-1647610691491)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\MATLAB_yE6Ch9l0q4.png)]](https://file.cfanz.cn/uploads/png/2022/03/18/13/YS2865162f.png)










