以编程方式运行仿真
要以编程方式运行仿真,您可以编写脚本或在 MATLAB® 命令行窗口中发出命令:
使用
sim
函数使用
SimulationCommand
名称-值参量调用set_param
函数来发出仿真命令。
这些选项中的每个选项都为配置仿真行为以及在仿真运行时与仿真进行交互提供了不同功能。
使用 sim
函数或 set_param
函数以编程方式运行的仿真以串行方式一次运行一个仿真。要运行并行仿真或批量仿真,请使用 parsim
函数或 batchsim
。
决定如何运行编程仿真
一般而言,当您不需要在仿真期间与模型进行交互时,sim
函数可以满足您运行和脚本化单个以及多个连续编程仿真的大多数需求。
当您需要在仿真期间以编程方式与模型交互时,可以使用 set_param
函数发出仿真命令。无论是点击运行启动的仿真,还是使用 set_param
函数的 start
仿真命令启动的仿真,都支持仿真命令。在涉及在 MATLAB 命令行窗口和 Simulink® 编辑器之间切换的工作流中,发出仿真命令会很方便。
使用仿真命令和使用 sim
函数运行的编程仿真都支持快速重启。无论以何种方式启用快速重启,模型在仿真结束时都会保持在快速重启状态,您可以通过点击运行、发出仿真命令或调用 sim
函数来运行下一个仿真。
下表总结了使用 sim
函数运行的仿真与使用 set_param
函数运行的仿真之间的差异。
操作或选项 | sim 函数 | set_param 仿真命令 |
---|---|---|
配置模型以进行仿真 | 使用 您指定的值将在仿真期间应用,并在仿真完成后还原。使用 | 使用 您也可以使用属性检查器、配置参数对话框和模块参数对话框等工具来配置仿真。 为此类型的仿真配置模型会弄脏模型。 |
开始仿真 | 调用 |
set_param(mdl,"SimulationCommand","Start") 在 Simulink 工具条中,点击运行。 |
停止仿真 | 在 MATLAB 命令行窗口中,按 Ctrl+C 键。 |
set_param(mdl,"SimulationCommand","Stop") 在 Simulink 工具条中,点击停止。 |
暂停仿真 | 不支持。 |
set_param(mdl,"SimulationCommand","Pause") 在 Simulink 工具条中,点击暂停。 |
继续仿真 | 不适用,因为不支持暂停仿真。 |
set_param(mdl,"SimulationCommand","Continue") 在 Simulink 工具条中,点击继续。 |
在 MATLAB 命令行窗口中发出命令 | 不支持。
| 支持。 |
可视化模块,如 Scope 模块 | 仅支持在普通模式和加速模式仿真期间更新可视化。 | 在普通、加速和快速加速仿真期间,均可更新可视化。 |
端口值标签 | 不支持。 | 在普通、加速和快速加速模式仿真期间,支持在端口值标签中显示模块图中的信号值。 |
在仿真中步进和步退 | 不支持。 | 普通模式和加速模式仿真都支持。 在 Simulink 工具条的仿真选项卡上,点击步进或步退。 |
信号断点 | 不支持。 | 对于在时间步内暂停的仿真,仅普通模式下支持。 对于配置为在仅时间步之间暂停的仿真,普通模式和加速模式下都支持。 |
在指定时间或之后暂停 | 不支持。 | 普通模式和加速模式仿真都支持。 |
快速重启 | 要使用快速重启运行仿真,请执行以下操作:
| 使用 set_param(mdl,"FastRestart","on") 在 Simulink 工具条中,在仿真选项卡的仿真部分中,点击快速重启。 |
仿真调速 | 通过指定模型的仿真调速参数值来配置仿真调速。
| 使用仿真调速选项对话框或通过编程方式指定仿真调速参数值来配置仿真调速选项。
|
仿真超时 | 使用 | 不支持。 通过发出仿真命令或点击停止随时停止仿真。 |
错误处理 | 指定是在仿真输出中捕获错误,还是将错误作为 MATLAB 异常发出:
| 向诊断查看器报告错误。 |
查询仿真状态 | 不支持。
| get_param(mdl,"SimulationStatus") |
使用 matlab (macOS) 或 matlab (Linux) 的 -nodesktop 或 -nodisplay 选项在 MATLAB 会话中运行仿真。 | 支持。 | 不支持。 |
使用 sim
函数运行仿真
sim
函数有几种语法,您可以使用它们以编程方式运行和配置仿真。当您要使用所有模型配置参数值、模块参数值、变量值等的当前值对模型进行仿真时,请使用最基本的语法。
out = sim("ModelName");
此语法返回单个 Simulink.SimulationOutput
对象,该对象包含所有仿真结果(单一仿真输出参数禁用时除外)。为了确保您可以为以编程方式运行的所有仿真编写一致的代码,请启用单一仿真输出参数。
例如,当您要通过指定模型配置参数值、模块参数值和变量值的值配置仿真时,请使用 Simulink.SimulationInput
对象来指定仿真配置。
out = sim(simIn);
下表总结了您可以配置的选项以及每种语法的用例。
sim 语法 | 仿真配置选项 |
---|---|
out = sim("ModelName"); | 使用配置参数、模块参数和变量值的当前值仿真模型。 |
out = sim(simIn); | 使用带有以下覆盖值的
使用名称-值参量配置附加选项,例如是否:
|
out = sim("ModelName",Name=Value); | 使用名称-值参量来配置仿真选项,例如:
|
out = sim("ModelName",paramStruct); | 使用结构体指定模型配置参数值和仿真选项,结构体的字段名称与每个参数名称匹配,字段值指定用于每个参数的值。 例如,要将 paramStruct.StopTime = "20"; |
out = sim("ModelName",configSet); | 使用 |
通过发出仿真命令来运行和控制仿真
当您从用户界面(如 Simulink 编辑器)启动仿真时,或通过使用 set_param
函数发出仿真命令时,您可以:
通过使用
set_param
函数发出仿真命令来控制仿真和与之交互。使用
get_param
函数查询仿真状态。
当您在仿真期间发出仿真命令时,软件不会立即执行该命令。软件仅在当前运行的不可中断的进程完成后发出命令。例如,如果您发出一个仿真命令时求解器正在确定下一时间步,则软件仅在求解器完成传播时间后才执行该仿真命令。
并非 Simulink 编辑器中的所有可用操作都有对应的仿真命令。下表描述每个仿真命令以及对应的用户界面操作和键盘快捷方式。
仿真命令 | 描述 | 等效用户界面操作 | 键盘快捷方式 |
---|---|---|---|
set_param(mdl,"SimulationCommand","start"); | 开始仿真。 | 点击运行。 | Ctrl+T 或 F5 键 |
set_param(mdl,"SimulationCommand","stop"); | 停止仿真。 | 点击停止。 | Ctrl+Shift+T |
set_param(mdl,"SimulationCommand","pause"); | 暂停仿真。 | 点击暂停。 | Ctrl+T 或 F5 键 |
set_param(mdl,"SimulationCommand","continue"); | 继续暂停的仿真。 | 点击继续。 | Ctrl+T 或 F5 键 |
set_param(mdl,"SimulationCommand","update"); | 更新图。 | 在 Simulink 工具条的准备部分中,点击更新模型。 | Ctrl+D |
set_param(mdl,"SimulationCommand","writedatalogs"); | 将数据记录变量写入工作区。 | 不支持。 | 不支持。 |
下表描述与 SimulationStatus
名称-值参量的每个返回值对应的仿真状态。
SimulationStatus 值 | 描述 |
---|---|
stopped | 仿真停止。 |
initializing | 正在执行初始化阶段。 |
running | 正在运行执行阶段。 |
paused | 在执行阶段暂停。 |
compiled | 模型已编译。 |
updating | 正在更新图。 |
terminating | 正在执行终止阶段。 |
external | 使用 Simulink Coder™ 进行仿真。 |