SimscapeMultibody 物理建模

Simscape Multibody 物理建模

简介

以一个单摆为例说明如何进行物理建模。

一、创建模型

在MatLab命令行输入

smnew

打开一个新的simscape multibody项目

打开一个示例项目

在命令行输入

 sm_lib

打开Simscape Multibody block library选择自己想要添加的块

添加块

二、创建机械连接

  1. 块类型说明

    • Rigid Transform(刚体变换)块:提供端坐标系。
    • Solid(立体)块:提供几何(geometry),惯性(inertia),颜色(color)特性。

    Rigid Transform块在Frame and Transform 下,Solid块在Body Element下。

  2. 连接块图

连接块图

  1. 设置Solid block特性

    1. 左键快速单击solid block两次,在弹出的对话框中将参数设置为如下图所示:

    在这里插入图片描述

    长宽高用变量LHW代替,密度rho代替,颜色rgb代替。这里出现错误是因为我们输入的变量未定义,将在下面定义。

  2. 设置Rigid Transform

    左键快速单击Rigid Transform block,在弹出的对话框中将参数设置为如下图所示:

    • Rigid Transform 设置为如下图所示

设置刚体变换

  • Rigid Transform1 设置为如下图所示

设置刚体变换2

  1. 生成子系统

    同时选中Rigid TransformRigid Transform1solid block,在高亮的地方右键选择Create Subsystem from Selection

生成子系统

得到如下所示子系统:

得到的子系统
6. ### 定义前面的参数

右键单击Subsystem,在弹出的对话框中选择 Mask > Create Mask

创建封装

在弹出的对话框中选择 Parameters & Dialog,在左边的栏中添加五个imgParameters,然后将变量名改为前面输入的变量名

定义前面的变量

​ 在右边栏Properties > value中将各变量值设置为如下所示

L**(cm)**20
W**(cm)**1
H**(cm)**1
rho**(kg/m^3)**2700
rgb[0.25,0.40,0.70]

确定,然后在simulink界面中选择Simulation > Update Diagram,更新块图,得到如下图的立体

生成立体

  1. 添加旋转部件

    在matlab命令行输入

    smnew
    

    新建一个模型,删除不需要的块并将上述的Subsystem复制过来

    复制前面生成的子系统

    Simscape > Multibody > Joints 中添加一个 Revolute Joint(旋转节点)到图中,并连接成如下图所示

添加旋转节点

鼠标左键快速单击图中的solid block两次,在弹出的对话框中将其参数设置为如图所示

设置块的参数
点击确定。

  1. 设置重力

    旋转节点(Revolute Joint block)使用底座和从动件坐标系的公共Z轴作为旋转轴,为了让从动件在重力的作用下旋转,需要使重力矢量偏移Z轴。鼠标左键快速单击Mechanism Configuration block两次,在弹出的窗口中将重力设置为[0 -9.81 0](-y方向)。

    设置重力

  2. 设置单摆起始位置

    鼠标在左键快速单击Revolute Joint两次,在弹出的对话框中选择State Targets > Position进行设置,默认为水平。

设置单摆起始位置

  1. 配置求解器

    在simulink中选择Simulation > Model Configuration Parameters,配置为如下图所示

配置求解器

选择确定。求解器用于模型可视化。

  1. 组装模型

    选择Simulation > Update diagram,得到如图所示的模型

组装模型

选择View convention将其设置为Y up (XY Front),保证重力与屏幕垂直对齐,选择view > standard view 中的一项来刷新视图。选择img来保存设置。

  1. 运行模型

    点击Simulation > Run,运行模型,将会看到单摆摆动

  2. 分析模型

    1. 测量单摆运动

      左键快速单击Revolute Joint block两次,在弹出的对话框中选择Sensing 下的Position 和Velocity

    旋转节点对话框

    1. 添加以下块到模型
      • PS-Simulink Converter:在Simscape > Utilities

      • To Workspace:在Simulink > Sinks

        如图

        添加块

        将文件另存为一个新文件 simple_pendulum_analysis

    2. 摆角、角速度关于时间的函数

      打开刚刚的文件 simple_pendulum_analysis ,然后选择Simulation > Run,在matlab命令行中输入以下命令

      figure; % Open a new figure
      hold on;
      plot(q); % Plot the pendulum angle
      plot(W); % Plot the pendulum angular velocity
      

      得出摆角(蓝色)与角速度(红色)关于时间的函数图像

      分析结果

    3. 无阻尼条件下摆角与角速度关系

      在matlab命令行中输入以下命令

      figure;
      plot(q.data, W.data);
      

      得到函数图像:纵轴为角速度,横轴为摆角。

      角速度和摆角关系

      Revolute Joint block State 对话框的Targets> Position中设置不同的起始角:-80, -40, 0, 40和80 °,重复上述的命令得到不同起始角下摆角与角速度的关系

    在这里插入图片描述

    1. 有阻尼下摆角与角速度关系
      • 左键快速单击Revolute Joint block,在弹出的对话框中将 Internal Mechanics > Damping coefficient 设为8e-5(N*m)/(deg/s),确保State Targets > specify Position Target > Value为0(初始角为0)。

      • 在matlab命令行输入以下命令

        figure; 
        hold on;
        plot(q);
        plot(w);
        

        得到如下图所示摆角(蓝色)、角速度(红色)与时间的函数关系

      有阻尼分析结果

      • 在matlab命令行中输入以下命令

        figure;
        plot(q.data, W.data);
        

        得到摆角与角速度的关系

    摆角与角速度关系
    改变初始角为-240,-180, -120, -60, 0, and 60 °,重复上述命令可以得到如图:

    ![不同起始角下,摆角与加速度关系](https://img-blog.csdnimg.cn/2019081514450126.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuYnVxaQ==,size_16,color_FFFFFF,t_70)
    
    1. 有阻尼和激励下的单摆
      • 左键快速单击Revolute Joint两次,在弹出来的对话框中设置Actuation > Torque为 `Provided by Input。

      • 添加以下两个模块

      • LibraryBlock
        Simscape > UtilitiesSimulink-PSConverter
        Simulink > SourcesSine Wave

      连接成如下图所示

    连接块图

    • 左键快速单击Sine Wave block 两次,在弹出的对话框中将Amplitude设置为0.06,在Revolute Joint block 对话框中将确认 State Targets > Position > Value为0。

    • 运行仿真,在matlab命令行中输入以下命令画出摆角、角速度与时间的关系

      figure; 
      hold on;
      plot(q);
      plot(w);
      

      如下图所示

    ![分析结果](https://img-blog.csdnimg.cn/20190815144620510.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuYnVxaQ==,size_16,color_FFFFFF,t_70)
    
    • 在matlab命令行中输入以下命令画出摆角与角速度的函数关系

       plot(q.data, W.Data);
      

    在这里插入图片描述

Simscape刚体变换

一、创建坐标系

以一个L梁作为示例,在matlab命令行输入

smdoc_lbeam_inertia

将会弹出一个L梁的坐标关系图:

L梁块图

左键快速点击图中的立方体两次,弹出立体对话框

块对话框
点击Frames左边的**“+”号,选择new frame**右边的加号,

添加坐标系

会弹出一个坐标对话框

显示坐标系

从上到下依次为:

  1. 坐标名称

  2. 坐标原点

  3. 主轴

  4. 副轴

    按自己想要的设置即可。

二、添加立体到模型中

  1. 打开simulink

打开simulink
2. ### 选择Simscape下的Multibody:

打开simscape Multibody

  1. 添加块

    将默认存在的块体删除,选择Library Browser >> Simscape >> Multibody >> Body Elements:

添加块
在这里插入图片描述
将其中的solid拖到窗口中即可。

在这里插入图片描述

三、建立坐标系及刚体变换

  • 刚体转动变换
  1. 将两个立方体连接起来,使立方体的世界坐标系在空间上是重合的

    在这里插入图片描述

  2. 可视化立体坐标系:将Simscape >> Utilities >> Solver Configuration 拖到模型中,并与一个立方体连接

    在这里插入图片描述

  3. 选择Simulation > Update Diagram更新流程图,将会打开Mechanics Explorer窗口

在这里插入图片描述

  1. 应用刚体变换:在Multibody>Frames and Transforms拖一个rigid Transform,将它连接到两个立体的中间,左键快速单击两次,在弹出对话框中选择

    • Rotation > Method to Standard Axis.

    • Rotation > Axis to -Z.

    • Rotation > Angle to 45.

      在这里插入图片描述

  2. 选择OK然后Simulation > Update Diagram更新流程图,如下图,完成了一个刚体转动变换。

在这里插入图片描述

  1. 点击Rigid Transform 可以看到,两个立体的坐标系原点和Z轴是重合的,X轴和Y轴彼此错开了45°。
  • 刚体平动变换
  1. Translation > Method 设置为 CartesianTranslation > Offset to [1 1 0]

在这里插入图片描述

  1. offset数组表示相对于基础坐标系(Base Frame,就是与变换块**“B“**接口相连的立体坐标系)在x,y,z方向上的偏移量,后面的是单位。

在这里插入图片描述
3. 选择OK然后Simulation > Update Diagram更新流程图,如下图,完成了一个刚体平移变换。

在这里插入图片描述

  • 38
    点赞
  • 177
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: Simscape Multibody是基于Simulink平台的一个多体动力学仿真工具,在机械、航空、汽车等领域都有广泛应用。为了更好地使用这个工具,建议首先从官方网站了解教程和文档。这些资源以易于理解的方式介绍Simscape Multibody的基本原理、模型构建、仿真操作等方面的知识。 在学习过程中,建议先从Simulink基础开始学起,例如掌握建立模型、添加仿真器等基本操作。熟悉这些操作后,可以学习Simscape工具箱中的Multibody部分,掌握多体系统的建模方法、运动学方法、动力学方法等。在这个过程中,可以通过官网提供的示例来练习,并结合自己的应用需求进行实践。 此外,建议多加了解Simscape Multibody的工具和应用,例如运动学仿真、动力学仿真、控制设计等。这可以通过查阅文献、参加培训、交流等方式来完成。 最后,要注意使用Simscape Multibody时需要有一定的数学和物理基础,不仅要熟悉多体系统的理论,还要了解微积分、线性代数等数学知识,以及动力学、力学、材料力学等相关科学知识。只有全面掌握背景知识,才能正确理解和使用Simscape Multibody。 ### 回答2: Simscape MultibodyMATLAB Simulink中一款先进的工具箱,用于多体系统的建模和仿真。该工具箱具有高度可定制化和灵活性,可进行各种机械系统的建模,如机械臂,汽车悬挂系统,弹簧减震器等。 Simscape Multibody的教程提供了深入的学习资料,包括理论基础、案例研究、演示视频和实践项目。教程旨在帮助用户了解该工具箱的功能和特点,快速掌握建模和仿真技术。 在教程中,用户将学习如何使用Simscape Multibody进行建模和仿真,包括如何创建部件,连接它们,分配参数和添加传感器等。同时,用户还将学习一些高级技术,如动力学分析,控制策略等。 除了基本的多体动力学建模Simscape Multibody还提供了丰富的工具箱,可用于建模和仿真气体系统,流体力学系统,电子控制系统等。这为用户提供了更多的选择和灵活性,使其能够应对各种真实世界的挑战和需求。 总的来说,Simscape Multibody教程是学习该工具箱的绝佳资源,使用户能够充分利用它的功能和潜力,快速实现各种机械系统的建模和仿真。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

安布奇

喜欢的朋友给点支持和鼓励吧

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

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

打赏作者

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

抵扣说明:

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

余额充值