为模型层次结构选择仿真模式
在仿真模型层次结构时,应考虑顶层模型和引用模型的执行方式。
顶层模型 - 支持所有 Simulink® 仿真模式。要加速顶层模型的执行,您可以使用 Simulink 加速或快速加速模式。
引用模型 - 虽然您可以为模型指定任何仿真模式,但当您引用该模型时,被引用模型的每个实例的 Model 模块将决定该实例的仿真模式。父模型的仿真模式可以覆盖 Model 模块的仿真模式。
有关仿真模式的信息,请参阅选择仿真模式和加速模式的工作原理。
有关为模型层次结构中的模型选择求解器的信息,请参阅设置模型层次结构的配置参数。
模型引用的仿真模式
您可以为 Model 模块指定以下任一仿真模式:
普通
加速
软件在环 (SIL) - 需要 Embedded Coder®
处理器在环 (PIL) - 需要 Embedded Coder
当您在普通模式和加速模式之间进行选择时,您必须在灵活性和速度之间进行权衡。普通模式支持引用模型中较多的 Simulink 和 Stateflow® 功能,例如示波器、端口值显示和调试工具。加速模式支持引用模型中较少的功能,但对层次模型的仿真速度更快。
建模要求 | 普通模式 | 加速模式 |
---|---|---|
仿真速度 | 模型在普通模式下的执行速度比在加速模式下更慢。但是,在普通模式下执行引用模型时,不用在构建和编译仿真目标后再进行仿真,因为普通模式是以解释方式执行引用模型的。 | 模型在加速模式下的执行速度比在普通模式下更快。在仿真模型之前,Simulink 必须构建和编译仿真目标,这对于原型构建可能是不理想的。有关详细信息,请参阅 管理引用模型的仿真目标。 |
调试 | 使用 Simulink 调试器,您可以在以普通模式执行的引用模型中设置断点。有关详细信息,请参阅 以编程方式调试仿真。 使用 Simulink 探查器,您可以为以普通模式执行的引用模型启用探查。对父模型启用探查并不会对引用模型进行探查。请参阅Simulink 探查器如何捕获性能数据。 | 对于在加速模式下执行的引用模型,会忽略 Simulink 调试器和 Simulink 探查器进行的设定和采取的操作。 |
测试 | Simulink Coverage™ 模型覆盖率分析支持在普通模式下执行的引用模型。 | Simulink Coverage 模型覆盖率分析会忽略在加速模式下执行的引用模型。 |
可调性 | 您可以在仿真过程中为以普通模式执行的引用模型调整模块参数。 | 对于在加速模式下执行的引用模型,如果引用模型使用基础工作区中的变量或数据字典来设置参数值,则可以对变量的值进行调节。您在仿真期间不能对引用模型中的模块参数进行调节。有关详细信息,请参阅特定建模情形下的可调整性注意事项和限制。 |
数据日志记录 | 数据记录为在普通模式下执行的引用模型提供广泛的支持。 | 对于在加速模式下执行的引用模型,To Workspace 模块仅当它们使用 |
数据可视化 | 您可以使用仿真数据检查器查看引用模型的所有实例的仿真结果。 您可以查看引用模型中具有 Display 模块的每个实例的特定于实例的仿真结果。 示波器和端口值标签仅显示启用普通模式可见性的引用模型实例的数据。 有关详细信息,请参阅 Simulate Multiple Referenced Model Instances in Normal Mode。 | 您可以使用仿真数据检查器查看引用模型的所有实例的仿真结果。 这些可视化方法不显示在加速模式下执行的引用模型的数据。
如果您使用查看器和生成器管理工具在引用模型中添加测试点,顶层模型 Scope 模块可以显示在加速模式下执行的引用模型的数据。添加或删除测试点需要为模型重新构建模型引用仿真目标。 |
诊断 | 根据指定的设置应用配置参数设置。 | 对于在加速模式下引用的模型,Simulink 可以忽略一些配置参数设置。有关详细信息,请参阅在加速模式下忽略的诊断。 |
运行时检查 | 运行时检查已启用。 | 有些模块包括运行时检查,当在加速模式下的引用模型中包含该模块时,这些运行时检查将被禁用。这些模块的示例包括 Assignment、Selector、MATLAB Function 和 MATLAB System 模块。 |
线性化分析和优化 | 普通模式允许引用模型的逐模块线性化,这样可以实现准确的线性化。 | 在加速模式下,模型引用的离散状态不会被线性化。在线性化过程中,这些离散状态不会被扰动,因此它们在配平过程中并不是真的自由。 在配平期间,随机模块的输出会发生变化。不能保持不变的输出可能会影响优化过程。 |
外部函数 | 在普通模式下执行的引用模型中的 MATLAB Function 模块可以调用针对代码生成声明为外部函数的 MATLAB® 函数。 | 在加速模式下执行的引用模型中的 MATLAB Function 模块不能调用为代码生成而声明为外部函数的 MATLAB 函数。 |
S-Function | 在普通模式下执行的引用模型比在加速模式下执行的引用模型支持更多的 S-Function。有关详细信息,请参阅引用模型中的 S-Function。 | 在加速模式下执行的引用模型比在普通模式下执行的引用模型支持更少的 S-Function。有关详细信息,请参阅引用模型中的 S-Function。 |
SIL 和 PIL 仿真模式通过为嵌入式处理器生成生产代码来执行引用模型。SIL 模式为 PIL 仿真提供方便的替代方案,因为当目标硬件不可用时,它可以在主机平台上运行。有关详细信息,请参阅 SIL 和 PIL 仿真 (Embedded Coder)。
覆盖的仿真模式
父模型的仿真模式可以覆盖 Model 模块的仿真模式。下表显示基于父模型和相关 Model 模块的仿真模式,软件对引用模型实例使用的仿真模式。
父模型使用的仿真模式 | Model 模块的仿真模式 | |
---|---|---|
普通 | 加速 | |
普通 | 兼容 - 引用模型在普通模式下仿真。 | 兼容 - 引用模型在加速模式下仿真。 |
加速 | 覆盖 - 引用模型在加速模式下仿真。 | 兼容 - 引用模型在加速模式下仿真。 |
快速加速(仅限顶层模型) |
有关 SIL 和 PIL 的信息,请参阅Simulation Mode Override Behavior in Model Reference Hierarchy (Embedded Coder)。
要手动覆盖模型引用仿真模式而不弄脏任何模型,请参阅Override Model Reference Simulation Modes。