STRUCT 数据类型是指一种元素数量固定但数据类型不同的数据结构。在结构中,也可嵌套 STRUCT 或 ARRAY 数据类型的元素。结构可用于根据过程控制系统分组数据以及作为一个数据单元来传送参数。
变量中直接使用的结构声明称为匿名结构。匿名结构可具有以下形式:
所有后续说明都将基于该结构图。
结构的嵌套深度和数量
在嵌套式结构中,包含至少一个附加结构作为元素。此时,可定义 65535 个函数、函数块、数据块和 PLC 数据类型。各 CPU 的具体上限值与块类型和所有块的总数相关。
结构描述(如,DB 或 PLC 数据类型 (UDT))中,每个层级多可定义 16K 的元素。这些结构中的元素可以同样为 ARRAY 或 STRUCT 数据类型。因此,结构化元素可以源自一个显式声明的 PLC 数据类型,而无任何限制。每个层级可包含 PLC 数据类型 (UDT)/SDT 的 16K 个元素。但一个块中多可包含 252 个“匿名结构”。
结构 (STRUCT) 的嵌套层级深度为 8 级。具体的嵌套深度取决于所使用的 CPU。
传递 STRUCT 数据类型的参数
STRUCT 数据类型可作为参数进行传递。有关将 STRUCT 作为参数的更多信息,请参见
“传递 STRUCT 数据类型的变量”
匿名结构的缺陷
在这种结构化变量中,元素的寻址方式都相同,而不考虑该元素采用 PLC 数据类型声明,还是采用匿名结构声明。
使用匿名结构具有以下缺点:
维护成本增加:如果对一个匿名结构进行了多次复制,则在更改过程中该匿名结构也必需进行相应的多次更改。
匿名结构与 PLC 数据类型 (UDT) 的相同结构不兼容。
由于系统会检查所有结构元素的类型是否匹配,因而会导致性能下降。
存储空间要求增加:每个匿名结构都是一个单独的对象,其描述信息将加载到 AS 中。
示例
如果在一个 PLC 数据类型 (UDT) 中声明数据类型为 STRUCT 的变量,则使用方式将增加(参见左图)。但是,也可以直接使用数据类型 STRUCT 对变量进行声明(参见右图)。
使用或不使用 PLC 数据类型 (UDT) 对结构化变量“Motor”进行声明:
声明 STRUCT 数据类型的变量 |
要求 块接口已打开。
步骤
要声明 STRUCT 数据类型的变量,请按以下步骤操作:
选择接口中的相应声明部分。 在“名称”列中输入变量名称。 在“数据类型”列中输入“Struct”。输入时系统将提供自动完成功能。 在新变量后将插入空的缩进行。 在个空行中插入个结构元素。 在该元素后会再插入一个空行。 选择结构元素的数据类型。 可选:更改在块接口其它列中显示的结构元素的属性。 对所有其它结构元素重复步骤 4 到 7。 不必显式完成该结构。结构会以输入的后一个元素结束。 要在结构后插入新变量,请在结构结尾后留一个空行,然后在第二个空行中启动新变量。 |
结果 创建数据类型 STRUCT 的变量。
说明 S7-1500:一个数据块中多有 252 个结构 一个数据块中多允许有 252 个结构。如果需要更多结构,则必须重新构造自己的程序。例如,可以在多个全局数据块中创建结构。 |