Simulink:使用Mask控制变体子系统

kan*_*ndo 3 matlab simulink masking

我想找到一个简单的过程,使用掩码参数在掩码下切换模型内部.

这个问题已经扩展到足以让它在这里得到重新实现.

变体子系统是一种很好的方法,可以通过工作空间参数进行控制;
但是,我发现掩码参数不与变量子系统选择接口.

此链接是关于如何使用掩码参数更改系统内部块的一系列帖子中的第一个; 但是,该方法不像使用变体子系统和开关那样直观.
这个链接也是从2008年开始的,我相信它可能在某个时候被取代了.

MWE

我制作了一个包含标记系统的模型Source.
它连接到Display显示其输出的块.

Source是一个变体子系统.
它包含3个变种:

  • Source\One
  • Source\Two
  • Source\Three.

每个变体包含一个Constant块.块
的值Constant与块标签是同名的.
例如, Source\Two包含具有值的常量块2.

Source也是一个蒙面子系统.
它的掩码包含一个Radio Button带有标记值的参数variantValue.参数
Radio Button选项variantValue是:

  • 选择1
  • 选择2
  • 选择3

掩码Initialization代码如下:

switch variantValue

case 'Choice 1'
set_param('Source','OverrideUsingVariant','One')
disp('One')

case 'Choice 2'
set_param('Source','OverrideUsingVariant','Two')

case 'Choice 3'
set_param('Source','OverrideUsingVariant','Three')

end
Run Code Online (Sandbox Code Playgroud)

我已将变体设置为Override.我无法设置掩码以允许库块修改内容,因为它是灰色的.

当作为变体子系统的屏蔽子系统工作时,我会将变体子系统从掩蔽的子系统中更深入地放入层次结构中.

Dan*_*iel 5

要执行不通过基本工作空间执行的任何操作,首先需要设置"覆盖变量条件...",现在您可以使用代码选择活动变体:

set_param('untitled/Variant Subsystem','OverrideUsingVariant','Variant1')
Run Code Online (Sandbox Code Playgroud)

剩下的就是创建一个掩码,无论何时在掩码中更改参数,都会运行上面的行.这可以通过初始化命令完成.

  • 它也适用于实时系统.我希望生成的代码只包含选定的变体. (2认同)