北岛夜话
原创工业智能控制领域(PLC、单片机、嵌入式、机器人、通信)的技术及经验分享。
文章301 浏览1930335

西门子SCL编程入门教程连载(13)-日期时间数据类型

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

cover.png/

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

  • TIME

  • LTIME(LONG TIME)

  • DATE

  • LDATE

  • TIME_OF_DAY(TOD)

  • LTIME_OF_DAY(LTOD)

  • DATE_AND_TIME(DT)

  • LDATE_AND_TIME(LDT)

数据来源: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各字节的定义如下:

字节

描述

取值范围

0

年(year)

1990年~2089年

BCD#90=1990

BCD0#=2000

BCD89#=2089

1

月(month)

BCD#1~BCD#12

2

日(day)

BCD#1~BCD#31

3

小时(hour)

BCD#0~BCD#23

4

分钟(minute)

BCD#0~BCD#59

5

秒(second)

BCD#0~BCD#59

6

微秒的前两个最高权重位
BCD#0~BCD#99

7(4MSB)

微秒的最低权重位BCD#0~BCD#9

7(4LSB)

一周中的第几天
BCD#1~BCD#7

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个字节,它可以存放日期及时间(精确到纳秒)数据,其格式定义如下:

字节

描述

数据类型

取值范围

0

年(year)


UNIT

1970~2262

1
2

月(month)

USINT

1~12

3

日(day)

USINT

1~31
4

一周中第几天

USINT

1~7
5

小时(hour)

USINT

0~23
6

分钟(minute)

USINT

0~59
7
纳秒(nanosecond)UDINT
0~999999999
8
9
10
11

DTL的常量以”DTL#”标识,其取值范围为:DTL#1970-01-01-00:00:00.0 ~ DTL#2262-04-11-23:47:16.854775807
好了,关于SCL的日期时间数据类型就介绍到这里,欢迎扫描下方的二维码关注我们的微信公众号。

西门子SCL编程入门教程连载(13)-日期时间数据类型.pdf

来源:本站|   大小:566KB|   下载次数:333次

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论