一、时钟指令概述
(1)时钟指令的认识
西门子S7-200SMART时钟指令分为设置时钟和读取时钟两类,通过设置时钟指令可对CPU的系统时钟进行修改而通过读取时钟指令可读取CPU的系统时钟,时钟指令分为读取和设置时钟指令与读取和设置扩展时钟指令,如图1所示。
图1:时钟指令(左侧为读取时钟指令,右侧为设置时钟指令)
①读取时钟指令:当指令EN端条件满足时读取实时时钟指令从CPU 读取当前时间和日期,并将其装载到从字节地址T 开始的 8字节时间缓冲区中。
②设置时钟指令:设置实时时钟指令通过由T 分配的 8字节时间缓冲区数据将新的时间和日期写入到CPU。
需要注意的是读取出来的值和需要设定的值均需要进行数据格式的转换才行。
200SMART里的时间日期都是用16#表示的,用READ_RTC读过来的时间日期占用8个字节,按顺序是年、月、日、时、分、秒、_、星期。其中第七个字节是空的,始终为0。例如你将用READ_RTC指令读过来的数值存放在以VB100开始的8个字节中,那么VB100表示的就是年,VB101表示的是月,以此类推。
设置实时时钟指令:SET_RTC,里的时间日期都是用16#表示的,时间日期占用8个字节,按顺序是年、月、日、时、分、秒、_、星期。
(2)时钟指令存储区格式说明
所有日期和时间值必须采用BCD格式(BCD码通俗的说法是用16进制的形式来表示2进制数)分配(例如,16#12 代表2012年)。00至99的BCD值范围可分配范围为2000至2099的年份;时间缓冲区如图2所示。
图2
时钟指令的管脚T就是缓冲区的起始字节地址,可以由用户自由设置(在CPU允许的V存储区范围内)。如果设置T为VB10,那么读取时钟后,“年”的信息就会保存在VB10中,“月”保存在VB11中。
二、时钟指令应用
接下来我们通过一个简单的应用示例来充分理解时钟指令;要求读取CPU实时时间显示在上位机上,同时还可以在上位机上设定CPU时间。读取时间如图3所示。
图3:READ_RTC时钟指令读取
调用时钟读取指令并以系统时钟SM0.5触发,由于读取出来的均是BCD码,因此需要通过转换指令进行转换过后才是最终的日期时间。
另外还需要进行时间的设定,由于我们需要在上位机上进行时间的设定,考虑到设定的数据格式依然是BCD码,但是上位机上通常使用的是十进制数,因此我们同样需要进行转换之后,再使用其设定地址的低字节进行传送至各个字节地址中,如图4所示。
图4:SET_RTC设定时钟
三、结语
通过本示例的分享,相信大家已经掌握了其基本的使用。下面为大家分享关于时钟指令的几点需要注意的:
(1)进行时钟的设定时,只需要导通一个周期即可把设定值写入。不能一直导通EN端,否则读取时钟指令的时间将会有错误。
(2)调用时钟指令时需要在EN位中使用SM0.5系统时钟进行调用。
(3)时钟指令需要使用连续的8个字节作为时间缓冲区的存储,其中缓冲区中的第6个字节为保留,并且这连续的8个字节不能和其他存储区重复使用。
(4)除了通过令设定时钟之外,还可以通过编程软件Micro/WIN SMART 设置CPU 的时钟,必须先建立编程通信连接。在Micro/WIN SMART 菜单中选择“PLC“→”设置实时时钟”,打开“PLC时钟操作”对话框进行设定。
(5)S7-200SMART CPU靠内置超级电容为实时时钟提供电源缓冲,保持时间为典型值7天,最小值6天。缓冲电源放电完毕后,再次上电后时钟将停止在缺省值,并不开始走动,所以如果设备停电时间超过一周时,需要添加电池信号板,电池板的时钟保持时间约为1年。