这个例子展示了如何使用模型引用变体。模型块用于从另一个Simulink模型引用一个Simulink®模型。金宝app变体子系统块可以包含模型块作为变体。一个变体描述了一个N变体子系统块可以在其中运行的可能模式。每个变量引用一个特定模型及其相关的特定模型参数。对于给定的变型子系统块,在仿真期间只有一个变型是活动的。您可以通过更改基本工作空间中变量的值或使用“变量子系统”块对话框手动重写变量选择来切换活动变量。
的sldemo_mdlref_variants
模型包含一个名为Controller的变体子系统块,它引用了两个模型。
open_system (“sldemo_mdlref_variants”)
要查看变体选择,右键单击名为Controller的变体子系统块并选择块参数(子系统).的值决定活动变量CTRL
变量在MATLAB®基础工作空间。定义CTRL = 1
激活名为Linear的模型块,并定义CTRL = 2
激活名为“非线性”的模型块。
打开sldemo_mdlref_variants
模型运行PreLoadFcn模型回调,它设置CTRL
来2
.
为了模拟使用线性控制器,定义CTRL = 1
在基本工作空间中,然后模拟模型。
CTRL = 1;sim卡(“sldemo_mdlref_variants”);
为了模拟使用非线性控制器,定义CTRL = 2
在基本工作空间中,然后模拟模型。
CTRL = 2;sim卡(“sldemo_mdlref_variants”);
的sldemo_mdlref_variants_enum
模型表明金宝app仿真软件。变体
对象的功能:
枚举:可以用MATLAB的枚举类来提高条件的可读性变体
对象。
重用:变体
对象可以在不同的变体子系统块中重用。
该模型中的Variant子系统模块要求在MATLAB基础工作空间中定义以下变量:
VE_LINEAR_CONTROLLER = 金宝appSimulink.Variant(“E_CTRL = = sldemo_mrv_CONTROLLER_TYPE.LINEAR”)
VE_NONLINEAR_CONTROLLER = 金宝appSimulink.Variant(“E_CTRL = = sldemo_mrv_CONTROLLER_TYPE.NONLINEAR”)
E_CTRL = sldemo_mrv_CONTROLLER_TYPE。线性
VE_PROTOTYPE = 金宝appSimulink.Variant(“E_CURRENT_BUILD = = sldemo_mrv_BUILD_TYPE.PROTOTYPE”)
VE_PRODUCTION = 金宝appSimulink.Variant(“E_CURRENT_BUILD = = sldemo_mrv_BUILD_TYPE.PRODUCTION”)
E_CURRENT_BUILD = sldemo_mrv_BUILD_TYPE。生产
每个变量都与一个金宝app仿真软件。变体
对象的sldemo_mrv_BUILD_TYPE.m
或sldemo_mrv_CONTROLLER_TYPE.m
枚举类中。
的变体
对象有一个条件
属性,该属性是表达式。表达式计算为布尔值并确定哪个变量是活动的。表达式可以由标量变量、枚举、等式、不等式、&&、||和~组成。括号()可用于优先分组。变量可以是标准的MATLAB变量或金宝app仿真软件。参数
对象。
打开模型sldemo_mdlref_variants_enum
运行PreLoadFcn回调模型。此回调被设置为使用变体子系统块所需的变量填充基本工作空间。
open_system (“sldemo_mdlref_variants_enum”)
的VE_PROTOTYPE
和VE_PRODUCTION
变体
对象在名为Filter1、Filter2和Filter3的变体子系统块中重用。
变体子系统块的块参数对话框显示条件相关财产变体
对象。