IEC 61131-3 规约了 PLC 中的数据类型,包括21种基本数据类型(basic datatype)、用于函数重载的泛化数据类型(general datatype)、以及自定义数据类型(derived datatype)。

基本数据类型

编号 关键字 数据类型 长度
1 BOOL 布尔 1
2 SINT 短整数 8
3 INT 整数 16
4 DINT 双精度整数 32
5 LINT 长整数 64
6 USINT 无符号短整数 8
7 UINT 无符号整数 16
8 UDINT 无符号双精度整数 32
9 ULINT 无符号长整数 64
10 REAL 实数 32
11 LREAL 长实数 64
12 TIME 持续时间
13 DATE 如期
14 TIME_OF_DAY/TOD 时间(当日)
15 DATE_AND_TIME/DT 时间与日期
16 STRING 可变长度单字节字符串 8
17 WSTRING 可变长度双字节字符串 16
18 BYTE 长为8的位串 8
19 WORD 长为16的位串 16
20 DWORD 长为32的位串 32
21 LWORD 长为64的位串 64

泛化数据类型

在功能和功能块的输入/输出说明中,除 基本数据类型 外,还可以使用 泛化数据类型层级 。泛化数据类型用前缀ANY标识。其层级关系如下:

ANY
    ANY_DERIVED
    ANY_ELEMENTARY
        ANY_MAGNITUDE
            ANY_NUM
                ANY_REAL 
                    LREAL
                    REAL 
                ANY_INT
                    LINT, DINT, INT, SINT
                    ULINT, UDINT, UINT, USINT 
            TIME
        ANY_BIT
            LWORD, DWORD, WORD, BYTE, BOOL
        ANY_STRING 
            STRING
            WSTRING 
        ANY_DATE
            DATE_AND_TIME 
            DATE, TIME_OF_DAY

自定义数据类型

自定义数据类型 使用TYPE...END_TYPE声明。例如,从基本数据类型直接导出的数据类型:TYPE RU_REAL : REAL ; END_TYPE.

枚举

TYPE ANALOG_SIGNAL_TYPE : 
    (SINGLE_ENDED, DIFFERENTIAL) := SINGLE_ENDED ; 
END_TYPE

枚举 中,可以使用类型前缀(如ANALOG_SIGNAL_TYPE#)可用来避免歧义。如果没有提供足够的类型信息,将被视为 错误

枚举 类型的默认初始值为第一个标识符,或用户在类型声明中使用:=指定的值。

子域

TYPE ANALOG_DATA : INT (-4095..4095) ; END_TYPE

子域 声明指定了数据取值的上限和下限。如果子范围类型的值超出了其规定的范围,将被视为 错误

子域 数据类型的初始值为取值的下限。

结构

TYPE 
    ANALOG_CHANNEL_CONFIGURATION :
        STRUCT
            RANGE : ANALOG_SIGNAL_RANGE ; 
            MIN_SCALE : ANALOG_DATA ; 
            MAX_SCALE : ANALOG_DATA ;
        END_STRUCT ; 
    ANALOG_16_INPUT_CONFIGURATION :
        STRUCT
            SIGNAL_TYPE : ANALOG_SIGNAL_TYPE ;
            FILTER_PARAMETER : SINT (0..99) ;
            CHANNEL : ARRAY [1..16] OF ANALOG_CHANNEL_CONFIGURATION ;
        END_STRUCT ; 
END_TYPE

对于 结构数组 ,初始值对应基本数据类型的初始值,除非用户使用:=指定。

基本数据类型的初始值均为0,日期除外:0000-00-01

数组

TYPE ANALOG_16_INPUT_DATA : 
    ARRAY [1..16] OF ANALOG_DATA ; 
END_TYPE

STRINGWSTRING 的默认长度是 实现相关 的,但用户可以指定,例如:TYPE STR10 : STRING[10] := 'ABCDEF'; END_TYPE

本文采用 知识共享署名 4.0 国际许可协议(CC-BY 4.0)进行许可,转载注明来源即可: https://harttle.land/2014/06/09/plc-datatype.html。如有疏漏、谬误、侵权请通过评论或 邮件 指出。