主要内容

使用掩码参数控制锁定自定义库变量子系统的主动选择

这个例子展示了如何控制的主动选择不同的子系统通过使用掩码参数作为Variant控制变量,属于锁定的自定义库。掩码参数限制变量的范围,这允许您在不同的范围内对控制变量使用相同的名称。这个例子包括提升的参数和带有枚举类的控制表达式,以简化掩码对话框的接口,以及带有枚举类的控制表达式,以提高变量条件表达式的可读性。有关变体子系统的更多信息,请参见使用可变子系统在单独的层次结构中实现可变

模型

打开Simulink万博1manbetx®模型类型slexVariantSubsystemUsingMaskAndEnums在MATLAB中®命令窗口。

考虑锁定自定义库中的Engine子系统块,slexVarEngineLibrary

子系统的掩码对话框包含以下参数:

  • 发动机型号:当您为该参数选择一个值时,Simulink将该值的索引分配给掩码参数万博1manbetx引擎.在模拟时,的值引擎用于计算变量条件表达式,以激活或禁用底层涡轮引擎和非涡轮引擎子系统。

  • 涡轮发动机的保真型:仅当发动机型号参数设置为涡轮增压.该参数从涡轮引擎子系统的底层提升到引擎子系统的掩码对话框。为此参数选择值时,Simulink将该值的索引分配给掩码参数万博1manbetxenginetype涡轮发动机子系统。在模拟时,的值enginetype用于评估变量条件表达式,以激活或禁用底层的高、中、低子系统。

  • 保真型非涡轮发动机:仅当发动机型号参数设置为非涡轮增压.该参数从非涡轮发动机子系统的底层提升到引擎子系统的掩码对话框。为此参数选择值时,Simulink将该值的索引分配给掩码参数万博1manbetxenginetype非涡轮发动机子系统。在模拟时,的值enginetype用于评估变量条件表达式,以激活或禁用底层的高、中、低子系统。

范围enginetype在涡轮发动机子系统的范围是不同的enginetype在非涡轮发动机子系统。enginetype的涡轮引擎,仅对涡轮引擎子系统的底层可见。同样的,enginetype的非涡轮增压引擎仅对非涡轮增压引擎子系统的底层可见。通过使用掩码参数作为变体控制变量来限制范围,允许您对涡轮引擎和非涡轮引擎子系统中持有不同值的变量使用相同的名称。

主动选择之间的切换

  1. 要模拟该模型,就模拟页签,单击“运行”。在引擎子系统的掩码对话框上发动机型号参数设置为非涡轮增压,以及保真型非涡轮发动机设置为媒介.由于这些参数被映射到掩码参数的索引引擎而且engineType的值。引擎设置为2的值engineType设置为1.在这里,2对象的索引非涡轮增压选择,1对象的索引选择。有关掩码对话框上的参数如何映射到底层掩码参数的详细信息,请参见创建一个简单的蒙版

    在模拟过程中,条件表达式engine ==引擎。NONTURBO而且engineType == engine忠诚。媒介评估,真正的.在这里,引擎而且EngineFidelity中定义了基于整数的枚举类吗Engine.m而且EngineFidelity.m值为的文件引擎。涡轮增压而且引擎。NONTURBO指定为1而且2的值EngineFidelity。高EngineFidelity。媒介,EngineFidelity。低指定为12,3.

    非涡轮引擎子系统变为活动,涡轮引擎子系统变为不活动。

  2. 如果要修改当前选择,请选择涡轮增压在蒙版对话框中,然后再次模拟模型。在模拟时,的值引擎设置为1,计算变量条件engine ==引擎。涡轮增压真正的.涡轮引擎子系统变为活动,非涡轮引擎子系统变为不活动。

相关的话题