PLC 中的数据类型
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
STRING 和 WSTRING 的默认长度是 实现相关 的,但用户可以指定,例如:TYPE STR10 : STRING[10] := 'ABCDEF'; END_TYPE。
本文采用 知识共享署名 4.0 国际许可协议(CC-BY 4.0)进行许可,转载注明来源即可: https://www.harttle.com/2014/06/09/plc-datatype.html。如有疏漏、谬误、侵权请通过评论或 邮件 指出。