通过使用原子盒重用函数
一个原子的盒子是一个图形对象,可以帮助您封装图形,真值表,MATLAB®,以及Sim金宝appulink®函数在单独的命名空间中。独立状态流不支持原子盒金宝app®在MATLAB中的图表。原子盒允许:
在对具有许多状态或层次结构的图表中的函数进行小更改后,更快地进行模拟
跨多个图表和模型重用相同的功能
对于在同一图表的不同部分工作的人来说,易于团队开发
手工检查图表中特定功能生成的代码
原子盒看起来不透明,并包含标签原子在左上角。如果使用库中的链接原子盒,则标签链接出现在左上角。
原子盒的例子
这个示例展示了如何使用链接原子盒在多个图表和模型之间重用图形函数。
这个函数取得时间
在库模型的图表中定义sf_timer_utils_lib
。图形函数返回C图中的仿真时间,其中等效的MATLAB®函数getSimulationTime
不可用。
该模型sf_timer_function_calls
由两个结构相似的图表组成。每个图表包含一对状态(一个
和B
)和原子盒(时间
)。状态中的入口动作一个
调用函数取得时间
并将其值存储为t0
。保护从过渡的条件一个
来B
再次调用函数并将其输出与参数进行比较T
。
顶级模特sf_timer_modelref
在多个引用块中重用计时器函数。因为没有导出函数,所以可以在顶层模型中使用引用块的多个实例。
使用原子盒的好处
原子盒结合了普通盒和原子子图的功能。原子框:
提高复杂图表的组织和清晰度。
金宝app支持作为库链接使用。
金宝app支持可重用代码的生成。
允许输入、输出、参数、数据存储内存和输入事件的映射。
原子盒只包含函数。它们不能包含状态。向原子盒添加状态会导致编译时错误。
要从原子盒之外的位置调用驻留在原子盒中的函数,请使用点符号指定其完整路径:
atomic_box_name。function_name
明确对链接原子框中函数的依赖关系。
避免污染全局命名空间。
不会影响生成代码的效率。
创建原子盒
您可以通过转换现有盒子或通过链接库模型中的图表来创建原子盒子。创建原子框之后,通过右键单击原子框并选择来更新变量的映射子图表映射。有关更多信息,请参见为原子子图和方框映射变量。
将普通盒子转换为原子盒子
若要为您的函数创建一个允许更快调试和代码生成工作流的容器,请将现有盒转换为原子盒。在图表中,右键单击普通框并选择分组和子图>原子子图表。标签原子显示在框的左上角。
转换过程为原子盒提供了它在图表中访问的每个数据对象的副本。将本地数据复制为数据存储内存。其他数据的范围,包括输入和输出数据,不改变。
请注意
如果一个盒子包含任何状态或消息,则不能将其转换为原子盒子。
从库中链接原子盒
要创建用于跨多个图表和模型重用的函数集合,请从库模型创建一个链接。复制库模型中的图表并将其粘贴到另一个模型中的图表。如果库图表只包含函数而不包含状态,则显示为带有标签的链接原子框链接在左上角。
这种建模方法最大限度地减少了对可重用功能的维护。当您修改库中的原子盒时,您的更改将传播到所有图表和模型中的链接。
如果库图表包含任何状态,则它在图表中显示为链接的原子子图表。有关更多信息,请参见通过使用原子子图创建可重用的子组件。
将原子盒转换为普通盒
通过将子图表父数据对象与它们所映射的图表父数据合并,将原子盒转换回普通盒将删除其所有变量映射。
如果原子框是库链接,请右键单击原子框并选择库链接>禁用链接。
要将原子框转换为子图表框,请右键单击原子框并清除分组和子图>原子子图表复选框。
若要将子图表框转换回普通框,请右键单击子图表并清除分组和子图>子图表复选框。
如有必要,重新排列图表中的图形对象。
在下列情况下,不能将原子盒转换为普通盒:
原子盒将参数映射到表达式,而不是单个变量名。例如,映射一个参数
data1
转换为下列表达式之一,可防止将原子盒转换为普通盒:3.
data2 (3)
数据2 + 3
这两个条件都为真:
原子盒包含使用MATLAB作为动作语言的MATLAB函数或真值表函数。
原子盒不会将每个变量映射到主图表中同名的变量。
何时使用原子盒
增量调试功能
假设您想测试对函数库的一系列更改。函数是包含许多状态或多个层次结构的图表的一部分,因此重新编译整个图表可能需要很长时间。如果在原子盒中定义函数,则只会对原子盒重新编译,而不会对整个图表重新编译。有关更多信息,请参见减少图表的编制时间。
重用功能
假设您有一组用于多个图表和模型的函数。这些功能驻留在库模型中,以便更容易地进行配置管理。要在另一个模型中使用这些函数,您可以:
配置库图以导出功能,并在模型中创建到库图的链接。
将库图表链接为模型的每个图表中的原子盒。
使用这些函数的模型可以在顶级模型中作为引用块出现。当导出函数时,您只能为每个顶级模型使用该引用块的一个实例。有关更多信息,请参见模型参考要求和限制(金宝app模型)。
使用原子盒,您可以避免这种限制。因为图表中没有导出函数,所以您可以在顶部模型中使用引用块的多个实例。
开发多人使用的图表
假设有很多人在处理图表的不同部分。如果将每个函数库存储在链接的原子盒中,则不同的人可以使用不同的库,而不会影响图表的其他部分。有关更多信息,请参见将图表划分为不同的单元。
检查生成的代码
生成的代码金宝app仿真软件编码器™或嵌入式编码器®手动执行特定功能。可以指定原子盒的代码出现在单独的文件中,以避免搜索不相关的代码。有关更多信息,请参见从原子子图生成代码。