Simscape Multiboby学习笔记5——在Multibody中建立控制器-驱动力-传感器

6 篇文章 7 订阅
6 篇文章 32 订阅

一. 给关节施加力和建立传感器

建立完模型之后,我们最想要做的就是模拟系统在受力情况下是怎么运动的,这就是动力学仿真的真谛。上一节我们其实已经观察了自由单摆在只受重力作用下的运动,其实就是一个正弦变动,由于没有摩擦力,所以他会一直等幅振荡。

接着上一节的内容,本次我们的目标是给单摆施加驱动力矩,同时记录单摆的摆动位置和速度。在Multibody里面施加力和增加传感器都是在关节当中进行的。

打开我们上一节的模型,双击打开Revolute Joint,像下面这样设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ga8c94zv-1647610691488)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\Dhau7T6MyI.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)]

说明一下,所有的部件都可以在Simulink library里面找到,找不到就搜索,最快的是直接在模型里面打字,它会自己出来的,比如搜索To Worksapce模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8yw6ioZ-1647610691489)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\MATLAB_rXjFvsmB7v.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)]

这里面PID控制器的参数调整采用里面提供的PID整定器,双击打开PID控制器,点击Tune,打开PID Turner
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E23CdJY6-1647610691490)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\mM3KqIwpvr.png)]

PID Turner的页面如下,TURNING TOOLS里面拖动两个按钮就可以调整输出曲线。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UEVz4Szc-1647610691490)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\AHcXdG2fkT.png)]

调完之后点击RESULT,点击UPDATE Block,将参数更新到PID控制器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4WMA6bja-1647610691490)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\54BDxd0wYM.png)]

三.观察运行结果

点击运行,看看效果。很快就调整到倒立位置了,也就是设立的参考输入180度。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RYTgDio3-1647610691490)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\Thunder_Cqae4oGZPO.gif)]

可以加一个示波器看看角度曲线。可以看到跟PID整定的曲线是一样的,大家可以调整一下PID,看看变化。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mpAANYOE-1647610691491)(F:\A_Pro_Files\博客\Simscape Multibody系列教程\MATLAB_yE6Ch9l0q4.png)]

四. 给零件施加外部力

上面我们是通过关节的设置,来实现给关节施加力的,那么能不能直接给零件施加力呢,答案是肯定的,这个时候需要用到External Force And Torque模块。下面我们看看它的用法

拖进来一个External Force And Torque模块,位置在这里
在这里插入图片描述
拖进来之后双击打开,如下设置,增加一个沿着x轴的力(复选框打钩)。这里解释一下,关于力的施加位置和方向,External Force And Torque模块有一个输出端口F(follower),连接到下一个坐标系。力的作用点就是下一个连上来的坐标系的原点,力方向就是沿着下一个练上来的坐标系的轴。
在这里插入图片描述
然后连接,把External Force And Torque的F连到pendulum的尾巴上去。也就是说给单摆的末端施加了一个始终垂直于单摆的力。在这个力的作用下就会形成绕转轴的力矩,单摆就会摆起来。
在这里插入图片描述

运行之后看一下。
在这里插入图片描述

图里面这个坐标系就是pendulum的尾巴坐标系,力的施加方向就是沿着这个坐标系的x轴的。
那么怎么施加力和力矩到任意一点呢?就很简单了,首先需要在你想要施加力的位置建立一个坐标系,然后把External Force And Torque的F连到这个坐标系就行了。

  • 14
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何为其然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值