>一、 概述
数据类型组的有效性
数据类型组中定义有数据的属性,例如:内容及有效存储区的表示。
在用户程序中,可使用预定义的数据类型,并将这些数据类型添加到用户自定义数据类型中。此时,可使用以下类别:
- 基本数据类型(二进制数、整数、浮点数、定时器、DATE、TOD、LTOD、CHAR、WCHAR)
- 复杂数据类型(DT、LDT、DTL、STRING、WSTRING、ARRAY、STRUCT)
- 用户自定义数据类型(PLC 数据类型 (UDT))
- 指针
- 参数类型
- 系统数据类型
- 硬件数据类型
二、 基本数据类型
基本数据类型
基本数据类型:包括位、位序列、整数、浮点数、日期时间。此外字符也属于基本数据类型。
此外 BCD 码虽然不属于数据类型,但也是一种数字表示方式,将在本文最后予以介绍。
1.位和位序列
注意:虽然位序列有数值表示方式,但一般不直接用于数学运算。通常在控制字、状态字、错误代码、标志字、状态位集合等处使用位序列。而数学运算使用下面的整数数据类型与浮点数数据类型。
布尔运算 | FALSE 或者 TRUE | TRUE |
- I1.0
- Q0.1
- M50.7
- DB1.DBX2.3
- Tag_name
| 二进制 | 2#0 或 2#1 | 2#0 | 无符号整数 | 0 或 1 | 1 | 八进制 | 8#0 或 8#1 | 8#1 | 十六进制 | 16#0 或 16#1 | 16#1 | 二进制 | 2#0 到 2#1111_1111 | 2#1000_1001 |
| 无符号整数 | 0 到 255 | 15 | 有符号整数 | -128 到 127 | -63 | 八进制 | 8#0 到 8#377 | 8#17 | 十六进制 | B#16#0 到 B#16#FF / 16#0 到 16#FF | B#16#F、16#F | 二进制 | 2#0 到 2#1111_1111_1111_1111 | 2#1101_0010_1001_0110 |
| 无符号整数 | 0 到 65535 | 61680 | 有符号整数 | -32768 到 32767 | 72 | 八进制 | 8#0 到 8#177_777 | 8#170_362 | 十六进制 | W#16#0 到 W#16#FFFF / 16#0 到 16#FFFF | W#16#F1C0、16#A67B | 二进制 | 2#0 到 2#1111_1111_1111_1111_1111_1111_1111_1111 | 2#1101_0100_1111_1110_1000_1100 |
| 无符号整数 | 0 到 4_294_967_295 | 15_793_935 | 有符号整数 | -2_147_483_648 到 2_147_483_647 | -400000 | 八进制 | 8#0 到 8#37_777_777_777 | 8#74_177_417 | 十六进制 | DW#16#0 到 DW#16#FFFF_FFFF / 16#0 到 16#FFFF_FFFF | DW#16#20_F30A、16#B_01F6 | 2.整数数据类型
数据类型位大小数值范围常数示例地址示例
[tr][/tr][tr]USInt[td]8[tr]SInt[td]8[tr]UInt[td]16[tr]Int[td]16[tr]UDInt[td]32[tr]DInt[td]320 到 255 | 78、2#01001110 |
| -128 到 127 | +50、16#50 | 0 到 65535 | 65295、0 |
| -32768 到 32767 | 30000、+30000 | 0 到 4_294_967_295 | 4042322160 |
| -2_147_483_648 到 2_147_483_647 | -2131754992 | 3.浮点型实数数据类型
如 ANSI/IEEE 754-1985 标准所述,实(或浮点)数以 32 位单精度数 (Real) 或 64 位双精度数 (LReal) 表示。单精度浮点数的精度最高为 6 位有效数字,
而双精度浮点数的精度最高为 15 位有效数字。在输入浮点常数时,最多可以指定 6 位 (Real) 或 15 位 (LReal) 有效数字来保持精度。
[tr]数据类型位大小数值范围常数示例地址示例[/tr][tr]Real[td]32[tr]LReal[td]64-3.402823e+38 到 -1.175495e-38、±0、+1.175 495e-38 到 +3.402823e+38 | 123.456、-3.4、1.0e-5 |
| -1.7976931348623158e+308 到 -2.2250738585072014e-308、
±0、
+2.2250738585072014e-308 到 +1.7976931348623158e+308 | 12345.123456789e40、1.2E+40 |
- DB_name.var_name
注意:
• 不支持直接寻址
| 4.时间和日期数据类型
TIME 数据作为有符号双整数存储,基本单位为毫秒。存储的数值是多少,就代表有多少 ms。编辑时可以选择性使用天 (d)、小时(h)、分钟 (m)、秒 (s) 和毫秒 (ms) 作为单位。
不需要指定全部时间单位。例如,T#5h10s 和 500h 均有效。所有指定单位值的组合值不能超过以毫秒表示的时间日期类型的上限或下限(-2,147,483,648 ms 到 +2,147,483,647 ms)。
DATE 数据作为无符号整数值存储,被解释为添加到基础日期 1990 年 1 月 1 日的天数,用以获取指定日期。编辑器格式必须指定年、月和日。
TOD (TIME_OF_DAY) 数据作为无符号双整数值存储,被解释为自指定日期的凌晨算起的毫秒数(凌晨 = 0 ms)。必须指定小时(24 小时/天)、分钟和秒。可以选择指定小数秒格式。
数据类型位大小范围常数示例
[tr][/tr][tr]Time[td]32[tr]DATE[td]16[tr]TOD/
Time_of_Day
[td]32T#-24d_20h_31m_23s_648ms 到 T#24d_20h_31m_23s_647ms
存储形式:-2,147,483,648 ms 到 +2,147,483,647 ms |
- T#5m_30s
- T#1d_2h_15m_30s_45ms
- TIME#10d20h30m20s630ms
- 500h10000ms
- 10d20h30m20s630ms
| D#1990-1-1 到 D#2168-12-31 |
- D#2009-12-31
- DATE#2009-12-31
- 2009-12-31
| TOD#0:0:0.0 到 TOD#23:59:59.999 |
- TOD#10:20:30.400
- TIME_OF_DAY#10:20:30.400
- 23:10:1
| 5. BCD 码
BCD 格式不能作为数据类型使用,但是以下转换指令支持 BCD 数字格式转换:
- BCD16_TO_INT
- INT_TO_BCD16
- BCD32_TO_DINT
- DINT_TO_BCD32
转换举例:16#100 >10#100,10#888777>16#888777
数据类型位大小范围常数示例
BCD16 | BCD32 | -999 到 999 | 123、-123 | -9999999 到 9999999 | 1234567、-1234567
|
|