以编程方式控制链接模块
链接模块信息
使用 libinfo
命令获取有关模型中链接模块的信息。libinfo
还提供有关链接模块的父级库模块的信息。
例如,以下是一个具有链接模块的模型:
对此模块执行 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 模块, |
inactive | 禁用的链接。 |
使用 set_param
设置 LinkStatus
。
设置 LinkStatus 值 | 描述 |
---|---|
| 断开链接。使用 |
| 在不破坏链接的嵌套父级层次结构的情况下断开链接。例如, |
| 禁用链接。使用 |
| 还原指向库模块的非活动或已禁用的链接,并放弃对库模块的本地副本所做的任何更改。例如,
|
| 将对禁用链接所做的所有更改推送到库模块并重新建立其链接。 |
| 使用对应的库模块还原层次结构中的所有禁用链接。 |
| 将层次结构中发生了更改的所有链接推送到其库。 |
注意
当您使用
get_param
查询模块的链接状态时,会同时解析过时的模块链接。当在子模块的回调代码中使用
get_param
时,推荐使用StaticLinkStatus
命令查询链接状态。StaticLinkStatus
命令不能解析任何过时的链接。
如果对库链接内的模块调用 get_param
,则 Simulink® 会在必要时解析链接。执行 get_param
可能涉及加载部分库并执行回调。