Main Content

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

管理引用模型的仿真目标

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

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

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

  • 当您更新引用模型的直接或间接父模型的图或仿真模型层次结构时,仿真目标不存在。

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

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

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

注意

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

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

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

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

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

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

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

  • 在整个层次结构中的所有引用模型中,将信号解析配置参数设置为“仅显式”或“”。

  • 在模型层次结构的顶层模型中,将重新编译配置参数设置为“如果检测到已知依存关系的任何变化”。您也可以使用此参数指定 Simulink 始终或从不重新编译仿真目标。

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

指定仿真目标的编程语言

要为模型引用仿真目标指定编程语言,请使用“配置参数”对话框的仿真目标选项卡上的语言配置参数。

对仿真目标使用自定义代码

要在编译模型引用仿真目标时将自定义代码与 Stateflow®MATLAB Function 模块结合使用,请使用包含引用模型的自定义代码配置参数。

小心

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

控制仿真目标的位置

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

注意

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

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

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

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

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

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

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

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

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

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

C:\Work\MyModelSimCache

要仅针对当前 MATLAB 会话覆盖或还原仿真缓存文件夹预设项,请使用 Simulink.fileGenControl 函数。您使用 Simulink.fileGenControl 设置的值将在当前 MATLAB 会话结束时过期。

相关主题