主要内容

配置参数C代码生成

当配置为代码生成一个模型,您可以识别和配置参数可调性,例如校准。类型的参数,您可以配置此表中列出。

类型的参数 描述
模型参数的论点 块模型中的参数工作区配置作为模型参数。每个实例的模型,包括模型参数参数可以有参数设置为一个独特的价值。
模型参数 模型中定义的参数,如一个参数模型中工作区。
外部参数 参数定义为对象的基本工作空间或在数据字典。
常数 常数参数。

要为代码生成配置参数,必须将参数与数据对象相关联。例如,为代码生成配置一个MATLAB变量之前,在Model Explorer,将变量转换为一个参数对象。

当您打开一个模型嵌入式编码器应用,模型参数、模型参数的参数和常量与数据对象出现在相关代码映射编辑器。在编辑器中,您可以配置的参数代码生成。如果一个模型使用外部参数,您可以将它们添加到代码映射编辑器通过单击刷新参数名称右边的链接。链接启动更新图,在编辑器视图中,增加了外部参数所使用的模型。

配置参数数据:

  • 使数据可访问互动而生成的代码执行。

  • 减少在内存中存储的数据量。

  • 控制代码生成器地方参数数据在内存中。

  • 促进对模型参数数据接口,以便其他组件和系统可以访问这些数据。

  • 提高生成的代码的可读性和可追溯性。

控制在一个模型的参数是否可调,可以获得模型配置参数默认参数的行为通过使用“汽车”将可调/内联链接代码映射编辑器数据默认值选项卡。例如,您可以使用该链接参数可调在这些情况下:

  • 在快速成型优化参数设置

  • 校准参数

  • 生产代码的优化参数

对于代码生成,例子展示如何配置模型参数和模型参数模型的参数rtwdemo_configinterface。您可以配置代码通过使用映射代码映射编辑器编程接口(或代码映射coder.mapping.api.CodeMapping)。

为参数选择定制选项

默认情况下,模型中参数出现在生成的代码的字段全局数据结构命名:

  • 模型_P对模型参数

  • 模型_InstP对模型参数的参数

  • 模型_ConstP为常数参数

基于代码的接口要求,决定是否定制代参数数据。如果你没有配置自定义,代码生成器决定消除或改变参数的表示生成的代码进行优化。如果您配置的定制,决定:

  • 是否要设置一个默认的配置

    如果一个模型包括大量的参数必须可调的一个类别(例如,超过10),这是更有效的配置类别的参数使用默认设置,然后覆盖该设置特殊的情况。如果模型包含给定类别的几个参数,具有独特的来源、命名,或位置的需求,可以考虑单独配置参数。

  • 如何声明和处理模型参数数据在生成的代码中

    • 作为单独的全局变量

    • 读取模型参数数据从外部代码中定义全局变量

    • 作为访问函数的调用。需要嵌入编码器®

    关于这些选项的更多信息,请参阅控制数据和功能接口生成的代码

模型参数的其他因素包括:是否

列表的接口需求相关的参数对应的存储类和存储类属性,看看选择存储类数据存储和存储类属性

例如模型参数要求rtwdemo_configinterface是:

  • 默认情况下,保留在生成的代码模型参数调优。不通过内联优化代码参数。

  • 代表模型参数作为单独的全局变量定义和声明常量挥发性类型限定符。

  • 应用前缀mp_变量的名字,代表模型参数。

  • 使常数参数较低的有不同值的每个实例模型。

  • 对于每个模型参数的实例论证,默认情况下,分配的内存表示为一个惟一的名称字段在一个出口结构。

  • 作为单独的模型函数参数模型参数的参数出现在生成的代码。使代码生成器模型参数优化参数没有在模型中所使用的块。

对于这个示例,配置模型参数和模型参数的参数rtwdemo_configinterface为了满足这些代码生成的要求。

配置默认代码生成设置参数

代码生成默认设置参数可以减少准备代码生成模型的努力,特别是如果一个模型有相当数量的参数,你需要在生成的代码执行时进行交互。选择配置设置一次,代码生成器这些设置适用于整个模型参数。万博1manbetx动态仿真模块®商店缺省配置的模型。

考虑为模型参数配置默认代码生成设置如果你的模型使用多个参数相同的类别没有独特的需求或者使用一个共享的嵌入式编码字典

这个例子展示了如何使用代码映射编辑器为模型参数配置默认设置和模型参数的参数为模型rtwdemo_configinterface。配置模型参数,以便他们可调,并宣布在生成的代码中定义作为单独的全局变量有类型限定符常量挥发性配置模型参数参数使用默认设置,代码生成器分配的内存表示为一个惟一的名称字段在一个出口结构为每个参数实例。

  1. 开放模式rtwdemo_configinterface。将模型的副本保存到一个可写的位置。

    万博1manbetx仿真软件模型用于学习如何配置模型参数代码生成。

  2. 打开嵌入式编码器应用程序。

  3. C代码选项卡上,选择代码接口>默认的代码映射

  4. 在代码映射编辑器中,选择模型参数的参数。存储类设置为离开默认的。代码生成器为每个参数实例分配一个单独的内存区域。

  5. 在代码映射编辑器中,参数,选择类别模型参数。链接文本“汽车”将内联表明代码生成器是默认配置为内联模型参数。这个例子是模型参数要求是可调的。点击“汽车”将内联

  6. 在模型中配置参数对话框中,设置模型配置参数默认参数的行为可调。保存更改并关闭对话框。在代码映射编辑器中,链接文本修改“汽车”将可调

  7. 在代码的映射,模型参数类别仍然选择,设置存储类ConstVolatile

    代码映射编辑器与数据默认选项卡被选中,参数树节点扩展,并为模型参数设置为ConstVolatile存储类。

  8. 保存模型。

为单个参数配置代码生成

您可以配置单个参数代码生成。例如,如果一个模型有两个参数相同的类别,有独特的代码生成需求,单独配置参数。或者,如果你为一个类别配置默认设置的参数,您可以为特定的参数覆盖这些设置。

如果你的模型符合至少一种标准,考虑配置代码生成单独设置参数:

  • 使用多个参数相同的类别,有独特的来源、命名、或位置需求。

  • 使用几个参数相同的类别。

  • 有一个默认的配置一个类别的参数,你需要覆盖一些特定参数的配置。

这个例子展示了如何使用映射编辑器的代码默认存储类设置模型参数应用于参数K1,表1,表二在模型rtwdemo_configinterface。你为这些参数配置代码标识符和模型参数的参数较低的。您可以指定代码生成的标识符,例如集成,无需修改模型的设计。

  1. 如果您还没有这样做,完成这个步骤配置默认代码生成设置参数

  2. 在代码映射编辑器中,单击参数选项卡。扩大模型参数的参数。默认情况下,为每个模型参数设置为存储类汽车,这意味着代码生成器可能消除或改变的代表性相关代码进行优化。如果不可能优化,代码生成器模型适用于默认配置。对于这个示例,存储类设置为离开汽车

  3. 扩大模型参数。默认情况下,为每个参数设置为存储类汽车。使用默认配置的模型,它指定存储类ConstVolatile

    • 避免优化和强制代码生成器使用默认配置,设置存储类模型的默认

    • 覆盖默认配置,指定存储类满足参数的代码生成的要求。

  4. 在代码映射编辑器中,模型参数,选择参数K1,表1,表二。设置存储类模型默认值:ConstVolatile

    代码映射编辑器参数选项卡被选中,参数K1,表1,表选择,和存储类模型被设置为默认值:ConstVolatile。

  5. 配置模型参数的代码标识符名称,包括前缀mp_。在代码映射编辑器中,选择模型参数K1。在属性检查器,扩大代码节点。设置存储类属性标识符mp_K1。为参数表1表二,设置标识符mp_Table1mp_Table2

    代码映射编辑器参数选项卡被选中,模型参数树节点扩展,和存储类参数K1,表1,表设置为默认模型:ConstVolatile。属性检查器显示了参数表设置为mp_Table2标识符属性。

  6. 保存模型。

  7. 生成并查看代码。例如,找到模型参数的数据定义mp_K1rtwdemo_configinterface.c

    const波动int8_T mp_K1 = 2;

    找到入口点函数使用的参数是一步。

    如果(模式){输出= (real_T) mp_K1 * dout_Table1;其他}{输出= dstate_X;}

通过使用参数数据组织成一个结构结构体存储类

这个例子展示了如何使用结构体存储类组织块参数值到一个结构生成的代码。你应用存储类直接在模型中各个数据项。

要创建一个自定义的参数数据结构生成的代码,考虑创建一个相应的结构模型。万博1manbetx看到组织数据结构生成的代码

创建示例模型

创建这个示例模型有三个常数块和三外港块。模型名称ex_struct_param

设置恒定的参数

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

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

  3. 在模型中,选择上常数块。

  4. 在模型数据编辑器,使用价值列设置恒定值p1。旁边p1,点击操作按钮并选择创建

  5. 在创建新的数据对话框中,设置价值万博1manbetxSimulink.Parameter (1.0)并点击创建

    万博1manbetx动态仿真模块添加一个万博1manbetxSimulink.Parameter对象命名p1对模型的工作区。

  6. 在属性对话框p1,点击好吧

    如果你没有设置其他参数,你可以点击代码生成选项卡。然后,单击在编码器配置应用程序按钮,打开嵌入式编码器应用程序和代码映射编辑器。

  7. 使用模型数据编辑器设置其他常量值通过使用命名参数对象p2(值2.0),p3(值3.0)。

为代码生成配置不变参数

  1. 打开嵌入式编码器应用程序。

  2. C代码选项卡上,选择代码接口>单个元素的代码映射

  3. 在代码映射编辑器中,单击参数选项卡。

  4. 扩大模型参数

  5. 设置存储类参数p1,p2,p3结构体

  6. 选择参数p1。在属性检查器代码,设置属性StructNamemy_struct。为参数p2p3,设置StructNamemy_struct

  7. 保存模型。

生成和检查代码

生成和检查代码。

该文件ex_struct_param.h定义结构类型,my_struct_type

/ *类型定义为自定义存储类:结构体* / typedef Struct my_struct_tag {real_T p1;real_T p2;real_T p3;}my_struct_type;

该文件ex_struct_param.c定义全局变量my_struct

/ *定义自定义存储类:结构体* / my_struct_type my_struct = {/ * p1 * / 1.0, 2.0 / * p2 * /, / * p3 * / 3.0};

配置代码生成以编程方式设置参数

自动代码生成的配置参数,使用代码的编程接口映射。例如,当创建自定义块库或部分应用程序的测试环境中,使用编程接口自动化数据配置。

这个例子展示了如何为模型参数配置默认设置和模型参数的参数为模型rtwdemo_configinterface。配置模型参数,以便他们可调,并宣布在生成的代码中定义作为单独的全局变量有类型限定符常量挥发性配置模型参数参数使用默认设置,代码生成器分配的内存表示为一个惟一的名称字段在一个出口结构为每个参数实例。默认存储类设置模型参数应用于参数K1,表1,表二。为这些参数配置代码标识符。

  1. 打开示例模型。

    open_system (“rtwdemo_configinterface”);
  2. 集模型配置参数默认参数的行为可调

    模型=“rtwdemo_configinterface”;
    set_param(模型、“DefaultParameterBehavior”可调);
  3. 创建对象厘米通过调用函数coder.mapping.api.get。对象存储数据元素的代码生成配置和功能在模型rtwdemo_configdefaults

    厘米= coder.mapping.api.get (“rtwdemo_configinterface”);
  4. 通过调用函数为模型参数配置默认设置setDataDefault。对于参数,指定这些值:

    • 返回的对象coder.mapping.api.get

    • ModelParameters为默认类别

    • 属性名StorageClass与属性值ConstVolatile

    setDataDefault (cm,‘ModelParameters’,‘StorageClass’,‘ConstVolatile’);
  5. 为模型参数配置默认设置参数。在调用setDataDefault,指定这些值的参数:

    • 返回的对象coder.mapping.api.get

    • ModelParameterArguments为默认类别。

    • 属性名StorageClass与属性值默认的

    setDataDefault (cm,‘ModelParameterArguments’,‘StorageClass’,‘默认’);
  6. 验证您的模型参数的默认配置和模型参数的参数问题要求getDataDefault指定返回的对象coder.mapping.api.get、类别ModelParametersModelParameterArguments,StorageClass

    getDataDefault (cm, ModelParameters, StorageClass) ans =“ConstVolatile”
    getDataDefault (cm, ModelParameterArguments, StorageClass) ans =“默认”
  7. 应用模型参数的默认配置参数K1,表1,表二

    默认情况下,仿真软件为个万博1manbetx人参数设置存储类汽车。当存储类汽车代码生成器:

    • 决定消除数据生成的代码的优化目的。

    • 如果保留数据,确定如何有效地表示数据在生成的代码中,考虑到默认配置设置。

    配置代码生成器来应用你的默认模型参数设置参数K1,表1,表二。对于每个参数,调用函数setModelParameter。指定返回的对象coder.mapping.api.get参数名称,属性名StorageClass,属性值模型的默认

    setModelParameter (cm, K1, StorageClass,默认模式);setModelParameter(厘米,“表1”、“StorageClass”,“默认模式”);setModelParameter(厘米,“表”、“StorageClass”,“默认模式”);
  8. 验证您的配置参数的变化K1,表1,表二通过调用函数getModelParameter

    getModelParameter (cm, K1, StorageClass) ans =“模型默认”getModelParameter(厘米,“表1”,“StorageClass”) ans =“模型默认”getModelParameter(厘米,“表”,“StorageClass”) ans =“模型默认”
  9. 为模型参数配置代码标识符。对于每个参数,调用函数setModelParameter。指定返回的对象coder.mapping.api.get参数名称,属性名标识符,其中一个属性值。

    模型参数 代码标识符
    K1 mp_K1
    表1 mp_Table1
    表二 mp_Table2
    setModelParameter (cm, K1,“标识符”,“mp_K1”);setModelParameter(厘米,“表1”,“标识符”,“mp_Table1”);setModelParameter(厘米,“表”,“标识符”,“mp_Table2”);
  10. 验证您的配置更改为模型参数通过调用函数getModelParameter

    getModelParameter (cm, K1,“标识符”)ans = ' mp_K1 getModelParameter(厘米,“表1”,“标识符”)ans = ' mp_Table1 getModelParameter(厘米,“表”,“标识符”)ans =“mp_Table2”
  11. 保存模型。

  12. 生成并查看代码。例如,找到模型参数的数据定义mp_K1rtwdemo_configinterface.c

    const波动int8_T mp_K1 = 2;

    找到入口点函数使用的参数是一步。

    如果(模式){输出= (real_T) mp_K1 * dout_Table1;其他}{输出= dstate_X;}

选择存储类和模型参数的存储类属性

根据您的代码生成的需求,选择从这些存储类为模型参数配置代码生成。为常数,只默认的适用。仅供模型参数参数,汽车,默认的,模型的默认适用。

需求 存储类
启用优化,可能生成更高效的代码。 汽车(仅个人映射)
对于不能优化的数据元素,表示数据作为一个领域标准的数据结构。 默认的(仅默认映射)
防止优化消除存储数据元素和使用的默认映射数据元素类别。 模型的默认(仅个人映射),词典默认(仅个人映射)
生成一个结构,将布尔数据存储在名为本。 设置(仅个人映射)
万博1manbetx支持预处理条件定义为使用编译器标志或选择。 CompilerFlag
生成一个全局变量的定义和声明常量,挥发性,或常量挥发性类型限定符。 常量、挥发性和ConstVolatile
生成一个宏(#定义指令或代码使用一个宏定义在一个头文件在外部代码。 定义、ImportedDefine
生成一个全局变量定义和声明。 ExportedGlobal
生成一个全局变量定义和声明到指定的文件中。 ExportToFile
生成一个全局变量的定义和声明静态类型限定符。 FileScope(本地和共享本地数据存储的映射)
通过调用您的自定义生成代码与数据访问功能。 GetSet
生成代码的读取和写入一个全局变量或全局变量指针定义为外部代码。 ImportedExtern, ImportedExternPointer
生成代码的读取和写入外部头文件定义一个全局变量。 ImportFromFile
生成一个全球结构,有一个名称,您可以指定。 结构体(仅个人映射)

可用存储类的列表可能包括其他具体项目的存储类中定义嵌入式编码字典。如果你有特殊要求没有得到满足的列存储类嵌入式编码软件,您可以定义一个存储类。看到定义存储类、内存部分,为软件架构和功能模板

对于一个单独的模型参数,使用标识符存储类属性来配置变量的名称代表的参数生成的代码。使用嵌入式编码器,这取决于你选择的存储类,您还可以配置这些性质。

财产 描述 存储类
DefinitionFile 源定义文件,其中包含定义全局数据,读取的参数和外部代码 ExportToFile挥发性
GetFunction 参数出现在生成的代码调用指定的得到函数 GetSet
HeaderFile 头文件包含声明为全局数据来源,读取的参数和外部代码 ExportToFile,GetSet,ImportFromFile,挥发性
记忆的部分(默认参数配置) 内存部分,其中包含数据读取的参数 默认的
老板 代码生成器将生成的代码中定义参数的多个模型在模型层次结构,共享定义。您必须选择模型配置参数使用数据对象的所有者为数据定义的位置。看到控制位置的全局数据定义和声明生成的文件 ExportToFile挥发性
PreserveDimensions 代码生成器保留尺寸参数数据,生成的代码中表示为一个多维数组。必须设置配置参数模型阵列布局。看到保护维度的多维数组生成的代码 ExportToFile,FileScope,ImportFromFile,可以定位的挥发性
SetFunction 参数出现在生成的代码调用指定的函数。 GetSet
StructName 名称生成的代码的结构参数。 设置结构体

另请参阅

|

相关的话题