电工学习网

 找回密码
 立即注册
查看: 19108|回复: 0
打印 上一主题 下一主题

读取西门子S7-300、400系统时钟的几种方法

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-27 18:18:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    西门子300、400系统时钟功能,很方便给编程用户调用针对于设备运行时间等方面的应用,官方有相应的文档供用户学习和调用。其中,读取系统时钟的方法有如下几种:
1)  调用SFC1
2)  采用OB1循环组织块中接口变量OB1_DATE_TIME(系统自动生成)直接读取
方法1)程序:SFC1
创建一个读取系统时钟的项目并编辑并程序:
1)  在OB1中调用“库”—“系统功能”—将“SFC1”拖放到编辑区,在接口变量中定义一个存放读取系统时钟的存放变量名称date_time,数据类型Date_And_Time:

2)  将程序下载到仿真器,监控读取系统时钟的数据是否正确:

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

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

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

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

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

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

回复

使用道具 举报

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

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-20 20:40

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表