西门子博途中声明STRUCT数据类型的变量

描述

要求

块接口已打开。

操作步骤

要声明 STRUCT 数据类型的变量,请按以下步骤操作:

在块接口中,选择需声明的部分。
在“名称”(Name) 列中,输入变量的名称。
在“数据类型”列中输入“Struct”。输入时系统将提供自动完成功能。
在新变量后将插入空的缩进行。
在第一个空行中插入第一个结构元素。
在该元素后会再插入一个空行。
选择结构元素的数据类型。
可选:更改在块接口其它列中显示的结构元素的属性。
对于所有其它结构元素,重复执行步骤 4 到 6。
不必显式完成该结构。结构会以输入的最后一个元素结束。
要在结构后插入新变量,请在结构结尾后留一个空行,然后在第二个空行中启动新变量。

结果

创建数据类型 STRUCT 的变量。

说明
S7-1500:一个数据块中最多有 252 个结构
一个数据块中最多允许有 252 个结构。如果需要更多结构,则必须重新构造自己的程序。例如,可以在多个全局数据块中创建结构。

TRUCT 声明

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 <名称> : "" := (<初始化列表>); 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

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分