指定变量条件时变型子系统块,仿真软件金宝app®传播这些条件以确定在模拟期间模型的哪些组件处于活动状态。默认情况下,这些条件不会传播到变量子系统之外。你可以使用在变量子系统外部传播条件块参数,以允许条件传播到变型子系统块连接到连接块。
请注意
在模型组件上显示的变量条件注释帮助您可视化传播的条件。
上的变量条件注释调试选项卡,选择信息覆盖>变体的传说.
如果变体的传说不可用,位于调试选项卡,选择信息覆盖>变异的条件.
考虑这个模型包含一个变型子系统块命名控制器
有两种不同的选择,线性控制器
和非线性控制器
.一个特定的变量条件激活每个块。
中的变量选择控制器
块没有相同的接口。入口传感器1
和传感器3
用于线性控制器
和非线性控制器
,但传感器2
仅用于线性控制器
.因此,传感器2
块仅在以下情况下才处于活动状态:线性控制器
是活动的,不执行其他选择。将模型组件置于变型子系统(控制器
)了解系统中块的活动或非活动状态变型子系统块时,块条件必须传播到块边界之外。
请注意
变量条件不会在外部传播变型子系统如果块中的所有变量选项具有相同的接口,则为块。
要在可变子系统之外传播条件,请选择在变量子系统外部传播条件在的“块参数”对话框中变型子系统块。默认情况下,此参数设置为关
.
更新图
激活时间当变体激活时间参数为变型子系统块被设置为更新图
,只分析主动选择,以确定从变型子系统传播出去的条件。
在本例中,当您将活动变量选择设置为非线性控制器
,传感器2
处于非活动状态。变量批注v2
条件设置为假
显示在传感器2
端口和非活动的输入端口块In2
这和它有关。在变体条件图例中,条件被设置为假
如果与该条件相关联的块从未激活。
当您将活动变量选项设置为线性控制器
,传感器2
端口和输入块In2
是无条件的,因为线性控制器
正在使用所有的输入信号。
您生成的代码只包含活动选择。在本例中,输入端口In2
处于非活动状态,因此它不是生成代码的一部分。
代码编译
激活时间对于任何变量激活时间,除了更新图
,分析所有的变种选择,以确定从变种子系统传播出去的条件。
在示例模型中,设置变体激活时间参数代码编译
.
这些条件会在外部传播变型子系统两个变量选项的块。
生成的代码包含预处理器条件中包含的活动和非活动选项#如果
和# elseif
.在本例中,输入端口In2
有必要的条件加以保护。
请注意
将各种条件传播到外部变型子系统指定了零主动变量控制的块,选择允许零主动变型控制在的“块参数”对话框中变型子系统块。
用A来考虑这个模型变型子系统块与两个不同的选择。块上没有进口或出口。这两种变体选择都有条件Var = = 1
和Var = = 2
分别地当在变量子系统外部传播条件参数变型子系统块被设置为关
,一个逻辑或在变条件中,Var = = 1 | | Var = = 2
,设置在变型子系统块。当参数设置为时在…上
,不适用任何条件变型子系统块。
传播外部环境变型子系统以编程方式阻止,请使用以下语法之一:
传播条件:
set_param (VariantSubsystemName“PropagateVariantConditions”,“上”)
例如
设置参数(“sldemo变量子系统/控制器”、“传播变量条件”、“开启”)
传播条件并在代码中生成预处理条件:
set_参数(VariantSubsystemName、'PropagateVariantConditions'、…'on'、'VariantActivationTime'、'code compile')
例如
set_param(“slexVariantSubsystems /控制器”、“PropagateVariantConditions”,…“上”、“VariantActivationTime”、“代码编译)
这个示例展示了如何将变体条件传播到变体子系统块之外,使该块能够根据底层块的状态调整其接口。
探索模型
打开模型slexVariantSubsystemsAdaptiveInterface
.
Controller块是一个变体子系统,它提供了一个线性
和非线性
选择。这个线性
选择是活跃的V = 1
,非线性
选择是活跃的V = 2
.V
是类型为的变量控制变量金宝appSimulink.参数
并在PostLoadFcn
模型的回调。
要更改变量控制变量的值,请在MATLAB命令窗口中输入V.值=1
或V.值=2
.
双击控制器
块以查看其内容。的线性
和非线性
选择没有类似的界面。的线性
选择是使用传感器1
和传感器3
输入的控制器
块这个线性
选择是不使用传感器2
输入而不产生浸透
输出。
在的“块参数”对话框中控制器
街区变异子系统外的传播条件选中此复选框。此设置将条件传播到块外部,并使变量子系统块能够根据底层块的状态调整其接口。
模拟模型
将活动选项设置为后模拟模型线性
.情况V = 2
传播到In2
,滤波器
,及饱和记录器
块。这些块变得不活动,因为线性
选择是不使用传感器2
输入,而不是写入浸透
输出控制器
块。
可以在Simscape上设置从可变子系统传播的可变条件™ 或状态流®块只有更新图
变体激活时间。
请注意
a的所有元素多路复用器,多路分配器,或向量串联阻塞信号必须具有相同的变异条件。