使用掩码参数控制锁定自定义库变量子系统的主动选择
这个例子展示了如何控制的主动选择不同的子系统通过使用掩码参数作为Variant控制变量,属于锁定的自定义库。掩码参数限制变量的范围,这允许您在不同的范围内对控制变量使用相同的名称。这个例子包括提升的参数和带有枚举类的控制表达式,以简化掩码对话框的接口,以及带有枚举类的控制表达式,以提高变量条件表达式的可读性。有关变体子系统的更多信息,请参见使用可变子系统在单独的层次结构中实现可变.
模型
打开Simulink万博1manbetx®模型类型slexVariantSubsystemUsingMaskAndEnums
在MATLAB中®命令窗口。
考虑锁定自定义库中的Engine子系统块,slexVarEngineLibrary
.
子系统的掩码对话框包含以下参数:
发动机型号:当您为该参数选择一个值时,Simulink将该值的索引分配给掩码参数万博1manbetx
引擎
.在模拟时,的值引擎
用于计算变量条件表达式,以激活或禁用底层涡轮引擎和非涡轮引擎子系统。涡轮发动机的保真型:仅当发动机型号参数设置为
涡轮增压
.该参数从涡轮引擎子系统的底层提升到引擎子系统的掩码对话框。为此参数选择值时,Simulink将该值的索引分配给掩码参数万博1manbetxenginetype
涡轮发动机子系统。在模拟时,的值enginetype
用于评估变量条件表达式,以激活或禁用底层的高、中、低子系统。保真型非涡轮发动机:仅当发动机型号参数设置为
非涡轮增压
.该参数从非涡轮发动机子系统的底层提升到引擎子系统的掩码对话框。为此参数选择值时,Simulink将该值的索引分配给掩码参数万博1manbetxenginetype
非涡轮发动机子系统。在模拟时,的值enginetype
用于评估变量条件表达式,以激活或禁用底层的高、中、低子系统。
范围enginetype
在涡轮发动机子系统的范围是不同的enginetype
在非涡轮发动机子系统。enginetype
的涡轮引擎,仅对涡轮引擎子系统的底层可见。同样的,enginetype
的非涡轮增压引擎仅对非涡轮增压引擎子系统的底层可见。通过使用掩码参数作为变体控制变量来限制范围,允许您对涡轮引擎和非涡轮引擎子系统中持有不同值的变量使用相同的名称。
主动选择之间的切换
要模拟该模型,就模拟页签,单击“运行”。在引擎子系统的掩码对话框上发动机型号参数设置为
非涡轮增压
,以及保真型非涡轮发动机设置为媒介
.由于这些参数被映射到掩码参数的索引引擎
而且engineType
的值。引擎
设置为2
的值engineType
设置为1
.在这里,2
对象的索引非涡轮增压
选择,1
对象的索引高
选择。有关掩码对话框上的参数如何映射到底层掩码参数的详细信息,请参见创建一个简单的蒙版.在模拟过程中,条件表达式
engine ==引擎。NONTURBO
而且engineType == engine忠诚。媒介
评估,真正的
.在这里,引擎
而且EngineFidelity
中定义了基于整数的枚举类吗Engine.m
而且EngineFidelity.m
值为的文件引擎。涡轮增压
而且引擎。NONTURBO
指定为1
而且2
的值EngineFidelity。高
,EngineFidelity。媒介
,EngineFidelity。低
指定为1
,2
,3.
.非涡轮引擎子系统变为活动,涡轮引擎子系统变为不活动。
如果要修改当前选择,请选择
涡轮增压
在蒙版对话框中,然后再次模拟模型。在模拟时,的值引擎
设置为1
,计算变量条件engine ==引擎。涡轮增压
来真正的
.涡轮引擎子系统变为活动,非涡轮引擎子系统变为不活动。