主要内容

参数的结构体

R2026b

在生成代码中创建一个结构体。该结构体存储参数数据。

C 构造

typedef struct {
  double G1;
  double G2;
} myStructType;

myStructType myStruct = {
  2.0,
  -2.0
} ; 

过程

1.打开示例模型 InlineBlockParameters。

2.在建模选项卡上,点击模型数据编辑器。在模型数据编辑器中,选择参数选项卡。

3.在模型中,点击标签为 G1 的 Gain 模块。在模型数据编辑器中,使用值列将增益参数的值设置为 myStruct.G1。

4.在 G2 模块中将增益参数的值设置为 myStruct.G2。

5.在 myStruct.G2 旁边,点击操作按钮(含三个纵点),然后选择创建。

6.在“创建新数据”对话框中,在值框中键入 Simulink.Parameter(struct)。从位置列表中,选择 Base Workspace。点击创建。名为 myStruct 的 Simulink.Parameter 对象出现在基础工作区中。

7.在 Simulink.Parameter 属性对话框中,在值属性旁边,点击操作按钮并选择打开变量编辑器。

8.右键点击字段列下的空白区域,然后选择新建。将新结构体字段命名为 G1。使用值列将字段的值设置为 2。

9.添加字段 G2,其值为 -2,然后关闭变量编辑器。

10.在 Simulink.Parameter 属性对话框中,在代码生成选项卡上,将存储类设置为 ExportedGlobal。结构体 myStruct 在生成代码中显示为全局变量。

11.从模型中生成代码。

结果

生成的头文件 InlineBlockParameters_types.h 定义具有随机名称的结构体类型。

typedef struct {
  real_T G1;
  real_T G2;
} struct_6h72eH5WFuEIyQr5YrdGuB;

源文件 InlineBlockParameters.c 定义并初始化结构体变量 myStruct。

/* Exported block parameters */
struct_6h72eH5WFuEIyQr5YrdGuB myStruct = {
  2.0,
  -2.0
} ;                                    /* Variable: myStruct
                                        * Referenced by:
                                        *   '<Root>/G1'
                                        *   '<Root>/G2'
                                        */

/* External inputs (root inport signals with default storage) */

指定结构体类型的名称

1.(可选)指定用于结构体类型定义 (struct) 的名称。在命令提示符下,使用函数 Simulink.Bus.createObject 创建一个表示结构体类型的 Simulink.Bus 对象。

2.对象的默认名称为 slBus1。通过将对象复制到新 MATLAB® 变量中来更改名称。

3.在模型数据编辑器中,点击显示/刷新其他信息按钮。

4.在数据表中,找到与 myStruct 对应的行。使用数据类型列将 myStruct 的数据类型设置为 Bus: myStructType。

5.从模型中生成代码。

代码生成结构体类型 myStructType 的定义,并使用此类型定义全局变量 myStruct。

myStructType myStruct = {
  2.0,
  -2.0
} ;                                    /* Variable: myStruct

另请参阅

主题