打开示例模型
open_system('rtwdemo_PCG_Eval_P2')
数据声明
大多数编程语言要求您在使用数据和函数之前先声明它们。在声明中指定:
范围:程序可以访问的数据范围
持续时间:数据在内存中存在的期间
数据类型:为数据分配的内存量
初始化:值、指向内存的指针或 NULL
范围和持续时间的组合即为存储类。如果不提供初始值,大多数编译器会赋予一个零值或一个空指针。
支持的数据类型包括:
double:双精度浮点
single:单精度浮点
int8:有符号 8 位整数
uint8:无符号 8 位整数
int16:有符号 16 位整数
uint16:无符号 16 位整数
int32:有符号 32 位整数
uint32:无符号 32 位整数
定点:8 位、16 位、32 位字长
使用存储类,您可以:
生成具有自定义名称的导出文件,其中包含全局变量声明和定义。
导入自定义头文件,其中包含全局变量声明。
在声明中生成 const 或 volatile 类型限定符。
将参数表示为宏(#define 或编译器选项)。
将信号或参数打包到平面结构体或位字段中。
控制 Simulink® 和 Stateflow® 中的数据
此示例使用数据对象来指定数据的代码生成设置。您也可以使用对话框存储模型中的设置。这两种方法都可以完全控制数据类型和存储类。您可以在一个模型中同时使用这两种方法。
此示例重点介绍以下类型的数据对象:
信号
参数
总线
代码生成器使用来自 MATLAB 基础工作区或 Simulink 数据字典中的对象。您可以在命令提示符下使用命令来创建和检查对象,也可以在 Model Data Editor 或 Model Explorer 中创建和检查对象。
例如,检查模型在基础工作区中创建的 Simulink.Signal 对象 pos_cmd_one 的定义:
打开 Embedded Coder App。
在 Modeling 选项卡上,点击 Model Data Editor。
在 Model Data Editor 中,检查 Signals 选项卡。
点击 Show/refresh additional information 按钮。
将 Change view 下拉列表设置为 Code。
在 Filter contents 框旁边,切换 Filter using selection 按钮。
在模型中,选择 pos_cmd_one 信号线。现在,数据表包含两行:一行对应于模型中的信号线,另一行对应于基础工作区中的信号对象。对于与信号线对应的行,Resolve 复选框处于选中状态,这意味着该信号线从信号对象中获取设置。
(可选)要检查信号对象的其他属性,请调整 Change view 下拉列表的设置。
在 Model Data Editor 中,切换 Filter using selection button。现在,数据表显示下列信号线和信号对象:
pos_cmd_one:Top-level output、Double、Exported Global
pos_rqst:Top-level input、Double、Imported Extern Pointer
P_InErrMap:Calibration parameter、Auto、Constant
ThrotComm:Top-level output structure、Auto、Exported Global
ThrotComm 是总线信号,它是 Simul