代码映射编辑器 - C
说明
代码映射编辑器采用图形界面,您可以在其中为代码生成配置模型中的数据元素。模型引用层次结构中的每个模型都有自己的代码映射。将模型数据元素的每个类别与整个模型中的特定存储类相关联。然后,根据需要为特定数据元素覆盖这些设置。
存储类定义代码生成器在为关联的数据生成代码时使用的属性,如形式和位置。
要为代码生成配置数据元素和函数,请使用代码映射编辑器显示中的选项卡:
数据默认值
输入端口
输出端口
参数
数据存储
信号/状态
当存在可以为模型元素配置的其他代码映射属性时,您可以通过在活动表中选择一行并点击 图标来配置这些属性。
您需要将信号添加到模型代码映射中,才能配置该信号以进行代码生成。通过将鼠标悬停在信号线上方或下方出现的省略号上以打开操作栏,在代码映射中添加和删除信号。点击添加信号或删除信号按钮。在代码映射编辑器中的信号/状态选项卡上也可以找到这些按钮。
打开 代码映射编辑器 - C
执行以下操作之一:
打开 Simulink® Coder™。在 C 代码选项卡上,选择代码接口 > 默认代码映射或代码接口 > 个体元素代码映射。
打开 Simulink Coder。在 Simulink 编辑器窗口左下角的 C 代码选项卡上,点击代码映射选项卡。
在 Simulink 编辑器窗口的模型画布中,点击右下角的透视控件并选择代码。然后,点击代码映射选项卡。
示例
为根级 Inport 和 Outport 模块配置代码生成
为整个模型中的根级 Inport 和 Outport 模块配置代码生成。应用默认配置可以节省时间,尤其是对于使用大量数据的大型模型。应用默认映射后,您可以调整单个数据元素的映射。
通过在 MATLAB® 命令行窗口中输入以下命令打开模型
ConfigurationRapidPrototypingInterface
:openExample("ConfigurationRapidPrototypingInterface")
打开 Simulink Coder。C 代码选项卡包括代码映射编辑器。
配置代码生成器,以在生成的文件 ConfigurationRapidPrototypingInterface.h
和 ConfigurationRapidPrototypingInterface.c
中声明和定义输入端口与输出端口的全局变量。
在 C 代码选项卡中,选择代码接口 > 默认代码映射。
在数据默认值选项卡的输入端口和输出端口下,选择输入端口行。然后,将存储类设置为 ImportedExternPointer。将输出端口的存储类设置为 ExportedGlobal。编辑器会更新两个所选数据元素类别的默认存储类设置。
在代码映射编辑器中,点击输入端口选项卡。当存储类设置为
Auto
时,出于优化目的,代码生成器可能会消除或更改相关代码的表示。如果无法进行优化,代码生成器将应用模型默认配置。强制代码生成器使用输入端口的默认配置,即存储类
ImportedExternPointer
。按 Ctrl 键并选择输入端口。对于其中一个所选输入端口,将存储类设置为模型默认:ImportedExternPointer。编辑器会更新所选输入端口的存储类设置。强制代码生成器对模型根输出端口使用存储类
ExportedGlobal
。点击输出端口选项卡。选择Out2
的行。然后,将存储类设置为模型默认值:ExportedGlobal。
要配置单个数据元素的属性(例如,当您需要覆盖默认配置设置时),请使用不同数据元素类型的选项卡。对于此示例,我们将覆盖 Inport 模块 In1
的默认存储类设置。
默认情况下,代码生成器根据模型中的 Inport 或 Outport 模块名称来命名输入端口和输出端口变量。当使用 Auto
以外的存储类设置配置数据元素时,可以通过设置存储类属性标识符来覆盖单个元素的默认设置。此属性使您能够在不修改模型设计的情况下为代码指定标识符。
在此示例中,为 Inport 和 Outport 模块设置标识符。
在代码映射编辑器中,点击输入端口选项卡。
对于
In1
,将存储类设置为 ImportedExtern。对于每个输入端口,选择对应的行。然后,点击 图标。按如下方式设置标识符属性:
将
In1
设置为input1
。将
In2
设置为input2
。将
In3
设置为input3
。将
In4
设置为input4
。
点击输出端口。
选择输出端口
Out1
。点击 图标,并将标识符属性设置为output
。
生成代码,并验证为 Inport 和 Output 模块生成的代码是否如预期所示。例如:
ConfigurationRapidPrototypingInterface_private.h
包含以下声明:/* Imported (extern) block signals */ extern real_T input1; /* '<Root>/In1' */ /* Exported data declaration */ /* Data with Imported storage (pointer) */ extern real_T *input2; /* '<Root>/In2' */ extern real_T *input3; /* '<Root>/In3' */ extern real_T *input4; /* '<Root>/In4' */
ConfigurationRapidPrototypingInterface.h
包含以下声明。/* Data with Exported storage */ extern real_T output; /* '<Root>/Out1' */
以下代码片段显示表示
In1
、input1
的变量,该变量用于生成的单步入口函数。/* Model step function */ void ConfigurationRapidPrototypingInterface_step(void) { /* DataStoreWrite: '<Root>/Data Store Write' incorporates: * Constant: '<Root>/Constant1' * Constant: '<Root>/Constant2' * Inport: '<Root>/In1' * Logic: '<Root>/LogOp' * RelationalOperator: '<Root>/RelOp1' * RelationalOperator: '<Root>/RelOp2' */ mode = ((input1 > 10.0) || (input1 < -10.0)); . . .
相关示例
- C Data Code Interface Configuration for Model Interface Elements
- Choose Data Configuration Approach
- Choose Storage Class for Controlling Data Representation in Generated Code
- 为模型入口函数配置生成的 C 函数接口
参数
版本历史记录
在 R2020b 中推出