文档库 最新最全的文档下载
当前位置:文档库 › 设置plc时间

设置plc时间

设置plc时间
设置plc时间

西门子官网有一篇《如何用SFC1 (READ_CLK)读取时间和日期以及如何用SFC0 (SET_CLK) 设定系统时间》详细说明了如何利用SFC1和SFC0读取和设置PLC的系统时间。

这个程序是利用系统功能块读出系统的日期和时间信息(Date and time格式,占用8个字节),然后通过将每个字节分解后得到年、月、日、时、分、秒、毫秒、周的具体值。因为毫秒实际使用了12位,周使用了4位,所以毫秒和周的数据一起使用了两个字节,在程序中用字与的办法将其分解出来。整个程序如下:

CALL "READ_CLK" //调用系统功能块SFC1

RET_V AL:=MW10

CDT :=#Date_time

LAR1 P##Date_time //利用SFC1读出的日期时间值

L B [AR1,P#0.0]

T #Year //年

L B [AR1,P#1.0]

T #Month //月

L B [AR1,P#2.0]

T #Day //日

L B [AR1,P#3.0]

T #Hour //时

L B [AR1,P#4.0]

T #Minutes //分

L B [AR1,P#5.0]

T #Second //秒

L W#16#FFF0

L W [AR1,P#6.0]

AW //毫秒

T #Millisecond

L B#16#F

L B [AR1,P#7.0]

AW //周

T #Week

CLR

对于时间设置的程序,是将读取时间的步骤反过来,先将数据整合到一个Date_and_time格式的存储器,再用SFC0将这个数值设置为当前时间。

程序如下:

LAR1 P##Date_time

L #Year

T B [AR1,P#0.0]

L #Month

T B [AR1,P#1.0]

L #Day

T B [AR1,P#2.0]

L #Hour

T B [AR1,P#3.0]

L #Minutes

T B [AR1,P#4.0]

L #Second

T B [AR1,P#5.0]

L #Week

T B [AR1,P#7.0]

CALL "SET_CLK"

PDT :=#Date_time

RET_V AL:=MW20

-------------------------------------------------

实际上,对于读取时间,我们可以直接用程序库中的FC6、FC7、FC8分别将日期、周、时间读出来,这样程序编写只需要指定一些存储区域即可,而且得到的是年月日的组合、时分秒毫秒的组合,程序如下:

CALL "DT_DATE"

IN :=#Date_time

RET_V AL:=#Date_FC

CALL "DT_DAY"

IN :=#Date_time

RET_V AL:=#Week_FC

CALL "DT_TOD"

IN :=#Date_time

RET_V AL:=#Time_FC

相应的,设置系统时间也可以直接利用FC3将指定的日期和时间组合起来,然后调用SFC0写入到系统中。程序如下:

CALL FC 3

IN1 :=#Set_date

IN2 :=#Set_time

RET_V AL:=#Date_time

CALL SFC 0

PDT :=#Date_time

RET_V AL:=MW30

本文来自: 高校自动化网(https://www.wendangku.net/doc/1b2781244.html,) 详细出处参考(转载请保留本链接):https://www.wendangku.net/doc/1b2781244.html,/html/PLC/9690.html

相关文档