S7系列PLC(这里包括S7-1200 PLC和S7-1500 PLC)的数据类型主要分为基本数据类型、复合数据类型、参数类型、系统数据类型和硬件数据类型等。基本数据类型分为位数据类型、数学数据类型、字符数据类型、时间数据类型。每一个基本数据类型数据都具备关键字、数据长度、取值范围和常数表达格式等属性。基本数据类型的关键字、长度、取值范围和常数表示方法举例见表1-4。
表1-4 基本数据类型的关键字、长度、取值范围和常数表示方法举例
(续)
(续)
位数据类型主要有布尔型(Bool)、字节型(Byte)、字型(Word)、双字型(DWord)和长字型(LWord)。在位数据类型中,只表示存储器中各位的状态是0(FALSE)还是1(TURE)。其长度可以是一位(Bit)、一个字节(Byte,8位)、一个字(Word,16位)、一个双字(Double Word,32位)或一个长字(Long Word,64位),分别对应Bool、Byte、Word、DWord和LWord类型。位数据类型通常用二进制或十六进制格式赋值,如2 # 01010101、16 #283 C等。需注意的是,一位布尔型数据类型不能直接赋常数值。
位数据类型的常数表示需要在数据之前根据存储单元长度(Byte、Word、DWord、LWord)加上B#、W#、DW#或LW#(Bool型除外),所能表示的数据范围见表1-5。
表1-5 位数据类型表示的数据范围
图1-50所示为Word数据类型的表达方法,其值为16 #1234。
图1-50 Word数据类型的表达方法
数学数据类型主要有整数类型和实数类型(浮点数类型)。
1.整数类型
整数类型又分为有符号整数类型和无符号整数类型。有符号整数类型包括短整数型(SInt)、整数型(Int)、双整数型(DInt)和长整数型(LInt);无符号整数类型包括无符号短整数型(USInt)、无符号整数型(UInt)、无符号双整数型(UDInt)和无符号长整数型(ULInt)。
短整数型、整数型、双整数型和长整数型数据为有符号整数,分别为8位、16位、32位和64位,在存储器中用二进制补码表示,最高位为符号位(0表示正数、1表示负数),其余各位为数值位。而无符号短整数型、无符号整数型、无符号双整数型和无符号长整数型数据均为无符号整数,每一位均为有效数值。
图1-51所示为Int正整数类型的表达方法,其值为+34。图1-52所示为Int负整数类型的表达方法,其值为-34。
图1-51 Int正整数类型的表达方法
图1-52 Int负整数类型的表达方法
2.实数类型
实数类型具体包括实数型(Real)和长实数型(LReal),均为有符号的浮点数,分别占用32位和64位,最高位为符号位(0表示正数、1表示负数),接下来的8位(或11位)为指数位,剩余位为尾数位,共同构成实数数值。实数的特点是利用有限的32位或64位可以表示一个很大的数,也可以表示一个很小的数。
一个Real类型的数占用4个字节的空间。S7系列PLC中的Real数据类型符合IEEE754标准的浮点数标准,包括符号位S、指数e和尾数m,分别占用的位数如图1-53所示。指数e和尾数m的权值见表1-6。
图1-53 Real数据类型表达方法
表1-6 指数e和尾数m的权值
字符数据类型(Char)长度为8bit,操作数在存储器中占一个字节,以ASCII码格式存储单个字符。常量表示时使用单引号,例如,常量字符A表示为‘A ’或CHAR #′A′。表1-7列出了Char数据类型的属性。
表1-7 Char数据类型的属性
S7系列PLC还支持宽字符类型(WChar),其操作数据长度为16bit,即在存储器中占用2B,以Unicode格式存储扩展字符集中的单个字符,但只涉及整个Unicode范围的一部分。常量表示时需要加WCHAR #前缀及单引号,例如,常量字符a表示为WCHAR #‘a ’。控制字符在输入时,以美元符号表示。表1-8列出了WChar数据类型的属性。
表1-8 WChar数据类型的属性
时间数据类型主要包括时间(Time)和长时间(LTime)数据类型。
1.时间(Time)数据类型
时间(Time)数据类型为32位的IEC定时器类型,内容用毫秒(ms)为单位的双整数表示,可以是正数或负数,表示信息包括天(d)、小时(h)、分钟(m)、秒(s)和毫秒(ms)。表1-9列出了Time数据类型的属性。
表1-9 Time数据类型的属性
2.长时间(LTime)数据类型
长时间(LTime)数据类型为64位IEC定时器类型,操作数内容以纳秒(ns)为单位的长整数表示,可以是正数或负数。表示信息包括天(d)、小时(h)、分钟(m)、秒(s)、毫秒(ms)、微秒(μs)和纳秒(ns)。常数表示格式为时间前加LT#,如LT#11ns。