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

认识SIMATIC S7系列PLC的日期时间数据类型

工业生产的数据统计需要准确的日期时间信息,PLC必须具有处理日期时间的功能。今天这篇文章,我们来认识下西门子的S7系列PLC的日期时间数据类型,及如何调用系统提供的函数来对日期时间进行读写操作。

cover.png

在S7-300/400中,用来记录日期时间信息的数据类型称为“DT(DATE_AND_TIME)”。该数据类型以BCD码的形式存放日期时间信息,总长度为8个字节;其最小值为:DT#1990-01-01-00:00:00.000;最大值为:DT#2089-12-31-23:59:59.999。

DT(DATE_AND_TIME)数据类型中各字节的含义见下面的表格:

DT.png

我们来认识下这个表格:首先,BCD码是以四位二进制数来表示一位十进制数,它“逢十进一”,其本质是十进制数。一个八位的BCD码,能表示的十进制数值范围为0~99;

有了这个概念,你应该就能理解Byte0(年)的取值范围;

在DT(DATE_AND_TIME)类型中,还有一个3位数的微秒值。我们知道一个字节(8 bits)最大能表示2位数(0~99)的BCD值,因此要表示3位数(0~999),需要12位(12 bits)。因此在该数据结构中,用字节6(Byte6)来表示微秒值的前两位最高权重位(2 MSB),用字节7(Byte7)的高四位最高权重位(4MSB)来表示微秒值得最低权重位(1LSB)。

关于最高权重位、最低权重位请参考文章:给你讲个来自《格列佛游记》的计算机故事

在S7-1200/1500系列PLC中,日期时间数据类型被称为“DTL(DATE_AND_TIME_LONG)”。DTL类型的长度为12个字节,最小值为:DTL#1970-01-01-00:00:00.0,最大值为:DTL#2262-04-11-23:47:16.854775807。
DTL数据类型具体的定义见下面的表格:

DTL.png

可以看出DTL与之前的DT格式有很大的不同:

1)DTL用一个无符号的整数(UNIT)来表示“年”,其范围为1970~2262;

2)DTL没有采用BCD码来表示数据,其数据类型为无符号整型(UINT)、无符号短整型(USINT)或者无符号双整型(UDINT);

注:无符号整型(UINT)的长度为16位(16 bits);无符号短整型(USINT)的长度为8位(8 bits);无符号双整型(UDINT)的长度为32位(32 bits);

3)DTL可以支持纳秒级的时间值;

到目前为止,我们知道了两种日期时间数据类型,那么怎么对其进行读写操作呢?

1.读操作

可以使用指令(系统函数)“RD_SYS_T”来读取CPU内部的日期时间值。
RD_SYS_T有两个参数:RET_VAL和OUT:
1)RET_VAL:是指令执行的返回值,用来表示指令执行的状态。数据类型为整型(INT);
2)OUT:指令成功执行后所得到的CPU当前的日期时间值。数据类型为DT或者DTL;
2.写操作
可以使用指令(系统函数)“WR_SYS_T”来对CPU的日期时间值进行设置。
WR_SYS_T有两个参数:IN和RET_VAL:
1)IN:新的日期时间值(数据类型:DT或者DTL);
2)RET_VAL:返回值,表示指令执行的状态(数据类型:整型);

注:S7-1200系列PLC仅支持DTL数据类型,S7-1500系列PLC支持DT、DTL和LDT三种数据类型。

好了,本文我们介绍了SIMATIC S7-300/400 及S7-1200/1500系列PLC的日期时间类型及其读写指令。关于操作实例及S7-200 Smart的日期时间类型,我们将在后续的文章中介绍。

欢迎扫描下方的二维码关注我们的微信公众号。

founderchip.png

认识SIMATIC S7系列PLC的日期时间数据类型

来源:本站|   大小:498 KB|   下载次数:1837次

取消

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

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

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

发表评论