Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

比较模型组件类型的功能

在使用特定组件类型实现系统的一部分之前,请考虑组件类型是否满足建模要求。

组件考虑事项建模要求
开发过程
  • 组件重用

  • 共享数据

  • 特定于实例的编辑

  • 版本控制和配置管理

  • 保护知识产权

  • 单元测试

性能要求
  • 增量模型加载

  • 编译工件重用

  • 降低大型模型的内存使用量

  • 消除人为代数环

功能
  • 兼容的配置参数设置

  • 接口上的信号属性设定

  • 总线设定

  • 状态初始化

  • 代码生成

开发过程

建模要求子系统链接子系统子系统引用模型引用
组件重用

不支持

虽然您可以复制子系统以在模型中重用它,但副本是相互独立的。

编辑子系统时,更改将应用于父模型文件。

要创建或更改子系统,您必须打开父模型,这可能在多人要在模型中工作时会导致文件争用。

支持

将链接模块的父库模块保存在链接该模块的模型之外的单独文件中。使用单独的文件有助于避免文件争用。

您可以在多个模型中多次链接到同一父库模块,而无需创建副本。

管理库链接会增加一些开销,例如管理断开的、禁用的或参数化的链接。

支持

将引用子系统保存在引用它的模型之外的单独文件中。使用单独的文件有助于避免文件争用。

您可以在多个模型中多次引用同一个子系统,而无需创建副本。

支持

将引用模型保存在引用它的模型之外的单独文件中。使用单独的文件有助于避免文件争用。

您可以在多个模型中多次引用同一模型,而无需创建副本。请参阅模型重用

共享数据

支持

通过在组件外部定义数据,可以在各实例之间共享数据。例如,通过使用公共父级子系统中的数据存储。

支持

与子系统行为相同。

支持

与子系统行为相同。

支持

通过在引用模型内创建数据存储,可以在引用模型的各实例之间共享数据。请参阅在引用模型实例之间共享数据

特定于实例的编辑

支持

子系统副本相互独立。

支持

编辑父库模块时,更改将应用于库文件,并传播到链接到该模块的所有模块。

要编辑模块的实例,可以禁用库链接。

当父库模块限制了写访问时,无法禁用库链接。

不支持

编辑引用子系统的一个实例时,更改将应用于子系统文件,并传播到引用子系统的所有其他实例。

不支持

编辑引用模型的一个实例时,更改将应用于模型文件,并传播到引用模型的所有其他实例。

版本控制和配置管理

不支持

您不能直接将子系统放在源代码管理系统中。

要减少文件争用并对每个子系统使用单独的版本控制,请使用子系统引用。

支持

您可以将库文件放在源代码管理系统中。

要为每个库模块提供单独的版本控制,请在库中使用子系统引用和模型引用。当您将这些模块从库中拖到模型中时,它们会引用子系统文件或模型文件。

转换表允许您将旧库模块映射到模块的新版本。

支持

您可以将子系统文件放在源代码管理系统中。

支持

您可以将模型文件放在源代码管理系统中。

保护知识产权

不支持

请改用模型引用。

不支持

与子系统行为相同。

不支持

与子系统行为相同。

支持

受保护模型会隐藏模型内容,这在分发模型时非常有用。

创建受保护模型需要 Simulink® Coder™ 许可证。使用受保护模型需要 Simulink Coder 许可证。

单元测试

支持

子系统依赖于它们在模型中的上下文。如果子系统的上下文发生变化,例如输入信号的数据类型,则必须更新相关测试框架。

对于非原子子系统,测试框架可能因虚拟边界而使用不同模块执行顺序。

有关支持编写、管理和执行基于仿真的系统性子系统测试的工具,请参阅Create Test Harnesses and Select Properties (Simulink Test)

要衡量模型组件测试的彻底程度,请参阅Model Coverage (Simulink Coverage)

支持

与子系统行为相同。

支持

与子系统行为相同。

支持

您可以独立测试引用模型,通过将其作为顶层模型进行仿真来隔离行为。

可以将数据定义的测试框架与 MATLAB® 测试向量和直接覆盖率集合结合使用。

有关支持编写、管理和执行基于仿真的系统性子系统测试的工具,请参阅Create Test Harnesses and Select Properties (Simulink Test)

要衡量模型组件测试的彻底程度,请参阅Model Coverage (Simulink Coverage)

性能要求

建模要求子系统链接子系统子系统引用模型引用
增量模型加载

不支持

加载模型会加载保存在模型中的所有子系统内容。

支持

在编辑、更新图或对模型进行仿真的过程中,Simulink 会在所需时间点以增量方式加载库。

支持

在编辑、更新图或对模型进行仿真的过程中,Simulink 会在所需时间点以增量方式加载引用子系统。

支持

在编辑、更新图或对模型进行仿真的过程中,Simulink 会在所需时间点以增量方式加载引用模型。

编译工件重用

不支持

编译工件,例如仿真目标,不是为子系统生成的。

不支持

与子系统行为相同。

不支持

与子系统行为相同。

支持

您可以使用 Simulink 缓存文件共享和重用编译工件,例如仿真目标。有关详细信息,请参阅 共享 Simulink 缓存文件以加快仿真速度

降低大型模型的内存使用量

不支持

子系统不会减少仿真和代码生成的内存使用量。

不支持

链接子系统不会减少仿真和代码生成的内存使用量。

Simulink 会在模块更新过程中复制库模块实例。

不支持

子系统引用不会减少仿真和代码生成的内存使用量。

Simulink 在模块更新期间复制子系统引用实例。

支持

Accelerator 模式中引用的模型可减少仿真和代码生成的内存使用量,因为 Simulink 以增量方式加载其编译版本。

消除人为代数环

支持

非原子子系统可避免人为代数环。

如果子系统是原子子系统,您可以尝试通过启用 Subsystem 模块参数 Minimize algebraic loop occurrences 来消除人为代数环。

支持

与子系统行为相同。

支持

与子系统行为相同。

支持

您可以尝试通过启用 Configuration Parameters > Model Referencing > Minimize algebraic loop occurrences 来消除人为代数环。

功能

建模要求子系统链接子系统子系统引用模型引用
兼容的配置参数设置

支持

子系统使用包含这些子系统的模型的配置参数设置。

支持

与子系统行为相同。

支持

与子系统行为相同。

支持

父模型及其引用模型的配置参数设置通常可能不同。有关兼容性信息,请参阅设置模型层次结构的配置参数

接口上的信号属性设定

支持

您可以在子系统接口上指定信号属性。

对于未指定的信号属性,子系统从其上下文继承信号属性。传播信号属性可能会导致 Simulink 使用您未预料到的信号属性。

支持

与子系统行为相同。

支持

与子系统行为相同。

支持

您必须在引用模型接口上指定大多数信号属性。

引用模型独立于上下文,它们具有定义的边界,因此不会继承大多数信号属性。

当引用模型不依赖于采样时间时,引用模型可以继承离散采样时间。

总线设定

支持

您可以使用 Simulink.Bus 对象来指定传入子系统的总线的数据类型。

子系统不要求对虚拟总线使用 Bus 对象。

支持

与子系统行为相同。

支持

与子系统行为相同。

支持

您可以使用 Simulink.Bus 对象来指定传入引用模型的总线的数据类型。

当您使用 In Bus ElementOut Bus Element 模块时,模型引用不要求对虚拟总线使用 Bus 对象。

状态初始化

支持

您可以初始化子系统的状态。

支持

与子系统行为相同。

支持

与子系统行为相同。

支持

您可以使用结构体格式或带时间的结构体格式从顶层模型初始化状态。有关详细信息,请参阅 State Information for Referenced Models

Code Generation

支持

有关子系统代码生成的信息,请参阅Control Generation of Functions for Subsystems (Simulink Coder)

支持

有关链接子系统代码生成的信息,请参阅Control Generation of Functions for Subsystems (Simulink Coder)

支持

与子系统行为相同。

支持

有关引用模型代码生成的信息,请参阅Generate Code for Model Reference Hierarchy (Simulink Coder)

相关主题