cpu221、cpu222没有内置的实时时钟,需要外插“时钟/电池卡”才能获得此功能。cpu224、cpu226和cpu226 xm都有内置的实时时钟。
s7-200的时钟精度典型值是2分钟/月(25°c),最大误差7分钟/月(0 - 55°c)。
为了提高运算效率,应当避免每个程序周期都读取实时时钟。实际上可读取的最小时间单位是1秒,可每秒读取一次(使用sm0.5上升沿触发读取指令)。
使用程序读取的实时时钟数据为bcd格式,可在状态图中使用十六进制格式查看。
cpu靠内置超级电容(+外插电池卡)在失去供电后为实时时钟提供电源缓冲;缓冲电源放电完毕后,再次上电后时钟将停止在缺省值,并不开始走动。
要设置日期、时间值,使之开始走动,可以:
- 用编程软件(micro/win)的菜单命令plc > time of day clock...,通过与cpu的在线连接设置,完成后时钟开始走动
- 编用户程序使用set_rtc(设置时钟)指令设置用 micro/win 设置时钟
通过编程软件 micro/win 设置 cpu 的时钟,必须先建立编程通信连接。
在 micro/win 菜单中选择“plc > 实时时钟”命令,打开“plc 时钟操作”对话框:
图 1. plc 实时时钟设置界面
图中:
- 要设置时钟的 cpu 网络地址,取决于在“通信”界面中的选择
- 设置日期:选择需要修改的数据字段,直接输入数字,或者使用输入框右侧的上下按钮调整
- 设置时间:选择需要修改的数据字段,直接输入数字,或者使用输入框右侧的上下按钮调整
- 读取 pc 时钟:按此按钮可以读取安装 micro/win 的 pc 机的本机时间
- 读取 plc 时钟:按此按钮读取 plc 内部的实时时钟数据
- 根据需要选择夏时制调整选项
- 按“设置”按钮,将上面的时钟日期数据写入 plc
时钟读写指令缓冲区格式
read_rtc(读时钟)和set_rtc(设置时钟)指令靠数据缓冲区在用户程序与硬件芯片间交换数据,它们的缓冲区格式相同。
表1. 时钟缓冲区
bcd
(16进制)
* 1 = 星期日,7 = 星期六,0 = 表示禁止计星期
t 就是缓冲区的起始字节地址,可以由用户自由设置(在cpu允许的v存储区范围内)。如果设置t为vb100,那么读取时钟后,“年”的信息就会保存在vb100中,“月”保存在vb101中。
常问问题
实时时钟在 cpu 停电一段时间后停止,如何在停电较长时间时保证实时时钟正常走动?
在 cpu 停电时,实时时钟的走动靠 cpu 的内置超级电容供电。如果停电时间较长,只能在 cpu 上插入电池卡以保持时钟。
写时钟指令(todw)为何不能正常改写时钟内容?
- 写时钟指令需要严格按照8个字节的时钟缓冲区格式,设置相应的数据单元,任何不合格的数据都可能造成不能写入的现象。注意数据的格式必须是bcd格式,可以说是将10进制数换成16进制表示,如16#59(59h)就是59(秒/分等)。
执行写时钟指令要保证缓冲区所有字节都包含合法数据;仅修改某些数据时,其他字节不能包含非法数值,否则会发生错误。
- 写时钟指令必须使用一次性的脉冲(沿)触发条件,不能持续激活写时钟指令。
读写的时钟数据如何在十进制(整数)和bcd数据之间转换?
要计算时间需要将bcd格式的时钟数据与十进制的数据之间的转换,使用相应的转换指令就可以实现。
最简单的方法:
1,连接plc,打开编程软件----plc---实时时钟---进行相关设置就ok了。
设置plc系统时间:在" plc " 的下拉菜单中有个"实时时钟"选项,在这里设置plc时间和pc时间一样
2。读plc系统时间,用read_rtc指令
所有日期和时间值必须采用bcd格式编码,请参阅下表。
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值
简单示例程序如下:
ld sm0.5
eu
todr vb100
------------------读取cpu时间,将时间的年、月、日、小时、分钟、秒、0、星期依次放在vb100、vb101、vb102、一直到vb107的8个地址中。
ld sm0.0
ab= vb103, 8
ab= vb104, 0
s q0.0, 1
----------------------当时间到8点就开机,q0.0被置位。
ld sm0.0
ab= vb103, 10
ab= vb104, 0
r q0.0, 1
------------------------当时间到10点就关机,q0.0被复位。