Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

管理引用模型的仿真目标

仿真目标(也称为 SIM 目标)是一个自动生成的 MEX 文件,它实现在 Accelerator 模式下执行的引用模型。Simulink® 在仿真期间根据需要调用仿真目标,以计算引用模型的行为和输出。对于在 Accelerator 模式下执行的引用模型的所有实例,Simulink 都将使用相同的仿真目标。在 Normal 模式下执行的引用模型的实例不使用仿真目标。

为了创建模型引用仿真目标,Simulink 生成的代码对在 Accelerator 模式下执行的引用模型施加了一些要求和限制。除这些限制外,当您在 Accelerator 模式下执行引用模型时,通常可以忽略仿真目标。有关这些限制的信息,请参阅为模型层次结构选择仿真模式

默认情况下,如果出现以下情形,Simulink 会为在 Accelerator 模式下执行的引用模型生成仿真目标:

  • 当您更新直接或间接父级的图、仿真模型层次结构或为模型层次结构生成代码时,仿真目标不存在。

  • 仿真目标因引用模型中的结构性更改而过期。

生成仿真目标时,MATLAB® 命令行窗口会显示状态消息,以便您可以监控仿真目标生成过程。

要以编程方式编译模型引用仿真目标,请使用 slbuild 函数。

注意

如果您拥有 Simulink Coder™ 许可证,请注意不要将引用模型的仿真目标与以下类型的任何目标混淆:

  • 硬件目标 - Simulink Coder 为其生成代码的平台

  • 系统目标 - 告诉 Simulink Coder 如何为特定目的生成代码的文件

  • 快速仿真目标 (RSim) - Simulink Coder 附带的系统目标文件

  • 模型引用目标 - 包含引用模型的 Simulink Coder 代码的库模块

减少检查更改所花费的时间

通过按如下方式设置配置参数值,可以缩短 Simulink 检查是否需要重新生成仿真目标时所需要的时间:

  • 在整个层次结构中的所有引用模型中,将 Signal resolution 配置参数设置为 “Explicit only” 或 “None”。

  • 在模型层次结构的顶层模型中,将 Rebuild 配置参数设置为 “If any changes in known dependencies detected”。您也可以使用此参数指定 Simulink 始终或从不重新编译仿真目标。

这些参数存在于模型的配置集中;它们不是 Model 模块的参数。因此,为引用模型的任何实例设置这些参数都将应用于该模型的所有实例。

使用自定义代码

要在编译模型引用仿真目标时将自定义 C 代码与 Stateflow®MATLAB Function 模块结合使用,请使用 Include custom code for referenced models 配置参数。

小心

在 Accelerator 模式下对引用模型使用自定义 C 代码,所产生的结果不同于在不使用自定义代码的情况下仿真模型所得到的结果。如果自定义代码包含总线结构体声明或枚举结构体声明,且编译导致这些结构体的重复声明,则仿真目标生成将失败。此外,如果自定义代码使用表示总线或枚举的结构体,则可能会得到意外的仿真结果。

控制仿真目标的位置

Simulink 在当前文件夹的 slprj 编译文件夹中创建仿真目标。如果 slprj 文件夹不存在,Simulink 会创建它。

注意

Simulink Coder 代码生成也使用 slprj 文件夹。slprj 中的子文件夹为仿真代码、Simulink Coder 代码和其他文件提供了单独的位置。有关详细信息,请参阅管理编译过程文件夹 (Simulink Coder)

您可以将生成的文件放置在不同于当前工作文件夹的根文件夹中。此选项允许您:

  • 将生成的文件与用来生成这些文件的模型和其他资源分开存储。

  • 重用或共享以前编译的仿真目标,而不用将当前工作文件夹设置回上次使用的工作文件夹。

  • 将生成的仿真工件与生成的生产代码分开。

仿真缓存文件夹是放置仿真所用工件的根文件夹。

要指定要使用的仿真缓存文件夹而不是当前文件夹 (pwd),请在 Simulink Preferences > General 对话框中,通过输入或浏览到文件夹路径来设置 Simulation cache folder

此预设项为 MATLAB 会话参数提供初始默认值。

您也可以使用 set_param 函数设置 CacheFolder MATLAB 会话参数。

>> set_param(0, 'CacheFolder', fullfile('C:','Work','MyModelSimCache'))
>> get_param(0, 'CacheFolder')
ans =

C:\Work\MyModelSimCache

要仅针对当前 MATLAB 会话覆盖或还原 Simulation cache folder 预设项,请使用 Simulink.fileGenControl 函数。您使用 Simulink.fileGenControl 设置的值将在当前 MATLAB 会话结束时过期。

相关主题