Main Content

以编程方式控制链接模块

链接模块信息

使用 libinfo 命令获取有关模型中链接模块的信息。libinfo 还提供有关链接模块的父级库模块的信息。

例如,以下是一个具有链接模块的模型:

Mask a Variant Subsystem

对此模块执行 libinfo(gcb) 命令时:

 Block: 'slexMaskVariantExample/VariantSubsystem2' %Linked block
           Library: 'slexMaskingVariants_libraryblock' %Parent library block
    ReferenceBlock: 'slexMaskingVariants_libraryblock/VariantSubsystem2'
        LinkStatus: 'resolved' %Link status

ReferenceBlock 属性提供模块链接到的库模块的路径。您可以使用 set_param 命令以编程方式更改此路径。例如:

set_param('slexMaskVariantExample/VariantSubsystem2','ReferenceBlock','slexMaskVariantExample2/VariantSubsystem')

此处,slexMaskVariantExample/VariantSubsystem2 是原始库模块路径,slexMaskVariantExample2/VariantSubsystem 是新库模块路径。

注意

不推荐在引用模块的封装初始化代码中或回调代码中使用 set_param 命令更改同一引用模块的属性。对于此类建模模式,您可以使用 Variant 模块或对引用模块的父模块的回调代码或封装初始化代码使用 ReferenceBlock 参数。

锁定链接模块

从命令行使用 LockLinksToLibrary 命令锁定或解锁库中的链接模块。当您将 LockLinksToLibrary 的值设置为 on 时,指向库的链接模块的链接将被锁定。

set_param('MyLibraryName', 'LockLinksToLibrary', 'on') %Lock links
set_param('MyLibraryName', 'LockLinksToLibrary', 'off') %Unlock links

链接状态

所有模块都有一个 LinkStatus 参数和一个 StaticLinkStatus 参数,以指示该模块是否为链接模块。

使用 get_param(gcb, 'StaticLinkStatus') 可查询链接状态,而不必更新链接模块。您可以使用 StaticLinkStatus 来查询活动或过期的链接模块的状态。

使用 get_param 发送查询以获取 LinkStatus 的值。

获取 LinkStatus 值描述
none

模块不是链接模块。

resolved

已解析的链接。

unresolved

未解析的链接。

implicit

模块驻留在库模块中,它本身不是指向库模块的链接。假设 A 是指向库中子系统的链接,该库包含 Gain 模块。如果打开 A 并选择 Gain 模块,get_param(gcb, 'LinkStatus') 会返回 implicit

inactive

禁用的链接。

使用 set_param 设置 LinkStatus

设置 LinkStatus 值描述

none

断开链接。使用 none 可断开链接,例如 set_param(gcb, 'LinkStatus', 'none')

breakWithoutHierarchy

在不破坏链接的嵌套父级层次结构的情况下断开链接。例如,set_param(gcb, 'LinkStatus', 'breakWithoutHierarchy')

inactive

禁用链接。使用 inactive 可禁用链接,例如 set_param(gcb, 'LinkStatus', 'inactive')

restore

还原指向库模块的非活动或已禁用的链接,并放弃对库模块的本地副本所做的任何更改。例如,set_param(gcb, 'LinkStatus', 'restore') 将所选模块替换为指向相同类型的库模块的链接。它会放弃在库模块的本地副本中所做的任何更改。

restore 相当于链接工具中的还原单个

propagate

将对禁用链接所做的所有更改推送到库模块并重新建立其链接。propagate 相当于链接工具中的推送单个

restoreHierarchy

使用对应的库模块还原层次结构中的所有禁用链接。restoreHierarchy 等效于链接工具的层次结构模式中的还原

propagateHierarchy

将层次结构中发生了更改的所有链接推送到其库。propagateHierarchy 等效于链接工具的层次结构模式中的推送。请参阅Restore Disabled Links

注意

  • 当您使用 get_param 查询模块的链接状态时,会同时解析过时的模块链接。

  • 当在子模块的回调代码中使用 get_param 时,推荐使用 StaticLinkStatus 命令查询链接状态。StaticLinkStatus 命令不能解析任何过时的链接。

如果对库链接内的模块调用 get_param,则 Simulink® 会在必要时解析链接。执行 get_param 可能涉及加载部分库并执行回调。

相关主题