有关西门子S7-200的编程例子,时钟指令在自动化控制中经常用到,比如交通信号灯、路灯等,以下是西门子S7-200系列PLC实例中时钟指令的入门教程,一起来看下。
西门子S7-200时钟指令用法
以一个路灯程序为例,来学习下时钟指令的用法。
1、设计要求
这里要用到“时钟”指令,时钟指令有分为READ和SET两种,指令说明如下:
(1)读取实时时钟指令:从硬件时钟读取当前时间和日期,并将其载入以地址T起始的8个字节的时间缓冲区。
(2)设置实时时钟指令:将当前时间和日期写入用T指定的8个字节的时间缓冲区开始的硬件时钟。
先来打开程序,找到“时钟指令”:
8个字节时间缓冲区格式(T)
T字节 说明 字节数据
0 年(0-99) 当前年份(BCD值)
1 月(1-12) 当前月份(BCD值)
2 日期(1-31) 当前日期(BCD值)
3 小时(0-23) 当前小时(BCD值)
4 分钟(0-59) 当前分钟(BCD值)
5 秒(0-59) 当前秒(BCD值)
6 00 保留-始终设置为00
7 星期几(1-7) 当前是星期几,1=星期日(BCD值)
为什么1=星期日,可以看下自己的电脑的日期和时间,会发现“星期日”是日期统计中的第一列,这也是与系统日期、时间的配列规律相一致的。
选择变量存储区的字节数据类型,从0开始。则读取“小时”数据,则是从VB3中读取。
2、完成指令设置后,给PLC设置时钟:
在确保电脑联网的情况下,运用电脑上的时间给PLC加上实时的时间:
然后在点击“状态监控”的情况下,来看下VB0-VB7的数据值:
可见当前值除了有一个秒的位置,在实时变化之外,而其他数据值都与实际值不符。原因在于这里显示的数据,都是基于BCD码的。先来重温下BCD、二进制以及16进制的关系:
为什么明明是21年,却变成了+33?
来看下这个操作:把“有符号”改成“二进制”,变化后的符号亲切了不少,比如VB0的“0010_0001”,分成两位,分别不就是2_1么?合起来,就是21(年)了?
确实是这样的。这里选择的“有符号”就是用BCD码形式表示,而BCD码如何转换成二进制,需要根据以前学习的内容来思考下。