最近想练一练PLC编程,用的是S7-200。有朋友无意间提醒了一句,说要做好数据的掉电保持,不然一停电开机所有的设定参数全都没有了,系统岂不是要乱掉。心里一惊,立即查找了不少的资料,觉得也没有那么可怕。
1. 数据掉电存储的方式与时效
a) 通过设置“系统块——数据掉电保存”设置相应存储区,这时靠CPU的超级电容保存。典型时间100小时。要求CPU充电时间不低于24小时。
b) 上述方式如果在CPU中加装电池卡,可延长到200天。但电池卡不可充电,用完即报废,CPU电源正常时,电池几乎不耗电。
c) 通过编程或设置将数据写入到EEPROM中,实现永久保存。
2. 关于掉电存储的需求
通常来讲,通过超级电容即可实现掉电三四天时间的数据保持。而对于连续运行的系统,掉电无外乎以下几种情况:
a) 施工调试过程中偶尔断电;
b) 外部故障跳闸,短时间停电;
c) 电网问题,需停电。
但以上情况都不会一停好几天,通过超级电容保持V区数据(系统块——数据掉电保持)已经完全能满足需求。无需繁琐的存入EEPROM。
3. 永久存入EEPROM的方法
a) 少于14个字节数据的永久保存方法
如果需要保存的所有数据在14个字节以内,就通过在“系统块——数据掉电保持”中设置MB0~MB13就好了,这样可以再CPU掉电时将这14个字节的数据保存到EEPROM中。
b) 通过编程永久保存数据。
试用SMB31与SMW32两个指令,通过编程保存少量的数据。详情可参考《S7-200可编程控制器系统手册:6ES7298--8FA24--8FH0》。
c) 若果真需要保存大量的V区数据
可以通过EEPROM库指令来实现。参考“西门子 S7-200 ? LOGO! ? SITOP 参考Beta Version 1.1”中关于“EEPROM 数据写入指令库及其使用”,其中还提供了库的下载以及用方法。文档下载地址http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0136。
但如文档中所描述,这个库不是官方的,是民间高手做的。西门子不提供语音技术支持,也不承担风险。
4. 注意事项
a) EEPROM的写入次数。
典型值100万次,最低值10万次。一旦寿命达到,CPU模块整体报废,必须更换。目前似乎没有有效的监控已经写入次数的方式。因此通过编程方式将数据写入EEPROM时,要务必注意避免每个扫描周期写入一次。否则,CPU会在一个多小时内报废。
可以通过按键触发写入、定时写入、检测数据有变化时写入等方式写入EEPROM。
b) CPU上电后的数据恢复顺序
重新上电后首先检查超级电容以及电池卡状态,若有电,RAM中数据得以保持则使用RAM中原有的数据。若没电,则检查EEPROM,若其中对应存储区内有数据,则将其恢复到RAM中,若其中没有数据,则将RAM中存储区清零。
c) 需要断电清零的数据
习惯上,系统设置不好了,断电重启。电脑手机之类的设备断电后许多数据被清空,重启后恢复初始状态,乱七八糟的数据得以重头开始。但PLC的CPU的特点使得短时间断电后许多数据都还在存储区中,比如报警标志、启动信号、温度值等。如果不进行处理,可能会重启之后一大批设备全部动作,导致意想不到的状况。
为此,非常有必要用SM0.1做一段上电初始化的动作,把相应的标志位等数据清除掉。另外,需要的话还可以设置一个清除键,手动清除所有的设置与状态。
关于数据的保存,另可参考文档《S7-200CPU掉电数据保持常见问题》,条目号: 81212034。以及系统手册和系统帮助中的内容。