关键词 s7-200,数据存储,ram,eeprom,掉电保持
key words s7-200, data storage, ram, eeprom, retentive settings
目 录
问题1:s7-200 cpu内部存储区类型?
问题2:s7-200 cpu的存储卡的作用?
问题3:s7-200 cpu内的程序是否具有掉电保持特性?
问题4:s7-200 cpu内部的数据的掉电保持特性?
问题5:s7-200 cpu内部数据的工作顺序?
问题6:s7-200 cpu电池卡的使用注意事项?
问题7:s7-200 cpu内eeprom的使用方法?
问题8:eeprom写入次数的统计?
问题9:不使用数据块的方法,如何在程序中实现不止一个v区数据的存储?
问题10:定时器和计数器以及mb14-mb31的掉电保持性能?
问题11:cpu内具备断电保持性的数据区为何会丢失?
问题1:s7-200 cpu内部存储区类型?
回答:s7-200 cpu内部存储区分为易失性的ram存储区和永久保持的eeprom两种,其中ram包含cpu工作存储区和数据区域中的v数据存储区、m数据存储区、t(定时器)区和c(计数器)区,eeprom包含程序存储区、v数据存储区的全部和m数据存储区的前14个字节、c区全部以及tonr对应区域。
也就是说v区和mb0-mb13这些区域都有对应的eeprom永久保持区域。
eeprom的写操作次数是有限制的(少10万次,典型值为100万次),所以请注意只在必要时才进行保存操作。否则,eeprom可能会失效,从而引起cpu故障。
eeprom的写入次数如果超过限制之后,该cpu即不能使用了,需要整体更换cpu,不能够只更换cpu内eeprom,西门子不提供这项服务。
问题2:s7-200 cpu的存储卡的作用?
回答:s7-200还提供三种类型的存储卡用于永久存储程序,数据块,系统块,数据记录(归档)、配方数据,以及一些其他文件等,这些存储卡不能用于实时存储数据,只能通过plc—存储卡编程的方法将程序块/数据块/系统块的初始设置存于存储卡内。
存储卡分为两种,根据大小共有三个型号。
32k存储卡:仅用于储存和传递程序、数据块和强制值。32k存储卡只可以用于向新版(23版)cpu传递程序,新版cpu不能向32k存储卡中写入任何数据。而且32k存储卡不支持存储程序以外的其他功能。订货号:6es7 291-8ge20-0xa0。
64k/256k存储卡:可用于新版cpu(23版)保存程序、数据块和强制值、配方、数据记录和其他文件(如项目文件、图片等)。64k/256k新存储卡只能用于新版cpu(23版)。64k存储卡订货号: 6es7 291-8gf23-0xa0;256k存储卡订货号:6es7 291-8gh23-0xa0。
为了把存储卡中的程序送到cpu中,必须先插入存储卡,然后给cpu上电,程序和数据将自动复制到ram及eeprom中。
存储卡的使用完整限制条件,请参考《s7-200系统手册》附录a 技术规范—可选卡件一节。
问题3:s7-200 cpu内的程序是否具有掉电保持特性?
回答:s7-200 cpu内的程序块下载时,会同时下载到eeprom中,也就是说程序下载后,将永久保持。同样,系统块和数据块下载时,也会同时下载到eeprom中。
问题4:s7-200 cpu内部的数据的掉电保持特性?
回答:s7-200系统手册第四章——“plc基本概念”一章中“理解s7--200如何保存和存储数据”一节详细介绍了s7-200 cpu内数据的掉电保持特性,建议用户仔细阅读。
s7-200 cpu内的数据分为ram区和eeprom区。
其中,ram区数据需要cpu内置的超级电容或者外插电池卡才能实现掉电保持特性。
对于cpu221和cpu222的内置超级电容,能提供典型值约50小时的数据保持。
对于cpu224,cpu224xp,cpu224xpsi和cpu226的内置超级电容,能提供典型值约100小时的数据保持。
超级电容需要在cpu上电时充电。为达到上述指标的数据保持时间,需要连续充电至少24小时。
当该时间不够时,可以购买电池卡,以获得更长时间的数据保持时间。
eeprom区能实现数据永久保持,不依靠超级电容或者电池就可以保持数据。
问题5:s7-200 cpu内部数据的工作顺序?
回答:s7-200 cpu一上电后,cpu先去检查ram区域中的数据,如果在超级电容或者电池有电的情况下,数据并未丢失,则使用该ram区的数据;如果超级电容或者电池没电了,导致数据丢失,则cpu去读eeprom中相应的区域(包含数据块中的数据定义内容),如果在eeprom中存有永久保持的数据,则cpu将eeprom中的数据写回到ram区中,再进行下面的工作。
如果eeprom中也没有对应存储区的数据了,则该存储区的数据将变成0。
问题6:s7-200 cpu电池卡的使用注意事项?
回答:新版s7-200 cpu电池卡有两种型号。
对于cpu221和cpu222,由于其中没有实时时钟,则对应的为时钟电池卡,订货号为:6es7297--1aa23--0xa0。
对于cpu224,cpu224xp,cpu224xpsi和cpu226,电池卡仅提供电池功能,订货号为:6es7 291--8ba20--0xa0,该款电池卡型号又叫做bc293。
电池卡的寿命典型值约为200天,当插上电池卡后,如果cpu处于工作状态或者超级电容有电的情况下,并不消耗电池卡的电量。当电池卡的电量消耗完毕之后,该电池卡就报废了。
s7-200电池卡不能充电,使用完毕就不能再用了,只能购买新的电池卡了。
s7-200没有检测电池卡内剩余电量的状态位和这种功能。
新版s7-200 cpu电池卡不能用于老cpu,即订货号为6es7xxx-xxx21-0xb0和6es7xxx-xxx22-0xb0以及更老版本的cpu。
图1
以上为两种电池卡以及所在插槽位置。
电池卡的使用完整限制条件,请参考《s7-200系统手册》附录a 技术规范—可选卡件一节。
问题7:s7-200 cpu内eeprom的使用方法?
回答:eeprom的写入分为如下几种情况:
1、mb0—mb13的设置,只需要在系统块—断电数据保持中设置即可。
默认情况下,系统块设置如下图蓝框中所示,即mb14—mb31,这些区域没有对应的eeprom区域,无须考虑eeprom写入次数限制。
图2
mb0—mb13如果在系统块中设置成掉电保持区域,如图2红框中所示,并将系统块下载到cpu之后,则这14个字节的数据在掉电的瞬间会将数值写入eeprom中,如果掉电时间超过超级电容和电池的保持时间之后,再上电时,cpu会将eeprom中存储的数据数值写回到ram中对应的存储区,实现永久保持数据的目的。
注意:实现该功能一定要将修改过的系统块下载到cpu中。
2、数据块中定义的数据,如图3所示,当下载数据块的时候,同时会将定义的数据下载到eeprom中,这样,当掉电时间超过超级电容和电池的保持时间之后,再上电时,cpu会将eeprom中存储的数据块中定义的数据数值写回到ram中对应的存储区,实现永久保持数据的目的。也就是恢复成数据的初始设置值。
注意:实现该功能一定要将定义好数据的数据块下载到cpu中。
图3
3、使用smb31和smw32控制字来实现将v区的数据存到eeprom中
特殊存储器字节31 (smb31)命令s7-200将v存储区中的某个值复制到永久存储器的v存储区,置位sm31.7提供了初始化存储操作的命令。特殊存储器字32 (smw32)中存储所要复制数据的地址。如图4为s7-200系统手册内关于smb31和smw32的使用说明。
图4
采用下列步骤来保存或者写入v存储区中的一个特定数值:
1. 将要保存的v存储器的地址装载到smw32中。
2. 将数据长度装载入sm31.0和sm31.1。具体含义如图4所示。
3. 将sm31.7置为1。
图5
注意:如果在数据块中定义了某地址的数据,而又使用这种办法存储同样地址的数据,则当cpu内超级电容或电池没电时,cpu再上电时将采用smb31和smw32存储的数据。
问题8:eeprom写入次数的统计?
回答:每次下载程序块/数据块/系统块或者执行一次smb31.7置位的操作都算作对eeprom的一次写操作,所以请注意在程序中一定不要每周期都调用smb31/smw32用于将数据写入eeprom内,否则cpu将很快报废。
问题9:不使用数据块的方法,如何在程序中实现不止一个v区数据的存储?
回答:由于smb31/smw32一次多只能送入一个v区双字给eeprom区域,因而当有超过一个双字的数据需要送入eeprom中时,需要程序配合实现。具体操作方法可参照如下的例子,即使用smb31/smw32送完一个数据(字节/字/双字)之后,通过一个标志位(如m0.0)来触发下一个smb31/smw32操作,之后需要将上一个标志位清零,以用于下一次的存储数据的操作
由于sm31.7在每次操作结束之后都自动复位,因而不能使用它作为第二次触发操作的条件。
以上程序仅供参考。
问题10:定时器和计数器以及mb14-mb31的掉电保持性能?
回答:计数器和tonr型的定时器(t0-t31,t64-t95)能够实现掉电保持。这些区域只能由超级电容和电池来进行数据的掉电保持,他们并没有对应的eeprom永久保持存储区。当超过超级电容和电池供电的时间之后,这些计数器和tonr定时器的数据全部清零。
ton和tof型的定时器(t32-t63,t96-t255)没有掉电保持数据的功能。请不要在系统块中设置这些区域为掉电保持,如图6所示为错误做法:
图6
按上述做法设置之后,下载系统块时会导致如下错误发生:
图7
所以请不要将t32-t63,t96-t255的定时器设为掉电保持区域。
问题11:cpu内具备断电保持性的数据区为何会丢失?
以下情况会导致cpu内数据清零:
1. 没有插入电池卡的cpu断电时间过长,内部超级电容放电完毕,tonr区/c区/mb14-mb31区数据丢失,v区和mb0-mb13区的对应eeprom内没有数据导致数据丢失,
2. 电池卡使用时间过长,使之没电了, tonr区/c区/mb14-mb31区数据丢失,v区和mb0-mb13区的对应eeprom内没有数据导致数据丢失,
3. 插在cpu上的存储卡内程序/数据与cpu内部ram中运行的程序/数据不符,一上电时会导致原有数据/程序的丢失。
4. cpu损坏。