主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

参数结构

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

C 构造

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

myStructType myStruct = {
  2.0,
  -2.0
} ; 

程序

1.打开示例模型 InlineBlockParameters

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

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

4.将 G2 模块中的 Gain 参数的值设置为 myStruct.G2

5.在 myStruct.G2 旁边,点击操作按钮(带有三个垂直点)并选择创建

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

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

8.右键点击 Field 列下的空白处,并选择 New。将新结构体字段命名为 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'
                                        */

指定结构类型的名称

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

另请参阅

主题