PLC解密网-PLC培训学习-工控自动化人才技术交流

超级管理员

453

帖子

1378

回复

3110

积分

楼主
发表于 2020-12-15 17:06:38 | 查看: 6116 | 回复: 3

求教各位大侠: 
              我用了S7-300的plc,触摸屏是西门子的TP 177B,想在触摸屏上显示系统时间(当前实时时间),时间从plc上读取,使用plc的系统时间,如何操作,希望给出梯形图,我做了一个,可是完全实现不了,请用过的朋友帮忙,非常感谢!!


如何用 SFC1 (READ_CLK)读取时间和日期以及如何用 SFC0 (SET_CLK) 设定系统时间.pdf



超级管理员

453

帖子

1378

回复

3110

积分
沙发
发表于 2020-12-15 17:07:20

用sfc0写系统时间,sfc1来读系统时间,定义了一个数据块db1来存放date及time,格式为dt#90-1-1-0:0:0,但是在sfc1的cdt中写入p#db1.dbx0.0显示不对,用db1.dbb0也不对,那要如何做呢?这个问题应该相当简单,

佳答案

应该使用在数据块db1里定义的dt类型变量的符号,比如db1.db_va


超级管理员

453

帖子

1378

回复

3110

积分
板凳
发表于 2020-12-15 17:10:16

如何使用SFC1读取PLC时间

制作非标准程序FB1和DB1,然后在OB1中调用

image.png

使用SFC1读取PLC时间.

使用SFC1 "READ_CLK"读取时间,可以读取当前CPU系统时钟的日期和时间.

CDT输出当前日期和时间值

数据类型DATE_AND_TIME

DATE_AND_TIME长度64位 

DATE_AND_TIME数据类型以BCD码格式存储:

image.png

对月的字节进行清零

image.png

超级管理员

453

帖子

1378

回复

3110

积分
地板
发表于 2020-12-15 17:18:18
    西门子300、400系统时钟功能,很方便给编程用户调用针对于设备运行时间等方面的应用,官方有相应的文档供用户学习和调用。其中,读取系统时钟的方法有如下几种:
1)  调用SFC1
2)  采用OB1循环组织块中接口变量OB1_DATE_TIME(系统自动生成)直接读取
方法1)程序:SFC1
创建一个读取系统时钟的项目并编辑并程序:

1)  在OB1中调用“库”—“系统功能”—将“SFC1”拖放到编辑区,在接口变量中定义一个存放读取系统时钟的存放变量名称date_time,数据类型Date_And_Time:

image.png


2)  将程序下载到仿真器,监控读取系统时钟的数据是否正确:
image.png其中,读取到系统时钟的第8个字节(LB27),高4位存放毫秒数据,低4位存放星期数据(BCD码)。
记得刚刚开始学着调用这个SFC1的时候,一直无法填写CDT管脚的数据,写数据块DB1定义的地址系统报错。其实,问题在于这个比较特殊的数据类型需要这样做:
1)  在数据块中定义一个存放系统时钟的数据块地址区:

image.png

2)  还需要到符号表中声明数据DB1的符号名:

image.png

3)  完成后,再填写SFC1的CDT管脚选择该地址:

image.png


方法2)程序:我经常用的这种方法,直接读取OB1中的OB1_DATE_TIME数据,相对占用数据地址少,需要那些时钟数据直接读取(传送)出来就可以了。

image.png


最近有一个网友说,他想做一个控制程序,需要调用系统时钟数据,在上午7点30分开始执行一些数据记录,当编辑好上述程序段后,接下来编程就方便的多了,无非就是根据实际数据指令转换一下数据类型而已,如读取星期几的方法:

image.png

其中,系统时钟数据1表示为星期六日,2表示为星期一,以此类推。

实际上类似的编程方法还有很多,关键是你如何利用cpu系统硬件所具备的条件,合理调用达到自己想要的控制目的,根据你每一天调用一次的情况,如OB10也可以考虑一下。
本文转载自:西门子工业技术论坛

您需要登录后才可以回帖 登录 | 立即注册

技术支持 KZYPLC V2.1 © 2020-2027

欢迎光临昆山中宇工控PLC论坛!您是第 6524089 位访问者, 日访问量: 22202 总访问量: 16041870,当前 2024-04-25 22:51:31 在线人数:64

ICP备案证书号: 苏ICP备14003016-2号