STRUCT 声明
STRUCT 数据类型是指一种元素数量固定但数据类型不同的数据结构。
也可以基于 PLC 数据类型 (UDT) 创建结构。为此,需将 PLC 数据类型指定为一个结构化数据类型。小系统将通过工具提示,显示该 PLC 数据类型的各个元素。
语法
声明 STRUCT 所用的语法如下:
声明 | 语法 | 示例 | STRUCT
| <名称> : Struct
<元素名称> : <数据类型> [:= <值>];
<元素名称> : <数据类型> [:= <值>];
...
END_Struct := (<初始化列表>);
| myStruct : Struct
mem_1 : Int;
mem_2 : Int;
mem_3 : BOOL;
END_Struct := (6,0, TRUE) ;
| 基于 PLC 数据类型 (UDT) 的 STRUCT
| <名称> : "<UDT 名称>" := (<初始化列表>);
| myStruct : "myType" := (6,0, TRUE);
|
说明
S7-1500:一个数据块中最多有 252 个结构
S7-1500 系列 CPU 中的一个数据块中最多允许有 252 个结构。如果需要更多结构,则必须重新构造自己的程序。例如,可以在多个全局数据块中创建结构。
|
STRUCT 的初始化
STRUCT 初始化为可选操作。进行初始化时,可在变量声明后直接跟随一个值,也可使用初始化列表。
初始化列表位于关键字 END_STRUCT 之后,包含在一个括号内并通过 := 进行赋值。如果该结构中还包含下级结构,则可通过括号嵌套进行初始化。如果这两种初始化方式均未采用,则可使用初始化列表中的值。
初始化列表使用的语法如下所示:
声明 |
语法 |
示例 |
注释 | STRUCT 的初始化
| <名称> : Struct
<元素名称> : <数据类型> [:= <值>];
...
END_Struct
| myStruct : Struct
mem_1 : Int := 1;
mem_2 : Int := 2;
mem_3 : BOOL := FALSE
End_Struct
| 该结构中的元素将进行如下初始化:
// mem_1 := 1
// mem_2 := 2
// mem_3 := FALSE
| STRUC 的初始化列表
| := (<值>,<值>,<值>... )
| myStruct : Struct
mem_1 : Int;
mem_2 : Int;
mem_3 : BOOL
End_Struct:=(2,0,TRUE);
| 该结构中的元素将进行如下初始化:
// mem_1 := 2
// mem_2 := 0
// mem_3 := TRUE
| 嵌套 STRUC 的初始化列表
| := (<值>,(<值>,<值>... ))
| myStruct : Struct
mem_1 : Int;
mem_2 : Int;
mem_3 : Struct
mem_4 : BOOL;
mem_5 : BOOL;
End_Struct;
End_Struct:=(2,0, (TRUE,TRUE));
| 该结构中的元素将进行如下初始化:
// mem_1 := 2
// mem_2 := 0
// mem_4 := TRUE
// mem_5 := TRUE
| STRUC 的初始化列表(带元素命名规范)
| := (<元素名称> := <值>), (<元素名称> := <值>)...
| myStruct : Struct
mem_1 : Int;
mem_2 : Int;
End_Struct:=(mem_2:=55);
| 该结构中的元素将进行如下初始化:
// mem_2 := 55
| PLC 数据类型 (UDT) 的初始化列表
| := (<值>,<值>,<值>... )
| myStruct : "myType" := (2,0,TRUE);
| 该结构中的元素将进行如下初始化:
// mem_1 := 2
// mem_2 := 0
// mem_3 := TRUE
| 嵌套 PLC 数据类型 (UDT) 的初始化列表
| := (<值>,(<值>,<值>... ))
| myStruct : "myType" := (2,0,(TRUE,TRUE);
| 该结构中的元素将进行如下初始化:
// mem_1 := 2
// mem_2 := 0
// mem_3 := TRUE
// mem_4 := TRUE
| PLC 数据类型 (UDT) 的初始化列表(带元素命名规范)
| := (<元素名称> := <值>), (<元素名称> := <值>)...
| myStruct : "myType" := (mem_1:=22,mem_2:=55);
| 该结构中的元素将进行如下初始化:
// mem_1 := 22
// mem_2 := 55
|
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |