S7-200 SMART 实时时钟

S7-200 SMART的硬件实时时钟可以提供年、月、日、时、分、秒的日期/时间数据。

实时时钟指令使用的相关视频教程链接如下:

CPU CR40/CR60 等紧凑型CPU没有内置的实时时钟,其他标准型CPU支持内置的实时时钟,CPU断电状态下可保持7天。

S7-200 SMART CPU的时钟精度是± 120 秒 / 月。

S7-200 SMART CPU 靠内置超级电容为实时时钟提供电源缓冲,保持时间为典型值7天,最小值6天。缓冲电源放电完毕后,再次上电后时钟将停止在缺省值,并不开始走动。

注意:因为 紧凑型CPU 无内置超级电容,所以实时时钟无电源缓冲,尽管用户可以使用READ_RTC 和 SET_RTC 指令设置日期/时间数据,但是当 CPU CR40/CR60 断电并再次上电时,这些日期/时间数据会丢失,上电后日期时间数据会被初始化为2000年1月1日

为了提高运算效率,应当避免每个程序周期都读取实时时钟。实际上可读取的最小时间单位是1秒,可每秒读取一次(使用SM0.5上升沿触发读取指令)。

使用程序读取的实时时钟数据为BCD格式,可在状态表中使用十六进制格式查看。

要设置日期、时间值,使之开始走动,可以:

Micro/WIN SMART 可以通过任何编程连接实现实时时钟的设置。

用 Micro/WIN SMART 设置时钟

通过编程软件 Micro/WIN SMART 设置 CPU 的时钟,必须先建立编程通信连接。
在 Micro/WIN SMART 菜单中选择“PLC “- >”设置实时时钟”,打开“PLC 时钟操作”对话框:


图 1. PLC 实时时钟设置界面

图中:

  1. 设置日期:选择需要修改的数据字段,直接输入数字,或者使用输入框右侧的上下按钮调整
  2. 设置时间:选择需要修改的数据字段,直接输入数字,或者使用输入框右侧的上下按钮调整
  3. 读取 PC 时钟:按此按钮可以读取安装 Micro/WIN SMART的 PC 机的本机时间
  4. 读取 PLC 时钟:按此按钮读取 PLC 内部的实时时钟数据
  5. 根据需要选择夏时制调整选项
  6. 按“设置”按钮,将上面的时钟日期数据写入 PLC

时钟读写指令缓冲区格式

Read_RTC(读时钟)和Set_RTC(设置时钟)指令靠数据缓冲区在用户程序与硬件芯片间交换数据,它们的缓冲区格式相同。

表1. 时钟缓冲区

T字节 说明 数据值
0 00至99(BCD值)20xx年:其中,xx是T字节0中的两位数BCD值
1 01至12(BCD值)
2 01至31(BCD值)
3 小时 00至23(BCD值)
4 00至59(BCD值)
5 00至59(BCD值)
6 保留 始终设置为00
7 星期几

使用SET_RTC/TODW指令写入时会或略值。通过SET_RTC/TODR指令进行读取时,值会根据当前年 / 月/日值报告正确的星期几。1至7,1=星期日,7=星期六(BCD值)


* 1 = 星期日,7 = 星期六,0 = 表示禁止计星期

T 就是缓冲区的起始字节地址,可以由用户自由设置(在CPU允许的V存储区范围内)。如果设置T为VB10,那么读取时钟后,“年”的信息就会保存在VB10中,“月”保存在VB11中。

为了更好地理解 实时时钟的读取与设置,可参考下面的例程(软件版本:STEP 7-Micro/WIN SMART V2.3)。

READ_RTC/SET_RTC例程

READ_RTC、SET_RTC 编程提示 不接受无效日期。 例如,如果您输入 2 月 30 日,则将发生非致命日时钟错误 (0007H) 。 不要在主程序和中断例程中使用READ_RTC/SET_RTC 指令。 执行另一个READ_RTC/SET_RTC 指令时,无法执行中断例程中的 READ_RTC/SET_RTC 指令。 在这种情况下,系统标志位 SM4.3 会置位,指示尝试同时对日时钟执行二重访问,导致T 数据错误(非致命错误 0007H )。 CPU 中的日时钟仅使用年份的最后两位数,因此 2000 年表示为 00 。但使用年份值的用户程序必须考虑两位数的表示法。 2099 年之前的闰年均可正确处理。

实时时钟精度

表2.实时时钟精度

CPU型号 实时时钟精度 实时时钟保持时间
CPU SR20 +/- 120 s/月 通常为7天,25°C时最少为6天(免维修超级电容)
CPU SR40 120 s/月 通常为7天,25°C时最少为6天
CPU ST40 120 s/月 通常为7天,25°C时最少为6天
CPU CR40 -- --
CPU ST60 120 s/月 通常为7天,25°C时最少为6天
CPU SR60 120 s/月 通常为7天,25°C时最少为6天

CPU在长时间断电后会对这些值进行初始化。

表3.初始化后的值

日期 时间 星期几
2000年1月1日 00:00:00 星期六

常问问题

写时钟指令(SET_RTC)为何不能正常改写时钟内容?

  1. 写时钟指令需要严格按照8个字节的时钟缓冲区格式,设置相应的数据单元,任何不合格的数据都可能造成不能写入的现象。注意数据的格式必须是BCD格式,可以说是将10进制数换成16进制表示,如16#59(59H)就是59(秒/分等)。

    执行写时钟指令要保证缓冲区所有字节都包含合法数据;仅修改某些数据时,其他字节不能包含非法数值,否则会发生错误。

  2. 写时钟指令必须使用一次性的脉冲(沿)触发条件,不能持续激活写时钟指令。

读写的时钟数据如何在十进制(整数)和BCD数据之间转换?

要计算时间需要将BCD格式的时钟数据与十进制的数据之间的转换,使用相应的转换指令就可以实现。

具体转换指令参见链接:Clock_Integer 指令库以及使用

如何实现实时是时钟的长期备份?

S7-200 SMART SB BA01 电池板适用于实时时钟的长期备份。其可插入 S7-200 SMART CPU(固件版本 V2.0 及更高版本)的信号板插槽中。必须将 SB BA01添加到设备组态并将硬件配置下载到 CPU 中,SB BA01才可以使用附加电池健康状况报告选项。电池(型号 CR1025)未随 SB BA01 一起提供,用户必须另行购买。