数据结构: STRUCT
结构是一种用户定义的数据类型,它将任何数据类型的多个变量组合成一个逻辑单元。在结构中声明的变量称为成员。
你在中声明一个结构的类型 DUT 你在中创建的对象项目 → 添加对象 → DUT 菜单或应用程序的快捷菜单中。
有关更多信息,请参阅: DUT
语法
TYPE <structure name>
STRUCT
<member name> : <data type> := <initialization> ;
END_STRUCT
END_TYPE
| 此标识符在整个项目中有效,因此您可以像使用标准数据类型一样使用它。 |
| 成员声明 随后可以发表任意数量的声明,但至少 2 个。 结构也可以嵌套。这意味着您使用现有结构类型声明结构成员。那么唯一的限制是你不能为变量(结构成员)分配任何地址。这个 |
| 可选 |
类型声明
TYPE S_POLYGONLINE : STRUCT aiStart : ARRAY[1..2] OF INT := [-99, -99]; aiPoint1 : ARRAY[1..2] OF INT; aiPoint2 : ARRAY[1..2] OF INT; aiPoint3 : ARRAY[1..2] OF INT; aiPoint4 : ARRAY[1..2] OF INT; aiEnd : ARRAY[1..2] OF INT := [99, 99]; END_STRUCT END_TYPE
类型声明的扩展
另一个结构是从现有结构中声明的。除了自己的成员外,扩展结构还具有与基础结构相同的结构成员。
语法
TYPE <structure name> EXTENDS <base structure>
STRUCT
<member declaration>
END_STRUCT
END_TYPE
类型声明: S_PENTAGON
TYPE S_PENTAGON EXTENDS S_POLYGONLINE : STRUCT aiPoint5 : ARRAY[1..2] OF INT; END_STRUCT END_TYPE
结构变量的声明和初始化
PROGRAM progLine VAR sPolygon : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]); sPentagon : S_PENTAGON := (aiStart:=[0,0], aiPoint1:=[1,1], aiPoint2:=[2,2], aiPoint3:=[3,3], aiPoint4:=[4,4], aiPoint5:=[5,5], aiEnd:=[0,0]); END_VAR
不得对变量使用初始化。有关初始化结构数组的示例,请参阅该数据类型的帮助页面 ARRAY OF。
访问结构成员
您可以使用以下语法访问结构成员:
<variable name> . <member name>
PROGRAM prog_Polygon VAR sPolygon : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]); iPoint : INT; END_VAR
// Assigs 5 to aiPoint iPoint := sPolygon.aiPoint1[1];
结果: iPoint = 5
结构变量中的符号位访问
你可以用数据类型的变量声明一个结构 BIT
将各个位组合成一个逻辑单元。然后,您可以通过名称(而不是位索引)象征性地寻址各个位
语法声明
TYPE <structure name> :
STRUCT
<member name> : BIT;
END_STRUCT
END_TYPE
位访问的语法
<structure name> . <member name>
类型声明
TYPE S_CONTROL : STRUCT bitOperationEnabled : BIT; bitSwitchOnActive : BIT; bitEnableOperation : BIT; bitError : BIT; bitVoltageEnabled : BIT; bitQuickStop : BIT; bitSwitchOnLocked : BIT; bitWarning : BIT; END_STRUCT END_TYPE
位访问
FUNCTION_BLOCK FB_Controller VAR_INPUT xStart : BOOL; END_VAR VAR_OUTPUT END_VAR VAR ControlDriveA : S_CONTROL; END_VAR IF xStart = TRUE THEN // Symbolic bit access ControlDriveA.bitEnableOperation := TRUE; END_IF PROGRAM PLC_PRG fbController : FB_Controller; END_VAR fbController(); fbController.xStart := TRUE;
有关更多信息,请参阅: 变量中的位访问
提示
指向的引用和指针 BIT
变量是 无效 声明,以及具有基本类型的数组元素 BIT
。