主要内容

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

当您使用多个引用同一个模型时模型块,您可以配置块参数,为模型的每个实例使用相同的值或不同的值。例如,可以配置获得参数的获得块。要使用不同的值,创建并使用模型参数来设置块参数的值。对于一些应用,可以重用一个参考模型仅当可以配置每个实例以使用不同的值的块参数(诸如控制器的设定点或滤波器系数)。

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

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

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

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

    • 使用一个万博1manbetx仿真软件。参数对象用于在所述最小更大的控制和最大值,数据类型,模型参数的其它性质。

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

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

    当直接模拟该模型中,块参数使用值,在模型工作区的变量或对象存储。当此模型模拟为参考模型,用于作为模型参数的参数从它的父模型获取其值。

    如果你使用万博1manbetx仿真软件。参数对象来设置块参数值,您可以将该模型编译为引用模型,并将该对象的值保留为空(价值设置 '[]“),只要您在父模型引用层次结构中的某个位置提供显式值。在这种情况下,您不能直接模拟该模型。当该值为空时,您必须提供数据类型方面的对象。提供了最小值马克斯对象的值是可选的。虽然你已经指定了一个空值,Simulink万博1manbetx®仍然合成价值(见万博1manbetx仿真软件。参数).

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

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

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

当您配置模型使用多个模型参数,考虑使用模型工作区分开变量的结构来代替。该技术降低了维护时要添加,重命名或删除参数的努力。而不是手动同步在模型工作区的参数与所述参数的值模型块,通过使用变量编辑器或命令提示修改结构。

如果你有万博1manbetxSimulink编码器™许可证,此技术还可以减少被引用模型函数的形式参数(如输出)所消耗的ROM(一步)函数。

创建和使用结构,集块参数值,请参见组织结构中的相关块参数定义

参数化引用模型

此示例示出了如何将一个参考模型的交互配置多个实例使用不同的值对同一个块参数。对于仅使用命令提示参数化一个参考模型的例子,请参见以编程方式参数化引用的模型。有关涉及代码生成的示例,请参阅为可重用引用模型指定实例特定的参数值(万博1manbetx仿真软件编码器)

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

要为引用的模型配置模型参数,必须创建MATLAB变量或万博1manbetx仿真软件。参数对象。这个示例配置万博1manbetx仿真软件。参数对象作为模型参数,而不在对象中存储默认值,而是依赖父模型引用层次结构提供显式值。如果没有默认值,则不能直接模拟模型,必须作为参考模型进行模拟。

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

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

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

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

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

  4. 旁边gainArg单击动作按钮并选择创建

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

  6. 万博1manbetx仿真软件。参数属性对话框中,设置数据类型1.离开值空(价值设置 '[]“)。提供了最小值马克斯对象的值是可选的。

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

  8. 点击好吧

  9. 对所选部件重复步骤4至9分子参数的离散滤波器块。在本例中,创建一个万博1manbetx仿真软件。参数对象命名coeffArg

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

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

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

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

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

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

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

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

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

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

  5. 创建模型ex_型号_参数_顶部包含A.模型块的引用ex_model_arg

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

    默认情况下,每个实例使用模型层次结构中它下面指定的最后一个值。在本例中,将显示模型数据编辑器< from_below >.如果您选择论点复选框以向父模型公开参数,则价值显示为< >继承以表明运行值现在来自于父母。

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

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

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

的结构替换参数值ex_model_arg_refex_model_arg,请遵循以下步骤:

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

    structForInst1.gain = 3.17;structForInst1.coeff = 1.05;
  2. 将结构存储在万博1manbetx仿真软件。参数对象。

    structForInst1 = 万博1manbetxSimulink.Parameter (structForInst1);
  3. 打开Model Explorer。在参考模型中,ex_model_arg_ref,在建模选项卡,单击模型浏览器

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

  5. 在模型工作区中,重命名结构FORINST1作为structArg

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

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

  8. 保存模型。

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

    structForInst2 = (structForInst1)复印件;
  10. 使用与在中设置模型参数值相同的数字,在两个结构中设置字段值模型块。

    structForInst1.Value。获得= 2.98;structForInst1.Value。多项式系数= 0.98;structForInst2.Value。获得= 3.34;structForInst2.Value。多项式系数= 1.11;
  11. 在顶级车型,ex_model_arg,使用模型数据编辑器设置参数值,如图所示。

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

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

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

    万博1manbetxSimulink.Bus.createObject(structForInst1.Value);
  2. 将总线对象重命名为myParamStructType通过复制它。

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

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

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

更改模型参数名称或值

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

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

    你必须保存特定的瞬间参数值,因为重命名操作将丢弃在该值模型块。

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

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

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

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

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

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

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

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

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

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

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

你不能使用万博1manbetxSimulink.Breakpoint对象作为模型参数。

可以指定实例特定的值万博1manbetx仿真软件。LookupTable论点作为一个新的万博1manbetx仿真软件。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函数

当您指定实例特定的值万博1manbetx仿真软件。LookupTable参数作为一个结构,下列规则适用:

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

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

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

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

这个例子展示了如何指定实例特定的值万博1manbetx仿真软件。LookupTable论点作为一个新的万博1manbetx仿真软件。LookupTable并作为MATLAB结构。

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

配置模型参数的参考模型

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

  2. 使用模型资源管理器,添加万博1manbetx仿真软件。LookupTable对象。你可以使用添加模型万博1manbetxLookupTable按钮.命名对象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. 内容窗格中LUTArg,选中中的复选框论点柱子。

  7. 在引用的模型中一天的查找表积木数据规范查找表对象设置的名字LUTArg

  8. 保存模型。

创建实例特定的参数值

  1. 创建模型ex_arg_LUT,它使用可重复使用的算法的两倍。

  2. 在命令提示符处,创建一个万博1manbetx仿真软件。LookupTable对象在底座的工作区。或者,您可以创建万博1manbetx仿真软件。LookupTable对象在数据字典中。

    LUTForInst1 = 万博1manbetxSimulink.LookupTable;
  3. 指定对象的断点和表数据。

    LUTForInst1.Table.Value=[87;65];LUTForInst1.Breakpoints(1)。Value=[56];LUTForInst1.Breakpoints(2)。Value=[34];
  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. 对模型实例模型1, 放LUTArgStructForInst2

的一个实例ex_arg_LUT_ref中存储的表和断点数据万博1manbetx仿真软件。LookupTable在底座的工作空间和另一实例对象使用存储在结构表和断点数据。

也可以看看

||

相关的例子

更多关于