文章目录
一、单摆模型的仿真分析
上一篇我们已经创建了单摆模型,本篇文章记录如何对单摆模型进行运动仿真和分析,得到其转动的角度和角速度曲线。
1.教程概述
本篇文章通过将各种力和力矩添加到单摆模型中,然后使用具有运动感知的模块分析单摆的动态响应。最终结果是一组时域相位图,其中一个用于力和扭矩的每种组合。 将Simscape Multibody 运动输出作为参数,可以使用 MATLAB 命令创建这些图。
在已经创建单摆模型基础上, 通过向该模型添加力和扭矩,可以逐步将单摆从无阻尼变为阻尼驱动。 施加的力和力矩包括:
- 重力(Fg)—作用于每个刚体上与其质量成正比的力,根据加速度向量g指定的力。可以使用 Mechanism Configuration模块指定此向量。
- 关节阻尼(Fb)——单摆和关节固定装置之间的内部扭矩,您可以根据线性阻尼系数进行参数化。 可以使用将单摆连接到固定装置的 Revolute Joint 模块指定此参数。
- 驱动力矩 (FA) - 单摆和关节固定装置之间的驱动力矩,直接将其指定为 Simscape 物理信号。 可以使用将单摆连接到固定装置的 Revolute Joint 模块指定此信号。
2.感应单摆运动
-
打开创建好的simple_pendulum单摆模型
-
在Revolute Joint对话框中Sensing栏选择下面变量:
Position(位置)、Velocity(速度)
该模块公开了两个额外的物理信号端口,记为 q 和 w,它们输出单摆相对于世界坐标系的角位置和速度。 -
将下列模块拖动到模型中。使用它们将关节的位置和速度输出到MATLAB的基础工作空间。
库 | 模块 | 数量 |
---|---|---|
Simscape > Utilities | PS-Simulink Converter | 2 |
Simulink > Sinks | To Workspace | 2 |
- 将 To Workspace 模块对话框中的变量名称参数更改为 q 和 w。 这些变量可以轻松识别 To Workspace 模块在模拟过程中输出的关节变量 — 位置(Revolute Joint 模块端口 q)和速度( Revolute Joint 模块端口 w)。
- 如图所示连接模块。 确保变量名称为 q 的 To Workspace 模块通过 PS-Simulink Converter 模块连接到 Revolute Joint 模块端口 q,并且变量名称为 w 的 To Workspace 模块连接到 Revolute Joint 模块端口 w。
- 将模型命名为simple_pendulum_analysis并保存。
3.无阻尼单摆
-
仿真运行。 选择 Simulation > Run 在 Simscape Multibody Editor 菜单栏中执行此操作。 Mechanics Explorer 打开时会显示单摆模型的3D动画。
-
绘制关节位置和速度,在MATLAB命令行下输入以下代码:
figure; %打开图窗 hold on; plot(q); %绘制单摆角度 plot(w); %绘制单摆角速度
曲线如下图所示:
3. 绘制相对于角度的关节角速度,在 MATLAB 命令行下输入以下代码。
figure;
plot(q.data,w.data);
该图是相对于0度为起始位置对应的关节相位图(角度-角速度)。
尝试使用不同的起始角度来仿真该模型。在Revolute Joint对话框的State Targets>Specify Position Target>Value处更改起始角度。下图显示了起始角分别为-80°、-40°、0、40°、80°的复合相位图。
4.有阻尼单摆
-
在 Revolute Joint 对话框中,将 Internal Mechanics > Damping 设置为 8e-5 (N*m)/(deg/s)。 阻尼系数导致运动过程中的能量消耗,导致单摆振幅逐渐衰减。
-
确保将 State Targets > Position > Value 初始角度位置设置为 0 。
-
仿真运行。
-
绘制关节位置和速度,在MATLAB命令行下输入以下代码:
figure; hold on; plot(q); plot(w);
下图显示,由于阻尼,单摆振荡会随时间衰减。 在更大的阻尼值下,单摆变得过阻尼,并且振荡完全消失。
5 . 绘制联合相位图。在 MATLAB 命令行下输入以下代码:
figure;
plot(q.data, w.data);
将起始角分别设置为 -240°、-180°、-120°、-60°、0 和 60 °。
5.有阻尼驱动单摆
- 在 Revolute Joint 对话框中,将 Actuation > Torque 设置为由 Input 提供。
- 将这些模块拖动到模型中。
库 | 模块 |
---|---|
Simscape > Utilities | Simulink-PS Converter |
Simulink > Sources | Sine Wave |
Sine Wave提供周期力矩输入。Simulink-PS Converter 模块将 Simulink 信号转换为Simscape 物理信号。
-
按照下图连接模块:
-
在Sine Wave对话框中,将振幅设置为0.06。
-
在 Revolute Joint 块对话框中,确保将 State Targets > Position >Value 设置为 0 。
-
仿真运行。
-
绘制关节位置和速度,在MATLAB命令行下输入以下代码:
figure; hold on; plot(q); plot(w);
-
绘制联合相位图。在 MATLAB 命令行下输入以下代码:
figure; plot(q.data, w.data);