专业编程基础技术教程

网站首页 > 基础教程 正文

跟我一起看1200手册之扩展指令(时间和日期)的介绍和讲解

ccvgpt 2024-10-19 03:24:30 基础教程 7 ℃

日期、时间和时钟功能

日期和时间指令用于日历和时间计算。

跟我一起看1200手册之扩展指令(时间和日期)的介绍和讲解

● T_CONV将值在(日期和时间数据类型)以及(字节、字和双字大小数据类型)之间进行转换

● T_ADD 加上 Time 和 DTL 值: (Time + Time = Time) 或 (DTL + Time = DTL)

● T_SUB 减去 Time 和 DTL 值: (Time - Time = Time) 或 (DTL - Time = DTL)

● T_DIFF 提供两个 DTL 值的差值作为 Time 值: DTL - DTL = Time

● T_COMBINE 将 Date 值和 Time_and_Date 值组合在一起生成 DTL 值

指令的位置:

一、时间和日期功能介绍和举例

1、T_CONV (转换时间并提取)指令

使用指令“T_CONV”将 IN 输入参数的数据类型转换为 OUT 输出上输出的数据类型。从输入和输出的指令框中选择进行转换的数据格式。

支持的数据类型有整数、TIME、日期和时间*

下面举个例子:将DTL数据类型转换成time of day数据类型

新建一个数据块如下图所示:

在程序中插入“T_CONV”,如下图所示:

仿真看下程序执行的结果如何

2、时间相加T_ADD和相减指令T_SUB

2.1 T_ADD

使用该指令将 IN1 输入中的时间信息加到 IN2 输入中的时间信息上。可以在 OUT 输出参数中查询结果。

* 将一个时间段加到另一个时间段上。

示例:将一个 TIME 数据类型加到另一个 TIME 数据类型上。

* 将一个时间段加到某个时间上。

示例:将一个 TIME 数据类型加到 DTL 数据类型上。

下面举例看看:为时间“timeValTOD”和时间段“timeValTIME”选择数据类型。

在DB块中建如下变量:

运算结果仿真如下:

2-2 T_SUB

使用该指令将 IN1 输入参数中的时间值减去 IN2 输入参数中的时间值。可通过输出参数 OUT 查询差值。

就上例仿真结果如下:

3、T_DIFF: 时间值相减

使用该指令将 IN1 输入参数中的时间值减去 IN2 输入参数中的时间值。结果将发送到输出参数 OUT 中。

二、时钟功能指令介绍

可以通过相应的时钟功能指令去实现对S7-1200 CPU的系统/本地时钟的操作。

* 读取S7-1200CPU的系统/本地时钟。

* 设置S7-1200CPU的系统/本地时钟。

* 设置S7-1200CPU的时区。

* 设置、启动、停止和读取S7-1200CPU 的 32 位运行小时计数器。

1. 读取S7-1200CPU的系统/本地时钟指令的调用。

RD_SYS_T: 读取时间:可以使用该指令读取 CPU 时钟的当前日期和当前时间(模块时间)。得出的值不包含有关本地时区或夏令时的信息。

RD_LOC_T: 读取本地时间:使用该指令从 CPU 时钟读取当前本地时间,并将此时间在 OUT 输出中输出。在输出本地时间时,会用到夏令时和标准时间的时区和开始时间(已在 CPU 时钟的组态中设置)的相关信息。

看看如下程序的时间差异:

为什么系统时间与本地时间相差了8个小时?

这是因为我们设置的时区与格林威治时间相差8小时。

2、设置S7-1200CPU的系统/本地时钟指令的使用。

WR_SYS_T: 设置时间:使用该指令,可设置 CPU 时钟的日期和时间(模块时间)。在输入参数 IN 中输入日期和时间。

WR_LOC_T: 写入本地时间:指令“WR_LOC_T”用于设置 CPU 时钟的日期和时间。在输入参数 LOCTIME 中,输入日期和时间作为本地时间。

举例来说明:

在DB块中建立如下两个变量:

程序如下:

可以通过修改变量或通过连接HMI设备来修改系统时间和本地时间。

3、运行时间定时器指令的调用。

RTM:运行时间定时器:可使用该指令对 CPU 的 32 位运行小时计数器执行设置、启动、停止和读取操作。

各管脚的介绍:

NR:运行小时数的编号。

MODE:作业 ID:

0:读取(随后将状态写入 CQ,当前值写入 CV)。在运行小时计数器达到 (2^31) - 1 小时后,将停在可显示的最后一个值处并输出一条“上溢”(Overflow) 错误消息。

1:启动(从上一计数值开始)

2:停止

4:设置为参数 PV 中指定的值

5:设置为参数 PV 中指定的值并启动

6:设置为参数 PV 中指定的值并停止

PV:运行小时计数器的新值

RET_VAL:在指令执行过程中如果发生错误,则返回值将包含错误代码。

CQ:运行小时计数器的状态(1:正在运行)

CV:运行小时计数器的当前值

举例来看看:

输入参数 MODE的值设置为“5”,如果EN输入端的信号状态为“TRUE”,则执行“RTM”指令。CPU 的运行小时计数器设置为PV中的数值并启动。在启动运行小时计数器后,将输入参数 MODE的值设置为“0”。因此,“RTM”指令读取运行小时计数器的当前值并写入输出管脚CV。输出参数 CQ指示运行小时计数器正在运行。输出参数 RET_VAL指示处理正在运行,且无错误。

为什么 CPU 系统时钟比实际时间快一小时?

使用 STEP 7 V13 SP1 组态 S7-1200 CPU, 设备组态属性-常规-时间,默认的本地时间时区是UTC+01:00,即使更改时区为UTC+08:00,但仍然默认勾选"激活夏令时"。如下图 所示:虽然国内没有使用夏令时,时区选择UTC+08:00,读取的时钟仍然会比实际时钟快一小时。如要使系统时间与实际时间一致,取消勾选“激活夏令时",重新下载项目即可。

Tags:

最近发表
标签列表