主要内容

配置根级轮廓尺寸块C代码生成

使用代码生成的一个模型,你调用生成的入口点函数。调用环境和交流输入和输出数据生成的功能,例如,作为全局变量或函数参数。根级轮廓尺寸块(港口)构成接口的输入数据。将和部署生成的代码集成到应用程序中,您可以自定义代码生成器生成的代码的接口,包括如何声明和处理输入数据。定制可以:

  • 减少你必须的修改现有代码。

  • 生成稳定的接口,不改变或最低限度改变当你改变你的模型。

  • 更有效地交换数据的生成代码(例如,通过使用指针和引用传递参数nonscalar数据)。

启用触发块(港口)函数调用也数据加载到系统之外的系统。从代码生成的角度来看,这些建模元素导出功能。对于一个导出函数,代码生成器产生一个入口点函数,您可以配置。看到配置生成的C函数入口点函数接口模型

代码生成,例子展示如何定制的尺寸界面模型rtwdemo_configinterface。您可以配置代码通过使用映射映射编辑器- C代码API(或代码映射coder.mapping.api.CodeMapping)。

为尺寸界面选择定制选项

默认情况下,港口在一根级模型出现在生成的代码作为全局数据结构的字段命名模型_ExtU。基于代码的接口要求,决定是否要定制一代的根级尺寸数据。如果你不配置自定义,代码生成器决定消除或改变港口的代表在生成的代码优化的目的。如果您配置的定制,决定:

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

    如果一个模型包括相当数量(例如,超过10)的根级港口,港口与更有效的配置一个默认设置,然后覆盖该设置特殊的情况。如果模型包括港口独特的来源,几根级命名,或位置的需求,考虑港口单独配置。

  • 如何声明和处理根级尺寸数据在生成的接口

    • 作为单独的全局变量

    • 读取输入数据从外部代码中定义全局变量

    • 港口为参考模型,为全局变量(void-void)

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

    • 作为入口点函数参数。需要嵌入编码器

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

其他因素包括是否:

列表的界面需求相关的港口与相应的存储类和存储类属性,看看选择存储类数据表示控制生成的代码

例如模型rtwdemo_configinterface轮廓尺寸,接口需求:

  • 使用项目类型定义DBL_FLOAT在头文件中定义exDblFloat.h

  • 获取数据的尺寸。三机一体的头文件exInDataMem.h。的数据是用来计算一个值存储在内存中,然后使用一个if - else条件生成的代码开关块。

  • 获得港口的数据元素In2,In3,In4的头文件exInDataLut.h。用于查找表的数据表1表二

  • 港口在生成的代码中变量代表必须命名input1,input2,input3,input4

对于这个示例,配置港口rtwdemo_configinterface为了满足这些代码生成的要求。

配置默认代码生成设置根级港口

港口可以减少一个默认的代码生成设置root准备代码生成模型的努力,特别是如果一个模型有一个大量的港口。选择配置设置一次,代码生成器将这些设置应用于港口在整个模型。金宝app动态仿真模块®商店缺省配置的模型。

考虑配置默认模型的代码生成设置root港口港口,如果您的模型使用多个根级没有独特的需求或者使用一个共享的嵌入式编码字典

这个例子展示了如何使用映射编辑器- C代码配置默认设置为root港口模型rtwdemo_configinterface指定一个外部头文件声明输入数据。三个港口读取输入的四根在头文件中声明的变量exInDataLut.h。设置头文件作为港口的默认的输入源。

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

    金宝app仿真软件模型用于学习如何配置信号代码生成。

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

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

  4. 在代码映射编辑器中,港口和外港,选择类别港口。设置默认存储类ImportFromFile

  5. 单击图标来配置额外的代码映射属性图标,设置头文件exInDataLut.h

    代码映射编辑器与数据默认选项卡被选中,港口和外港树节点扩大,港口将ImportFromFile和存储类。与HeaderFile属性设置为exInDataLut.h属性检查器

  6. 保存模型。

配置代码生成设置单独的根级港口

您可以配置个人root港口代码生成。例如,如果一个模型有两个港口,有独特的根级代码生成需求,单独配置港口。或者,如果你为港口配置默认设置,配置个人港口使用默认设置或独特的设置。

如果你的模型符合至少一种标准,考虑港口分别为root配置代码生成设置:

  • 使用多个港口,有独特的需求。

  • 使用几个港口。

  • 有一个港口,你需要覆盖默认配置的配置一些特殊的港口。

这个例子展示了如何使用映射编辑器的代码覆盖默认的代码生成配置模型的港口之一rtwdemo_configinterface。在前面的示例中,您设置的默认存储类港口ImportFromFile该模型要求尺寸三机一体读取输入数据从一个全局变量,而不是一个全局变量指针。

示例还展示了如何配置标识符命名的代码生成器使用的四个港口中生成的代码。您可以指定代码生成的标识符,例如集成,无需修改模型设计。

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

  2. 在代码映射编辑器中,单击港口选项卡。编辑列表的名称轮廓尺寸块和总线模型中的元素。如果一个端口解析为一个信号对象,resolve-to-signal-object图标右边的元素名称。每个尺寸设置的存储类汽车,这意味着代码生成器可能消除或改变的代表性相关代码进行优化。如果不可能优化,代码生成器模型适用于默认配置。对于这个示例,该模型默认配置指定存储类ImportedFromFile

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

    • 覆盖默认配置,指定存储类符合尺寸的代码生成的要求。

  3. 配置代码生成器将默认的存储类设置应用到港口In2,In3,In4。选择三个港口的行。然后,对于选定的港口之一,设置存储类模型默认值:ImportFromFile

    与港口代码映射编辑器选项卡被选中,信号In2 In3, In4选中,和存储类模型被设置为默认值:ImportFromFile。

    三个港口更改选定的存储类模型默认值:ImportFromFile

  4. 的尺寸。三机一体,覆盖默认的存储类设置。设置存储类ImportFromFile。单击图标来配置额外的代码映射属性图标和设置头文件exInDataMem.h

    与港口代码映射编辑器选项卡被选中,信号In1选择和存储类ImportFromFile。映射与HeaderFile属性设置为exInDataMem.h检查员。

  5. 为港口,以便配置代码标识符生成的代码的接口参数名称匹配的接口名外部头和定义文件。在代码映射编辑器中,选择每个尺寸的行。单击图标来配置额外的代码映射属性图标和设置标识符财产这些值。

    轮廓尺寸 代码标识符
    三机一体 input1
    In2 input2
    In3 input3
    In4 input4
  6. 保存模型。

  7. 生成并查看代码。例如,在rtwdemo_configinterface.c找到变量input1,input2,input3,input4使用入口点函数的步骤。

    空白rtwdemo_configinterface_step (void){模式= ((input1 > rtwdemo_configinterface_UPPER) | | (input1 < rtwdemo_configinterface_LOWER));dout_Table1 = look1_binlc (input2 ((const MYTYPE *) & (Table1.BP [0])), ((const MYTYPE *) & (Table1.Table [0])), 10 u);。dout_Table2 = look2_binlc (input3 input4 ((const MYTYPE *) & (mp_Table2.BP1 [0])), ((const MYTYPE *) & (mp_Table2.BP2 [0])), ((const MYTYPE *) & (mp_Table2.Table [0])), ((const uint32_T *) & (rtwdemo_configi_Table2_maxIndex [0])), 3 u);dstate_X = dout_Table2;}

配置代码生成港口以编程方式设置为root

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

这个例子展示了如何使用编程接口配置默认设置为root港口模型rtwdemo_configinterface指定一个外部头文件声明输入数据。三四个港口读取输入root的头文件中声明的变量exInDataLut.h。你该文件设置为默认的头文件。然后,你覆盖默认的代码生成配置三机一体,这就需要从头文件读取输入数据exInDataMem.h

此外,配置代码标识符的港口以便于全局变量名称生成的代码匹配一个外部文件中定义的变量名。

  1. 打开示例模型。

    open_system (“rtwdemo_configinterface”)
  2. 创建对象厘米通过调用函数coder.mapping.api.get。对象存储数据和功能代码生成配置模型rtwdemo_configinterface

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

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

    • 港口为默认类别

    • 属性名StorageClass与属性值ImportFromFile

    • 属性名HeaderFile与属性值exInDataLut.h外部文件的名称,包含输入数据

    setDataDefault(厘米,“港口”,‘StorageClass’,‘ImportFromFile’,‘HeaderFile’,‘exInDataLut.h’)
  4. 验证你的港口的默认配置。问题两个电话getDataDefault指定返回的对象coder.mapping.api.get和类别港口。在第一次调用,第三个参数指定为属性StorageClass。在第二个电话,第三个参数指定HeaderFile

    getDataDefault(厘米,“港口”、“StorageClass”) ans = ' ImportFromFile getDataDefault(厘米,“港口”,“HeaderFile”) ans =“exInDataLut.h”
  5. 覆盖默认尺寸配置尺寸三机一体。的要求,尺寸不同于其他三个港口的要求。

    默认情况下,模型设置为单金宝app个港口存储类汽车。当存储类汽车代码生成器:

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

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

    控制存储类头文件和配置一个尺寸,配置设置轮廓尺寸的函数setInport。为尺寸配置生成的代码三机一体读取输入数据从外部头文件中定义的全局变量exInDataMem.h,按要求。两个调用函数问题setInport指定返回的对象coder.mapping.api.get轮廓尺寸块命名三机一体。在第一次调用,也指定属性名称StorageClass和属性值ImportFromFile。在第二个电话,指定属性名称HeaderFile和属性值exInDataMem.h

    setInport(厘米、“三机”、“StorageClass”,“ImportFromFile”) setInport(厘米,“三机”、“HeaderFile”,“exInDataMem.h”)
  6. 验证您的配置尺寸三机一体通过调用函数getInport

    getInport(厘米、“三机”、“StorageClass”) ans = ' ImportFromFile getInport(厘米,“三机”、“HeaderFile”) ans =“exInDataMem.h”
  7. 配置代码生成器将默认尺寸设置应用到港口In2,In3,In4。对于每一个尺寸,调用函数setInport。指定返回的对象coder.mapping.api.get,轮廓尺寸块名称,属性名StorageClass,属性值模型的默认

    setInport(厘米,“In2”、“StorageClass”,“模型违约”)setInport(厘米,‘In3’,‘StorageClass’,“模型违约”)setInport(厘米,‘In4’,‘StorageClass’,“默认模式”)
  8. 验证您的配置更改港口In2,In3,In4调用函数getInport

    getInport (cm, In2, StorageClass) ans =“模型默认”getInport(厘米,In3, StorageClass) ans =“模型默认”getInport(厘米,In4, StorageClass) ans =“模型默认”
  9. 配置代码标识符代表港口的港口,使全局变量在生成的代码中匹配的变量名在外部定义文件。对于每一个尺寸,调用函数setInport。指定返回的对象coder.mapping.api.get,轮廓尺寸块名称,属性名标识符,其中一个属性值。

    轮廓尺寸 代码标识符
    三机一体 input1
    In2 input2
    In3 input3
    In4 input4
    setInport(厘米、“三机”,“标识符”,“input1”);setInport(厘米,“In2”,“标识符”,“input2”);setInport(厘米,“In3”,“标识符”,“input3”);setInport(厘米,“In4”,“标识符”,“input4”);
  10. 验证您的配置更改港口通过调用函数getInport

    getInport(厘米、“三机”,“标识符”)ans = ' input1 getInport(厘米,“In2”,“标识符”)ans = ' input2 getInport(厘米,“In3”,“标识符”)ans = ' input3 getInport(厘米,“In4”,“标识符”)ans =“input4”
  11. 保存模型。

  12. 生成并查看代码。例如,在rtwdemo_configinterface.c找到变量input1,input2,input3,input4使用入口点函数的步骤。

    空白rtwdemo_configinterface_step (void){模式= ((input1 > rtwdemo_configinterface_UPPER) | | (input1 < rtwdemo_configinterface_LOWER));dout_Table1 = look1_binlc (input2 ((const MYTYPE *) & (Table1.BP [0])), ((const MYTYPE *) & (Table1.Table [0])), 10 u);。dout_Table2 = look2_binlc (input3 input4 ((const MYTYPE *) & (mp_Table2.BP1 [0])), ((const MYTYPE *) & (mp_Table2.BP2 [0])), ((const MYTYPE *) & (mp_Table2.Table [0])), ((const uint32_T *) & (rtwdemo_configi_Table2_maxIndex [0])), 3 u);dstate_X = dout_Table2;}

选择存储类和存储类属性根级港口

根据您的代码生成的需求,选择从这些存储类为root港口配置代码生成。

需求 存储类
启用优化,可能生成更高效的代码。 汽车(仅个人映射)
对于不能优化的数据元素,表示数据作为一个领域标准的数据结构。 默认的(仅默认映射)
防止优化消除存储数据元素和使用的默认映射数据元素类别。 模型的默认(仅个人映射),词典默认(仅个人映射)
生成一个结构,将布尔数据存储在名为本。 设置(仅个人映射)
生成一个全局变量的定义和声明挥发性类型限定符。 挥发性(见常量、挥发性和ConstVolatile)
生成一个全局变量定义和声明。 ExportedGlobal
生成一个全局变量定义和声明到指定的文件中。 ExportToFile
通过调用您的自定义生成代码与数据访问功能。 GetSet
生成代码的读取和写入一个全局变量或全局变量指针定义为外部代码。 ImportedExtern, ImportedExternPointer
读取输入数据从一个指定的外部轮廓尺寸头文件。 ImportFromFile
生成本地变量函数。 可以定位的
生成一个全球结构,有一个名称,您可以指定。 结构体(仅个人映射)
生成一个全局变量,使缓冲重用。 可重用的(仅个人映射)

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

个别尺寸,使用标识符存储类属性来配置变量的名称代表的轮廓尺寸生成的代码。使用嵌入式编码器,这取决于你选择的存储类,您还可以配置这些性质。

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

另请参阅

|

相关的话题