配置数据接口
Embedded Coder® 可为模型中的数据元素和函数类别指定默认配置,以减少配置数据和函数接口的工作量。应用默认配置可以节省时间并降低在代码中引入错误的风险,尤其是对于大型模型和要从中生成多实例代码的模型更是如此。应用默认配置后,您可以有选择地覆盖单个数据元素和函数的默认设置。
可以通过配置 RollAxisAutopilot_step
函数来自定义 RollAxisAutopilot
模型的数据接口,以:
从在外部文件
roll_input_data.h
和roll_input_data.c
中声明和定义的全局变量读取输入数据。将输出数据写入代码生成器在
output_data.h
中声明并在output_data.c
中定义的全局变量。
要进行更改,请使用当前 MATLAB® 工作文件夹中的以下外部代码文件。
roll_input_data.c
roll_input_data.h
roll_heading_mode.c
roll_heading_mode.h
您所做的数据接口配置更改取决于代码生成和编译过程可以访问的这些文件。编译过程会使用这些文件中的代码编译生成的代码。
配置数据的默认代码生成
为模型输入端口和输出端口配置默认代码生成配置。
在 C 代码选项卡中,选择代码接口 > 默认代码映射。
配置模型根级别的 Inport 模块,使其在生成的代码中显示为由外部代码定义的单独全局变量。在代码映射编辑器中的输入端口和输出端口下,选择输入端口类别。将默认存储类设置为 ImportFromFile。
使用此设置时,生成的代码不会定义表示输入端口数据的全局变量。此时,
#include
语句包含一个声明输入变量的头文件。使用属性检查器指定该头文件的名称。点击 图标,并将头文件设置为
roll_input_data.h
。要查看外部头文件
roll_input_data.h
中的extern
声明如何命名输入变量,请在 MATLAB 命令行窗口中,打开位于当前工作文件夹中的roll_input_data.h
。extern boolean_T AP_Eng; extern real32_T HDG_Ref; extern real32_T Rate_FB; extern real32_T Phi; extern real32_T Psi; extern real32_T TAS; extern real32_T Turn_Knob;
配置全局变量的代码生成命名规则。默认情况下,代码生成器使用前缀
rt
命名全局变量。要使代码生成器生成与roll_input_data.h
中的外部变量声明匹配的代码,请相应地配置全局变量的代码生成命名规则。打开“模型配置参数”对话框。在工具条中,在 C 代码选项卡上,点击设置。
导航到代码生成 > 标识符窗格。
将参数全局变量设置为命名规则
$N$M
(删除rt
前缀)。标记$N
表示模型中数据元素的名称,例如,Inport 或 Outport 模块的名称。标记$M
表示代码生成器根据需要插入的名称修饰文本,以避免与代码中的其他全局变量发生名称冲突。应用所做更改。
配置模型根级别的 Outport 模块,使其在生成的代码中显示为单独全局变量。在代码映射编辑器中的数据默认值选项卡上,对于输出端口类别,将存储类设置为导出到文件。
生成的代码声明并定义您使用“属性检查器”指定的头文件和定义文件中的输出变量。
点击 图标,将头文件设置为
roll_output_data.h
,将定义文件设置为roll_output_data.c
。配置模型的代码生成以包括外部源文件
roll_input_data.c
和roll_heading_mode.c
。在“配置参数”对话框中,将代码生成 > 自定义代码 > 代码信息 > 源文件设置为roll_input_data.c roll_heading_mode.c
。然后,点击应用再点击确定。保存模型。通过点击编译重新生成代码。
编译器错误指示未声明变量
HDG_Mode
。该变量未在头文件roll_input_data.h
中声明,它是您为输入端口声明的默认头文件。您可以在本教程的下一节中修复此错误。该模型配置为在代码生成完成后打开代码生成报告。最小化此报告窗口以便在本教程的后面部分进行浏览。
您将 Inport 模块配置为使用外部头文件来声明和定义输入变量。在代码视图中,通过搜索
roll_input_data.h
确认生成的代码包含此外部头文件。搜索根级别 Inport 模块名称
HDG_Ref
。在您键入时,选择具有绿色V
图标的搜索建议。此搜索建议查找用作所生成代码中的变量的HDG_Ref
实例。确认HDG_Ref
定义为单独的全局变量。在模型
RollAxisAutopilot
中,点击 Outport 模块Ail_Cmd
。将光标放在模块上方的省略号菜单上,然后点击导航到代码。代码视图会高亮RollAxisAutopilot.c
中与该模块对应的代码。在代码中,将光标放在输出变量Ail_Cmd
的上方。可追溯性对话框会显示变量定义。该对话框确认Ail_Cmd
已定义为单独的全局变量。点击定义代码以在roll_output_data.c
中查看定义。
覆盖单个数据元素的默认设置
您为数据默认值下的类别选择的设置将应用于整个模型中该类别的元素。要覆盖单个数据元素的默认设置,请使用代码映射编辑器。
在为输入端口和输出端口配置默认设置后生成代码时,会显示一个编译器错误,指示未声明变量 HDG_Mode
。您可以通过覆盖 Inport 模块 HDG_Mode
的默认配置来修复该错误。
在代码映射编辑器中的输入端口选项卡上,选择源
HDG_Mode
。将存储类设置为 ImportFromFile。
点击 图标,将标识符设置为
HDG_Mode
,将头文件设置为roll_heading_mode.h
。代码生成器将根据这些设置从头文件
roll_heading_mode.h
导入外部变量HDG_Mode
的声明。extern boolean_T HDG_Mode;
保存模型并重新生成代码。
最小化代码生成报告窗口,以便在本教程中的后面部分进行浏览。
在代码视图中,搜索
roll_heading_mode.h
并确认它与默认配置文件roll_input_data.h
均包含在生成的代码中。搜索
HDG_Mode
并确认它已定义为单独的全局变量。
接下来,将一个模型参数配置为生成的代码中的一个全局变量。您可以在运行时调整该全局变量的参数值。