跳到主要内容

5.1 基本数据类型

5.1.1位

布尔--BOOL

  • 位(Bit):"位"或"比特",是计算机运算的基础
格式取值范围输入值示例
布尔型FALSE 或 TRUE
BOOL#0 或 BOOL#1
BOOL#FALSE或
BOOL#TRUE
TRUE
BOOL#1
BOOL#TRUE
无符号整数(十进制系统)0或11
二进制数2#0 或2#12#0
十六进制16#0 或16#116#1
注意
  • 此处我们BOOL类型变量长度是8bit即1byte;
  • BOOL长度1bit是逻辑上的,软件存储是1byte;
  • 值包含TRUE和FALSE,BOOL类型变量默认值为FALSE

5.1.2 位串

字节--BYTE

  • 字节(Byte):"字节"是通过网络传输信息(或在硬盘或内存中存储信息)的单位
格式取值范围输入值示例
整数有符号整数:-128到+127
无符号整数:0到255
15
BYTE#15
二进制数2#0到
2#1111_1111
2#0000_1111
BYTE#2#0000_1111
十六进制16#0到
16#FF
16#0F
BYTE#16#0F
注意
  • 长度为8bit,Byte类型的变量不能超过取值范围,否则会导致溢出

字--WORD

格式取值范围输入值示例
整数0到65535666
WORD#666
二进制数2#0 到
2#1111_1111_1111_1111
2#1111_0000_1111_0000
WORD#2#1111_0000_1111_0000
十六进制数16#0到16#FFFF16#F0F0
WORD#16#F0F0

双字--DWORD

格式取值范围输入值示例
整数0到4294967295156
DWORD#156
二进制数2#0到
2#1111_1111_1111_1111_1111_1111_1111_1111
2#0000_1111_0000_1111_0000_1111_0000_1111
DWORD#2#0000_0000_1111_0000_1111_1111_0000_1111
十六进制数16#0000_0000到
16#FFFF_FFFF
16#00F0_FF0F
DWORD#16#00F0_FF0F

长字--LWORD

格式取值范围输入值示例
整数有符号整数:
-9_223_372_036_854_775_808 到
+9_223_372_036_854_775_807
无符号整数:
0到18_446_744_073_709_551_615
26_123_590_360_715
LWORD#+26_123_590_360_715
二进制数2#0 到
2#1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111
2#0000_0000_0000_0000_0000_1011_1110_0001_0010_1111_0101_0010_1101_1110_1000_1011
LWORD#2#0000_0000_0000_0000_0000_1011_1110_0001_0010_1111_0101_0010_1101_1110_1000_1011
十六进制数16#0000_0000 到
16#FFFF_FFFF_FFFF_FFFF
16#0000_0000_5F52_DE8B
LWORD#16#0000_0000_5F52_DE8B

5.1.3 整型

短整型--SINT

格式取值范围输入值示例
有符号整数-128到
127
66
SINT#44
二进制数2#0到
2#0111_1111
2#0010_1100
SINT#2#0010_1100
十六进制数16#0到16#7F16#2C
SINT#16#2C

无符号短整型--USINT

格式取值范围输入值示例
无符号整数0到25577
二进制数2#0到2#1111_11112#0100_1110
十六进制数16#0到16#FF16#4E
USINT#16#4E

整型--INT

格式取值范围输入值示例
有符号整数-32768到32767333
INT#333
二进制数2#0到
2#0111_1111_1111_1111
2#0000_1110_1100_1001
INT#2#0000_1110_1100_1001
十六进制数16#0 到 16#7FFF• 16#0EC9
INT#16#0EC9

无符号整型--UINT

格式取值范围输入值示例
无符号整数0 到 65535295
UINT#295
二进制数2#0 到
2#1111_1111_1111_1111
2#1111_1111_0000_1111
UINT#2#1111_1111_0000_1111
十六进制数16#0到16#FFFF16#FF0F
UINT#16#FF0F

双整型--DINT

格式取值范围输入值示例
有符号整型-2_147_483_648 到
+2_147_483_647
125790
DINT#125
二进制数2#0 到
2#0111_1111_1111_1111_1111_1111_1111_1111
2#0000_0000_0000_0001_1110_1011_0101_1110
DINT#2#0000_0000_0000_0001_1110_1011_0101_1110
十六进制数16#0到
16#7FFF_FFFF
16#0001_EB5E
DINT#16#0001_EB5E

无符号双整型--UDINT

格式取值范围输入值示例
无符号整数0 到 4_294_967_2954_042_322_160
UDINT#4_042_322_160
二进制数2#0 到
2#1111_1111_1111_1111_1111_1111_1111_1111
2#1111_0000_1111_0000_1111_0000_1111_0000
UDINT#2#1111_0000_1111_0000_1111_0000_1111_0000
十六进制数16#0 到 16#FFFF_FFFF16#F0F0_F0F0
UDINT#16#F0F0_F0F0

长整型--LINT

格式取值范围输入值示例
有符号整型-9_223_372_036_854_775_808 到
+9_223_372_036_854_775_807
154
LINT#+154_325_790_816_159
二进制数2#0 到
2#0111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111
2#0000_0000_0000_0000_1000_1100_0101_1011_1100_0101_1111_0000_1111_0111_1001_1111
LINT#2#0000_0000_0000_0000_1000_1100_0101_1011_1100_0101_1111_0000_1111_0111_1001_1111
十六进制数16#0 到
16#7FFF_FFFF_FFFF_FFFF
16#0000_8C5B_C5F0_F79F
LINT#16#0000_8C5B_C5F0_F79F

无符号长整型ULINT

格式取值范围输入值示例
无符号整数0到18_446_744_073_709_551_615154
ULINT#154_325_790_816_159
二进制数2#0 到
2#1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111
2#0000_0000_0000_0000_1000_1100_0101_1011_1100_0101_1111_0000_1111_0111_1001_1111
ULINT#2#0000_0000_0000_0000_1000_1100_0101_1011_1100_0101_1111_0000_1111_0111_1001_1111
十六进制数16#0 到
16#FFFF_FFFF_FFFF_FFFF
16#0000_8C5B_C5F0_F79F
ULINT#16#0000_8C5B_C5F0_F79F

5.1.4 实数

实数--REAL

格式取值范围输入值示例
符合IEEE754标准±0.0
±1.175495e-38 到 ±3.402823e+38
1.0e-5;REAL#1.0e-5
1.0;REAL#1.0

长实数--LREAL

格式取值范围输入值示例
符合IEEE754标准-1.7976931348623157e+308 到
-2.2250738585072014e-308
±0.0
+2.2250738585072014e-308 到
+1.7976931348623157e+308
1.0e-5; LREAL#1.0e-5
1.0; LREAL#1.0
注意
  • 单精度(REAL):共32位,其中S占1位,E占8位,M占23位
  • 双精度(LREAL):共64位, 其中S占1位,E占11位,M占52位
  • 特殊值:
    • 当E的二进制全为1,若M的二进制位全为0,则N表示无穷大,若S为1则为负无穷大,若S为0则为正无穷大;
    • 当E的二进制全为1,若M的二进制位不全为0时,表示NAN(Not a Number),表示这不是一个合法实数或无穷,或者该数未经初始化

5.1.5 字符串

单字节字符--CHAR

格式取值范围输入值示例
ASCII字符ASCII字符集'A'
CHAR#'A'

字符串--STRING或STRING[N]

注意
  • 天行PLC的STRING类型在内存中,实际是元素为CHAR的数组
  • 天行PLC允许对STRING类型的变量带下标访问其CHAR元素,字符串元素的访问起点为1
格式取值范围输入值示例
ASCII 字符串,包括特殊字符系统中实际占用存储空间=[N+2]BYTE;N是常数,最大254;缺省值N=80'Name'
STRING#'NAME'
STRING#'' (该字符串为空。)

5.1.6 时间数据

持续时间--TIME

格式取值范围输入值示例
有符号的持续时间T#-24d_20h_31m_23s_648ms 到
T#+24d_20h_31m_23s_647ms
精度为毫秒
T#5MS
TIME#5MS

日期--DATE

格式取值范围输入值示例
日期(年-月-日)D#1970-1-1 ~ D#2106-02-06
精度为天
D#1970-1-1

时间--TIME_OF_DAY

格式取值范围输入值示例
时间(小时:分钟:秒.毫秒)TOD#0:0:0.000 ~ TOD#23:59:59.999
精度为毫秒
TOD#0:0:0.000

日期和时间--TIME_AND_DAY

格式取值范围输入值示例
日期和时间 (年-月-日-小时:分钟:秒)DT#1970-1-1-0:0:0 ~DT#2106-02-06-06:28:15
精度为秒
DT#1970-1-1-0:0:0

长持续时间--LTIME

格式取值范围输入值示例
有符号的持续时间有符号长整型存储的 ns 值
LT#-2^63~ (2^63-1)
精度为纳秒
LTIME#0ns
注意
  • 布尔:如果在内存中的最低位被置位,则BOOL类型变量为“true”(真)。如果内存中最低位没有被置位,则BOOL变量为FALSE。
  • 实数:数据类型LREAL的支持取决于目标设备。在编译时64位类型的LREAL是被转换为REAL(可能有信息丢失),还是保持不变