主要内容

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

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

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

对于可重用参照模型中的块参数,要为模型的每个实例指定不同的值,请执行以下操作:

  1. 创建一个MATLAB®可变或金宝appSimulink.参数对象位于引用模型的模型工作区中。

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

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

  2. 使用变量或参数对象设置块参数值。(可选)使用相同的变量或对象设置其他块参数值。

  3. 通过选择论点财产。

  4. 为变量或指定一个默认值金宝appSimulink.参数对象直接模拟此模型时,块参数使用变量或对象存储在模型工作空间中的值。将此模型模拟为引用模型时,配置为模型参数的参数将从其父模型获取其值。

    或者,您可以将值保留为金宝appSimulink.参数对象为空。看见定义模型参数而不指定默认值

  5. 在每一个模型引用可重用模型的块,请为块参数指定特定于实例的值。实例特定值的维度和数据类型必须与模型参数定义的维度和数据类型匹配。如果未指定值,则参数将使用模型层次结构中在其下方指定的最后一个值。在顶部型号中,您可以配置诊断配置参数模型参数没有明确的最终值当最上面的模型可以为模型参数设置值的块使用此默认值,而不是提供显式值。

  6. 在中间模型中,除了为块参数指定特定于实例的值外,还可以指定该参数是否可以在层次的下一级别被替代。

定义模型参数而不指定默认值

如果你使用金宝appSimulink.参数对象要设置块参数值,可以编译模型并将其模拟为引用模型,对象的值保留为空(价值设置为“[]“),只要您在父模型引用层次结构中的某个位置提供显式值。在这种情况下,您不能直接模拟该模型。当该值为空时,您必须提供数据类型对于对象。您还可以指定分钟马克斯复杂性财产。虽然指定了空值,但Simulink金宝app®仍然合成一个价值使用指定的属性(请参见金宝appSimulink.参数).

将多个参数组合到一个结构中

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

如果你有金宝appSimulink编码器™许可证,此技术还可以减少被引用模型函数的形式参数(如输出)所消耗的ROM()功能。

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

参数化引用的模型

这个示例展示了如何交互式地配置一个引用模型的多个实例,以对同一个块参数使用不同的值。有关仅使用命令提示符参数化引用模型的示例,请参见以编程方式参数化引用的模型. 有关涉及代码生成的示例,请参见为可重用的引用模型指定特定于实例的参数值(金宝appSimulink编码器)

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

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

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

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

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

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

  3. 使用价值列来设置获得参数设置为变量,例如,盖纳格

  4. 旁边盖纳格,单击操作按钮并选择创造

  5. 在“创建新数据”对话框中,设置价值金宝appSimulink.参数地方模型工作空间. 点击创造

  6. 金宝appSimulink.参数属性对话框,设置数据类型双重的1.保持值为空(价值设置为“[]”)。指定分钟马克斯复杂性对象的值是可选的。

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

  8. 点击好啊

  9. 对所选部件重复步骤4至9分子参数离散滤波器块在本例中,创建一个金宝appSimulink.参数名为科法格

请记住,如果没有为参数对象设置值,模型本身无法成功编译。

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

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

创建一个模型ex_model_arg它使用可重用模型的多个实例ex_model_arg_ref从上一个例子。

要在模型引用层次结构中为模型参数设置特定于实例的值,请执行以下操作:

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

  2. 在模型数据编辑器中,选择参数“模型数据编辑器”显示了四行,它们对应于您可以为这两行指定的实例特定参数模型阻碍。

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

  4. 若要在模型层次的下一级别替代这些参数的值,请选中论点列。默认情况下,不选中复选框。

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

  5. 创建一个模型ex_型号_参数_顶部包含一个模型阻止引用ex_model_arg

  6. 在模型数据编辑器中,单击显示/刷新其他信息按钮上参数选项卡,您可以看到在引用的模型中作为可调参数公开的每个特定于实例的参数。的所有实例可以从这里创建参数值集科法格盖纳格模型层次结构中的参数。

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

    更新模型图后,编辑器还会显示实例的编译值。若要导航到此默认值,请单击编译值旁边有三个垂直点的按钮,然后选择从下面导航到默认值.最后指定值的引用模型将在模型画布的新选项卡中打开,模型数据编辑器将高亮显示包含块参数的行。

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

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

将参数值替换为的结构的步骤ex_model_arg_refex_model_arg,请按照以下步骤操作:

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

    structForInst1。获得= 3.17;structForInst1。多项式系数= 1.05;
  2. 将结构存储在金宝appSimulink.参数对象

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

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

  5. 在“模型”工作区中,重命名结构FORINST1作为结构参数

  6. 目录窗格,配置结构参数作为唯一的模型参数。

  7. ex_model_arg_ref模型,在模型数据编辑器中参数选项卡,设置获得参数到结构增益以及它的价值分子参数到structArg.coeff

  8. 保存模型。

  9. 在命令提示符处,将基本工作空间中的现有结构复制为结构FORINST2

    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,使用模型数据编辑器设置参数值,如图所示。

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

你可以使用金宝app模拟总线对象作为结构的数据类型。该对象确保实例特定结构的特征(如字段的名称和顺序)与模型工作区中结构的特征相匹配。

  1. 在命令提示下,使用函数金宝appSimulink.Bus.createObject创建金宝app模拟总线对象中元素的层次结构与结构字段的层次结构匹配。对象的默认名称为slBus1

    金宝appSimulink.Bus.createObject (structForInst1.Value);
  2. 将总线对象重命名为myParamStructType通过复制它。

    myParamStructType = (slBus1)复印件;
  3. 在的模型数据编辑器中ex_model_arg,单击显示/刷新其他信息按钮。模型数据编辑器现在包含与基本工作区中的参数对象相对应的行,结构FORINST1结构FORINST2

  4. 使用数据类型列来设置的数据类型结构FORINST1结构FORINST2总线:myParamStructType

  5. 在的模型数据编辑器中ex_model_arg_ref,使用模型数据编辑器设置结构参数总线:myParamStructType

更改模型参数名称或值

要在引用模型的上下文中重命名模型参数,请执行以下操作:

  • 找到所有模型引用模型并保存每个块指定的特定于实例的参数值的块。使用获取参数命令功能瞬时参数每个块的参数,它是一个结构数组。该结构包含四个字段:名称价值路径论点

    属性中的值将被重命名,因此必须保存特定于瞬时的参数值模型阻碍。

  • 在模型数据编辑器中,右键单击引用模型的模型工作区中的变量或对象并选择全部重命名。重命名操作会更改变量或对象的名称,并更改整个模型中对它的引用。有关详细信息,请参阅创建、编辑和管理工作空间变量

  • 将参数值重新应用于模型通过使用参数的新名称阻止。以编程方式在模型块,看实例参数

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

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

使用此技术还可以更轻松地以编程方式指定特定于实例的值盖恩马斯克以编程方式将值设置为0.98对于名为myModelBlock,用户可以在命令提示符下使用此命令:

设置参数(“myModelBlock”“gainMask”'0.98'

如果将遮罩应用于引用的模型,则模型遮罩仅显示直接子模型中的实例特定参数。它不显示从子模型升级的实例特定参数。

如果不遮罩模型,则要设置实例特定的值,请使用瞬时参数块的参数。有关详细信息,请参阅以编程方式参数化引用的模型

有关遮罩模型的信息,请参见系统掩码简介

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

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

你不能使用金宝app仿真软件。断点对象作为模型参数。

可以指定特定于实例的值金宝appSimulink.LookupTable新论据金宝appSimulink.LookupTable在父模型中或作为简单的MATLAB结构或数组。

当你设定规格显式值均匀间距,取值为:

  • 一个有效的MATLAB结构变量的名称,如Model1_LUT2

  • 文本结构表达式,如结构('Table'、…、'BP1'、…、'BP2'、…)

  • 返回有效结构的其他表达式,例如Params.Model1.LUT2或者调用MATLAB函数

当你设定规格参考,取值为:

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

  • 数值数组变量的名称,例如Model1_LUT2

  • 返回有效数字数组的其他表达式,例如Params.Model1.LUT2或者调用MATLAB函数

指定特定于实例的金宝appSimulink.LookupTable参数作为结构,以下规则适用:

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

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

  • 如果结构字段的数据类型为双重的,则该值将强制转换为相应模型参数字段的数据类型。否则,该值必须与相应模型参数字段的数据类型匹配。

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

此示例显示如何指定特定于实例的金宝appSimulink.LookupTable新论据金宝appSimulink.LookupTable并作为MATLAB结构。

有关使用查找表和命令提示参数化参照模型的示例,请参见以编程方式为查找表配置特定于实例的数据

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

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

  2. 使用模型管理器,添加一个金宝appSimulink.LookupTable对象在模型工作区中。你可以使用添加Si金宝appmulink LookupTable按钮.名称的对象LUTArg

  3. 表维度数2. 在桌子断点在表格区域中,使用指定桌子BP1BP2数据例如,通过在MATLAB表达式框中输入这些值来配置表和断点数据。

    • 桌子- - - - - -[3 4;1 2]

    • BP1- - - - - -[1 2]

    • BP2- - - - - -[3 4]

    当您直接从ex_arg_LUT_ref,模型使用这些值。

  4. 在下面结构体类型定义,设置名称卢塔格型

  5. 点击应用

  6. 目录窗格中,为LUTArg,选中中的复选框论点列。

  7. 在参照模型中,在n-D查找表积木数据规范查找表对象设置名称LUTArg

  8. 保存模型。

创建实例特定的参数值

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

  2. 在命令提示符处,创建一个金宝appSimulink.LookupTable对象在基本工作区中。或者,您可以创建金宝appSimulink.LookupTable数据字典中的对象。

    LUTForInst1 = 金宝appSimulink.LookupTable;
  3. 指定对象的断点和表数据。

    LUTForInst1.Table.Value=[87;65];LUTForInst1.Breakpoints(1)。Value=[56];LUTForInst1.Breakpoints(2)。Value=[34];
  4. 指定结构类型名称。将此名称与引用模型工作区中的对象指定的名称相匹配。

    LUTForInst1.StructTypeInfo.Name=“LUTArg_类型”
  5. 使用结构为第二个参数创建实例特定的参数值模型块指定结构的断点和表数据。

    StructForInst2。表= [9 8;7 7];StructForInst2。Bp1 = [3 4];StructForInst2。Bp2 = [5 6];
  6. ex_arg_LUT模型,例如模型实例模型,在实例参数选项卡,设置LUTArgLUTForInst1

  7. 例如模型模型1,设置LUTArg结构FORINST2

的一个实例ex_arg_LUT_ref使用存储在中的表和断点数据金宝appSimulink.LookupTable对象,另一个实例使用存储在结构中的表和断点数据。

另请参阅

|||||

相关的例子

更多关于