问:我想编一个时间循环控制的程序,例如一个小时运行一个小时停止,时间是可以设置的。请大家指点一下编程思路?
答:关键是如何读系统时钟:
s7-200的硬件实时时钟可以提供年、月、时、分、秒的日期/时间数据。
cpu221、cpu222没有内置的实时时钟,需要外插“时钟/电池卡”才能获得此功能。cpu224、cpu226和cpu226xm都有内置的实时时钟。
s7-200的时钟精度典型值是2分钟/月(25°c),最大误差7分钟/月(0-55°c)。
为了提高运算效率,应当避免每个程序周期都读取实时时钟。实际上可读取的最小时间单位是1秒,可每秒读取一次(使用sm0.5上升沿触发读取指令)。
使用程序读取的实时时钟数据为bcd格式,可在状态图中使用十六进制格式查看。
cpu靠内置超级电容(+外插电池卡)在失去供电后为实时时钟提供电源缓冲;缓冲电源放电完毕后,再次上电后时钟将停止在缺省值,并不开始走动。
要设置日期、时间值,使之开始走动,可以:
用编程软件(micro/win)的菜单命令plc>timeofdayclock...,通过与cpu的在线连接设置,完成后时钟开始走动
编用户程序使用set_rtc(设置时钟)指令设置
micro/win可以通过任何编程连接实现实时时钟的设置。
使用s7-200的read_rtc(读取实时时钟)和set_rtc(设置实时时钟)指令时,读取和设置的数据格式都是bcd码的。如果觉得不便计算、处理,可使用clockinteger指令库。
clock_integer指令库用于将bcd码格式的s7-200日期、时间转换为十进制整数格式,以及将十进制整数格式的日期、时间值设定为s7-200时钟。
要使用clock_integer指令库,须遵循下列步骤:
取得clock_integer指令库文件,并添加到编程软件step7-micro/win中;
按照要求编写用户程序调用clock_integer指令库。