主要内容

金宝app仿真软件。VariantControl class

包:金宝app

创建一个变量控制变量对象

描述

金宝app仿真软件。VariantControl类创建变量控制变量对象,以将变量控制变量的值与变量激活时间相关联。使用金宝app仿真软件。VariantControl对象来确定仿真过程中变量参数的活跃值。

创建

variantControlVariable=仿金宝app真软件。VariantControl创建无值和的变量控制变量对象“ActivationTime”设置为“更新图”

variantControlVariable=仿金宝app真软件。VariantControl(名称,值)创建指定的变量控制变量对象名称,值对参数。使用此语法,您可以创建一个对象,并将其值与变量激活时间相关联。

输入参数

全部展开

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。

例子:“值”,1,“激活时间”,“更新图”

变量控制变量对象的值,指定为标量变量、枚举类型或金宝app仿真软件。参数对象。

例子:“价值”1

金宝app®可以在仿真和代码生成工作流的不同阶段设置变量参数的活动值。根据使用此属性指定的阶段,Simulink将确定生成的代码是否必须只包含活动值,还是同时包含变量参数的活金宝app动值和非活动值。属性还决定是否分析信号属性中不兼容的变量参数的所有值。有关变体激活时间的更多信息,请参见在模拟和代码生成工作流的不同阶段激活变量

当你指定变量激活时间为:

  • “更新图”Sim金宝appulink不会分析信号属性中不兼容的变量参数的值。它仅为变量参数的活动值生成代码。

  • “更新图表分析所有选择”Sim金宝appulink分析信号属性中不兼容的变量参数的激活值和非激活值,但是它只生成变量参数的激活值的代码。

  • 代码编译的Sim金宝appulink分析信号属性中不兼容的变量参数的激活值和非激活值,并为变量参数的激活值和非激活值生成代码。这些值包含在C预处理器条件语句中#如果而且# endif在编译生成的代码时有条件地编译。

  • “启动”Sim金宝appulink分析信号属性中不兼容的变量参数的激活值和非激活值,并为变量参数的激活值和非激活值生成代码。这些值用正则表达式括起来如果内部情况model_initialize生成的代码的函数,当您运行由代码构建的可执行文件时,这些代码将有条件地求值。

例子:'ActivationTime', 'code compile'

方法

全部展开

例子

全部折叠

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

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

打开slexVariantParameters模型。

open_system (“slexVariantParameters”)

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

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

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

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

V = 金宝appSimulink。VariantControl(“价值”, 1“ActivationTime”“更新图”)
V = VariantControl with properties:值:1 ActivationTime: 'update diagram'

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

sim卡(“slexVariantParameters”)

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

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

使用枚举类型为用作变量控制值的整数赋予有意义的名称。有关枚举类型数据的详细信息,请参见在Simulink模型中使用枚举数据金宝app

在MATLAB®Editor中,定义将枚举值映射为有意义名称的类。

打开slexVariantParameters模型。

open_system (“slexVariantParameters”)

指定变量条件表达式V == EngType。小而且V == EngType。大金宝app仿真软件。VariantVariable对象K1而且K2

K1 = 金宝appSimulink。VariantVariable(“选择”, {'V == EngType。小的, 3.5,'V == EngType。大的, 8.5})
K1 = VariantVariable 2选择:条件值  __________________ _____ V = = EngType。大8.5000 V == EngType。小3.5000 Specification: '' Use getChoice, setChoice, addChoice, removeChoice to access, modify, add or remove choices
K2 = 金宝appSimulink。VariantVariable(“选择”, {'V == EngType。小的, 4.5,'V == EngType。大的, 9.5})
K2 = VariantVariable 2选择:条件值  __________________ _____ V = = EngType。大9.5000 V == EngType。小4.5000 Specification: '' Use getChoice, setChoice, addChoice, removeChoice to access, modify, add or remove choices

在这里,EngType是派生自内置数据类型的基于整数的枚举类,int32.该类有两个枚举值,而且.这些枚举值具有底层整数值1而且2.在本例中,枚举类定义在基本工作空间中。可以选择在中列出的其他存储位置定义类变量块中变量控制变量(操作数)的存储位置

类型EngType.m
classdef EngType < 金宝appSimulink。IntEnumTypeenumeration Small (1) Big (2) end end

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

通过定义控制变量激活其中一个变量值V并将其值设置为EngType。小金宝app仿真软件。VariantControl对象V

V = 金宝appSimulink。VariantControl(“价值”, EngType。小,“ActivationTime”代码编译的)
V = VariantControl属性:值:Small ActivationTime: 'code compile'

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

sim卡(“slexVariantParameters”)

如果你改变V2, 金宝appSimulink®设置的值K1而且K2到45而且9.5在模拟。你可以改变的值V使用此命令或from金宝app仿真软件。VariantControl对话框。

V.Value = 2
V = VariantControl与属性:值:2 ActivationTime: '代码编译'
sim卡(“slexVariantParameters”)

使用枚举类型生成的代码包含值的名称,而不是整数。

% slexVariantParameters_private.h% #if V == EngType_Big || V == EngType_Small% /*变量:K1引用变量:'/Gain' */如果V == EngType_Big . % #定义rtCP_Gain_K1 (8.5)% #elif V == EngType_Small定义rtCP_Gain_K1 (3.5)% # endif% # endif%% #if V == EngType_Big || V == EngType_Small% /*变量:K2引用变量:'/Gain1' */如果V == EngType_Big . % #定义rtCP_Gain1_K2 (9.5)% #elif V == EngType_Small定义rtCP_Gain1_K2 (4.5)% # endif% # endif% #endif /* RTW_HEADER_slexVariantParameters_private_h_ */

注意,对于变量参数启动激活时间,只支持使用这些技术定义的枚举:金宝app

  • 使用函数金宝appSimulink.defineIntEnumType

  • 通过子类化内置整数数据类型int8,int16,int32,uint8,uint16,或者通过子类化金宝app仿真软件。IntEnumType

当永久存储在Simulink®数据字典中时,也支持这些枚金宝app举。金宝app看到数据字典中的枚举

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

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

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

打开slexVariantParameters模型。

open_system (“slexVariantParameters”)

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

VSS_MODE = 金宝appSimulink.Parameter;VSS_MODE。价值= 1; VSS_MODE.DataType =“int32”;VSS_MODE.CoderInfo。StorageClass =“自定义”;VSS_MODE.CoderInfo。CustomStorageClass =“定义”;VSS_MODE.CoderInfo.CustomAttributes。HeaderFile =“demo_macros.h”

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

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

中指定对象为变量控件金宝app仿真软件。VariantVariable对象K1而且K2

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

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

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

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

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

sim卡(“slexVariantParameters”)

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

VSS_MODE。价值= 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_ */%% / *

扩展功能

版本历史

R2021a中引入