比较模型组件的功能
在您使用特定类型的模型组件实现系统的一部分之前,请考虑组件类型是否满足您的建模需求。
提示
要根据高级指导方针和用例确定要考虑的组件类型,请参见在模型组件类型中进行选择.
组件的考虑 | 建模需求 |
---|---|
开发过程 |
|
性能需求 |
|
特性 |
|
请注意
关于代码生成的注意事项,请参见:
子系统(仿真软件编码器)
为模型引用层次结构生成代码(仿真软件编码器)
为快速原型部署设计模型(仿真软件编码器)
将嵌入式系统架构映射到Simulink建模环境(嵌入式编码)
开发过程
建模的要求 | 子系统 | 相关子系统 | 子系统的引用 | 模型引用 |
---|---|---|---|---|
单独的文件 | 不支持 将子系统保存在与其父文件相同的文件中。 要创建或更改子系统,必须编辑父文件,这可能会导致文件争用和合并问题。 |
支持 将链接块的父库块保存在单独的文件中。 使用单独的文件有助于避免文件争用。 |
支持 将引用的子系统保存在单独的文件中。 使用单独的文件有助于避免文件争用。 |
支持 将引用的模型保存在单独的文件中。 使用单独的文件有助于避免文件争用。 |
组件重用 | 不支持 虽然您可以复制一个子系统以在模型中重用它,但副本是彼此独立的。 |
支持 您可以在多个模型中多次链接到同一个父库块,而无需创建副本。 管理库链接会增加一些开销,比如管理损坏的、禁用的或参数化的链接。 |
支持 您可以在多个模型中多次引用同一个子系统,而无需创建副本。 |
支持 您可以在多个模型中多次引用相同的模型,而无需创建副本。看到模型重用. |
共享数据 | 支持 通过在组件外部定义数据,可以在实例之间共享数据。例如,通过在公共父子系统中使用数据存储。 |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 通过在模型中创建数据存储,您可以在引用模型的实例之间共享数据。看到在引用的模型实例之间共享数据. |
特定于编辑 | 支持 子系统副本彼此独立。 |
支持 编辑父库块时,更改应用于库文件并传播到链接到该库块的所有块。 要编辑块的实例,可以禁用库链接。 当父库块有限制写访问时,不能禁用库链接。 |
不支持 当您编辑一个被引用子系统的实例时,更改应用于子系统文件并传播到被引用子系统的所有其他实例。 |
不支持 当您编辑一个引用模型的实例时,更改应用于模型文件并传播到引用模型的所有其他实例。 您可以为引用的模型指定特定于实例的参数值。有关更多信息,请参见参数化可重用引用模型的实例. |
变体 | 支持 向a中添加子系统变量不同的子系统或变体模型块。 有关更多信息,请参见定义、配置和激活一个变量子系统块中的变量选择. |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 向a中添加模型变量不同的子系统或变体模型块。 有关更多信息,请参见定义、配置和激活一个变量子系统块中的变量选择. |
版本控制和配置管理 | 不支持 您不能直接将子系统放在源代码控制系统中。 要减少文件争用并为每个子系统使用单独的版本控制,请使用子系统引用。 |
支持 您可以将库文件放在源代码控制系统中。 要为每个库块提供单独的版本控制,请使用库中的子系统引用和模型引用。当您将这些块从库拖到模型中时,它们引用子系统文件或模型文件。 转发表允许您将旧的库块映射到新版本的块。 |
支持 您可以将子系统文件放在源代码控制系统中。 |
支持 您可以将模型文件放在源代码控制系统中。 |
知识产权保护 | 不支持 使用模型引用代替。 |
不支持 与子系统的行为相同。 |
不支持 与子系统的行为相同。 |
支持 受保护的模型模糊了模型内容,这在分发模型时很有用。 创建受保护的模型需要动态仿真模块®编码器™许可证。有关更多信息,请参见保护模型以隐藏内容(仿真软件编码器). 使用受保护的模型可以不需要一个仿真软件编码器许可证。有关更多信息,请参见从第三方引用受保护的模型. |
单元测试 | 支持 子系统依赖于它们在模型中的上下文。如果子系统的上下文发生了变化,例如输入信号的数据类型,则必须更新相关的测试工具。 对于非原子的子系统,由于虚拟边界的关系,测试工具可能使用不同的块执行顺序。 有关支持编写、管理和执行系统的、基于仿真的子系统测试的工具,请参见创建测试工具并选择属性(仿真软件测试). 要度量模型组件测试的彻底程度,请参见模型覆盖(仿真软件覆盖). |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 您可以独立地测试引用模型,通过将其模拟为顶级模型来隔离行为。 您可以使用MATLAB中的数据定义测试工具®测试载体和直接覆盖收集。 有关支持编写、管理和执行系统的、基于仿真的子系统测试的工具,请参见创建测试工具并选择属性(仿真软件测试). 要度量模型组件测试的彻底程度,请参见模型覆盖(仿真软件覆盖). |
性能需求
建模的要求 | 子系统 | 相关子系统 | 子系统的引用 | 模型引用 |
---|---|---|---|---|
增量式模型加载 | 不支持 加载模型加载保存在模型中的所有子系统内容。 |
支持 在编辑、更新图表或模拟模型过程中,Simulink会在需要的地方增量地加载库。 |
支持 在编辑、更新图表或模拟模型期间,Simulink在所需的点上增量地加载一个引用子系统。 |
支持 在编辑、更新图表或模拟模型过程中,Simulink会在需要的地方增量地加载一个引用模型。 |
构建构件重用 | 不支持 构建工件,例如模拟目标,不是为子系统生成的。 |
不支持 与子系统的行为相同。 |
不支持 与子系统的行为相同。 |
支持 您可以使用Simulink缓存文件共享和重用构建工件,例如模拟目标。有关更多信息,请参见共享Simulink缓存文件以更快的模拟. |
减少大模型的内存使用 | 不支持 子系统不会减少模拟和代码生成的内存使用。 |
不支持 链接子系统不会减少模拟和代码生成的内存使用。 Simulink在块更新过程中复制库块实例。 |
不支持 子系统引用不会减少模拟和代码生成的内存使用。 Simulink在块更新期间复制子系统引用实例。 |
支持 加速模式下引用的模型减少了模拟和代码生成的内存使用量,因为Simulink会逐步加载它们的编译版本。 |
人工代数环消去 | 支持 非原子的子系统避免人工代数循环。 如果子系统是原子的,则可以通过启用子系统块参数最小化代数循环的出现. |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 您可以尝试通过启用来消除人工代数循环配置参数>模型参考>最小化代数循环的出现. |
特性
建模的要求 | 子系统 | 相关子系统 | 子系统的引用 | 模型引用 |
---|---|---|---|---|
兼容配置参数设置 | 支持 子系统使用包含它们的模型的配置参数设置。 |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 父模型及其引用模型的配置参数设置通常是不同的。有关兼容性信息,请参见为模型层次结构设置配置参数. |
接口信号属性规范 | 支持 可以在子系统接口上指定信号属性。 对于您没有指定的信号属性,子系统从它们的上下文继承信号属性。信号属性的传播可能导致Simulink使用您没有预料到的信号属性。 |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 您必须在引用的模型接口上指定大多数信号属性。 引用模型与上下文无关,具有定义的边界,因此它们不继承大多数信号属性。 当被引用模型与采样时间无关时,被引用模型可以继承离散的采样时间。 |
接口物理连接 | 支持 可以在子系统接口上指定物理连接。 |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
不支持 物理连接必须完全包含在引用的模型中。它们不能跨越模型接口。 |
总线规范 | 支持 你可以使用 子系统不需要使用 |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 你可以使用 的模型引用不需要使用 |
状态初始化 | 支持 您可以初始化子系统的状态。 |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 您可以使用结构格式或带时间的结构格式从顶层模型初始化状态。 |
条件执行 | 支持 子系统支持有条件执行。有关更多信息,请参见有条件执行子系统概述. |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 引用的模型支持条件执行。有关更多信息,请参见有条件地执行引用模型. |
基于事件的行为 | 支持 子系统支持基于事件的行为。有关更多信息,请参见使用Initialize, Reinitialize, Reset和Terminate函数. |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 引用模型支持基于事件的行为。有关更多信息,请参见使用Initialize, Reinitialize, Reset和Terminate函数. |
独立的功能 | 支持 你可以在子系统中定义独立的函数。有关更多信息,请参见动态仿真模块功能概述. |
支持 与子系统的行为相同。 |
支持 与子系统的行为相同。 |
支持 您可以在引用的模型中定义独立的函数。有关更多信息,请参见导出功能模型概述. |