这个例子展示了如何控制主动选择不同的子系统通过使用掩码参数作为变量控制变量而属于锁定的自定义库。掩码参数限制变量的作用域,这允许您在不同作用域中对控制变量使用相同的名称。此示例包括带有枚举类的提升参数和控件表达式,以简化掩码对话框的接口,以及带有枚举类的控件表达式,以提高变体条件表达式的可读性。有关变种子系统的更多信息,请参见不同的子系统.
打开Simulink金宝app®模型类型slexVariantSubsystemUsingMaskAndEnums
在MATLAB®命令窗口。
考虑锁定的自定义库中的Engine子系统块,slexVarEngineLibrary
.
子系统掩码对话框包含以下参数:
发动机型号:当您为该参数选择一个值时,Simulink将该值的索引赋给掩码参数金宝app引擎
.在模拟过程中,值引擎
用于计算激活或停用底层涡轮增压发动机和非涡轮增压发动机子系统的可变条件表达式。
保真型用于涡轮发动机:只有当发动机型号参数设置为涡轮增压
.该参数从涡轮发动机子系统的底层提升到发动机子系统的掩码对话框。当您为该参数选择一个值时,Simulink将该值的索引赋给掩码参数金宝appenginetype
涡轮发动机子系统。在模拟过程中,值enginetype
用于求变量条件表达式以激活或停用底层的High、Medium和Low子系统。
保真型适用于非涡轮发动机:只有当发动机型号参数设置为非涡轮增压
.该参数从非涡轮发动机子系统的底层提升到发动机子系统的掩码对话框。当您为该参数选择一个值时,Simulink将该值的索引赋给掩码参数金宝appenginetype
非涡轮发动机子系统。在模拟过程中,值enginetype
用于求变量条件表达式以激活或停用底层的High、Medium和Low子系统。
的范围enginetype
在涡轮增压子系统中是不同的范围enginetype
在非涡轮发动机子系统中。enginetype
的Turbo Engine仅对Turbo Engine子系统的底层可见。同样的,enginetype
非涡轮增压发动机是可见的,只有底层的非涡轮增压发动机子系统。通过使用掩码参数作为变体控制变量来限制范围,允许您在涡轮发动机和非涡轮发动机子系统中对持有不同值的变量使用相同的名称。
为了模拟模型,在模拟选项卡中,单击“运行”。在引擎子系统的掩码对话框中,发动机型号参数设置为非涡轮增压
,保真型适用于非涡轮发动机被设置为媒介
.因为这些参数被映射到掩码参数的索引引擎
和engineType
的价值引擎
被设置为2
的价值engineType
被设置为1
.在这里,2
对象的索引非涡轮增压
选择,1
对象的索引高
选择。有关如何将掩码对话框中的参数映射到底层掩码参数的详细信息,请参见创建一个简单的蒙版.
在仿真过程中,条件表达式引擎= =引擎。NONTURBO
和engineType = = EngineFidelity。媒介
评估,真正的
.在这里,引擎
和EngineFidelity
中是否定义了基于整型的枚举类Engine.m
和EngineFidelity.m
值为引擎。涡轮增压
和引擎。NONTURBO
指定为1
和2
的值EngineFidelity。高
,EngineFidelity。媒介
,EngineFidelity。低
指定为1
,2
,3.
.
非涡轮发动机子系统变为活动的,而涡轮发动机子系统变为非活动的。
要修改当前选择,请选择涡轮增压
在蒙版对话框中,然后再次模拟模型。在模拟过程中,值引擎
被设置为1
,它计算变量条件引擎= =引擎。涡轮增压
来真正的
.涡轮增压子系统变得活跃,而非涡轮增压子系统变得不活跃。