主要内容

单摆分析

此示例展示如何分析单摆的动态响应。您可以学习如何测量旋转角度,添加阻尼以及为转动关节施加扭矩。有关多体动态特性仿真的详细信息,请参阅多体动态特性。您可以使用 MATLAB® 命令,结合运动输出,为关节创建一组相位图。

首先,按照简单摆建模中所述创建一个简单的摆模型。通过向该模型添加力和扭矩,您可以逐步将摆从无阻尼自由摆转变为有阻尼受驱摆。所施加的力和扭矩包括:

  • 重力 (Fg) - 作用于每个实体的全局力,其大小与实体质量成正比,可通过加速度向量 g 来指定。您可以使用 Mechanism Configuration 模块来指定此向量。

  • 关节阻尼 (Fb) - 摆与关节固定装置之间的内部扭矩,可以使用线性阻尼系数对其进行参数化。此参数使用将摆连接到关节固定装置的 Revolute Joint 模块来指定。

  • 作动扭矩 (FA) - 摆与关节固定装置之间的驱动扭矩,使用将摆连接到关节固定装置的 Revolute Joint 模块直接将其指定为 Simscape™ 物理信号。

摆运动的输出感测信息

首先,更新 SimplePendulum 模型以输出位置和速度数据,然后将这些数据输出到 MATLAB 基础工作区。

  1. 打开您在教程简单摆建模中创建的 SimplePendulum 模型。

  2. Revolute Joint 模块对话框的 Z 转动基元(Rz) > 感测部分中,选择以下参数:

    • 位置

    • 速度

    模块会公开两个额外的物理信号端口 qw,分别输出摆相对于世界坐标系的角位置和角速度。

  3. 向模型中添加以下模块:这些模块用于将关节位置和速度输出到 MATLAB 基础工作区。

    模块数量
    Simscape > UtilitiesPS-Simulink Converter2
    Simulink > SinksTo Workspace2

  4. To Workspace 模块对话框中的变量名称参数更改为 qw。这些变量使得识别 To Workspace 模块在仿真期间输出的关节变量变得很容易,位置通过 Revolute Joint 模块端口 q 输出,而速度通过 Revolute Joint 模块端口 w 输出。要从变量名中删除关键字 out,请在 Simulink® 工具条的建模选项卡上,点击模型设置,然后选择数据导入/导出并清除单一仿真输出参数。

  5. 按下图所示连接模块。确保变量名称为 qTo Workspace 模块通过 PS-Simulink Converter 模块连接到 Revolute Joint 模块的端口 q,并且变量名称为 w 的 To Workspace 模块连接到 Revolute Joint 模块的端口 w

  6. 将两个 PS-Simulink Converter 模块的向量格式参数值都更改为一维数组。将连接到端口 q 和端口 wPS-Simulink Converter 模块的输出信号单位参数分别设置为 degdeg/s

  7. 用其他名称(例如 SimplePendulumAnalysis)保存模型。

分析无阻尼摆

  1. 运行仿真。多体资源管理器将会打开,其中显示简单摆模型的三维动画。

  2. 在 MATLAB 命令提示符下输入以下代码,绘制关节位置和速度对时间的图:

    figure
    hold on
    plot(q)
    plot(w)
    生成的图如下所示。

  3. 在 MATLAB 命令提示符下输入以下代码,绘制关节角速度对角位置的图。

    figure
    plot(q.data, w.data)
    xlabel('θ (deg)')
    ylabel('ω (deg/s)')
    结果是关节的相位图,对应于相对于水平面的起始位置为零的情况。

    尝试使用不同的起始角度对该模型进行仿真。在 Revolute Joint 模块对话框的 Z 转动基元(Rz) > 状态目标部分中,在指定位置目标下指定参数。下图显示了起始角度为 -80-4004080deg 时的复合相位图。

分析有阻尼摆

  1. Revolute Joint 模块对话框中,将 Z 转动基元(Rz) > 内部力学 > 阻尼系数设置为 8e-5 (N*m)/(deg/s)。阻尼系数会导致运动过程中能量耗散,从而导致摆的振荡振幅逐渐衰减。

  2. 确保 Z 转动基元(Rz) > 状态目标 > 指定位置目标 > 设置为 0 deg

  3. 运行仿真。

  4. 绘制关节位置和速度对时间的图。为此,请在 MATLAB 命令提示符下输入以下代码。

    figure 
    hold on
    plot(q)
    plot(w)
    生成的图如下所示。请注意,由于阻尼作用,摆的振荡会随时间衰减。当阻尼值较大时,摆会变为过阻尼状态,振荡消失。

  5. 绘制关节相位图。为此,请在 MATLAB 命令提示符下输入以下代码。

    figure
    plot(q.data, w.data)
    xlabel('θ (deg)')
    ylabel('ω (deg/s)')

    尝试使用不同的起始角度对该模型进行仿真。在 Revolute Joint 模块对话框的 Z 转动基元(Rz) > 状态目标部分中,在指定位置目标下指定参数。下图显示了起始角度为 -80-4004080deg 时的复合相位图。

分析有阻尼受驱摆

  1. Revolute Joint 模块对话框的作动部分中,将扭矩参数设置为由输入提供。模块会公开一个物理信号输入端口 t,您可以使用该端口来指定关节作动扭矩。

  2. 向模型中添加以下模块:

    模块
    Simscape > UtilitiesSimulink-PS Converter
    Simulink > SourcesSine Wave

    Sine Wave 模块提供周期性扭矩输入作为 Simulink 信号。Simulink-PS Converter 模块将 Simulink 信号转换为与 Simscape Multibody™ 模块兼容的物理信号。

  3. 按下图所示连接模块。

  4. Sine Wave 模块对话框中,将振幅参数设置为 0.06。在 Simulink-PS Converter 模块中,将输入信号单位参数设置为 N*m。这样将向关节施加一个在 -0.06 N*m0.06 N*m 之间振荡的作动扭矩。

  5. Revolute Joint 模块对话框的 Z 转动基元(Rz) > 状态目标部分中,将指定位置目标下的参数设置为 0 deg

  6. 运行仿真。

  7. 绘制关节位置和速度对时间的图。为此,请在 MATLAB 命令提示符下输入以下代码。

    figure
    hold on
    plot(q)
    plot(w)

  8. 绘制关节相位图。为此,请在 MATLAB 命令提示符下输入以下代码:

    figure
    plot(q.data, w.data)
    xlabel('θ (deg)')
    ylabel('ω (deg/s)')

另请参阅

| |

主题