主要内容

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

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

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

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

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

    • 为了便于维护,使用MATLAB变量。

    • 使用一个金宝app仿真软件。参数对象,以更好地控制模型参数的最小值和最大值、数据类型和其他属性。

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

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

  4. 为变量or指定一个默认值金宝app仿真软件。参数对象。当您直接模拟这个模型时,块参数使用变量或对象存储在模型工作区中的值。当此模型被模拟为引用模型时,配置为模型参数的参数将从其父模型获取其值。

    您可以选择将该值保留为a金宝app仿真软件。参数对象是空的。看到定义模型参数而不指定默认值

  5. 在每一个模型引用可重用模型的块,为块参数指定特定于实例的值。特定于实例的值的维度和数据类型必须与模型参数定义的维度和数据类型匹配。如果没有指定值,则参数使用模型层次结构中在它下面指定的最后一个值。在top型号中,可以配置诊断配置参数模型参数没有显式的最终值在顶部生成错误或警告模型可以为模型参数设置值的块使用此默认值而不是提供显式值。

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

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

如果你使用金宝app仿真软件。参数对象来设置块参数值,您可以将模型编译并模拟为引用模型,对象的值为空(价值设置为'[]’),只要你在父模型引用层次结构中提供一个显式的值。在这种情况下,您不能直接模拟模型。值为空时,必须提供数据类型而且对于对象。还可以指定最小值马克斯,复杂性属性。虽然您已经指定了一个空值,但是Simulink金宝app®仍然合成了价值使用您指定的属性(请参见金宝app仿真软件。参数).

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

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

如果你有金宝app仿真软件编码器™许可证,这种技术还可以减少由引用模型函数的形式参数所消耗的ROM,例如输出(一步)函数。

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

参数化引用模型

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

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

要为引用的模型配置模型参数,必须创建MATLAB变量或金宝app仿真软件。参数模型工作区中的对象。这个例子配置金宝app仿真软件。参数对象作为模型参数,而不将默认值存储在对象中,而是依赖于父模型引用层次结构来提供显式值。如果没有默认值,就不能直接模拟模型,必须作为参考模型进行模拟。

创建模型ex_model_arg_ref,其中包含获得Block和a离散滤波器块。

配置获得参数。获得Block和分子参数。离散滤波器Block作为模型参数:

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

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

  3. 使用价值属性的值获得变量的参数,例如,gainArg

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

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

  6. 金宝app仿真软件。参数属性对话框,设置数据类型而且1.将值保留为空(价值设置为'[]”)。指定最小值马克斯复杂性对象的值是可选的。

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

  8. 点击好吧

  9. 重复步骤4到9分子参数。离散滤波器块。在本例中,创建一个金宝app仿真软件。参数对象命名coeffArg

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

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

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

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

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

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

  2. 在模型数据编辑器中,选择参数选项卡。Model Data Editor显示了与您可以为这两个实例指定的特定于实例的参数相对应的四行模型块。

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

  4. 控件中的复选框,以在模型层次结构的下一层重写这些参数的值论点列。缺省情况下,不勾选复选框。

    您还可以在每个节点上配置特定于实例的参数模型块。在块对话框中,选择实例参数选项卡。

    提示

    时不支持模型实例参数金宝app引用模型时使用局部求解器中启用。解算器窗格中

  5. 创建模型ex_model_arg_top,其中包含模型阻塞引用ex_model_arg

  6. 在模型数据编辑器中,单击显示/刷新其他信息按钮。在参数选项卡中,您可以看到引用模型中作为可调参数公开的每个特定于实例的参数。属性的所有实例的参数值集coeffArg而且gainArg模型层次结构中的参数。

    默认情况下,每个实例使用模型层次结构中它下面指定的最后一个值。在这种情况下,将显示Model Data Editor< from_below >.如果您选择论点复选框以向父模型公开参数价值显示为< >继承来指示运行时值现在来自该父节点。

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

请注意

你可以使用参数的作家块,以在模拟过程中更改模型实例参数或模型工作区变量的值。看到初始化和重置参数值

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

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

的结构替换参数值ex_model_arg_ref而且ex_model_arg,按以下步骤进行:

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

    structForInst1。增益= 3.17;structForInst1。Coeff = 1.05;
  2. 将结构存储在金宝app仿真软件。参数对象。

    structForInst1 = 金宝appSimulink.Parameter(structForInst1);
  3. 打开模型资源管理器。在参考模型中,ex_model_arg_ref,在建模选项卡上,单击模型浏览器

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

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

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

  7. ex_model_arg_ref模型,在模型数据编辑器参数选项卡的值获得参数structArg.gain的值分子参数structArg.coeff

  8. 保存模型。

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

    structForInst2 = copy(structForInst1);
  10. 类中设置模型参数值时使用的相同数字,在这两个结构中设置字段值模型块。

    structForInst1.Value。增益= 2.98;structForInst1.Value。Coeff = 0.98;structForInst2.Value。增益= 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 = copy(slBus1);
  3. 在模型数据编辑器中ex_model_arg,按显示/刷新其他信息按钮。模型数据编辑器现在包含与基本工作空间中的参数对象对应的行,structForInst1而且structForInst2

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

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

更改模型参数名称或值

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

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

    中的参数值将被重命名操作丢弃,因此必须保存特定于即时的参数值模型块。

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

  • 对象重新应用参数值模型通过使用参数的新名称来阻塞。类中以编程方式设置参数值模型块,看实例参数

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

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

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

set_param (“myModelBlock”“gainMask”“0.98”

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

如果不遮罩模型,要设置特定于实例的值,请使用InstanceParameters块参数。有关更多信息,请参见以编程方式参数化引用模型

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

配置实例特定的数据金宝app仿真软件。LookupTable而且金宝app仿真软件。断点对象

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

的实例特定值金宝app仿真软件。LookupTable参数作为一个新的金宝app仿真软件。LookupTable对象的父模型或作为一个简单的MATLAB结构或数组。

属性指定实例特定的值金宝app仿真软件。LookupTable属性的值初始化断点规范财产。

  • 断点规范属性设置为明确的价值观甚至间距,查找表对象的实例特定值可以是:

    • 一个金宝app仿真软件。LookupTable对象

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

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

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

  • 断点规范属性设置为参考的实例特定值金宝app仿真软件。LookupTable对象可以是:

    • 一个金宝app仿真软件。LookupTable对象。在这种情况下,Simulin金宝appk只传递表格属性指定子模型的查找表对象。这允许您配置模型参数金宝app仿真软件。LookupTable对象和金宝app仿真软件。断点对象,并将这些对象作为多个实例参数重用模型块。

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

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

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

    在这种情况下,如果配置金宝app仿真软件。断点对象引用的金宝app仿真软件。LookupTable属性的实例特定的值作为模型参数金宝app仿真软件。断点对象可以是:

    • 一个金宝app仿真软件。断点对象。

    • 定义断点的数值数组。数组必须与断点对象的设计定义匹配。金宝appSimulink合成了一个金宝app仿真软件。断点通过使用数组中的值来获取。

    • 数值数组变量或结构的字段的名称。

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

  • 模型参数定义的每个字段必须在结构中指定,并且字段的数量和字段的名称必须匹配。例如,虽然只有表中的数据来自a金宝app仿真软件。LookupTable类型的对象参考被传递给子模型时,您仍然必须在结构或Simulink报告和错误中指定断点数据。金宝app

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

  • 如果结构字段的数据类型为时,该值被转换为相应模型参数字段的数据类型。否则,值必须匹配相应模型参数字段的数据类型。

可以指定a的值金宝app仿真软件。LookupTable对象作为任何模拟模式和代码生成的简单数值。对于代码生成,如果使用存储类配置模型参数汽车,结构或数值数组变量不会保留在生成的代码中。如果将存储类设置为任何其他值,则结构或数值数组的值将用于在生成的代码中初始化可调参数,类似于其他模型参数。

的指定实例特定值金宝app仿真软件。LookupTable对象

的特定于实例的值金宝app仿真软件。LookupTable参数作为一个新的金宝app仿真软件。LookupTable并作为MATLAB结构。

有关使用查找表和命令提示符对引用模型进行参数化的示例,请参见为查找表配置特定于实例的数据

首先,创建一个表示可重用算法的模型。配置一个金宝app仿真软件。LookupTable对象作为模型使用的模型参数。

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

  2. 使用模型资源管理器,添加一个金宝app仿真软件。LookupTable对象。您可以使用添加Si金宝appmulink LookupTable按钮.命名对象LUTArg

  3. 内容窗格中,为LUTArg的复选框论点列。

  4. 表维数2.在表格而且断点属性的值表格BP1,BP2数据。例如,通过在MATLAB表达式框中输入这些值来配置表和断点数据。

    • 表格- - - - - -[3 4;1 2]

    • BP1- - - - - -(1 2)

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

    模拟或生成代码时直接从ex_arg_LUT_ref时,模型使用这些值。

  5. 结构类型定义,设置的名字LUTArg_Type

  6. 点击应用

  7. 内容窗格中,为LUTArg的复选框论点列。

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

  9. 保存模型。

的实例指定特定于实例的值,然后创建一个使用可重用算法的模型金宝app仿真软件。LookupTable对象。

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

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

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

    LUTForInst1.Table。值= [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模型,用于模型实例模型,在实例参数选项卡,设置LUTArgLUTForInst1

  7. 对于模型实例Model1,设置LUTArgStructForInst2

一个例子ex_arg_LUT_ref中存储的表和断点数据金宝app仿真软件。LookupTable对象。另一个实例使用存储在结构中的表和断点数据。

指定特定于实例的值金宝app仿真软件。LookupTable而且金宝app仿真软件。断点对象

的特定于实例的值金宝app仿真软件。LookupTable对象作为一个新的金宝app仿真软件。LookupTable对象。的实例指定特定于实例的值金宝app仿真软件。断点对象引用的金宝app仿真软件。LookupTable对象。

首先,创建一个表示可重用算法的模型。配置金宝app仿真软件。断点对象和金宝app仿真软件。LookupTable对象,该对象引用金宝app仿真软件。断点对象作为模型参数。

  1. 创建模型ex_arg_BP_ref,表示可重用算法。

  2. 使用模型资源管理器,添加一个金宝app仿真软件。LookupTable对象。您可以使用添加Si金宝appmulink LookupTable按钮.命名对象LUTArg

  3. 内容窗格中,为LUTArg的复选框论点列。

  4. 表维数1

  5. 将表数据的值指定为(1 2)

  6. 断点规范参考

  7. 断点部分,设置的名字BP1

  8. 添加一个金宝app仿真软件。断点对象。命名对象BP1并将值指定为[3 - 4]

  9. 内容窗格中,为BP1的复选框论点列。

的实例指定特定于实例的值,然后创建一个使用可重用算法的模型金宝app仿真软件。LookupTable对象和金宝app仿真软件。断点对象。

  1. 创建模型ex_arg_BP,该算法使用了两次可重用算法。

  2. 在命令提示符中,为模型实例模型,创建金宝app仿真软件。LookupTable对象和金宝app仿真软件。断点对象。或者,您可以在数据字典或基本工作区中创建这些对象。

    LUTForInst1 = 金宝appSimulink.LookupTable;BPForInst1 = 金宝appSimulink.Breakpoint;
  3. 为对象指定断点和表数据。的断点信息LUTForInst1因此实例特定值的规范与模型参数规范相匹配。但是,只有表数据被推入子模型。

    LUTForInst1.Table。Value = [7 8];LUTForInst1。断点Specification =“参考”;LUTForInst1。断点= {“BPForInst1”};BPForInst1.Breakpoints。Value = [5 6];
  4. ex_arg_BP模型,用于模型实例模型,在实例参数选项卡,设置LUTArgLUTForInst1而价值BP1BPForInst1

  5. 对于模型实例Model1,创建另一个金宝app仿真软件。LookupTable对象,并指定表和断点数据。或者,您可以创建金宝app仿真软件。LookupTable对象在数据字典或基本工作区中创建。

    LUTForInst2 = 金宝appSimulink.LookupTable;BPForInst2 = 金宝appSimulink.Breakpoint;BPForInst2.Breakpoints。Value = [11 12];LUTForInst2.Table。Value = [9 10];LUTForInst2。断点Specification =“参考”;LUTForInst2。断点= {“BPForInst2”};
  6. 的实例特定于实例的值金宝app仿真软件。断点对象。

    BPArrayForInst2 = [11 12];
  7. ex_arg_BP模型,用于模型实例Model1,在实例参数选项卡,设置LUTArgLUTForInst2.对于这个模型实例,将BP1的值设置为数组BPArrayForInst2

另请参阅

对象

相关的话题