签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
读取300、400系统时钟的几种方法
西门子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也可以考虑一下。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1503845&b_id=4&s_id=23&num=16
赞 感谢楼主分享
海侠,我是回复在论坛上有一个网友的问题,问题说实在相对比较浅。但是,作为刚刚入门者,一点点的问题均都是问题。
楼主是个大善人啊!
王工真是辛苦了,为了坛友能够学到知识,经常准备一些很有用得技能!谢谢了!
O(∩_∩)O谢谢楼主分享,学习了
学习了,感谢分享
我按照你的方法试了。但是显示出来的年与日时分秒 的 都是 16进制的,当我把 小时 独立出来 和我 设置的 12 做比较 在监控时 发现 完全 不行。监控时 我设置的 成了 C(16进制),读出来的 系统时间小时 为 12 。我就蒙蔽了。 12 = c 的嘛。
后来发现 我设置 时 用 16#12 就ok 了 。有点蒙蔽
这个时间数据格式是BCD码,软件会以16进制数方式显示。
在实际应用中需要注意数据类型。
1200和1500和300读时钟好像有区别
顶起,,,,
各位
读取系统时钟,为什么要读取?有什么重要好处,必须的么?能否详细的分析一下,加深印象;
没有必须的规定。
只是在程序段中需要使用到系统时钟时,才调用。
一般类似的应用,如定时启动、停止设备等,我最早看到应用的是设备制造商的“时间锁”程序。
引用12楼详细内容:
,谢谢W侠的指导,我遇到的就是在触摸屏上显示时间而已;定时开关机倒没有遇到过这样的机器,
为楼主点赞!
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录