设备是用在分布式供暖系统中,每年只运行5个月左右,而且电源稳定性不高,日常出现停电也是有可能的。
系统中关于设备禁用、启停时间、报警值设定、传感器误差偏移量等设定参数必须进行保存,保证即使停机半年以上再次开机时仍然有效。
但这些参数不是一成不变的,因此使用数据块的方式下载不可行。
业主考虑成本问题,PLC没有配置存储卡和电池。
以上,除了使用SMB31和SMW32这两个参数之外,还有别的选择么?
如果使用这种方式对数据进行保存,那么PLC再次启动时是自己讲存储的数据从EEPROM调出来放到对应的寄存器中,还是需要再另行处理的?
最佳答案
有别的选择和方法!
EEPROM区能实现数据永久保持,不依靠超级电容或者电池就可以保持数据。
S7-200 CPU内的程序块下载时,会同时下载到EEPROM中,也就是说程序下载后,将永久保持。同样,系统块和数据块下载时,也会同时下载到EEPROM中。
S7-200 CPU一上电后,CPU先去检查RAM区域中的数据,如果在超级电容或者电池有电的情况下,数据并未丢失,则使用该RAM区的数据;如果超级电容或者电池没电了,导致数据丢失,则CPU去读EEPROM中相应的区域(包含数据块中的数据定义内容),如果在EEPROM中存有永久保持的数据,则CPU将EEPROM中的数据写回到RAM区中,再进行下面的工作。
如果EEPROM中也没有对应存储区的数据了,则该存储区的数据将变成0。
EEPROM的写入分为如下几种情况:
1、MB0—MB13的设置,只需要在系统块—断电数据保持中设置即可。
2、数据块中定义的数据,如图3所示,当下载数据块的时候,同时会将定义的数据下载到EEPROM中,这样,当掉电时间超过超级电容和电池的保持时间之后,再上电时,CPU会将EEPROM中存储的数据块中定义的数据数值写回到RAM中对应的存储区,实现永久保持数据的目的。也就是恢复成数据的初始设置值。
注意:实现该功能一定要将定义好数据的数据块下载到CPU中。
3、使用SMB31和SMW32控制字来实现将V区的数据存到EEPROM中
特殊存储器字节31 (SMB31)命令S7-200将V存储区中的某个值复制到永久存储器的V存储区,置位SM31.7提供了初始化存储操作的命令。特殊存储器字32 (SMW32)中存储所要复制数据的地址。
详细参考:《S7-200CPU掉电数据保持常见问题》
http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&objId=81212034&nodeid0=10805150&load=treecontent&prodLstObjId=4067181&lang=zh&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=CN
提问者对于答案的评价:
其实这个回答并没有解决我的问题,但我经过仔细琢磨有了一个自己的理解,参见论坛的帖子“关于S7-200中数据掉电保持的需求与实现”。
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc217533.html