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

西门子SCL编程入门教程连载(14)-时钟读写指令

设备在生产制造过程的数据记录需要有准确的时间信息,以便对产品质量进行检查、监控及追溯;

PLC与人机界面(HMI)的时间需要保持同步,以便操作人员查看相关的信息;

所有这些需求,都涉及到对PLC时钟的读写。今天这篇文章,我们就来介绍下如何使用西门子SCL编程语言提供的指令对PLC的时钟进行读写。

cover.png

对PLC/CPU时钟的读写,西门子SCL提供了RD_SYS_T(read system time)、WR_SYS_T(write system time)、RD_LOC_T(read local time)和WR_LOC_T(write local time)四种指令。

1、RD_SYS_T(read system time)

RD_SYS_T指令能读取CPU的当前系统时间,该指令有一个输出参数(OUT)和一个返回值(RET_VAL)。
返回值RET_VAL的数据类型为整型(INT),用于返回指令执行的状态,其编码如下:

RET_VAL: 错误代码(16进制)

描述

0000

没有错误

8081

OUT输出值的范围超出界限

输出值OUT为指令读取到的时间,该时间值不包括本地时区或夏令时偏移量等信息,其数据类型根据CPU类型的不同有所不同:

对于S7-1200系列CPU,其数据类型为DTL;

对于S7-1500系列CPU,其数据类型为DT、LDT或者DTL;

举个例子:

首先定义两个临时变量tmp_cpu_system_time和tmp_return,如下图:

variable_defination.png/

使用指令RD_SYS_T读取系统时间并存放到tmp_cpu_system_time中,代码如下:

RD_SYS_T.png/

2、WR_SYS_T (write system time)

WR_SYS_T指令能够设置CPU的当前系统时间。
该指令有一个输入参数(IN)和一个返回值(RET_VAL);
返回值RET_VAL返回指令执行的状态,其编码如下:

RET_VAL: 错误代码(16进制)

描述

0000

没有错误

8080

日期错误

8081

时间错误

8082

月(month)数值无效

8083
日(day)数值无效
8084
小时(hour)数值无效
8085
分钟(minute)数值无效
8086
秒(second)数值无效
8087
纳秒(nanosecond)数值无效
80B0
实时时钟故障

输入参数IN是要设置的时间值,不包括本地时区或夏令时偏移。

其数据类型根据CPU类型的不同有所不同:
对于S7-1200系列CPU,其数据类型为DTL;
对于S7-1500系列CPU,其数据类型为DT、LDT或者DTL;
举个例子:

使用WR_SYS_T指令设置CPU的系统时间为2019-12-17 10:00:00,代码如下:

WR_SYS_T.png/

3、RD_LOC_T (read local time)

RD_LOC_T指令能读取CPU的本地时间,该指令有一个输出参数(OUT)和一个返回值(RET_VAL)。
与RD_SYS_T指令不同,如果当前CPU有设置时区或夏令时,则 RD_LOC_T指令会输出当前时区的时间或夏令时。
RET_VAL的数据类型为整数(INT),返回指令执行的状态,其编码如下:

RET_VAL: 错误代码(16进制)

描述

0000

没有错误

0001

没有错误,输出为夏令时

8080

无法读取CPU的系统时间

8081

OUT输出值的范围超出界限

输出值OUT的数据类型根据CPU的不同有所不同:
对于S7-1200系列CPU,输出值OUT的数据类型为DTL;

对于S7-1500系列CPU,输出值OUT的数据类型为DT、LDT或者DTL;
使用RD_LOC_T读取CPU的本地时间并存放到tmp_cpu_local_time中,代码如下:

RD_LOC_T.png/

4、WR_LOC_T (write local time)

WR_LOC_T指令用来设置CPU的本地时间,该指令有两个输入参数(LOCTIME和DST)和一个返回值(RET_VAL)。
RET_VAL的数据类型为整数(INT),返回指令执行的状态,其代码如下:

RET_VAL: 错误代码(16进制)

描述

0000

没有错误

8080

LOCTIME的值无效

8081

LOCTIME的值超出界限

LOCTIME是要写入的时间值,数据类型为DTL(S7-1200)或者DT、LDT、DTL(S7-1500);
DST是英文"Daylight Saving Time"的首字母缩写,表示“夏令时”。数据类型为布尔型,TRUE表示采用夏令时,FALSE表示采用标准时间;
举个例子:

设置CPU的本地时间为2019-12-17 10:15:00(非夏令时),代码如下:

WR_LOC_T.png/

好了,关于西门子SCL编程语言时钟读写指令就先介绍到这里。欢迎扫描下方的二维码关注我们的微信公众号。


西门子SCL编程入门教程连载(14)-时钟读写指令.pdf

来源:本站|   大小:561KB|   下载次数:2088次

取消

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

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

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

发表评论