主要内容

映射编辑器- C代码

把模型元素与代码定义

描述

映射的代码编辑器是一个图形界面,您可以配置数据元素和入口点函数在一个模型中,除参考模型,为代码生成。每个模型在模型中引用层次结构都有自己的代码的映射。将每个类别的模型数据元素与特定的存储类每个类别的入口点函数与一个特定的函数模型定制模板在一个模型。覆盖这些设置,根据需要,对特定数据元素和功能

存储类定义的外观和位置等属性,代码生成器生成代码的时候使用的相关数据。功能定制模板定义如何关联函数的代码生成器生成的代码。如果你离开存储类或函数设置为自定义模板默认的,您可以配置一个内存部分数据或函数类别。

配置数据元素和功能代码生成,使用在代码映射编辑器中显示的表:

  • 数据默认值

  • 功能默认值

  • 功能

  • 港口

  • 外港

  • 参数

  • 数据存储

  • 信号/州

当有额外的代码映射属性能够被配置为一个模型元素,您可以配置这些属性通过选择活跃表中的一行,单击图标来配置额外的代码映射属性图标。

之前您可以配置代码生成的信号,将信号添加到模型代码映射。添加和删除信号从暂停映射的代码省略出现高于或低于一个信号线打开操作栏。单击添加信号删除信号按钮。这些按钮也可以在代码映射编辑器信号/州选项卡。

打开编辑器- C代码映射

做下列之一:

  • 打开嵌入式编码器®的应用程序。C代码选项卡上,选择代码接口>默认的代码映射代码接口>单个元素的代码映射

  • 打开嵌入式编码器的应用程序。C代码选项卡中,左下角的仿真软件金宝app®编辑器窗口,单击代码的映射选项卡。

  • 模型中的画布的模型编辑器窗口,单击右下角的角度控制和选金宝app择代码。然后,单击代码的映射选项卡。

例子

为根尺寸和外港块配置代码生成

为根配置代码生成轮廓尺寸外港块在一个模型。应用默认配置可以节省时间,特别是对于大型模型,使用大量的数据。应用默认的映射后,您可以调整单个数据元素映射。

设置示例环境
  1. 外部代码文件复制到一个可写的文件夹。

    拷贝文件(fullfile (matlabroot,“工具箱”,“环球套票”、“rtwdemos”,“roll_input_data.c”));拷贝文件(fullfile (matlabroot,“工具箱”,“环球套票”、“rtwdemos”,“roll_input_data.h”));拷贝文件(fullfile (matlabroot,“工具箱”,“环球套票”、“rtwdemos”,“roll_heading_mode.c”));拷贝文件(fullfile (matlabroot,“工具箱”,“环球套票”、“rtwdemos”,“roll_heading_mode.h”));
  2. 开放模式rtwdemo_roll。保存一个副本的文件夹复制模型的外部代码文件。

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

配置默认的映射

配置代码生成器:

  • 使用头文件roll_input_data.h声明的变量代表模型尺寸块。

  • 代表变量模型外港块作为单独的全局变量。

  • 定义输出变量roll_output_data.c并宣布他们roll_output_data.h

  • 为变量配置名称,代码生成器使用它生成的代码轮廓尺寸块。

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

  2. 数据默认值选项卡,在港口和外港,选择的行港口。然后,设置存储类ImportFromFile

  3. 单击图标来配置额外的代码映射属性图标和设置头文件roll_input_data.h

  4. 设置存储类模型元素类别外港ExportToFile

  5. 头文件roll_output_data.h定义文件roll_output_data.c

为默认配置配置各个港口
  1. 在代码映射编辑器中,单击港口选项卡。每个尺寸设置的存储类汽车,这意味着代码生成器可能消除或改变的代表性相关代码进行优化。如果不可能优化,代码生成器适用于港口的默认配置。

  2. 力代码生成器为港口使用默认配置,存储类ImportFromFile与外部的头文件roll_input_data.h。按下Ctrl键,选择港口。对选定的港口之一,设置存储类模型默认值:ImportFromFile。编辑器更新存储类设置为选定的港口。

覆盖默认的映射

覆盖默认的源位置尺寸变量HDG_Mode。外部文件中声明变量roll_heading_mode.h

  1. 在代码映射编辑器中,单击港口选项卡。

  2. 选择HDG_Mode行。

  3. 存储类ImportFromFile

  4. 单击图标来配置额外的代码映射属性图标和设置头文件roll_heading_mode.h

  5. 配置代码生成器生成的代码中变量名轮廓尺寸在外部文件块匹配的变量名roll_input_data.hroll_heading_mode.h。在港口选项卡上,选择每轮廓尺寸块,点击图标来配置额外的代码映射属性图标和设置标识符块的名字。当存储类以外的一个值汽车,您必须指定一个值标识符存储类属性。

包括外部源文件代码生成和构建过程

包括外部源文件roll_input_data.croll_heading_mode.c在代码生成和构建过程。设置模型配置参数源文件roll_input_data.croll_heading_mode.c

保存模型。

生成和验证代码

生成代码,并验证代码生成的轮廓尺寸输出块出现像您预期的那样。

  • rtwdemo_roll.h包括这些头文件与存储相关的类:

    # include“roll_output_data。h roll_input_data # include。h roll_heading_mode.h“# include
  • roll_heading_mode.c包括roll_heading_mode.h并定义变量HDG_Mode

    # include“roll_heading_mode。h”boolean_T HDG_Mode;
  • roll_input_data.c定义中声明的变量roll_input_data.h

    # include“roll_input_data。h”boolean_T AP_Eng;real32_T HDG_Ref;real32_T Rate_FB;real32_Tφ;real32_T Psi;real32_T助教;real32_T Turn_Knob;
  • roll_output_data.c包括这个导出的数据定义:

    real32_T Ail_Cmd;
  • roll_output_data.h包括这个导出的数据声明:

    走读生real32_T Ail_Cmd;

配置默认入口点函数的函数名

默认情况下,代码生成器使用标识符的命名规则R N美元入口点函数的名字。$ R的名字是根模型。$ N函数的名称,例如,初始化,一步,终止。将生成的代码与现有外部代码或符合命名标准或指南,您可以调整默认命名规则。这个例子展示了如何添加文本字符串myproj_作为一个前缀,R美元。调整默认命名规则可以节省时间,特别是对于多重速率的代码生成器产生一个独特的模型一步为每个率函数。

设置示例环境
  1. 开放模式rtwdemo_multirate_multitasking。保存一个副本可写的文件夹。

  2. 打开嵌入编码器应用。C代码选项卡打开,包括代码映射编辑器。

定义函数命名规则

创建一个自定义的函数模板定义了命名规则myproj_ R N美元

  1. 开放的嵌入式编码字典。在C代码选项卡上,选择代码接口>嵌入式编码字典

  2. 单击功能定制模板选项卡。

  3. 点击添加

  4. 的名字新表的列行,新模板名称myproj_FunctionTemplate

  5. 函数名列中,输入命名规则myproj_ R N美元

  6. 关闭嵌入式编码字典。

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

  2. 单击功能默认值选项卡。

  3. 初始化和终止执行功能类别,修改默认功能定制模板默认的myproj_FunctionTemplate

  4. 保存模型。

生成和检查代码

生成代码并验证的入口点函数的名字。

空白myproj_rtwdemo_multirate_multitasking_step0 (void) / *样品时间:[1.0,0.0 s] * / {(rtM - > Timing.RateInteraction.TID0_1) + +;如果((rtM - > Timing.RateInteraction.TID0_1) > 1) {rtM - > Timing.RateInteraction。TID0_1 = 0;如果(rtM - > Timing.RateInteraction}。{rtDW TID0_1 = = 1)。RateTransition = rtDW.RateTransition_Buffer0;}而无。Out2 = 2.0 * rtDW。RateTransition + rtU.In1_1s;而无。着干活= (3.0 * rtDW。RateTransition + rtU.In1_1s) * 5.0 + rtY.Out2; } /* Model step function for TID1 */ void myproj_rtwdemo_multirate_multitasking_step1(void) /* Sample time: [2.0s, 0.0s] */ { rtDW.RateTransition_Buffer0 = rtDW.Integrator_DSTATE; rtDW.Integrator_DSTATE += 2.0 * rtU.In2_2s; } void myproj_rtwdemo_multirate_multitasking_initialize(void) { /* (no initialization code required) */ } void myproj_rtwdemo_multirate_multitasking_terminate(void) { /* (no terminate code required) */ }

定制个人入口点函数

对于您的模型,您可以定制大多数入口点函数的名称和执行函数的参数,如步骤功能和仿真软件的功能。金宝app这个例子展示了如何定制的入口点函数模型rtwdemo_roll

设置环境
  1. 外部代码文件复制到一个可写的文件夹。

    拷贝文件(fullfile (matlabroot,“工具箱”,“环球套票”、“rtwdemos”,“roll_input_data.c”));拷贝文件(fullfile (matlabroot,“工具箱”,“环球套票”、“rtwdemos”,“roll_input_data.h”));拷贝文件(fullfile (matlabroot,“工具箱”,“环球套票”、“rtwdemos”,“roll_heading_mode.c”));拷贝文件(fullfile (matlabroot,“工具箱”,“环球套票”、“rtwdemos”,“roll_heading_mode.h”));
  2. 开放模式rtwdemo_roll。保存一个副本的文件夹复制模型的外部代码文件。

  3. 打开嵌入式编码器应用程序。C代码选项卡打开,包括代码映射编辑器。

定制入口点函数
  1. C代码选项卡上,选择代码接口>单个元素的代码映射

  2. 单击功能选项卡。

  3. 自定义步骤(执行)函数的名称。在函数名列中,输入名称roll_run

  4. 自定义参数一步函数。打开配置对话框一步函数通过单击超链接的原型预览功能列。

  5. 选择为阶跃函数原型配置参数

  6. 打开一个表显示的默认配置参数,点击获取默认

  7. 自定义参数:

    • C返回参数下拉列表中,选择Ail_Cmd

    • 每个端口的C标识符名称字段,删除arg_从他们的缺省名称前缀。

    • HDG_Mode轮廓尺寸,从C类型限定符下拉列表中,选择指针。在C标识符名称字段更改名字HDG_Mode_Ptr

  8. 点击应用和验证函数原型反映了变化。

  9. 通过点击验证更改验证

  10. 点击好吧

生成和验证代码
  1. 生成的代码。

  2. 验证更新生成的C文件rtwdemo_roll.c。找到更新的一步函数(roll_run),用搜索字段。

  3. 选择一步函数来验证它的原型。

    real32_T roll_run (real32_Tφ,real32_T Psi real32_T Rate_FB, real32_T助教,boolean_T AP_Eng, boolean_T * HDG_Mode_Ptr real32_T HDG_Ref, real32_T Turn_Knob)

相关的例子

参数

数据默认值

数据元素名称一类仿真软件模型。金宝app您设置的存储类类别适用于这类元素在整个模型。

模型元素类别 描述
港口 根级模型的输入端口,如轮廓尺寸在公共汽车元素块。
外港 根级模型的输出端口,如外港公共汽车元素块。
信号、状态和内部数据 内部模型的数据元素,如块输出信号,离散块,数据存储,讨论二阶导数过零信号。
本地数据存储共享 数据存储内存块的块参数分享跨模型实例集。这些数据存储模型中只能定义。数据存储值之间共享模型的实例。
全球数据存储 数据存储信号对象定义的基本工作空间或在数据字典。多个模型在一个应用程序可以使用这些数据存储。查看和配置这些数据存储在代码映射编辑器中,单击刷新链接类别名称的权利。点击这个链接更新模型图。
模型参数的参数 工作区配置的模型参数作为模型参数。这些参数是暴露在模型块,使每个模型实例提供自己的价值。指定一个参数作为模型参数,选择模型数据编辑器>参数>论点复选框。
模型参数 模型中定义的参数,如模型中参数的工作区。不包括模型参数。
外部参数 参数定义为基本工作空间中的对象或数据字典。多个模型在一个应用程序可以使用这些参数。查看和配置这些参数在代码映射编辑器中,单击刷新链接类别名称的权利。点击这个链接更新模型图。
常量

定值不能内联块输出和参数。这些值存储在变量以下原因之一。

  • 值是一个数组比循环展开阈值。

  • 地址是价值需要在代码中。

代码映射编辑器提供了有效的存储类的选择对于一个给定的类别。选项包括:

  • 未指定的存储类(默认的)。代码生成器的地方类别的数据元素标准的代码结构,如B_,ExtY_,ExtU_,DW_,P_。看到数据结构在生成的代码中

  • 相关的预定义的存储类,如ExportedGlobal

  • 有关存储类在一个可用的包,比如ImportFromFile

  • 存储类中定义一个嵌入式编码字典。

代码生成器使用定义(规范)来确定属性,如外观和位置,对它产生的代码模型数据元素。看到选择存储类数据表示控制生成的代码

功能默认值

名字一个类别仿真软件模型的功能。金宝app功能定制模板,设置一个类别适用于这类函数在整个模型。

模型功能类别 描述
初始化和终止 入口点函数初始化和终止
执行 入口点函数开始执行和重置
共享效用 共享效用函数

代码生成器使用定义(规范)来确定属性,如外观和位置,对它产生的代码模型的功能。默认模板是不可用的。您可能需要定义一个函数模板定制的嵌入式编码字典。

功能

确定了入口点函数的类型。率模型,这个属性提供的采样率一步功能。

代码生成器使用定义(规范)来确定属性,比如外观和位置,它产生的模型函数的代码。

函数名称,代码生成器给出了一个模型。

预览的入口点函数原型。验证一个原型,检查原型预览。打开一个对话框,您可以自定义原型,点击预览链接。有关更多信息,请参见为功能配置默认设置

港口

标识一个根尺寸块或在公共汽车元素的元素块(例如,InBus1.signal1在模型中)。如果元素解析为一个数据对象,代码映射编辑器显示一个resolve-to-signal-object图标右边的名称和来源解析配置基于是否存储类的元素汽车。如果存储类汽车数据元素假定代码配置,指定的数据对象。显示文本的编辑器中更改存储类从信号对象:其次是数据的存储类对象的名称。如果存储类汽车假设,数据元素中指定的配置代码映射编辑器。

代码生成器使用来确定属性定义,如外观和位置,对它产生的代码根尺寸。看到选择存储类数据表示控制生成的代码

名称的变量代表了尺寸在生成的代码。

选择校准轮廓尺寸使校准。选择NoCalibration视图轮廓尺寸的值和禁用校准。

方法的名称ECU-internal值转换成一个物理值简单的可读性。

可选的显示名称的尺寸测量校准工具目的,不同尺寸的名称在仿真软件模型。金宝app

特殊的显示格式指定的测量校准工具。这种格式规范小问题在指定的显示格式CompuMethod的尺寸。

外港

标识一个根级外港块或一个元素公共汽车元素块(例如,OutBus1.signal1在模型中)。如果元素解析为一个数据对象,代码映射编辑器显示一个resolve-to-signal-object图标右边的名称和来源解析配置基于是否存储类的元素汽车。如果存储类汽车数据元素假定代码配置,指定的数据对象。显示文本的编辑器中更改存储类从信号对象:其次是数据的存储类对象的名称。如果存储类汽车假设,数据元素中指定的配置代码映射编辑器。

代码生成器使用来确定属性定义,如外观和位置,对它产生的代码根外港。看到选择存储类数据表示控制生成的代码

变量的名称代表的外港生成的代码。

选择校准外港使校准。选择NoCalibration查看外港的价值和禁用校准。

方法的名称ECU-internal值转换成一个物理值简单的可读性。

可选的显示名称外港的校准工具测量的目的,这是不同于外港的名字在仿真软件模型。金宝app

特殊的显示格式指定的测量校准工具。这种格式规范小问题在指定的显示格式CompuMethod外港。

参数

确定模型中的参数。如果元素解析为一个数据对象,代码映射编辑器显示一个resolve-to-parameter-object图标右边的名称和来源解析配置基于是否存储类的元素汽车。如果存储类汽车数据元素假定代码配置,指定的数据对象。显示文本的编辑器中更改存储类从参数对象:其次是数据的存储类对象的名称。如果存储类汽车假设,数据元素中指定的配置代码映射。

类型的参数表中列出的元素。

元素类型的参数 描述
模型参数的论点 块模型中的参数工作区配置作为模型参数。参数是暴露在模型块,使每个模型实例提供自己的价值。指定一个参数作为模型参数,选择模型数据编辑器>参数>论点复选框。
模型参数 参数定义在一个模型中,比如一个参数模型中的工作区。不包括模型参数。
外部参数 参数定义为对象的基本工作空间或在数据字典。多个模型在一个应用程序可以使用这些参数。这个分组的参数出现在编辑器中只有在模型使用这样的一个元素。查看和配置这些参数在代码映射编辑器中,单击刷新链接类别名称的权利。点击这个链接更新模型图。

代码生成器使用来确定属性定义,如代码的外观和位置,它产生的参数。外部参数,点击之后刷新右边的链接类别名称,编译后存储类(例如,存储类配置为外部参数)出现在右侧存储类列。看到选择存储类数据表示控制生成的代码

变量的名称代表了模型参数或模型参数参数在生成的代码中。

选择校准为模型参数使校准。选择NoCalibration视图模型参数的值和禁用校准。

方法的名称ECU-internal值转换成一个物理值简单的可读性。

可选的显示名称的模型参数校准测量目的的工具,这是不同于外港的名字在仿真软件模型。金宝app

特殊的显示格式指定的测量校准工具。这种格式规范小问题在指定的显示格式CompuMethod模型的参数。

数据存储

标识一个数据存储在模型中。如果元素解析为一个数据对象,代码映射编辑器显示一个resolve-to-signal-object图标右边的名称和来源解析配置基于是否存储类的元素汽车。如果存储类汽车数据元素假定代码配置,指定的数据对象。显示文本的编辑器中更改存储类从信号对象:其次是数据的存储类对象的名称。如果存储类汽车假设,数据元素中指定的配置代码映射。

类型的数据存储表中列出的元素。

类型的数据存储元素 描述
本地数据存储 从任何地方访问的数据存储在模型层次结构的水平达到或者低于你定义数据存储。您可以定义一个本地数据存储模型,包括一个图形数据存储内存块或通过创建一个信号对象(数据存储)合成模型的工作区。
本地数据存储共享 数据存储内存块的块参数分享跨模型实例集。这些数据存储模型中只能定义。数据存储值之间共享模型的实例。这个分组数据存储出现在编辑器中只有在模型中存在这样的一个元素。
全球数据存储 数据存储,由一个信号定义对象的基本工作空间或在数据字典。多个模型在一个应用程序可以使用这些数据存储。这些数据存储在代码中是不可配置的映射。单击refresh按钮后,出现在只读状态中的代码映射编辑器查看或会计目的。这个分组数据存储出现在编辑器中只有在模型使用这样的一个元素。查看和配置这些数据存储在代码映射编辑器中,单击刷新链接类别名称的权利。点击这个链接更新模型图。

当地和共享数据存储的名字出现在格式block-name:data-store-name

取决于数据存储模型的元素是代表和配置中,当地和共享数据存储可以解决信号对象模型中的工作空间,工作空间,或一个数据字典。全球数据存储解决信号对象的基本工作空间或一个数据字典。

代码生成器使用来确定属性定义,如代码的外观和位置,它产生的数据存储。你点击后全球数据存储刷新右边的链接类别名称,编译后存储类(例如,存储类配置为一个全球数据存储)出现在右侧存储类列。看到选择存储类数据表示控制生成的代码

链接,您可以单击突出显示的数据存储模型图。

变量的名称代表了数据存储在生成的代码中。

选择校准为使校准的数据存储。选择NoCalibration查看数据存储的值和禁用校准。

方法的名称ECU-internal值转换成一个物理值简单的可读性。

可选的显示名称的数据存储在校准工具测量的目的,这是不同于外港的名字在仿真软件模型。金宝app

特殊的显示格式指定的测量校准工具。这种格式规范小问题在指定的显示格式CompuMethod的数据存储。

信号/州

标识一个信号线或状态的模型。如果元素解析为一个数据对象,代码映射编辑器显示一个解决-to-signal-object图标右边的名称和来源解析配置基于是否存储类的元素汽车。如果存储类汽车数据元素假定代码配置,指定的数据对象。显示文本的编辑器中更改存储类从信号对象:其次是数据的存储类对象的名称。如果存储类汽车假设,数据元素中指定的配置代码映射编辑器。

映射编辑器的代码列表:

  • 命名信号通过数据元素名称和状态

  • 不愿透露姓名的信号通过使用格式源数据块:端口号

  • 州中使用多个块使用的格式block-name:州名

配置中的单个信号行代码映射编辑器模型,首先你必须将信号添加到映射。看到为C代码生成配置信号数据

代码生成器使用来确定属性定义,如代码的外观和位置,它产生的信号或状态。看到选择存储类数据表示控制生成的代码

链接,您可以单击突出显示信号线或块,使用状态的模型图。

变量的名称代表了信号或状态在生成的代码中。

选择校准为使校准信号或状态。选择NoCalibration查看信号的值或状态和禁用校准。

方法的名称ECU-internal值转换成一个物理值简单的可读性。

可选的显示名称的信号或状态测量校准工具的目的,这是不同于外港的名字在仿真软件模型。金宝app

特殊的显示格式指定的测量校准工具。这种格式规范小问题在指定的显示格式CompuMethod的信号或状态。

版本历史

介绍了R2018a