Main Content

以编程方式运行仿真

要以编程方式运行仿真,您可以编写脚本或在 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 仿真命令
配置模型以进行仿真

使用 sim 函数的输入参量指定要在仿真中使用的模型配置参数、模块参数和变量的值。

您指定的值将在仿真期间应用,并在仿真完成后还原。使用 sim 函数的输入参量配置仿真不会弄脏模型。

使用 set_param 函数以编程方式指定模型配置参数和模块参数的值。

您也可以使用属性检查器配置参数对话框和模块参数对话框等工具来配置仿真。

为此类型的仿真配置模型会弄脏模型。

开始仿真

调用 sim 函数。

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 命令行窗口中发出命令

不支持。

sim 函数执行会阻止 MATLAB 线程。

支持。

可视化模块,如 Scope 模块

仅支持在普通模式和加速模式仿真期间更新可视化。

在普通、加速和快速加速仿真期间,均可更新可视化。

端口值标签

不支持。

在普通、加速和快速加速模式仿真期间,支持在端口值标签中显示模块图中的信号值。

在仿真中步进和步退

不支持。

普通模式和加速模式仿真都支持。

在 Simulink 工具条的仿真选项卡上,点击步进步退

信号断点

不支持。

对于在时间步内暂停的仿真,仅普通模式下支持。

对于配置为在仅时间步之间暂停的仿真,普通模式和加速模式下都支持。

在指定时间或之后暂停

不支持。

普通模式和加速模式仿真都支持。
快速重启

要使用快速重启运行仿真,请执行以下操作:

  • 当您将第一个输入参量指定为一个或多个 SimulationInput 对象时,请将 UseFastRestart 名称-值参量指定为 "on"

    out = sim(simIn,"UseFastRestart","on");
  • 当您将第一个输入参量指定为定义模型名称的字符串或字符向量时,请将 FastRestart 名称-值参量指定为 "on"。在仿真结束后,模型会保持在快速重启状态。

    out = sim("MyModel","FastRestart","on");

使用 set_param 函数启用快速重启。

set_param(mdl,"FastRestart","on")

在 Simulink 工具条中,在仿真选项卡的仿真部分中,点击快速重启

仿真调速

通过指定模型的仿真调速参数值来配置仿真调速。

  • EnablePacing - 启用或禁用仿真调速。

  • PacingRate - 将调速速率近似指定为仿真时间与挂钟时间的比率。

使用仿真调速选项对话框或通过编程方式指定仿真调速参数值来配置仿真调速选项。

  • EnablePacing - 启用或禁用仿真调速。

  • PacingRate - 将调速速率近似指定为仿真时间与挂钟时间的比率。

仿真超时

使用 Timeout 名称-值参量指定允许 sim 函数运行的最长时间。

不支持。

通过发出仿真命令或点击停止随时停止仿真。

错误处理

指定是在仿真输出中捕获错误,还是将错误作为 MATLAB 异常发出:

  • 当您将第一个输入参量指定为一个或多个 SimulationInput 对象时,请使用 StopOnError 名称-值参量。

  • 当您将第一个输入参量指定为定义模型名称的字符串或字符向量时,请使用 CaptureErrors 名称-值参量。

向诊断查看器报告错误。

查询仿真状态

不支持。

sim 函数执行会阻止 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);

使用带有以下覆盖值的 Simulink.SimulationInput 对象指定仿真配置:

  • 模型配置参数

  • 变量

  • 外部输入

  • 初始状态

  • 模块参数

使用名称-值参量配置附加选项,例如是否:

  • 使用快速重启运行仿真。

  • 在仿真输出中捕获错误或发出 MATLAB 异常。

  • 打开仿真管理器

out = sim("ModelName",Name=Value);

使用名称-值参量来配置仿真选项,例如:

  • 模型配置参数

  • 仿真调速选项

  • 是否使用快速重启进行仿真

  • 是在仿真输出中捕获错误还是发出 MATLAB 异常

out = sim("ModelName",paramStruct);

使用结构体指定模型配置参数值和仿真选项,结构体的字段名称与每个参数名称匹配,字段值指定用于每个参数的值。

例如,要将 StopTime 参数值指定为 20,请创建一个结构体,其中包含名为 StopTime 的字段,该字段的值为 "20"

paramStruct.StopTime = "20";
out = sim("ModelName",configSet);

使用 Simulink.ConfigSet 对象指定模型配置参数值。

通过发出仿真命令来运行和控制仿真

当您从用户界面(如 Simulink 编辑器)启动仿真时,或通过使用 set_param 函数发出仿真命令时,您可以:

  • 通过使用 set_param 函数发出仿真命令来控制仿真和与之交互。

  • 使用 get_param 函数查询仿真状态。

当您在仿真期间发出仿真命令时,软件不会立即执行该命令。软件仅在当前运行的不可中断的进程完成后发出命令。例如,如果您发出一个仿真命令时求解器正在确定下一时间步,则软件仅在求解器完成传播时间后才执行该仿真命令。

并非 Simulink 编辑器中的所有可用操作都有对应的仿真命令。下表描述每个仿真命令以及对应的用户界面操作和键盘快捷方式。

仿真命令 描述等效用户界面操作键盘快捷方式
set_param(mdl,"SimulationCommand","start");

开始仿真。

点击运行

Ctrl+TF5

set_param(mdl,"SimulationCommand","stop");

停止仿真。

点击停止

Ctrl+Shift+T

set_param(mdl,"SimulationCommand","pause");

暂停仿真。

点击暂停

Ctrl+TF5

set_param(mdl,"SimulationCommand","continue");

继续暂停的仿真。

点击继续

Ctrl+TF5

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™ 进行仿真。

另请参阅

函数

对象

相关主题