当前位置:首页 > 行业发展 > 正文

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

日期、时间和时钟功能日期和时间指令用于日历和时间计算。●T_CONV将值在(日期和时间数据类型)以及(字节、字和双字大小数据类型)之间进行转换●T_ADD加上Time和DTL值:(Time+Time=Time)或(DTL+Time=DTL)●T_SUB减去Time和DTL值:(Time-Time=T...

日期、时间和时钟功能日期和时间指令用于日历和时间计算。●T_CONV将值在(日期和时间数据类型)以及(字节、字和双字大小数据类型)之间进行转换●T_ADD加上Time和DTL值:(Time+Time=......

日期、时间和时钟功能

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

●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数据类型转换成timeofday数据类型

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

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

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

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

2.1T_ADD

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

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

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

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

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

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

在DB块中建如下变量:

运算结果仿真如下:

2-2T_SUB

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

就上例仿真结果如下:

3、T_DIFF:时间值相减

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

二、时钟功能指令介绍

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

*读取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系统时钟比实际时间快一小时?

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

最新文章