图2
MB0—MB13如果在系统块中设置成掉电保持区域,如图2红框中所示,并将系统块下载到CPU之后,则这14个字节的数据在掉电的瞬间会将数值写入EEPROM中,如果掉电时间**过**级电容和电池的保持时间之后,再上电时,CPU会将EEPROM中存储的数据数值写回到RAM中对应的存储区,实现*保持数据的目的。
2、数据块中定义的数据,如图3所示,当下载数据块的时候,同时会将定义的数据下载到EEPROM中,这样,当掉电时间**过**级电容和电池的保持时间之后,再上电时,CPU会将EEPROM中存储的数据块中定义的数据数值写回到RAM中对应的存储区,实现*保持数据的目的。也就是恢复成数据的初始设置值。
3、使用SMB31和SMW32控制字来实现将V区的数据存到EEPROM中
采用下列步骤来保存或者写入V存储区中的一个特定数值:
注意:如果在数据块中定义了某地址的数据,而又使用这种办法存储同样地址的数据,则当CPU内**级电容或电池没电时,CPU再上电时将采用SMB31和SMW32存储的数据。
问题8:EEPROM写入次数的统计?
问题9:不使用数据块的方法,如何在程序中实现不止一个V区数据的存储?
由于SM31.7在每次操作结束之后都自动复位,因而不能使用它作为*二次触发操作的条件。
或者可以参考如下FAQ,多次调用指令库用以存储多个V区变量到EEPROM存储区中:
问题10:定时器和计数器以及MB14-MB31的掉电保持性能?
按上述做法设置之后,下载系统块时会导致如下错误发生:
所以请不要将T32-T63,T96-T255的定时器设为掉电保持区域。
问题11:CPU内具备断电保持性的数据区为何会丢失?
注意:实现该功能一定要将修改过的系统块下载到CPU中。
注意:实现该功能一定要将定义好数据的数据块下载到CPU中。
图3
特殊存储器字节31 (SMB31)命令S7-200将V存储区中的某个值复制到*存储器的V存储区,置位SM31.7提供了初始化存储操作的命令。特殊存储器字32 (SMW32)中存储所要复制数据的地址。如图4为S7-200系统手册内关于SMB31和SMW32的使用说明。
1. 将要保存的V存储器的地址装载到SMW32中。
2. 将数据长度装载入SM31.0和SM31.1。具体含义如图4所示。
3. 将SM31.7置为1。
图5
回答:每次下载程序块/数据块/系统块或者执行一次SMB31.7置位的操作都算作对EEPROM的一次写操作,所以请注意在程序中一定不要每周期都调用SMB31/SMW32用于将数据写入EEPROM内,否则CPU将很快报废。
回答:由于SMB31/SMW32一次较多只能送入一个V区双字给EEPROM区域,因而当有**过一个双字的数据需要送入EEPROM中时,需要程序配合实现。具体操作方法可参照如下的例子,即使用SMB31/SMW32送完一个数据(字节/字/双字)之后,通过一个标志位(如M0.0)来触发下一个SMB31/SMW32操作,之后需要将上一个标志位清零,以用于下一次的存储数据的操作。
以上程序仅供参考。
如何在 CPU 内部 EEPROM 存储空间中*保存变量区域?
17471561
回答:计数器和TONR型的定时器(T0-T31,T64-T95)能够实现掉电保持。这些区域只能由**级电容和电池来进行数据的掉电保持,他们并没有对应的EEPROM*保持存储区。当**过**级电容和电池供电的时间之后,这些计数器和TONR定时器的数据全部清零。
TON和TOF型的定时器(T32-T63,T96-T255)没有掉电保持数据的功能。请不要在系统块中设置这些区域为掉电保持,如图6所示为错误做法:
图6
图7
以下情况会导致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损坏。