结构

结构在一个项目中作为 'DUT' ( 数据类型单元) 对象通过 添加对象 对话框实现。

他们以关键词TYPE和STRUCT开始并且以END_STRUCT和END_TYPE结束。

提示!

与CoDeSys V2.3相比, TYPE在结构中声明必须跟随一个”.”!

结构声明语法如下所示: :

TYPE <structurename>:
STRUCT
    <declaration of variables 1>
    ...
    <declaration of variables n>
END_STRUCT
END_TYPE
 

<structurename>是一个类型,被认为贯穿项目并且可作为一个标准数据类型使用的。

连锁的结构是允许的。唯一的限制是变量可能不被分配地址(AT声明是不被允许的)。

Polygonline结构定义名例子:

TYPE Polygonline:
STRUCT
    Start:ARRAY [1..2] OF INT;
    Point1:ARRAY [1..2] OF INT;
    Point2:ARRAY [1..2] OF INT;
    Point3:ARRAY [1..2] OF INT;
    Point4:ARRAY [1..2] OF INT;
    End:ARRAY [1..2] OF INT;
END_STRUCT
END_TYPE
 

结构初始化:

例子 :

Poly_1:polygonline := ( Start:=[3,3], Point1:=[5,2], Point2:=[7,3], Point3:=[8,5], Point4:=[5,7], End:= [3,5]);

不能变量初始化,参见 文件 (数组),数组结构初始化例子。

 

访问结构组件:

你可以使用一下语法接近访问结构组件:

<structurename>.<componentname>

所以上述提及的结构 polygonline 例子,你可以通过Poly_1.Start访问组件start

结构中的Bit 访问

数据类型 “BIT”是一个特殊的数据类型,其只能在结构中定义。它消耗一比特的存储空间并且允许通过名称处理结构中的单独比特。

TYPE <structurename>:
STRUCT
    <bitname bit1> : BIT;
    <bitname bit2> : BIT;
    <bitname bit3> : BIT;
    ...
    <bitname bitn> : BIT;
END_STRUCT
END_TYPE
 

你可以通过以下语法取得使用结构组件比特:

<structurename>.<bitname>

在比特变量上的引用和指标的使用是不可能的。此外BIT变量在数列中不可用。