用户在编写程序时,变量的格式必须与指令的数据类型相匹配。S7系列plc的数据类型主要分为基本数据类型、复合数据类型和参数类型,对于S7 - 1500 PLC,还包括系统数据类型和硬件数据类型。
基本数据类型的操作数通常是32位以内的数据。基本数据类型分为位数据类型、数学数据类型、字符数据类型、定时器数据类型以及日期和时间数据类型。在日期和时间数据类型中,存在超过32位的数据类型;对于S7 - 1500 PLC而言,还增加了许多超过32位的此类数据类型。为方便比较学习,故一并放在基本数据类型中进行介绍。
位数据类型主要有布尔型( Bool)、字节型(Byte)、字型(Word)和双字型( DWord),对于S7 -1500 PLC,还支持长字型(LWord),而S7 - 300/400 PLC仅支持前4种。
在位数据类型中,只表示存储器中各位的状态是0 (FALSE)还是1(TURE)。其长度可以是一位( Bit)、一个字节(Byte,8位)、一个字(Word,16位)、一个双字(Double Word,32位)或一个长字(Long Word,64位),分别对应Bool、Byte、Word、DWord和LWord类型。位数据类型通常用二进制或十六进制格式赋值,如2# 01010101、16# 283C等。需注意的是,一位布尔型数据类型不能直接赋常数值。
位数据类型的常数表示需要在数据之前根据存储单元长度( Byte、Word、DWord、LWord)加上B#、W#、DW#或LW#(Bool型除外),所能表示的数据范围见表1。
表1位数据类型的数据表示范围
对于S7 - 1500 PLC,数学数据类型主要有整数类型和实数类型(浮点数类型)。
整数类型又分为有符号整数类型和无符号整数类型。有符号整数类型包括短整数型( SInt)、整数型(Int)、双整数型(DInt)和长整数型(Llnt);无符号整数类型包括无符号短整数型( USInt)、无符号整数型(UInt)、无符号双整数型(UDInt)和无符号长整数型( ULInt)。对于S7 - 300/400 PLC,仅支持整数型Int和双整数型DInt。
短整数型、整数型、双整数型和长整数型数据为有符号整数,分别为8位、16位、32位和64位,在存储器中用二进制补码表示,最高位为符号位(0表示正数、1表示负数),其余各位为数值位。而无符号短整数型、无符号整数型、无符号双整数型和无符号长整数型数据均为无符号整数,每一位均为有效数值。
实数类型具体包括实数型( Real)和长实数型(LReal),均为有符号的浮点数,分别占用32位和64位,最高位为符号位(0表示正数、1表示负数),接下来的8位(或11位)为指数位,剩余位为尾数位,共同构成实数数值。实数的特点是利用有限的32位或64位可以表示一个很大的数,也可以表示一个很小的数。对于S7 - 300/400 PLC,仅支持实数型Real。
原有的字符数据类型( Char)长度为8 bit,操作数在存储器中占一个字节,以ASCII码格式存储单个字符。常量表示时使用单引号,例如常量字符A表示为‘A’或CHAR#′A′。表2列出了Char数据类型的属性。
表2 Char数据类型的属性
长度/bit | 格式 | 取值范围 | 输入值示例 |
8 | ASCII字符 | ASCII字符集 | 'A ',CHAR#′A′ |
对于S7 - 1500 PLC,还支持宽字符类型(WChar),其操作数长度为16 bit,即在存储器中占用2B,以Unicode格式存储扩展字符集中的单个字符。但只涉及整个Unicode范围的一部分。常量表示时需要加WCHAR#前缀及单引号,例如常量字符a表示为WCHAR#‘a’。控制字符在输入时,以美元符号表示。表3列出了WChar数据类型的属性。
表3 WChar数据类型的属性
长度/bit | 格式 | 取值范围 | 输入值示例 |
16 | Unicode字符 | $0000~$D7FF | WCHAR#'A', WCHAR#'$0041' |
定时器数据类型主要包括时间( Time)和S5时间(S5Time)数据类型。与S7 - 300/400 PLC相比,S7 - 1500 PLC还支持长时间(LTime)数据类型。
时间( Time)数据类型为32位的IEC定时器类型,内容用毫秒(ms)为单位的双整数表示,可以是正数或负数,表示信息包括天(d)、小时(h)、分钟(m)、秒(s)和毫秒( ms)。表4列出了Time数据类型的属性。
表4 Time数据类型的属性
S5时间(S5 Time)数据类型变量为16 bit,其中最高两位未用,接下来的两位为时基信息(00表示0. 01 s,01表示0.1 s,10表示1s,11表示10 s),剩余12位为BCD码格式的时间常数,其范围为0~ 999,如图1所示。该格式所表示的时间为时间常数与时基的乘积。S5 Time的常数格式为时间之前加S5T#,例如S5T#16sl00 ms,以时基0.1 s表示的时间常数为161,故对应的变量内容为2#0001 0001 0110 0001。
表5 列出了S5 Time数据类型的取值范围等属性。
表5 S5Time数据类型的属性
图1 S5 Time时间格式
长时间( LTime)数据类型为64位IEC定时器类型,操作数内容以纳秒(ns)为单位的长整数表示,可以是正数或负数。表示信息包括天(d)、小时(h)、分钟(m)、秒(s)、毫秒( ms)、微秒(μS)和纳秒(ns)。常数表示格式为时间前加LT#,如LT#11ns。表6列出了LTime数据类型的属性。
表6 LTime数据类型的属性