为了介绍构建和仿真物理模型的步骤,这里以simulink自带示例模型Mass-Spring-Damper with Controller为例,下图为建立好的模型。
详细物理建模和仿真分析步骤如下:
步骤 1:使用 ssc_new 创建新模型
使用 ssc_new 是开始构建 Simscape™ 模型的最佳方式。使用该函数有助于确保为模型使用推荐的默认设置。当您使用 ssc_new 时,它会自动:
- 创建一个新的 Simscape 模型,模型画布上已有必需和常用的模块
- 选择推荐的求解器和容差设置
- 为整个模型启用数据记录
在 MATLAB® 命令行窗口中,键入:
ssc_new
新创建的无名称模型的默认求解器设置为 VariableStepAuto,该模型包含一个 Solver Configuration 模块、一个 Simulink-PS Converter 模块以及一个连接到 Scope 模块的 PS-Simulink Converter 模块。
模型窗口底部的资源部分提供了指向相关模块库和文档主题的链接。
步骤 2:组装物理网络
要对您的系统进行建模,需要从 Simscape 库向模型中添加模块,然后将这些模块连接到物理网络。在您创建的原理图中,连接模块的线条表示您正在建模的实际系统中组件之间存在的物理连接。换言之,Simscape 图模拟的是物理系统布局。
构造网络时,添加域特定的参考模块非常重要,例如 Electrical Reference、Mechanical Translational Reference 等。
- 打开 Simscape > Foundation Library > Mechanical > Translational Elements 库。
- 将 Mass、Translational Spring、Translational Damper 和 Mechanical Translational Reference 模块拖动到模型窗口中。
- 将 Translational Spring、Translational Damper 和 Mass 模块连接到 Mechanical Translational Reference 模块,如下图所示。要旋转某个模块,请选择该模块,然后按 Ctrl+R。
要调整模型的视觉呈现,请简化 Spring 和 Damper 模块的名称,如图所示。要使 Mass 模块的名称与 Spring 和 Damper 同时显示,请右键点击 Mass 模块,然后从上下文菜单中选择格式 > 显示模块名称 > 打开。
步骤 3:调整模块参数和变量目标
Simscape 模块表示具有模块参数和变量默认初始值的通用组件。您可以根据您的应用程序调整这些值或与制造商数据表相匹配。
要查看和修改模块变量的模块参数值和初始目标,请双击模块以打开其对话框。使用 Settings 选项卡。
对于大多数 Simscape 模块,模块对话框包含与模块属性检查器相同的信息和布局。默认情况下,在属性检查器中更改值会立即应用新值。为了更好地进行控制,建议您清除模块对话框右上角的自动应用复选框,以启用重置和应用按钮。这在处理复杂模块时特别有用,因为您可以一次更改多个参数。更改参数值以匹配制造商数据表,查看整个集,然后点击应用。清除自动应用复选框后,该复选框将在 MATLAB 会话期间保持清除状态。
要查看模块的描述,请点击模块对话框中的 Description 选项卡。该选项卡还包含 Source code 链接。点击该链接可在 MATLAB 编辑器中打开此模块的 Simscape 源文件。
如果模块没有可以设置的参数或变量目标,则模块对话框没有 Settings 选项卡,只有 Description 选项卡。
要查看模块的文档,请点击模块对话框右上角的问号 按钮。
在此模型中,您将调整用于控制质量、弹簧刚度和阻尼系数的参数。您还将通过调整相应的变量目标来指定质量的初始速度。
- 双击 Spring 模块。清除自动应用复选框。将 Spring rate 设置为
400 N/m
,然后点击应用。
- 双击 Damper 模块。将 Damping coefficient 设置为
100 N/(m/s)
。
- 双击 Mass 模块。将 Mass 设置为
3.6 kg
。
- 要指定所需的质量速度初始值,请在 Initial Targets 部分中展开 Velocity。该变量的 Priority 已指定为 “
High
”,这意味着求解器在计算初始条件以确定仿真起点时将尝试完全满足该初始值。选中 Velocity 复选框。在 Value 字段中,键入10
,然后点击应用。
步骤 4:添加信源
您可以使用输入信号驱动 Simscape 模型。使用这种方法,您可以表示作用于系统的物理效应,例如力、电压或压力。您还可以指定流经系统的其他量,例如电流、质量流量和热通量。您可以通过使用 Simscape 信源模块向物理网络添加信号输入连接。
要添加作用于质量的力的表示,请使用 Ideal Force Source 模块。
- 打开 Simscape > Foundation Library > Mechanical > Mechanical Sources 库。
- 将 Ideal Force Source 模块添加到示意图中。简化模块名称,如图所示。
- 为了反映原始原理图中显示的力的正确方向,请翻转模块方向。选择 Force Source 模块后,在 Simulink® 工具条的格式选项卡上,在排列下,点击上下翻转。
- 复制 Mechanical Translational Reference 模块,方法是右键点击该模块并将其拖动到新位置。然后使用与 Force Source 模块相同的方法翻转新模块的方向。
- 将 Force Source 模块的端口 C 连接到这第二个 Mechanical Translational Reference 模块,将端口 R 连接到 Mass 模块,如下图所示。
将物理网络连接到 Simulink 源后,代表作用力曲线的输入信号将通过端口 S 提供(请参阅步骤 6:使用接口模块连接到 Simulink)。端口 S 处的正信号将指定从端口 C 作用到端口 R 的力。
步骤 5:添加传感器
您可以测量物理网络中的量,并在模型中的其他位置使用它们。这些量的一些常见用途包括控制算法的反馈、对其行为依赖于其他物理量的物理组件(如温度相关电阻)进行建模,或者只是在仿真过程中查看结果。
您可以使用传感器模块测量这些量,根据测量值对传感器进行串联或并联。要测量由 Through 变量定义的量(如电流、流量、力),请串联传感器。要测量由 Across 变量定义的量(如电压、压力、速度),请并联传感器。
要测量弹簧形变,请将 Ideal Translational Motion Sensor 模块与弹簧并联。
- 打开 Simscape > Foundation Library > Mechanical > Mechanical Sensors 库。
- 将 Ideal Translational Motion Sensor 模块添加到示意图中。
- 要旋转该模块,请选择该模块,然后按 Ctrl+R。
- 如下图所示连接该模块。简化模块名称,如图所示。
步骤 6:使用接口模块连接到 Simulink
Simscape 网络中的方程是同时求解的,而 Simulink 模块是按顺序求值的。接口模块(如 Simulink-PS Converter 和 PS-Simulink Converter)用于处理这两种建模约定之间的边界。当 Simulink 信号在 Simscape 网络中指定量时,或者在将 Simscape 量传递给 Simulink 以进行控制设计或实现其他目的时,您需要使用接口模块。每次将 Simulink 模块连接到 Simscape 物理网络时,都必须使用适当的转换器模块。
下面您要将物理网络连接到由常规 Simulink 模块构建的控制器。首先,准备要连接到 Simulink 信号的物理网络:
- 删除 Scope 模块。
虽然您可以使用示波器查看仿真结果,但这些示波器会使模块图变得更加混乱。查看和分析仿真结果的一种更有效方法是使用 Simscape 结果资源管理器,如步骤 8:查看仿真结果中所述。
- 将 Simulink-PS Converter 模块的物理信号输出端口连接到 Force Source 模块的端口 S。
- 将 Motion Sensor 模块的输出端口 P 连接到 PS-Simulink Converter 模块的物理信号输入端口。
- 将 Solver Configuration 模块连接到电路并隐藏转换器模块名称。示意图现在如下所示。
然后,构建并连接控制器:
- 打开 Simulink > Sources 库,然后将 Pulse Generator 模块拖到模型中。将模块名称更改为 Position Command。设置模块参数,如图所示。
- 打开 Simulink > Math Operations 库,然后将 Sum 模块拖到模型中。在符号列表中,将第二个加号替换为减号,如图所示。
- 打开 Simulink > Continuous 库,然后将 PID Controller 模块拖到模型中。设置比例(P)、积分(I) 和微分(D) 参数值,如图所示。
- 连接模块,如下面的示意图所示。
控制 Simulink 信号进入 Simulink-PS Converter 模块的输入端口,在那里转换为驱动 Ideal Force Source 模块的力分布的物理信号。
用于测量弹簧形变的 Ideal Translational Motion Sensor 模块的输出端口 P 连接到 PS-Simulink Converter 模块。该模块用于将物理信号转换为控制器的反馈 Simulink 信号。
要比较输入和反馈信号,请将它们连接到信号查看器:
- 右键点击从 Pulse Generator 模块传递到 Sum 模块的 Simulink 信号。从上下文菜单中,选择 Create & Connect Viewer > Simulink > Scope。
- 然后,右键点击从 PS-Simulink Converter 模块传递到 Sum 模块的 Simulink 信号。从上下文菜单中,选择 Connect To Viewer > Scope。
步骤 7:仿真模型
您可以通过点击 Simulink 工具条(位于模型窗口顶部)或波形查看器工具栏中的“运行”按钮 来运行仿真。Simscape 求解器会对模型进行求值,计算初始条件,然后运行仿真。
要运行仿真,请点击 Simulink 工具条中的 。
波形查看器会显示输入信号和反馈信号的叠加图。
步骤 8:查看仿真结果
通过 Simscape 结果资源管理器,您可以使用数据记录功能查看和分析仿真数据。例如,您可以比较两个仿真运行,以分析质量变化如何影响弹簧形变。
- 右键点击 Spring 模块。
- 从上下文菜单中,选择 Simscape > View simulation data > simlog。
注意:simlog
是记录变量的默认名称。如果使用工作区变量名称模型配置参数更改变量名称,则上下文菜单会将该名称列为与模块关联的记录变量。
此时将打开 Simscape 结果资源管理器窗口,左窗格中突出显示与 Spring 模块对应的节点。右窗格显示与该模块关联的三个变量的仿真数据图。
- 在
Spring
节点下,选择节点x
。右窗格显示随时间绘制的弹簧形变数据。
- 双击 Mass 模块。将质量设置为
7.2 kg
。 - 运行仿真。
- 要重新加载记录的数据,请点击位于 Simscape 结果资源管理器窗口工具栏中的导入数据按钮。在显示记录变量名称的弹出窗口中,点击确定。