文档

参数化可重用引用模型的实例

当您使用模型引用将大型系统分解为组件时,每个组件都是一个单独的模型。可以通过多个引用来重用组件模型块。每一个模型Block是组件的一个实例。然后可以配置块参数(例如获得a的参数获得块)对组件的每个实例使用相同的值或不同的值。要使用不同的值,请创建并使用一个模型参数来设置块参数的值。

有关在可重用组件中设置块参数值的信息,请参见可重用组件的参数接口

为可重用模型的每个实例指定不同的值

对于可重用引用模型中的块参数,为模型的每个实例指定不同的值:

  1. 创建MATLAB®变量或万博1manbetx仿真软件。参数引用模型的模型工作区中的对象。

    为了便于维护,使用MATLAB变量。使用一个万博1manbetx仿真软件。参数对象,以更好地控制模型参数的最小值和最大值、数据类型和其他属性。

  2. 通过使用变量或参数对象来设置模型中的块参数值。可选地,使用相同的变量或对象设置其他块参数值。

  3. 将变量或对象配置为模型参数。在模型数据编辑器上参数选项卡上的复选框论点列。或者,在模型资源管理器中,检查模型工作区中的变量或对象内容窗格中的复选框论点列。

    当您直接模拟这个模型时,块参数使用变量或对象存储在模型工作区中的值。否则,包括模拟父模型时,模型工作区中的值都没有意义。

  4. 在每一个模型引用可重用模型的块,为模型参数指定特定于实例的值。若要设置该值,可以使用设置块参数值的常用技术(请参阅设置块参数值).

将多个参数组合成一个结构

当您配置一个模型以使用多个模型参数时,请考虑在模型工作区中使用结构而不是单独的变量。当您想要添加、重命名或删除参数时,这种技术减少了维护工作。而不是手动同步模型工作区中的参数值模型块,您可以使用变量编辑器或命令提示符修改结构。

如果你有万博1manbetx®编码器™,该技术还可以减少由参考模型函数的形式参数所消耗的ROM,例如输出(一步)函数。

有关创建和使用结构来设置块参数值的基本信息,请参见在结构中组织相关块参数定义

参数化引用模型

这个例子展示了如何配置一个引用模型的多个实例来为同一个块参数使用不同的值。

有关涉及代码生成的示例,请参见为可重用引用模型指定特定于实例的参数值(万博1manbetx仿真软件编码器)。

配置引用模型以使用模型参数

创建模型ex_model_arg_ref.该模型代表了一个可重用的算法。

open_system (“ex_model_arg_ref”

在模型中,选择视图>模型数据编辑器

在模型数据编辑器中,选择参数选项卡。

在模型中,选择获得块。

在“模型数据编辑器”中,使用价值属性的值获得参数gainArg

旁边gainArg,点击操作按钮并选择创建

2 .在“创建新数据”对话框中设置价值万博1manbetx仿真软件。参数而且位置模型的工作空间.点击创建

在属性对话框中,设置价值例如,对一个数字,3.17.点击好吧

使用“模型数据编辑器”设置分子参数。离散滤波器通过使用万博1manbetx仿真软件。参数对象命名coeffArg的值为1.05.与gainArg,将参数对象存储在模型工作区中。

在模型数据编辑器中,单击显示/刷新其他信息按钮。

使用内容过滤框来查找每个参数对象(gainArg而且coeffArg).属性中的复选框论点列。

保存ex_model_arg_ref模型。

或者,在命令提示符中,您可以使用这些命令来配置块和参数对象:

set_param (“ex_model_arg_ref /增益”“获得”“gainArg”modelWorkspace = get_param(“ex_model_arg_ref”“ModelWorkspace”);assignin (modelWorkspace“gainArg”,万博1manbetx Simulink.Parameter (3.17));set_param (“ex_model_arg_ref /离散滤波器”“分子”“coeffArg”) assignin (modelWorkspace“coeffArg”,万博1manbetx Simulink.Parameter (1.05));set_param (“ex_model_arg_ref”“ParameterArgumentNames”“coeffArg, gainArg”) save_system (“ex_model_arg_ref”

当你模拟ex_model_arg_ref方法中指定的值,则模型工作区中的参数对象将使用价值财产。块参数也使用这些值。

在父模型中设置模型参数值

创建模型ex_model_arg.该模型表示使用可重用算法的多个实例的系统模型。

open_system (“ex_model_arg”

在模型中,打开model Data Editor参数选项卡(视图>模型数据编辑器).模型数据编辑器显示了与模型参数对应的四行,coeffArg而且gainArg,您可以为这两个指定模型块。

使用模型数据编辑器为模型参数设置值。例如,使用图中的值。

或者,在命令提示符中,您可以使用这些命令来设置值:

set_param (“ex_model_arg /模式”“ParameterArgumentValues”...结构(“coeffArg”“0.98”“gainArg”“2.98”) set_param (“ex_model_arg / Model1”“ParameterArgumentValues”...结构(“coeffArg”“1.11”“gainArg”“3.34”))

当你模拟ex_model_arg的每个实例ex_model_arg_ref(每模型块中指定的参数值传递给参数对象ex_model_arg_ref模型的工作空间。例如,在的上实例中ex_model_arg_ref,参数对象gainArg使用值2.98

将多个模型参数组合成一个结构

在命令提示符下,创建一个结构。属性中的每个参数对象添加一个字段ex_model_arg_ref工作区。

structForInst1。增益= 3.17;structForInst1。Coeff = 1.05;

将结构存储在万博1manbetx仿真软件。参数对象。

structForInst1 = 万博1manbetxSimulink.Parameter(structForInst1);

打开模型资源管理器。在参考模型中,ex_model_arg_ref中,选择视图>模型浏览器>模型浏览器

使用Model Explorer将参数对象从基本工作区复制到ex_model_arg_ref模型的工作空间。

在模型工作区中,重命名structForInst1作为structArg

assignin (modelWorkspace“structArg”,复制(structForInst1));

内容窗格中,配置structArg作为唯一的模型参数。

set_param (“ex_model_arg_ref”“ParameterArgumentNames”“structArg”

ex_model_arg_ref模型,检查模型数据编辑器参数选项卡。

的值,使用“模型数据编辑器”设置获得参数structArg.gain的值分子参数structArg.coeff.保存模型。

set_param (“ex_model_arg_ref /增益”“获得”“structArg.gain”) set_param (“ex_model_arg_ref /离散滤波器”...“分子”“structArg.coeff”) save_system (“ex_model_arg_ref”

在命令提示符下,将现有结构复制为structForInst2

structForInst2 = copy(structForInst1);

类中设置模型参数值时使用的相同数字,在这两个结构中设置字段值模型块。

structForInst1.Value。增益= 2.98;structForInst1.Value。Coeff = 0.98;structForInst2.Value。增益= 3.34;structForInst2.Value。Coeff = 1.11;

在顶层模型中,ex_model_arg,使用模型数据编辑器根据图设置参数值。

set_param (“ex_model_arg /模式”“ParameterArgumentValues”...结构(“structArg”“structForInst1”) set_param (“ex_model_arg / Model1”“ParameterArgumentValues”...结构(“structArg”“structForInst2”))

有了这些结构,模型的数学功能是相同的。

使用总线对象作为结构的数据类型

可选地,使用万博1manbetx仿真软件。公共汽车对象作为结构的数据类型。该对象确保实例特定结构的特征,例如字段的名称和顺序,与模型工作空间中的结构特征匹配。

在命令提示符下,使用该函数万博1manbetxSimulink.Bus.createObject要创建万博1manbetx仿真软件。公共汽车对象。对象中元素的层次结构与结构字段的层次结构相匹配。对象的默认名称为slBus1

万博1manbetxSimulink.Bus.createObject (structForInst1.Value);

将总线对象重命名为myParamStructType通过复制。

myParamStructType = copy(slBus1);

在模型数据编辑器中ex_model_arg,按显示/刷新其他信息按钮。模型数据编辑器现在包含与基本工作空间中的参数对象对应的行,structForInst1而且structForInst2

使用数据类型列设置的数据类型structForInst1而且structForInst2总线:myParamStructType

structForInst1。数据类型=“巴士:myParamStructType”;structForInst2。数据类型=“巴士:myParamStructType”

在模型数据编辑器中ex_model_arg_ref,使用“模型数据编辑器”设置的数据类型structArg总线:myParamStructType

temp = getVariable(modelWorkspace,“structArg”);Temp = copy(Temp);temp.DataType =“巴士:myParamStructType”;assignin (modelWorkspace“structArg”,复制(临时));

重命名模型参数

在引用模型的上下文中重命名一个模型参数:

  • 找到所有模型引用模型的块,并保存每个块指定的参数值。使用get_param命令,查询ParameterArgumentValues每个块的参数,它是一个结构,其字段对应于要重命名的参数。

    参数中的值必须保存,因为重命名操作将丢弃模型块。

  • 在模型资源管理器中,右键单击引用模型的模型工作区中的变量或对象,然后选择重命名所有.重命名操作将更改变量或对象的名称,并在整个模型中更改对其的引用。有关更多信息,请参见创建、编辑和管理工作区变量

  • 对象重新应用参数值模型通过使用参数的新名称来阻塞。看到以编程方式更改模型块中的特定参数值

类中的特定参数值以编程方式更改模型

类中以编程方式设置参数值模型块,您可以设置编程块参数的值ParameterArgumentValues通过使用结构。若要修改已设置的参数值或值,请考虑settingParameterArgumentValues通过使用部分结构,其中的字段只对应于您想要设置的值的参数。

在这个例子中参数化引用模型,为模型ex_model_arg_ref,定义两个模型参数coeffArg而且gainArg.在一个模型引用的块ex_model_arg_ref,通过使用为两个参数设置值ParameterArgumentValues.以后,要更改的值coeffArg0.981.15为那模型块,可以使用只针对目标的部分结构coeffArg

set_param (“ex_model_arg /模式”“ParameterArgumentValues”结构(“coeffArg”“1.15”))

另一个论点,gainArg,保持其值。

为可重用组件定制用户界面

当您设计一个可重用的引用模型供团队的其他成员使用时,您可以对整个引用模型应用掩码。然后您可以自定义与用户交互的方式模型块,包括设置模型参数值。

使用这种技术还可以更容易地以编程方式指定参数值。如果您创建并使用名为gainMask,以编程方式将参数值设置为0.98对于模型的实例(模型块)的名字myModelBlock,您的用户可以在命令提示符下使用此命令:

set_param (“myModelBlock”“gainMask”“0.98”

如果您不屏蔽模型,要设置参数值,您的用户必须在“模型数据编辑器”或“参数值”表中定位该值模型对话框。

有关屏蔽模型的信息,请参见模型口罩简介

的参数值模型包含模型变量的块

的变量中提到模型时模型块(通过选择使变异体中描述的技术指定参数值,而不是使用表包含模型变量的模型块的模型参数

为查找表配置特定于实例的数据

当你使用万博1manbetx仿真软件。LookupTable对象来存储和配置ASAP2或AUTOSAR代码生成的查找表数据(例如STD_AXIS或CURVE),您可以将这些对象配置为模型参数。然后可以为组件的每个实例指定唯一的表数据和断点数据。

  1. 在引用的模型工作区中,创建万博1manbetx仿真软件。LookupTable对象。在模型中的查找表块中,使用对象设置表和断点数据。

  2. 属性将对象配置为模型参数论点复选框中的模型资源管理器。

  3. 创建万博1manbetx仿真软件。LookupTable对象来存储特定于实例的数据。例如,如果您配置单个万博1manbetx仿真软件。LookupTable对象作为模型参数,以存储引用模型的两个实例的实例特定的数据(模型在父模型中的块),创建两个万博1manbetx仿真软件。LookupTable基本工作区或数据字典中的对象。

  4. 配置所有的万博1manbetx仿真软件。LookupTable对象使用相同的结构类型名称。在属性对话框中,在结构类型定义,设置的名字到相同的值。

  5. 使用特定于实例的对象在Model块中设置参数值。例如,在每个Model块中,使用一个实例特定的万博1manbetx仿真软件。LookupTable基本工作区中的对象。

你不能使用万博1manbetx仿真软件。断点对象或万博1manbetx仿真软件。LookupTable引用的对象万博1manbetx仿真软件。断点对象作为模型参数。

创建范例模型

创建示例模型ex_arg_LUT_ref,表示可重用算法。

open_system (“ex_arg_LUT_ref”

创建示例模型ex_arg_LUT,该算法使用了两次可重用算法。

open_system (“ex_arg_LUT”

在引用模型中配置模型参数

使用模型资源管理器创建万博1manbetx仿真软件。LookupTable引用的模型工作区(ex_arg_LUT_ref).命名对象LUT_arg

在Model Explorer的Dialog窗格(右侧窗格)中,设置表维数2.下表格而且断点,为表和断点数据指定值。模拟或生成代码时直接从ex_arg_LUT_ref时,模型使用这些值。

结构类型定义,设置的名字LUT_arg_Type

点击应用

内容窗格中,为LUT_arg的复选框论点列。

在引用的模型中n-D查找表块,设置数据规范查找表对象.集的名字LUT_arg

保存引用的模型。

或者,在命令提示符中,您可以使用这些命令来创建和配置对象。

temp = 万博1manbetxSimulink.LookupTable;temp.Table.Value = [3 4;1 2];temp.Breakpoints(1)。Value = [1 2];temp.Breakpoints(2)。Value = [3 4];temp.StructTypeInfo.Name =“LUT_arg_Type”;MDLWKS = get_param(“ex_arg_LUT_ref”“ModelWorkspace”);assignin (mdlwks“LUT_arg”,复制(临时))set_param (“ex_arg_LUT_ref”“ParameterArgumentNames”“LUT_arg”) set_param ('ex_arg_LUT_ref/n-D查找表'...“DataSpecification”“查找表对象”“LookupTableObject”“LUT_arg”) save_system (“ex_arg_LUT_ref”

创建实例特定的参数值

在命令提示符下,创建两个万博1manbetx仿真软件。LookupTable基本工作区中的对象。

LUTForInst1 = 万博1manbetxSimulink.LookupTable;LUTForInst2 = 万博1manbetxSimulink.LookupTable;

为每个对象指定断点和表数据。

LUTForInst1.Table。值= [8 7;6 5];LUTForInst1.Breakpoints(1)。Value = [5 6];LUTForInst1.Breakpoints(2)。Value = [3 4];LUTForInst2.Table。值= [9 8;7 7];LUTForInst2.Breakpoints(1)。Value = [3 4];LUTForInst2.Breakpoints(2)。Value = [5 6];

指定结构类型名称。将此名称与引用的模型工作区中的对象指定的名称匹配。

LUTForInst1.StructTypeInfo。Name =“LUT_arg_Type”;LUTForInst2.StructTypeInfo。Name =“LUT_arg_Type”

ex_arg_LUT模型,在上面模型Block,在参数选项卡,设置LUT_argLUTForInst1

在底部模型块,设置LUT_argLUTForInst2

或者,在命令提示符中,您可以使用这些命令来配置Model块。

set_param (“ex_arg_LUT /模式”“ParameterArgumentValues”...结构(“LUT_arg”“LUTForInst1”) set_param (“ex_arg_LUT / Model1”“ParameterArgumentValues”...结构(“LUT_arg”“LUTForInst2”))

每一个实例ex_arg_LUT_ref类中存储的表和断点数据万博1manbetx仿真软件。LookupTable基本工作区中的对象。

另请参阅

||

相关的话题

这个话题有用吗?