使用多个引用模型实例模拟模型
正常模式可见性
普通模式引用模型的所有实例都是模拟的一部分。然而,仿真软件万博1manbetx®在模型窗口中只显示一个实例。正常模式可见性包括的显示范围块和数据端口值。
可以通过在顶部模型中选择控件来设置普通模式可见性图>子系统和模型参考>模型块正常模式可见性.正常模式可见性设置决定了要显示的实例。如果您没有为引用模型的特定实例指定正常模式可见性,Simulink将选择引用模型的一个实例来显示。万博1manbetx
模拟完成后,如果尝试从模型块不具有正常模式可见性时,Simulink将显示警告。万博1manbetx
若要设置模型以控制在正常模式下引用模型的哪个实例具有可见性并确保模型的正确仿真,请参见指定具有正常模式可见性的实例.
具有多个引用模型实例的示例模型
的sldemo_mdlref_basic
模型和“可视化模型参考体系结构”特色示例展示了包含引用模型的多个实例的模型的使用。
sldemo_mdlref_basic
的sldemo_mdlref_basic
模型有三个模型块(CounterA
,CounterB
,CounterC
),每个参考sldemo_mdlref_counter
模型。
如果更新关系图,则sldemo_mdlref_basic
显示三个不同的图标模型块引用sldemo_mdlref_counter
.
模型块 | 图标的角落 | 模拟模式和正常模式可见性设置 |
---|---|---|
CounterA |
白色 | 正常模式,启用正常模式可见性 |
CounterB |
灰色的角落 | 正常模式,禁用正常模式可见性 |
CounterC |
黑色的角落 | 加速模式(普通模式可见性不适用) |
打开并模拟sldemo_mdlref_basic
.双击CounterA模型并打开ScopeA块。
那ScopeA
块反映模拟的结果CounterA
模型块,它启用了正常模式可见性。
如果你试着打开mdlref_counter
的CounterB
模型block, ScopeA inmdlref_counter
仍然显示的结果CounterA
模型块,因为该块启用了正常模式可见性。
可视化模型参考架构
特色示例可视化模型参考架构
显示模型依赖项查看器对模型的使用(sldemo_mdlref_depgraph
),在正常模式下引用一个被引用模型的多个实例。这个例子展示了如何在普通模式下建立一个包含多个引用实例的模型。
使用多个引用模型实例配置模型
设置配置参数>模型参考>每个顶级模型允许的实例总数参数
多个
.设置引用模型的每个实例,使其使用正常模式。的块参数对话框中模型引用实例的块,设置模拟模式参数
正常的
.确保层次结构中的所有祖先模型块处于正常模式。图标的角为模型处于正常模式的块可以是白色(空)。在更新图表或模拟模型后,角变成灰色。
如果有必要,修改模型使用的s函数,以便它们在正常模式下与引用模型的多个实例一起工作。详细信息请参见万博1manbetx支持在正常模式下使用多个引用模型的实例.
默认情况下,Simuli万博1manbetxnk将正常模式可见性分配给其中一个实例。完成配置步骤后,您可以指定一个非默认实例以具有正常模式可见性。
有关在引用模型中封装可重用算法的详细信息,请参见指定引用模型的可重用性.
指定具有正常模式可见性的实例
确定哪个实例具有正常模式可见性
要确定当前哪个实例具有正常模式可见性:
要应用正常模式可见性设置,请更新图表,并且不要对模型进行其他更改。
检查模型引用您感兴趣的模型的块。的模型有白色角的块启用了正常模式可见性,通过模型层次结构导航。
在编辑模型或编译期间,在更新关系图之后,使用ModelReferenceNormalModeVisibilityBlockPath
参数。结果是万博1manbetx仿真软件。BlockPath
对象的块路径模型块,该块引用启用了正常模式可见性的模型。例如:
get_param (“sldemo_mdlref_basic”,...“ModelReferenceNormalModeVisibilityBlockPath”)
ans = 万博1manbetxSimulink。BlockPathPackage: Simulink Block Path: 'sldemo_mdlref_basic/CounterA'
对于正在模拟或处于已编译状态的顶部模型,可以使用CompiledModelBlockInstancesBlockPath
参数。例如:
A = get_param(“sldemo_mdlref_depgraph”,...“CompiledModelBlockInstancesBlockPath”)
a = sldemo_mdlref_F2C: [1x1 万博1manbetxSimulink. txt]BlockPath]sldemo_mdlref_heater: [1x1 Simulink.BlockPath] sldemo_mdlref_outdoor_temp: [1x1 Simulink.BlockPath]
为实例启用普通模式可见性
请注意
在模拟过程中不能更改普通模式可见性。
为引用模型的不同实例启用正常模式可见性,而不是当前具有正常模式可见性的实例:
导航到顶部模型。
在Simuli万博1manbetxnk编辑器中,选择图>子系统和模型参考>模型块正常模式可见性.
出现“模型块正常模式可见性”对话框。的对话框
sldemo_mdlref_basic
模型,层次结构窗格展开:模型层次结构窗格显示您从中打开对话框的模型的部分模型层次结构。等级制度止于第一级模型不处于正常模式的块。模型层次结构窗格不显示模型引用受保护模型的块。
对话框显示了顶层模型的完整模型块层次结构。引用模型的正常模式实例具有复选框。
提示
要使“模型块正常模式可见性”对话框的模型层次结构窗格反映当前模型层次结构,请单击刷新.
选择希望具有普通模式可见性的模型实例。
万博1manbetxSimulink选择模型的所有祖先,并清除该模型的所有其他实例。当一个模型被清除时,Simulink将清除该模型的万博1manbetx所有子模型。
提示
要从model Block Normal Mode Visibility对话框中打开一个模型,右键单击模型层次结构窗格中的模型,然后单击开放.
要应用普通模式可见性设置,请在模型参考层次结构中模拟顶层模型。
作为使用模型块正常模式可见对话框的替代方案,在MATLAB中®命令行可以使用ModelBlockNormalModeVisibility
参数。对于输入,您可以指定以下值之一:
的数组
万博1manbetx仿真软件。BlockPath
对象。例如:bp1 = 万博1manbetxSimulink。BlockPath({'mVisibility_top/Model', ... 'mVisibility_mid_A/Model'}); bp2 = Simulink.BlockPath({'mVisibility_top/Model1', ... 'mVisibility_mid_B/Model1'}); bps = [bp1, bp2]; set_param(topMdl,'ModelBlockNormalModeVisibility',bps);
字符向量的单元数组的单元数组,其中字符向量是到各个块和模型的路径。这个例子和对象数组的例子产生了相同的效果:
p1 = {'mVisibility_top/Model','mVisibility_mid_A/Model'};p2 = {'mVisibility_top/Model1','mVisibility_mid_B/Model1'};set_param (topMdl ModelBlockNormalModeVisibility, {p1, p2});
一个空数组,用于指定使用Simulink默认选择具有正常模式可见性的实例。万博1manbetx例如:
set_param(topMdl, 'ModelBlockNormalModeVisibility', []);
使用空数组相当于清除“模型块正常模式可见性”对话框中的所有复选框。