在正常模式下模拟多个参考模型实例
正常模式能见度
在正常模式下模拟的引用模型的所有实例都是模拟的一部分。然而,只有一个被引用模型的正常模式实例支持所有的数据可视化。金宝app例如,范围和端口值标签仅显示启用了正常模式可见性的实例的数据。要查看引用模型的所有实例的仿真结果,请使用模拟数据检查器。要查看在正常模式下模拟的模型的每个实例的特定于实例的数据,请使用显示引用模型中的块。
要设置正常模式可见性,在顶部模型中,在模拟选项卡,在准备画廊,下信号监测,点击正常模式能见度。此设置确定启用了正常模式可见性的实例。如果未为引用模型的实例指定正常模式可见性,则使用Simulink金宝app®软件选择引用模型的哪个实例启用了正常模式可见性。
在模拟之后,如果您尝试从模型块不具有正常模式可见性时,Simulink软件显示警告。金宝app
若要设置模型以控制正常模式下引用模型的哪个实例具有可见性,并确保模型的正确模拟,请参见指定具有正常模式可见性的实例。
使用多个引用模型实例检查模型
的sldemo_mdlref_basic
模型模型块命名CounterA
,CounterB
,CounterC
每个引用sldemo_mdlref_counter
模型。如果你更新图表,sldemo_mdlref_basic
控件显示不同的图标角模型块。
模型块 | 图标的角落 | 模拟模式和正常模式可见性设置 |
---|---|---|
CounterA |
白色 | 正常模式,启用正常模式可见性 |
CounterB |
灰色的角落 | 正常模式,禁用正常模式可见性 |
CounterC |
黑色的角落 | 加速模式(正常模式可见性不适用) |
打开并模拟sldemo_mdlref_basic
。双击模型块命名CounterA
然后打开范围块命名ScopeA
。
对象的模拟结果模型块命名CounterA
,它启用了正常模式可见性。
如果你打开sldemo_mdlref_counter
控件创建模型模型块命名CounterB
,范围在sldemo_mdlref_counter
仍然显示了结果模型块命名CounterA
因为那个块启用了正常模式可见性。
欲知更多有关sldemo_mdlref_basic
,请参阅使用模型引用的基于组件的建模。
有关在正常模式下对包含引用模型的多个实例的模型层次结构使用依赖分析器的示例,请参见可视化模型引用层次结构。
配置具有多个引用模型实例的模型
设置每个顶级模型允许的实例总数参数
多个
。设置引用模型的每个实例,使其使用正常模式。的块参数对话框中模型块中引用实例时,设置模拟模式参数
正常的
。确保该层次结构中的所有祖先都是这样模型块处于正常模式。图标的角模型处于正常模式的块可以是白色的(空的)。更新图表或模拟模型后,这些角变为灰色。
如有必要,修改模型使用的s -函数,使它们在正常模式下与引用模型的多个实例一起工作。有关详情,请参阅金宝app支持使用处于正常模式的引用模型的多个实例。
默认情况下,Simuli金宝appnk将正常模式可见性分配给其中一个实例。完成配置步骤后,可以指定一个非默认实例以具有正常模式可见性。
有关在引用模型中封装可重用算法的详细信息,请参见模型重用。
确定哪个实例具有正常模式可见性
要确定当前哪个实例启用了正常模式可见性:
要应用正常模式可见性设置,请更新图表,并且不对模型进行其他更改。
检查模型引用您感兴趣的模型的块。的模型具有白色角的块启用了正常模式可见性。
当您正在编辑模型或在编译期间,在更新关系图之后,使用ModelReferenceNormalModeVisibilityBlockPath
参数。结果是金宝app仿真软件。BlockPath
对象的块路径模型块,引用启用了正常模式可见性的模型。例如:
get_param (“sldemo_mdlref_counter”,…“ModelReferenceNormalModeVisibilityBlockPath”)
ans = 金宝appSimulink。BlockPathPackage: Simulink Block Path: 'sldemo_mdlref_basic/CounterA'
对于正在模拟或处于已编译状态的顶级模型,可以使用CompiledModelBlockNormalModeVisibility
参数。例如:
A = get_param(“sldemo_mdlref_depgraph”,…“CompiledModelBlockNormalModeVisibility”)
a = struct with fields: sldemo_mdlref_F2C: [1×1 金宝appSimulink。sldemo_mdlref_加热器:[1×1 Simulink。金宝appBlockPath]
当你创建金宝app仿真软件。BlockPath
对象,用于指定正常模式可见性:
第一个字符向量必须表示模型引用层次结构的顶层模型中的一个块。
字符向量必须表示模型处于正常模式的块。
表示变量模型或变量子系统的字符向量必须指向一个活动的变量。
指定具有正常模式可见性的实例
请注意
在模拟过程中不能更改正常模式可见性。
要为引用模型的另一个实例启用正常模式可见性,而不是当前具有正常模式可见性的实例:
导航到顶级模型。
在模拟选项卡,在准备节,在信号监测中,选择正常模式能见度。
出现“模型块正常模式可见性”对话框。的对话框
sldemo_mdlref_basic
模型,将层次结构窗格展开:模型层次窗格显示了您从中打开对话框的模型的部分模型层次。层级止于第一个模型非正常模式的块。模型层次窗格不显示模型引用受保护模型的块。
对话框显示了顶级模型的完整模型层次结构。引用模型的正常模式实例有复选框。
提示
要使“模型块正常模式可见性”对话框的模型层次窗格反映当前的模型层次结构,请单击刷新。
选择您希望具有正常模式可见性的模型实例。
金宝appSimulink选择模型的所有祖先,并清除该模型的所有其他实例。当一个模型被清除时,Simulink将清除该模型的金宝app所有子模型。
提示
要从模型块正常模式可见性对话框中打开一个模型,请在模型层次窗格中右键单击该模型,然后单击开放。
要应用正常模式可见性设置,请模拟模型层次结构中的顶级模型。
作为使用模型块正常模式可见性对话框的替代方案,在MATLAB®命令行中,可以使用ModelBlockNormalModeVisibility
参数。对于输入,您可以指定以下值之一:
的数组
金宝app仿真软件。BlockPath
对象。例如:bp1 = 金宝appSimulink。BlockPath ({“mVisibility_top /模式”,…“mVisibility_mid_A /模式”});bp2 = 金宝appSimulink。BlockPath ({“mVisibility_top / Model1”,…“mVisibility_mid_B / Model1”});BPS = [bp1, bp2];set_param (topMdl“ModelBlockNormalModeVisibility”个基点);
字符向量的单元数组的单元数组,字符向量是单个块和模型的路径。这个例子产生了与对象数组相同的效果:
P1 = {“mVisibility_top /模式”,“mVisibility_mid_A /模式”};P2 = {“mVisibility_top / Model1”,“mVisibility_mid_B / Model1”};set_param (topMdl“ModelBlockNormalModeVisibility”, {p1, p2});
一个空数组,用于指定使用具有正常模式可见性的实例的Simulink默认选择。金宝app例如:
set_param (topMdl“ModelBlockNormalModeVisibility”[]);
使用空数组相当于清除“模型块正常模式可见性”对话框中的所有复选框。