首页 > 化工知识 > 西门子SCL编程入门教程连载(14)-时钟读写指令

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

时间:2020-09-25 来源:方正智芯 浏览:

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

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

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

对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,如下图:

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

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,代码如下:

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中,代码如下:

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(非夏令时),代码如下:

好了,关于西门子SCL编程语言时钟读写指令就先介绍到这里。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐