文档

组件化原则

组件化

组件是设计的一部分、单元级项或子组件,您可以在不需要模型的更高级别部分的情况下对其进行处理。

组件化包括将模型组织成组件。组件化为开发大型Simulink的组织提供了许多好处万博1manbetx®由许多功能部件组成的模型。带来的好处包括:

  • 满足开发过程的要求,如:

    • 组件重用

    • 团队的发展

    • 知识产权保护

    • 单元测试

  • 提高性能:

    • 模型加载

    • 仿真速度

    • 内存使用情况

组件化技术

在Simulink中可以使用的关键组件化技术包括:万博1manbetx

  • 子系统

  • 模型参考

这些组件化技术支持大小和复杂性不同的模型的广泛建模需求。万博1manbetx大多数大型模型使用组件化技术的组合。例如,您可以在引用的模型中包含子系统,也可以在子系统中包含引用的模型。另一个例子是,大型模型可能在顶层组件分区中使用模型引用Accelerator块,而在较低的层次中混合使用模型引用Accelerator和原子子系统库。

万博1manbetxSimulink提供了从子系统到模型引用的转换工具。由于子系统和模型引用之间的差异,从子系统转换到模型引用可能涉及几个步骤(参见将子系统转换为引用模型).考虑可伸缩性和对预期的未来建模需求的支持,例如模型万博1manbetx的大小和复杂性如何增长,以及可能的代码生成需求。设计一个可伸缩的体系结构可以避免以后的转换成本。

一般组件化原则

这个表提供了关于建模目标和模型类型的高级指导方针,子系统、库和模型引用都特别适合这些目标和模型。

组件化技术 该技术非常适合的建模目标

子系统

  • 添加层次结构来组织和可视化地简化模型。

  • 对上下文相关的行为使用继承属性最大化设计重用。

  • 提供一个经常使用、很少更改的建模实用程序。

  • 在一个模型或多个模型中重复重用组件。

模型参考

  • 开发一个独立于使用它的模型的引用模型。

  • 模糊引用模型的内容,允许您在不透露它所包含的知识产权的情况下发布它。

  • 多次引用一个模型,而不必进行冗余复制。

  • 通过定义顶级组件的接口,方便多人进行更改。

  • 通过为大型模型(例如,一个包含10,000块的模型)使用增量模型加载、更新图、模拟和代码生成来提高整体性能。

  • 执行单元测试。

  • 简化大型模型的调试。

  • 生成反映模型结构的代码。

有关这些建模技术的更详细比较,请参见组件化技术综述

组件化技术综述

本节比较子系统、库和模型引用。该表包括关于一系列建模需求和特性的建议和注释。

建模需求或特性 子系统 模型参考

开发过程

组件重用

不支持万博1manbetx

适合

适合

团队的发展

不支持万博1manbetx

万博1manbetx支持,限制

适合

知识产权保护

不支持万博1manbetx

不支持万博1manbetx

适合

单元测试

万博1manbetx支持,限制

万博1manbetx支持,限制

适合

性能

模型加载速度

万博1manbetx支持,限制

适合

适合

大型模型的仿真速度

万博1manbetx支持,限制

万博1manbetx支持,限制

适合

内存

万博1manbetx支持,限制

万博1manbetx支持,限制

适合

人工代数回路避免

适合

适合

万博1manbetx支持,限制

特性

信号财产继承

适合

适合

万博1manbetx支持,限制

状态初始化

适合

适合

万博1manbetx支持,限制

可调谐性

适合

适合

万博1manbetx支持,限制

公共汽车

适合

适合

万博1manbetx支持,限制

S-functions

适合

适合

万博1manbetx支持,限制

模型配置设置

适合

适合

万博1manbetx支持,限制

工具

适合

万博1manbetx支持,限制

万博1manbetx支持,限制

代码生成

万博1manbetx支持,限制

万博1manbetx支持,限制

适合

对于每种建模技术,您都可以看到一个汇总表,其中包含了以上组件化技术汇总表中的链接中包含的更详细的信息:

子系统概要

本节为本文中突出显示的每个建模需求和特性提供了使用子系统的指南组件化技术综述

有关子系统的更多信息,请参见:

建模需求或特性 指南子系统

开发过程

组件重用

不支持万博1manbetx

  • 复制一个子系统以在模型中重用它。

  • 子系统副本彼此独立。

  • 通过保存包含子系统的模型来保存子系统。

  • 子系统的配置管理是困难的。

团队的发展

不支持万博1manbetx

  • 对于模型中的子系统,Simulink不提供与源代码控制万博1manbetx工具的直接接口。

  • 要创建或更改一个子系统,您需要打开父模型的文件。当多人想要在一个模型中的多个子系统上工作时,这可能会导致文件争用。

知识产权保护

不支持万博1manbetx

使用模型引用受保护的模型。

单元测试

万博1manbetx支持,限制

  • 对于覆盖率测试,使用Signal Builder和源块。

  • 每当一个子系统发生更改时,您都需要将该子系统复制到一个利用模型中。

  • 由于虚拟边界的原因,测试工具可能有不同的Simulink排序顺序。万博1manbetx

  • 测试工具文件需要配置管理开销。

性能

模型加载速度

万博1manbetx支持,限制

加载一个模型同时加载所有的子系统。没有增量加载。

大型模型的仿真速度

万博1manbetx支持,限制

  • 要加速模拟,请使用加速器或快速加速器模拟模式。

  • 仿真模式适用于整个模型。模型引用为模拟模式提供了更精细的控制级别。

内存

万博1manbetx支持,限制

用于模拟和代码生成的内存使用量与子系统和库相当。对于拥有超过500个块的模型,模型参考Accelerator模式可以显著减少模拟和代码生成的内存使用。

人工代数回路避免

适合

  • 虚拟子系统避免了人工代数循环。

  • 对于非虚拟子系统,考虑启用子系统块参数最小化代数循环的发生

特性

信号财产继承

适合

  • 从子系统边界外继承信号属性可以避免为每个信号指定属性。

  • 信号属性的传播可能导致Simulink使用您没有预料到的信号属性。万博1manbetx

状态初始化

适合

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

可调谐性

适合

  • 使用块参数化或屏蔽子系统调优子系统。

  • 使用配置参数>优化>默认参数的行为

公共汽车

适合

子系统不需要为虚拟总线使用总线对象。

S-functions

适合

子系统支持内联或非线性万博1manbetxs函数。

模型配置设置

适合

子系统使用包含子系统的模型的模型配置设置。

工具

适合

子系统为Simulink工具提供了广泛的支持。万博1manbetx万博1manbetx

代码生成

万博1manbetx支持,限制

  • 要单独为子系统生成代码,右键单击子系统块并选择代码生成选项。

  • 作为一种优化,Simulink试图识别相万博1manbetx同的子系统。对于检测到的相同子系统,生成的代码只包含多个子系统的一个代码副本。

  • 对于虚拟子系统,不能为代码生成指定文件或函数代码分区。

图书馆的总结

本节提供了为本文中突出显示的每个建模需求和特性使用库的指南组件化技术综述

有关库的更多信息,请参见

建模需求或特性 指南库

开发过程

组件重用

适合

  • 访问定义良好的实用程序块的集合。

  • 只创建一次组件并在模型中重用它。

  • 多次链接到同一个库块,但不要创建多个副本。

  • 从多个模型链接到同一个库块。

  • 限制对库组件的写访问。

  • 维护一个事实:将单个库块的更改传播到链接到该库的所有块。

  • 禁用链接以允许对链接块进行独立更改。

  • 管理库链接会增加一些开销。

  • 将库保存在类似于Simulink模型的文件中,但不能模拟文件内容。万博1manbetx

  • 通过定义组件外部的数据(例如,公共父子系统中的数据存储),在实例之间共享数据。

团队的发展

万博1manbetx支持,限制

  • 将库文件置于版本控制和配置管理的源控制中。

  • 维护一个事实:将单个库块的更改传播到链接到该库的所有块。

  • 为了减少文件争用,每个库使用一个子系统。

  • 从多个模型链接到同一个库块。

  • 限制对库组件的写访问。

  • 看到一般可重用性的限制

知识产权保护

不支持万博1manbetx

使用模型引用受保护的模型。

单元测试

万博1manbetx支持,限制

  • 对于覆盖率测试,使用Signal Builder和源块。

  • 由于虚拟边界的原因,测试工具可能有不同的Simulink排序顺序万博1manbetx。

  • 测试工具文件需要配置管理开销。

性能

模型加载速度

适合

万博1manbetx在编辑、更新图表或模拟模型期间,Simulink会在需要的时候增量地加载库。

大型模型的仿真速度

万博1manbetx支持,限制

  • 要加速模拟,请使用加速器或快速加速器模拟模式。

  • 仿真模式适用于整个模型。模型引用为模拟模式提供了更精细的控制级别。

内存

万博1manbetx支持,限制

  • 万博1manbetx在编辑、更新图表或模拟模型期间,Simulink会在需要的时候增量地加载库。

  • 万博1manbetxSimulink在块更新期间复制库块实例。

  • 用于模拟和代码生成的内存使用量与子系统和库相当。对于拥有超过500个块的模型,模型参考Accelerator模式可以显著减少模拟和代码生成的内存使用。

人工代数回路避免

适合

  • 虚拟子系统避免了人工代数循环。

  • 对于非虚拟子系统,考虑启用子系统块参数最小化代数循环的发生

特性

信号财产继承

适合

  • 从库块边界之外继承信号属性可以避免为每个信号指定属性。

  • 信号属性的传播可能导致Simulink使用您没有预料到的信号属性。万博1manbetx

状态初始化

适合

可以初始化库块的状态。

可调谐性

适合

  • 使用块参数化或屏蔽子系统调优库块。

  • 使用配置参数>优化>默认参数的行为

公共汽车

适合

库不需要为虚拟总线使用总线对象。

S-functions

适合

库支持内联和非内联s万博1manbetx函数。

模型配置设置

适合

  • 库模型没有模型配置设置。

  • 引用的库块使用包含该块的模型的模型配置设置。

工具

万博1manbetx支持,限制

使用一些Simulink工具(如Model Advisor)和库有一些限制。万博1manbetx

代码生成

万博1manbetx支持,限制

  • 作为一种优化,Simulink试图识别相万博1manbetx同的子系统。对于检测到的相同子系统,生成的代码只包含多个子系统的一个代码副本。

  • 对于虚拟子系统,不能为代码生成指定文件或函数代码分区。

模型参考总结

本节提供了使用模型引用的指导方针,以满足本文中突出显示的每个建模需求和特性组件化技术综述

有关模型引用的其他信息,请参见:

建模需求或特性 参考模型的指引

需求开发过程

组件重用

适合

  • 只创建一次独立组件,然后在多个模型中重用它。

  • 多次引用同一个模型而不创建多个副本。

  • 从多个模型中引用相同的模型。

  • 模型引用使用指定的边界来保持组件的完整性。

  • 在实例之间共享数据(模型块),方法是在模型中创建一个数据存储。看到指定引用模型的可重用性

团队的发展

适合

  • 对于版本控制和配置管理,您可以将模型引用文件放置在源代码控制系统中。

  • 独立于引用模型设计、创建、模拟和测试引用模型。

  • 链接到来自多个模型的相同模型引用。

  • 对引用模型所做的更改将应用于该引用模型的所有实例。

  • 万博1manbetxSimulink不限制更改模型引用的访问。

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

知识产权保护

适合

  • 使用受保护模型特性来模糊分布式模型中引用模型的内容。

  • 创建受保护模型特性需要万博1manbetx仿真软件编码器许可证。使用受保护的模型就可以了需要一个万博1manbetx仿真软件编码器许可证。

单元测试

适合

  • 通过独立地模拟组件,独立地测试组件以隔离行为。

  • 您可以消除对未更改组件的单元重测。

  • 使用数据定义的测试工具,用MATLAB测试矢量和直接覆盖收集。

  • 对于覆盖率测试,使用根导入和输出端口。

性能

模型加载速度

适合

  • 万博1manbetx在编辑、更新图表或模拟模型期间,Simulink会在需要的时候增量地加载一个引用模型。

  • 如果需要模拟目标构建,第一次加载可能会很慢。

大型模型的仿真速度

适合

  • 独立地模拟引用的模型。

  • Model块有一个用于指定模拟模式的选项。

  • 属性的适当设置可以提高重构性能配置参数>模型参考>重建参数。

  • 通过代码生成的模拟可能有一个缓慢的启动时间,这可能是不希望在原型过程中出现的。

  • 看到模拟的局限性

内存

适合

  • 万博1manbetx在编辑、更新图表或模拟模型期间,导航需要模型时,Simulink会加载一个引用模型。

  • 使用模型引用加速器模式来减少内存使用,增量加载被引用模型的编译版本。

人工代数回路避免

万博1manbetx支持,限制

考虑启用配置参数>模型参考>最小化代数循环的发生

特性

信号财产继承

万博1manbetx支持,限制

  • 当被引用的模型与样本时间无关时,继承样本时间。您不能将连续的样本时间传播到与样本时间无关的Model块。

  • 模型块是上下文独立的,所以它不能继承信号属性。显式设置输入和输出信号属性。

  • 使用总线对象定义传递到引用模型的总线信号的信号数据类型。

  • Goto和From块线不能跨越模型引用边界。

  • 看到指数基础上的局限性

状态初始化

万博1manbetx支持,限制

  • 您可以从顶部模型初始化状态。

  • 使用结构格式或带有时间格式的结构来初始化顶级模型及其引用的模型的状态。

  • 使用SimState(仿真状态)功能与模型引用,在正常模式下模拟所有模型块。

  • 看到参考模型的状态信息

可调谐性

万博1manbetx支持,限制

  • 要使引用模型的每个实例使用不同的值,请在model块中使用模型参数。

  • 要使引用模型的每个实例使用相同的值,请使用万博1manbetx仿真软件。参数对象。

  • 默认情况下,所有其他参数都内联在生成的代码中。

公共汽车

万博1manbetx支持,限制

您必须为跨引用模型边界的总线信号(例如,全局数据存储、根导入端口、根输出端口)使用总线对象。

S-functions

万博1manbetx支持,限制

模型引用通常支持内联或非线性s函数。万博1manbetx看到与参考型号一起使用s函数

模型配置设置

万博1manbetx支持,限制

  • 要将相同的模型配置设置应用到模型层次结构中的所有模型,请使用引用的配置集。

  • 根模型和引用模型的配置设置必须一致。然而,不是所有的配置设置都需要在模型层次结构中相同。

工具

万博1manbetx支持,限制

  • 使用带有模型引用的Simulink工具(如Simulink Debugger)有一些万博1manbetx限制。

  • 有关详细信息,请参见工具的局限性

代码生成

适合

  • 默认情况下,模型引用以增量方式生成代码。

  • 属性的适当设置可以提高重构性能配置参数>模型参考>重建参数。

  • 模型引用需要使用总线对象。信息,请参阅总线数据交叉模型引用边界

相关的例子

更多关于

这个话题有用吗?