日期和时间是PLC编程经常需要处理的数据,本节我们先来认识下西门子SCL编程语言所支持的日期时间数据类型,以便为后续介绍日期时间指令打下基础。

西门子scl语言零基础入门教材(西门子SCL编程入门教程连载)(1)

IEC61131-3定义了8种时间日期数据类型,分别是:

数据来源:IEC61131-3:2013 Table 10 -Elementary date types(page 31)
西门子SCL编程语言符合IEC61131-3标准,也支持这些数据类型,下面我们来具体看下:

1、TIME(时间)

TIME类型的长度为4个字节(32bits),它可以表达包括天(day)、小时 (hour)、分钟(minute)、秒(second)、毫秒(millisecond)的信息。

TIME类型的数据用于定时器计时,其常量以"T#"标识,比如:T#9d20h12m20s630ms(9天20小时12分钟20秒630毫秒),其取值范围为:T#-24d20h31m23s648ms ~ T# 24d20h31m23s647ms;

2、LTIME(LONG TIME)

LTIME类型的长度为8个字节(64bits),它可以表达包括天(day)、小时(hour)、分钟(minute)、秒(second)、毫秒(millisecond)、微秒(microsecond)及纳秒(nanosecond)的信息,同样可用于定时器计时。
LTIME的常量以"LT#"标识,

比如:LT#50d20h25m14s830ms652us315ns(50天20小时25分钟14秒830毫秒652微秒315纳秒),其取值范围为:LT#-106751d23h47m16s854ms775us808ns~LT# 106751d23h47m16s854ms775us807ns。
使用LTIME类型时并不需要将所有的时间单位写出,LT#2h10s是个合格的常量。
需要说明的是:只有S7-1500系列CPU支持LTIME类型

3、S5TIME(S5时间类型)

S5TIME是西门子S7-300/400系列CPU支持的时间类型,其长度为2个字节(16bits)。S5TIME以BCD码来存放时间信息,其常量以"S5T#"标识,比如:S5T#1s500ms(1秒500毫秒),可表达的时间范围为:S5T#0ms~S5T#2h_46m_30s_0ms;

4、DATE(日期)

DATE数据类型的长度为2个字节,它将日期的信息存放在无符号整数里。DATE数据类型的常量以"D#"标识,比如D#2019-12-11,其取值范围为:D#1990-01-01 to D#2168-12-31。

5、TOD(TIME_OF_DATE)

TIME_OF_DATE数据类型的长度4个字节,它存放当前时间从午夜0:00算起所走经过的毫秒数(milliseconds)。

TIME_OF_DATE数据类型的常量以"TOD#"标识,其取值范围为:TOD#00:00:00.000 ~ TOD#23:59:59.999;

6、LTOD(LONG_TIME_OF_DATE)

LONG_TIME_OF_DATE数据类型的长度为8个字节,它存放当前时间从午夜0:00开始所走过的纳秒数。

LONG_TIME_OF_DATE的常量以"LTOD#"标识,其取值范围为:LTOD#00:00:00.000000000 ~ LTOD#23:59:59.999999999;
需要说明的是:只有S7-1500系列CPU支持LTOD类型

7、DATE_AND_TIME

DATE_AND_TIME数据类型的长度为8个字节,它以BCD码存放日期及时间数据(精确到毫秒)。
DATE_AND_TIME各字节的定义如下:

西门子scl语言零基础入门教材(西门子SCL编程入门教程连载)(2)

DATE_AND_TIME数据结构

DATE_AND_TIME的常量以“DT#”标识,

比如当前时间为:DT#2019-12-12-20:47:32.621

注:关于最低权重位和最高权重位,请看官网:https://www.founderchip.com/?id=41这篇文章;

8、DATE_AND_LTIME

DATE_AND_LTIME的长度为8个字节,它存放从1970:0:0开始到现在所经过的时间(纳秒数);

DATE_AND_LTIME的常量以”LDT#”标识,其取值范围为:LDT#1970-01-01-0:0:0.000000000~LDT#2263-04-11-23:47:16.854775808
需要说明的是:只有S7-1500系列CPU支持LDT类型

9、DTL

DTL的长度为12个字节,它可以存放日期及时间(精确到纳秒)数据,其格式定义如下:

西门子scl语言零基础入门教材(西门子SCL编程入门教程连载)(3)

DTL数据结构

DTL的常量以”DTL#”标识,其取值范围为:DTL#1970-01-01-00:00:00.0 ~ DTL#2262-04-11-23:47:16.854775807
好了,关于SCL的日期时间数据类型就介绍到这里。如果你喜欢这篇文章,可以去官网(www.founderchip.com)下载本文PDF版本。

,