主要内容

仿真软件。变体Variable class

包:动态仿真模块

创建一个可变参数对象

自从R2021a

描述

仿真软件。变体Variable类创建变量形参对象。可变参数对象使您能够在Simulink中改变块参数的值®有条件的模型。

可以为一个可变参数对象指定多个值。您还可以指定维度、数据类型等属性。变量参数对象的每个值都与一个变量条件表达式相关联。对象创建后,可以使用它来设置模型中块参数的值,例如获得a的参数获得块。在模拟过程中,与计算为的变量条件相关联的值真正的成为该参数的活动值。与计算为的条件相关联的值变得不活跃。

在创建一个新的仿真软件。变体Variable对象,创建一个仿真软件。变体Control对象中使用的变量控制变量仿真软件。变体Variable对象。

请注意

只能在基本工作空间或数据字典中创建变量参数对象。

若要编辑变量参数对象,可以从工作区或数据字典中双击该对象以打开仿真软件。变体Variable对话框。

变量条件图例不显示变量参数的变量条件。使用变异参数在Variant Manager窗口中的选项卡中查看与模型相关的基本工作空间或数据字典中的变量参数,并编辑选择的变量条件和值。

创建

P=仿真软件。变体Variable创建一个空的变量参数对象。

P=仿真软件。变体Variable(名称,值创建一个可变参数对象并设置属性使用一个或多个名称,值参数。使用此语法,可以为对象指定多个值,并将每个值与变量条件表达式相关联。还可以指定对象的其他属性,如数据类型、存储类、维度等。

属性

全部展开

变量参数对象的属性,如数据类型、维度、存储类等,指定为仿真软件。参数对象。类的默认存储类仿真软件。参数对象是汽车.如果将存储类指定为汽车,对象的值内联到生成代码中的文字值。如果指定对象的存储类不是汽车,对象在生成的代码中使用符号名称表示为可调参数。有关更多信息,请参见在生成的代码中表示变量参数的选项(嵌入式编码)

请注意

属性指定存储类规范属性,则不支持仿真软件。变体Variable对象是变量形参库(仿真软件。变体银行).

例子:“规范”、“Pspec”

属性:

GetAccess
公共
SetAccess
公共

变量条件和值,指定为单元格数组。在模拟过程中,当变量条件计算为时真正的时,其关联值变为活动。当变量条件计算为时时,其关联值变为不活动。相同变量参数的两个值不能与相同的变量条件相关联。

可以将变量条件指定为布尔型MATLAB®包含一个或多个操作数和操作符的表达式。看到变量参数中变量控制变量(操作数)的类型而且变量形参中的操作符类型

可以指定数值、枚举或仿真软件。参数类型。看到的,快速成形变参数的数值变控制值使用枚举类型提高变量参数的代码可读性,使用Simulink重用手写代码中的变量参数值。参数变量

通过将变量条件设置为,可以将其中一个选择值指定为变量参数的默认值(默认).当没有其他变量条件计算为时,Simulink将为variant参数使用默认值真正的

例子:'选项',{'V == 1', 4.5, 'V==2', 9.5}

例子:'选项',{'V == 1', 3, '(默认值)',6}

属性:

GetAccess
私人
SetAccess
私人

变量参数库名称(仿真软件。变体银行)对象,指定为字符串或字符向量。

使用嵌入式编码器®,您可以将生成的代码中的变量参数分组,方法是将它们添加到相同的变量参数库中。变量参数必须为启动激活时间和必须具有相同的一组变异条件。使用仿真软件。变体银行类来创建变量参数bank对象并设置银行属性的Simulink。VariantVariable对象来the name of the variant parameter bank. For more information, see仿真软件。变体银行

例子:“银行”、“EngineParams”

属性:

GetAccess
公共
SetAccess
公共

数据类型:字符串|字符

方法

全部展开

例子

全部折叠

数值值允许您在构建模型时快速生成变量值的原型。数值值帮助您更专注于构建变量值,而不是开发激活这些选择的表达式。

中列出的位置中定义数值控制值变量参数中变量控制变量(操作数)的存储位置

打开slexVariantParameters模型。

open_system (“slexVariantParameters”

在MATLAB编辑器中,以数值的最简单形式指定变量选项仿真软件。变体Variable对象K1而且K2

K1 = Simulink。变体Variable(“选择”, {“V = = 1”, 3.5,“V = = 2”, 8.5})
K1 = VariantVariable, 2个选项:条件值_________ _____ V == 1 3.5000 V == 2 8.5000规格:“银行:”使用getChoice, setChoice, addChoice, removeChoice访问,修改,添加或删除选项
K2 = Simulink。变体Variable(“选择”, {“V = = 1”, 4.5,“V = = 2”, 9.5})
K2 = VariantVariable, 2个选项:条件值_________ _____ V == 1 4.5000 V == 2 9.5000规格:“银行:”使用getChoice, setChoice, addChoice, removeChoice访问,修改,添加或删除选项

成功创建仿真软件。变体Variable对象时,可以使用中描述的方法对其进行修改公共方法或者从VariantVariable对话框。

add-variant-variable-ui.png

通过定义一个控制变量来激活其中一个变量值,V,并将其值设置为1在一个仿真软件。变体Control对象。

V = Simulink。变体Control(“价值”, 1“ActivationTime”“更新图”
V = VariantControl with properties:值:1 ActivationTime: 'update diagram'

当你模拟模型时,条件V == 1计算结果为真正的K1赋值为3.5而且K2赋值为8.5

sim卡(“slexVariantParameters”

如果你改变V2, Simulink®设置的值K1而且K24.5而且9.5在模拟。你可以改变的值V使用此命令或from仿真软件。变体Control对话框。

V.Value = 2;sim卡(“slexVariantParameters”

如果您打算为包含可变参数的模型生成代码,请将可变控制变量指定为仿真软件。参数对象。仿真软件。参数对象允许您指定其他属性,例如数据类型和存储类,并控制生成代码中变量控制变量的外观和位置。

  • 可以定义类型的变量控制变量仿真软件。参数仅在基本工作区或数据字典中。定义仿真软件。参数不支持掩码或模型工作区中的变体控制变量类型。有关可变控制变量的存储位置的详细信息,请参见变量参数中变量控制变量(操作数)的存储位置

  • 仿真软件。参数结构中的对象,并且数据类型为仿真软件。公共汽车不支持对象。

打开slexVariantParameters模型。

open_system (“slexVariantParameters”

在MATLAB编辑器中定义一个仿真软件。参数对象。

VSS_MODE = Simulink.Parameter;VSS_MODE。Value = 1; VSS_MODE.DataType =“int32”;VSS_MODE.CoderInfo。StorageClass =“自定义”;VSS_MODE.CoderInfo。CustomStorageClass =“定义”;VSS_MODE.CoderInfo.CustomAttributes。HeaderFile =“demo_macros.h”

变量控制定义为仿真软件。参数对象可以具有中列出的任何存储类不同变体激活时间的存储类(嵌入式编码)

还可以将标量变量控制变量转换为仿真软件。参数对象。有关更多信息,请参见转换变量控制变量到Simulink。参数对象

中指定对象为变量控件仿真软件。变体Variable对象K1而且K2

K1 = Simulink。变体Variable(“选择”, {' v == 1', 3.5,' v == 2', 8.5})
K1 = VariantVariable, 2个选项:条件值_________ _____ V == 1 3.5000 V == 2 8.5000规格:“银行:”使用getChoice, setChoice, addChoice, removeChoice访问,修改,添加或删除选项
K2 = Simulink。变体Variable(“选择”, {' v == 1', 4.5,' v == 2', 9.5})
K2 = VariantVariable, 2个选项:条件值_________ _____ V == 1 4.5000 V == 2 9.5000规格:“银行:”使用getChoice, setChoice, addChoice, removeChoice访问,修改,添加或删除选项

成功创建仿真软件。变体Variable对象时,可以使用中描述的方法对其进行修改公共方法或者从VariantVariable对话框。

add-variant-variable-ui.png

通过定义一个控制变量来激活一个变量值V并将其值设置为VSS_MODE在一个仿真软件。变体Control对象。

V = Simulink。变体Control(“价值”VSS_MODE,“ActivationTime”代码编译的
V =带有属性的VariantControl:值:[1x1 Simulink. txt]参数]ActivationTime: 'code compile'

当你模拟模型时,条件V == 1计算结果为真正的K1赋值为3.5,K2赋值为8.5

sim卡(“slexVariantParameters”

如果你改变VSS_MODE2, Simulink®设置的值K1而且K24.5而且9.5在模拟。你可以改变的值V使用此命令或from仿真软件。变体Control对话框。

VSS_MODE。Value = 2; V.Value = VSS_MODE; sim (“slexVariantParameters”

从模型生成代码。有关如何生成代码的信息,请参见使用嵌入式编码器生成代码(嵌入式编码)

生成的代码包含这两者线性而且非线性预处理器条件中的选项#如果而且# elif因为代码编译激活时间。变量控制变量V是使用宏-#定义指令-在头文件中demo_macros.h.您可以控制的外观和位置V在生成的代码和防止从消除存储优化V使用存储类属性。有关更多信息,请参见不同变体激活时间的存储类(嵌入式编码)

% demo_macros.h% /*导出数据定义*/% /*自定义存储类定义:Define */% #定义V 2 /*引用:% * '<根>/增益'% * '<根>/Gain1'% * /% #endif /* RTW_HEADER_demo_macros_h_ */% / *

在确定模型所需的变量值之后,您可以构造复杂的变量条件,通过将变量条件定义为来控制变量参数值的激活仿真软件。变体对象。仿真软件。变体对象使您能够跨模型重用公共变量条件,并帮助您封装复杂的变量条件表达式。

  • 可以定义类型的变量控制变量仿真软件。变体仅在基本工作区或数据字典中。定义仿真软件。变体不支持掩码或模型工作区中的变体控制变量类型。有关可变控制变量的存储位置的详细信息,请参见变量参数中变量控制变量(操作数)的存储位置

  • 仿真软件。变体内部结构不受支持。

打开slexVariantParameters模型。

open_system (“slexVariantParameters”

在MATLAB®编辑器中,封装变量控制表达式为仿真软件。变体对象。

LinearController =仿真软件。变体(“V = = 1”);NonLinearController =仿真软件。变体(“V = = 2”);

指定仿真软件。变体控件中的变量控件仿真软件。变体Variable对象K1而且K2

K1 = Simulink。变体Variable(“选择”, {“LinearController”, 3.5,“NonLinearController”, 8.5})
K1 = VariantVariable与2个选择:条件值___________________ _____线性控制器3.5000非线性控制器8.5000规格:“银行:”使用getChoice, setChoice, addChoice, removeChoice访问,修改,添加或删除选择
K2 = Simulink。变体Variable(“选择”, {“LinearController”, 4.5,“NonLinearController”, 9.5})
K2 = VariantVariable与2个选择:条件值___________________ _____线性控制器4.5000非线性控制器9.5000规格:“银行:”使用getChoice, setChoice, addChoice, removeChoice访问,修改,添加或删除选择

成功创建仿真软件。变体Variable对象时,可以使用中描述的方法对其进行修改公共方法或者从VariantVariable对话框。

add-variant-variable-ui-simulink-variant.png

通过定义激活一个变量值仿真软件。变体Control对象V并将其值设置为1

V = Simulink。变体Control(“价值”, 1“ActivationTime”“更新图”
V = VariantControl with properties:值:1 ActivationTime: 'update diagram'

当你模拟模型时,条件V == 1计算结果为真正的K1赋值为3.5,K2赋值为8.5

sim卡(“slexVariantParameters”

如果你改变V2, Simulink®设置的值K1而且K24.5而且9.5在模拟。你可以改变的值V使用此命令或from仿真软件。变体Control对话框。

V.Value = 2;sim卡(“slexVariantParameters”

使用这种方法,您可以开发可重用的复杂变量条件表达式。

限制

  • 作为变量参数库一部分的变量参数不支持AUTOSAR代码生成。

扩展功能

版本历史

R2021a中引入

全部展开

Baidu
map