主要内容

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

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

模型

打开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非涡轮增压发动机是可见的,只有底层的非涡轮增压发动机子系统。通过使用掩码参数作为变体控制变量来限制范围,允许您在涡轮发动机和非涡轮发动机子系统中对持有不同值的变量使用相同的名称。

主动选择之间的切换

  1. 为了模拟模型,在模拟选项卡中,单击“运行”。在引擎子系统的掩码对话框中,发动机型号参数设置为非涡轮增压,保真型适用于非涡轮发动机被设置为媒介.因为这些参数被映射到掩码参数的索引引擎engineType的价值引擎被设置为2的价值engineType被设置为1.在这里,2对象的索引非涡轮增压选择,1对象的索引选择。有关如何将掩码对话框中的参数映射到底层掩码参数的详细信息,请参见创建一个简单的蒙版

    在仿真过程中,条件表达式引擎= =引擎。NONTURBOengineType = = EngineFidelity。媒介评估,真正的.在这里,引擎EngineFidelity中是否定义了基于整型的枚举类Engine.mEngineFidelity.m值为引擎。涡轮增压引擎。NONTURBO指定为12的值EngineFidelity。高EngineFidelity。媒介,EngineFidelity。低指定为12,3.

    非涡轮发动机子系统变为活动的,而涡轮发动机子系统变为非活动的。

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

相关的话题