主要内容

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

当你使用多重引用相同的模型模型块,您可以配置块参数以对模型的每个实例使用相同的值或不同的值。例如,您可以配置获得参数的获得块。要使用不同的值,请创建和使用模型参数来设置块参数的值。对于某些应用程序,只有在可以配置每个实例以使用块参数的不同值(例如控制器的设定值或滤波器系数)时,才能重复使用引用的模型。

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

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

  1. 创建一个matlab.®变量或金宝appSimulink.Parameter.对象在引用模型的模型工作空间中。

    • 使用MATLAB变量以易于维护。

    • 使用一个金宝appSimulink.Parameter.对象可以更好地控制最小值和最大值,数据类型和模型参数的其他属性。

  2. 通过使用变量或参数对象设置块参数值。可以选择使用相同的变量或对象来设置其他块参数值。

  3. 属性将变量或对象配置为模型参数争论财产。

    直接模拟此模型时,块参数使用模型工作区中变量或对象存储的值。当模拟此模型作为引用的模型时,配置为模型参数的参数从其父模型获取其值。

    如果你使用金宝appSimulink.Parameter.要设置块参数值的对象,可以编译和模拟模型作为引用的模型,其中对象的值留空(价值调成 '[]“)只要您在父模型引用层次结构中提供一个明确的值。在这种情况下,您无法直接模拟模型。当值为空时,必须提供数据类型方面对于对象。提供最小值最大限度对象的值是可选的。尽管您已经指定了一个空值,Simulink金宝app®仍然合成了这一点价值(看金宝appSimulink.Parameter.).

  4. 每一个模型块是指可重用模型的块,指定块参数的特定实例值。如果未指定值,则参数使用它在模型层次结构下面下面指定的最后值。在顶部模型中,您可以配置诊断配置参数模型参数没有明确的最终值在最顶层生成错误或警告模型可以设置模型参数值的块使用此默认值而不是提供显式值。

  5. 在中间模型中,除了为块参数指定实例特定的值外,您还可以指定该参数是否可以在层次结构的下一层被重写。

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

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

如果你有一个金宝appSimulink Coder™许可证,此技术还可以减少由参考模型功能的形式参数消耗的ROM,例如输出(一步) 功能。

要创建和使用结构来设置块参数值,请参阅组织结构中的相关块参数定义

参数化引用模型

此示例显示如何以交互方式为引用模型的多个实例配置为使用相同块参数的不同值。有关使用命令提示符的参数化引用模型的示例,请参阅以编程方式参数化引用的模型.有关涉及代码生成的示例,请参阅为可重用引用模型指定实例特定的参数值(金宝app仿真软件编码器)

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

要为引用的模型配置模型参数,必须创建MATLAB变量或金宝appSimulink.Parameter.模型工作区中的对象。此示例配置金宝appSimulink.Parameter.对象作为模型参数,没有在对象中存储默认值,而是依赖父模型引用层次结构来提供显式值。如果没有默认值,则不能直接模拟模型,必须作为参考模型进行模拟。

创建一个模型ex_model_arg_ref.包含A.获得块和A.离散滤波器块。

要配置获得参数的获得街区和分子参数的离散滤波器块作为模型参数:

  1. 在模型中,在建模选项卡,单击模型数据编辑器

  2. 在“模型数据编辑器”中,选择参数标签。

  3. 使用价值列以设置值的值获得参数,例如,gainArg

  4. 旁边gainArg,单击“操作”按钮并选择创造

  5. 在“创建新数据”对话框中,设置价值金宝appSimulink.Parameter.位置模型工作区.点击创造

  6. 在里面金宝appSimulink.Parameter.属性对话框,设置数据类型尺寸1.将值留空(价值调成 '[]')。提供最小值最大限度对象的值是可选的。

  7. 要将对象配置为型号参数,请选择争论

  8. 点击好的

  9. 重复步骤4到9分子参数的离散滤波器块。在本例中,创建金宝appSimulink.Parameter.对象命名Coeffarg.

请记住,模型本身不会成功编译,而不为参数对象设置值。

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

当您模拟父模型时,可重用引用模型的每个实例都使用您在父模型中指定的参数值。此示例显示如何将模型参数公开为可调谐参数模型块在模型层次结构的每个级别。

创建一个模型ex_model_arg.使用可重用模型的多个实例ex_model_arg_ref.从前面的例子。

要为模型引用层次结构中设置模型参数的实例特定值:

  1. 在模型中,在建模选项卡,单击模型数据编辑器

  2. 在“模型数据编辑器”中,选择参数标签。模型数据编辑器显示四行,该行对应于您可以指定两者的特定于实例的参数模型块。

  3. 使用模型数据编辑器设置参数值模型Model1..默认情况下,模型参数使用在模型层次结构中它下面指定的最后一个值(由值指示)从下面< >).用下图中的值替换默认值。

  4. 要在模型层次结构的下一层覆盖这些参数的值,请选择争论柱子。默认情况下,未选择复选框。

    您还可以配置每个实例的参数模型块。在“块”对话框中,选择实例参数标签。

  5. 创建一个模型ex_model_arg_top.包含A.模型块的引用ex_model_arg.

  6. 在“模型数据编辑器”中,单击“显示/刷新其他信息按钮。在参数选项卡,您可以在引用的模型中看到暴露为可调参数的每个实例特定参数。从这里,您可以为所有实例创建一个参数值设置Coeffarg.gainArg模型层次结构中的参数。

    默认情况下,每个实例使用它在模型层次结构下方指定的最后值。在这种情况下,模型数据编辑器显示< from_below >.如果您选择争论复选框以将参数公开给父模型,价值显示为< >继承表示运行时值现在来自该父级。

    更新模型关系图之后,编辑器还会显示实例的已编译值。要导航到这个默认值,单击编译值旁边带有三个垂直点的按钮并选择从下面导航到默认值.最后指定值的引用模型在模型画布中的一个新选项卡中打开,模型数据编辑器突出显示包含块参数的行。

将多个模型参数分组为单结构

当需要添加、重命名或删除参数时,可以使用结构来减少维护工作。对于结构,模型的数学功能是相同的。

将参数值替换为ex_model_arg_ref.ex_model_arg.,请遵循以下步骤:

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

    structforinst1.gain = 3.17;structforinst1.coeff = 1.05;
  2. 将结构存储在金宝appSimulink.Parameter.目的。

    structForInst1 = 金宝appSimulink.Parameter (structForInst1);
  3. 打开模型资源管理器。在引用的模型中,ex_model_arg_ref.,在建模选项卡,单击模型探险家

  4. 使用模型资源管理器将参数对象从基本工作区复制到ex_model_arg_ref.模型工作区。

  5. 在模型工作区中,重命名structforinst1.作为structArg

  6. 在里面内容窗格,配置structArg作为唯一的模型论证。

  7. 在里面ex_model_arg_ref.模型数据编辑器中的模型参数选项卡,设置值的值获得参数structarg.gain.和值的价值分子参数structarg.coeff.

  8. 保存模型。

  9. 在命令提示符下,将基本工作区中的现有结构复制为structforinst2.

    structforinst2 =副本(StructForInst1);
  10. 通过使用您用于设置模型参数值的相同的数字设置两个结构中的字段值模型块。

    structforinst1.value.gain = 2.98;structforinst1.value.coeff = 0.98;structforinst2.value.gain = 3.34;structforinst2.value.coeff = 1.11;
  11. 在顶级模型中,ex_model_arg.,使用模型数据编辑器设置参数值,如图所示。

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

你可以使用金宝appsimulink.bus.对象作为结构的数据类型。该对象可确保实例特定结构的特性,例如字段的名称和顺序,匹配模型工作区中结构的特征。

  1. 在命令提示符处,使用该函数金宝appSimulink.Bus.createObject创建一个金宝appsimulink.bus.目的。对象中的元素的层次结构与结构字段的层次结构匹配。对象的默认名称是SLBUS1.

    金宝appsimulink.bus.createobject(structforinst1.value);
  2. 将总线对象重命名为myParamStructType通过复制它。

    myparamstrugtype =副本(SLBUS1);
  3. 在模型数据编辑器中ex_model_arg., 点击显示/刷新其他信息按钮。模型数据编辑器现在包含与基础工作区中的参数对象对应的行,structforinst1.structforinst2.

  4. 使用数据类型列以设置数据类型structforinst1.structforinst2.公共汽车:MyParamStructType.

  5. 在模型数据编辑器中ex_model_arg_ref.,使用模型数据编辑器设置数据类型structArg公共汽车:MyParamStructType.

更改模型参数名称或值

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

  • 找到所有模型块引用模型并保存每个块指定的实例特定的参数值。使用get_param查询功能instanceParameters.参数,它是一个结构数组。该结构包含四个字段:的名字价值小路, 和争论

    您必须保存特定于即时的参数值,因为重命名操作会丢弃值模型块。

  • 在“模型数据编辑器”中,右键单击引用模型的模型工作区中的变量或对象并选择重命名所有.重命名操作更改变量或对象的名称,并在整个模型中更改引用。有关更多信息,请参阅创建,编辑和管理工作区变量

  • 将参数值重新应用于模型使用参数的新名称块。以编程方式设置参数值模型块,看看实例参数

自定义可重用组件的用户界面

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

使用此技术还可以更轻松地编程方式指定特定于实例的值。如果您创建并使用命名的Mask参数Gainmask.以编程方式将值设置为0.98对于名为的模型的实例mymodelblock.,您的用户可以在命令提示符下使用此命令:

set_param(“myModelBlock”'gainmask'“0.98”

如果将掩码应用于引用的模型,则模型掩码仅显示直接子模型的实例特定参数。它没有显示从后代模型提升的特定于实例的参数。

如果不屏蔽模型,则要设置特定于实例的值,请使用instanceParameters.块的参数。有关更多信息,请参阅以编程方式参数化引用的模型

有关屏蔽模型的信息,请参见系统面具简介

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

当你使用金宝app仿真软件。LookupTable存储和配置ASAP2或AutoSar代码生成的查找表数据的对象(例如,STD_AXIS或曲线),您可以将对象配置为模型参数。然后,您可以为组件的每个实例指定唯一表数据和断点数据。

你不能使用金宝appsimulink.breakpoint.对象作为模型参数。

您可以指定特定于实例的实例金宝app仿真软件。LookupTable作为一种新的论证金宝app仿真软件。LookupTable在父模型中或作为简单的MATLAB结构或数组。

当你设置时规格明确的价值或者甚至间隔,值可以是:

  • 有效MATLAB结构变量的名称,例如model1_lut2.

  • 文字结构表达式,例如struct(' Table ',…,' BP1 ',…,' BP2 ',…)

  • 返回有效结构的其他表达式,例如params.model1.lut2.或呼叫matlab函数

当你设置时规格参考,值可以是:

  • 数值数组的文字值,例如[1 5 7;2 8 13]

  • 数字数组变量的名称,例如model1_lut2.

  • 返回有效数字阵列的其他表达式,例如params.model1.lut2.或呼叫matlab函数

指定特定实例的实例金宝app仿真软件。LookupTable参数作为一个结构,以下规则适用:

  • 模型参数定义的每个字段必须在结构中指定,并且字段的数量和字段的名称必须匹配。

  • 结构中的表和断点数据的维度必须与模型参数定义的维度匹配。

  • 如果结构字段的数据类型是,该值被投射到相应模型参数字段的数据类型。否则,该值必须匹配相应模型参数字段的数据类型。

您可以将值指定为任何仿真模式和代码生成的简单数值。对于代码生成,如果使用存储类配置模型参数汽车,结构或数字阵列变量不保留在生成的代码中。如果将存储类设置为任何其他值,则结构或数字数组类似于其他模型参数,其中该值用于初始化生成的代码中的可调参数。

此示例显示了如何指定特定实例的实例金宝app仿真软件。LookupTable作为一种新的论证金宝app仿真软件。LookupTable作为Matlab结构。

有关通过使用查找表和命令提示符的示例,请参阅参数和命令提示符以编程方式为查找表配置实例特定的数据

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

  1. 创建一个模型ex_arg_lut_ref.,表示可重复使用的算法。

  2. 使用模型资源管理器,添加金宝app仿真软件。LookupTable对象。你可以使用添加si金宝appmulink loopuptable.按钮.名称对象Lutarg.

  3. 表尺寸的数量2.在里面桌子断点列表区域,使用指定值桌子BP1., 和BP2.数据。例如,通过在Matlab表达式框中输入这些值来配置表和断点数据。

    • 桌子-(3 4; 1 2)

    • BP1.-(1 2)

    • BP2.-[3 4]

    当您直接模拟或生成代码时ex_arg_lut_ref.,该模型使用这些值。

  4. 结构类型定义, 放的名字LUTArg_Type

  5. 点击申请

  6. 在里面内容窗格,for.Lutarg.,选中“复选框”中争论柱子。

  7. 在引用的模型中,在一天的查找表块,集合数据规范查找表对象.放的名字Lutarg.

  8. 保存模型。

创建特定于实例的参数值

  1. 创建一个模型ex_arg_lut.,它使用可重用的算法两次。

  2. 在命令提示符下,创建一个金宝app仿真软件。LookupTable基础工作区中的对象。或者,您可以创建金宝app仿真软件。LookupTable数据字典中的对象。

    lutforinst1 = 金宝appsimulink.lockuptable;
  3. 指定对象的断点和表数据。

    lutforinst1.table.value = [8 7;6 5];lutforinst1.breakpoints(1).value = [5 6];lutforinst1.breakpoints(2).value = [3 4];
  4. 指定结构类型名称。将此名称与引用模型工作区中的对象指定的名称匹配。

    lutforinst1.structtypeinfo.name =.“LUTArg_Type”;
  5. 使用结构为第二个创建特定于实例的参数值模型块。指定结构的断点和表数据。

    structforinst2.table = [9 8;7 7];structforinst2.bp1 = [3 4];structforinst2.bp2 = [5 6];
  6. 在里面ex_arg_lut.模型,用于模型实例模型,在实例参数选项卡,设置值Lutarg.Lutforinst1.

  7. 对模型实例Model1., 放Lutarg.StructForInst2

一个例子ex_arg_lut_ref.控件中存储的表和断点数据金宝app仿真软件。LookupTable基础工作区中的对象,另一个实例使用存储在结构中的表和断点数据。

也可以看看

||

相关例子

更多关于