主要内容

通过使用原子盒重用函数

一个原子的盒子是一个图形对象,帮助您封装图形,真值表,MATLAB®,以及Sim金宝appulink®函数在单独的名称空间中。在独立的statflow中不支持原子盒金宝app®MATLAB中的图表。原子盒允许:

  • 对具有多个状态或层次结构的图表中的函数进行小更改后,模拟速度更快

  • 跨多个图表和模型重用相同的功能

  • 对于在同一图表的不同部分工作的人员来说,易于团队开发

  • 手动检查图表中特定功能的生成代码

原子框看起来不透明,包括标签原子在左上角。如果使用库中的链接原子框,则标签链接显示在左上角。

原子盒子的例子

这个示例展示了如何使用链接原子框跨多个图表和模型重用图形函数。

这个函数取得时间在库模型的图表中定义sf_timer_utils_lib.图形化函数返回C图表中的仿真时间,其中等效的MATLAB®函数getSimulationTime不可用。

该模型sf_timer_function_calls由两个结构相似的图表组成。每个图表包含一对状态(一个而且B)和原子盒(时间)链接到图书馆的图表。处于状态的输入操作一个调用函数取得时间并将其值存储为t0.保护过渡的条件一个B再次调用函数,并将其输出与参数进行比较T

顶层模型sf_timer_modelref在多个引用块中重用计时器函数。因为没有导出函数,所以可以在顶层模型中使用引用块的多个实例。

使用原子盒的好处

原子框结合了普通框和原子子图的功能。原子框:

  • 改进复杂图表的组织和清晰度。

  • 金宝app支持作为库链接使用。

  • 金宝app支持可重用代码的生成。

  • 允许映射输入、输出、参数、数据存储内存和输入事件。

原子盒只包含函数。它们不能包含状态。向原子框添加状态会导致编译时错误。

要从原子框之外的位置调用位于原子框中的函数,请使用点表示法指定其完整路径:

atomic_box_namefunction_name
使用函数调用的完整路径:

  • 明确对链接原子框中函数的依赖关系。

  • 避免全局名称空间的污染。

  • 不会影响所生成代码的效率。

创建一个原子盒子

可以通过转换现有框或从库模型链接图表来创建原子框。创建原子框之后,通过右键单击原子框并选择来更新变量的映射子图表映射.有关更多信息,请参见原子子图和框的映射变量

将普通盒子转换为原子盒子

若要为函数创建允许更快调试和代码生成工作流的容器,请将现有盒子转换为原子盒子。在图表中,右键单击一个普通框并选择组子图>原子子图表.标签原子显示在方框的左上角。

转换过程为原子框提供了它在图表中访问的每个数据对象的副本。本地数据复制为数据存储内存。其他数据(包括输入和输出数据)的范围不会改变。

请注意

如果框包含任何状态或消息,则不能将其转换为原子框。

从库中链接一个原子框

若要创建用于跨多个图表和模型重用的函数集合,请从库模型创建链接。复制库模型中的图表,并将其粘贴到另一个模型中的图表。如果库图只包含函数而不包含状态,则显示为带有标签的链接原子框链接在左上角。

这种建模方法最大限度地减少了对可重用函数的维护。当您在库中修改原子框时,您的更改将传播到所有图表和模型中的链接。

如果库图包含任何状态,则它将显示为图中的链接原子子图。有关更多信息,请参见使用原子子图创建可重用的子组件

将原子盒转换为普通盒

将原子盒子转换回普通盒子,通过将子图表父数据对象与它们映射到的图表父数据合并,可以移除其所有变量映射。

  1. 如果原子框是库链接,右键单击原子框并选择库链接>禁用链接

  2. 若要将原子框转换为子图框,请右键单击原子框并清除组子图>原子子图表复选框。

  3. 若要将子图框转换回普通框,请右键单击子图并清除组子图>子图表复选框。

  4. 如有必要,请重新排列图表中的图形对象。

在以下情况下,不能将原子盒转换为普通盒:

  • 原子框将参数映射到一个表达式,而不是单个变量名。例如,映射一个参数data1To可以阻止原子盒转换为普通盒:

    • 3.

    • data2 (3)

    • 数据2 + 3

  • 这两个条件都成立:

    • 原子盒包含MATLAB函数或使用MATLAB作为动作语言的真值表函数。

    • 原子框不会将每个变量映射到主图表中同名的变量。

什么时候使用原子盒

增量调试函数

假设您想测试对函数库的一系列更改。函数是包含许多状态或层次结构的图表的一部分,因此重新编译整个图表可能需要很长时间。如果在原子方框中定义函数,则只会对方框进行重新编译,而不会对整个图表进行重新编译。有关更多信息,请参见减少图表的编译时间

重用功能

假设您有一组用于多个图表和模型的函数。这些函数位于库模型中,以便更容易地进行配置管理。要在另一个模型中使用函数,您可以:

  • 配置库图以导出函数,并在模型中创建到库图的链接。

  • 将库图表链接为模型的每个图表中的原子框。

使用这些函数的模型可以作为顶层模型中的引用块出现。导出函数时,每个顶级模型只能使用该引用块的一个实例。有关更多信息,请参见模型参考要求和限制(金宝app模型)

使用原子盒,您可以避免这种限制。因为图表中没有导出函数,所以可以在顶层模型中使用引用块的多个实例。

开发多人使用的图表

假设有很多人在处理图表的不同部分。如果将每个函数库存储在一个链接的原子盒中,不同的人可以在不同的库上工作,而不会影响图表的其他部分。有关更多信息,请参见把图表分成独立的单元

检查生成的代码

假设您想检查由金宝app仿真软件编码器™或嵌入式编码器®手动指定特定功能。可以指定原子框的代码出现在单独的文件中,以避免搜索不相关的代码。有关更多信息,请参见从原子子图生成代码

相关的话题