臨沂西門(mén)子代理商
MB0—MB13如果在系統(tǒng)塊中設(shè)置成掉電保持區(qū)域,如圖2紅框中所示,并將系統(tǒng)塊下載到CPU之后,則這14個(gè)字節(jié)的數(shù)據(jù)在掉電的瞬間會(huì)將數(shù)值寫(xiě)入EEPROM中,如果掉電時(shí)間超過(guò)超級(jí)電容和電池的保持時(shí)間之后,再上電時(shí),CPU會(huì)將EEPROM中存儲(chǔ)的數(shù)據(jù)數(shù)值寫(xiě)回到RAM中對(duì)應(yīng)的存儲(chǔ)區(qū),實(shí)現(xiàn)保持?jǐn)?shù)據(jù)的目的。
注意:實(shí)現(xiàn)該功能一定要將修改過(guò)的系統(tǒng)塊下載到CPU中。
2、數(shù)據(jù)塊中定義的數(shù)據(jù),如圖3所示,當(dāng)下載數(shù)據(jù)塊的時(shí)候,同時(shí)會(huì)將定義的數(shù)據(jù)下載到EEPROM中,這樣,當(dāng)?shù)綦姇r(shí)間超過(guò)超級(jí)電容和電池的保持時(shí)間之后,再上電時(shí),CPU會(huì)將EEPROM中存儲(chǔ)的數(shù)據(jù)塊中定義的數(shù)據(jù)數(shù)值寫(xiě)回到RAM中對(duì)應(yīng)的存儲(chǔ)區(qū),實(shí)現(xiàn)保持?jǐn)?shù)據(jù)的目的。也就是恢復(fù)成數(shù)據(jù)的初始設(shè)置值。
注意:實(shí)現(xiàn)該功能一定要將定義好數(shù)據(jù)的數(shù)據(jù)塊下載到CPU中。

圖3
3、使用SMB31和SMW32控制字來(lái)實(shí)現(xiàn)將V區(qū)的數(shù)據(jù)存到EEPROM中
特殊存儲(chǔ)器字節(jié)31 (SMB31)命令S7-200將V存儲(chǔ)區(qū)中的某個(gè)值復(fù)制到存儲(chǔ)器的V存儲(chǔ)區(qū),置位SM31.7提供了初始化存儲(chǔ)操作的命令。特殊存儲(chǔ)器字32 (SMW32)中存儲(chǔ)所要復(fù)制數(shù)據(jù)的地址。如圖4為S7-200系統(tǒng)手冊(cè)內(nèi)關(guān)于SMB31和SMW32的使用說(shuō)明。

圖4
臨沂西門(mén)子代理商
采用下列步驟來(lái)保存或者寫(xiě)入V存儲(chǔ)區(qū)中的一個(gè)特定數(shù)值:
1. 將要保存的V存儲(chǔ)器的地址裝載到SMW32中。
2. 將數(shù)據(jù)長(zhǎng)度裝載入SM31.0和SM31.1。具體含義如圖4所示。
3. 將SM31.7置為1。

圖5
注意:如果在數(shù)據(jù)塊中定義了某地址的數(shù)據(jù),而又使用這種辦法存儲(chǔ)同樣地址的數(shù)據(jù),則當(dāng)CPU內(nèi)超級(jí)電容或電池沒(méi)電時(shí),CPU再上電時(shí)將采用SMB31和SMW32存儲(chǔ)的數(shù)據(jù)。
問(wèn)題8:EEPROM寫(xiě)入次數(shù)的統(tǒng)計(jì)?
回答:每次下載程序塊/數(shù)據(jù)塊/系統(tǒng)塊或者執(zhí)行一次SMB31.7置位的操作都算作對(duì)EEPROM的一次寫(xiě)操作,所以請(qǐng)注意在程序中一定不要每周期都調(diào)用SMB31/SMW32用于將數(shù)據(jù)寫(xiě)入EEPROM內(nèi),否則CPU將很快報(bào)廢。
問(wèn)題9:不使用數(shù)據(jù)塊的方法,如何在程序中實(shí)現(xiàn)不止一個(gè)V區(qū)數(shù)據(jù)的存儲(chǔ)?
回答:由于SMB31/SMW32一次多只能送入一個(gè)V區(qū)雙字給EEPROM區(qū)域,因而當(dāng)有超過(guò)一個(gè)雙字的數(shù)據(jù)需要送入EEPROM中時(shí),需要程序配合實(shí)現(xiàn)。具體操作方法可參照如下的例子,即使用SMB31/SMW32送完一個(gè)數(shù)據(jù)(字節(jié)/字/雙字)之后,通過(guò)一個(gè)標(biāo)志位(如M0.0)來(lái)觸發(fā)下一個(gè)SMB31/SMW32操作,之后需要將上一個(gè)標(biāo)志位清零,以用于下一次的存儲(chǔ)數(shù)據(jù)的操作。


由于SM31.7在每次操作結(jié)束之后都自動(dòng)復(fù)位,因而不能使用它作為第二次觸發(fā)操作的條件。
以上程序僅供參考。
或者可以參考如下FAQ,多次調(diào)用指令庫(kù)用以存儲(chǔ)多個(gè)V區(qū)變量到EEPROM存儲(chǔ)區(qū)中:
如何在 CPU 內(nèi)部 EEPROM 存儲(chǔ)空間中保存變量區(qū)域?
17471561
問(wèn)題10:定時(shí)器和計(jì)數(shù)器以及MB14-MB31的掉電保持性能?
回答:計(jì)數(shù)器和TONR型的定時(shí)器(T0-T31,T64-T95)能夠?qū)崿F(xiàn)掉電保持。這些區(qū)域只能由超級(jí)電容和電池來(lái)進(jìn)行數(shù)據(jù)的掉電保持,他們并沒(méi)有對(duì)應(yīng)的EEPROM保持存儲(chǔ)區(qū)。當(dāng)超過(guò)超級(jí)電容和電池供電的時(shí)間之后,這些計(jì)數(shù)器和TONR定時(shí)器的數(shù)據(jù)全部清零。
TON和TOF型的定時(shí)器(T32-T63,T96-T255)沒(méi)有掉電保持?jǐn)?shù)據(jù)的功能。請(qǐng)不要在系統(tǒng)塊中設(shè)置這些區(qū)域?yàn)榈綦姳3?,如圖6所示為錯(cuò)誤做法:

圖6
按上述做法設(shè)置之后,下載系統(tǒng)塊時(shí)會(huì)導(dǎo)致如下錯(cuò)誤發(fā)生:

圖7
所以請(qǐng)不要將T32-T63,T96-T255的定時(shí)器設(shè)為掉電保持區(qū)域。
問(wèn)題11:CPU內(nèi)具備斷電保持性的數(shù)據(jù)區(qū)為何會(huì)丟失?
以下情況會(huì)導(dǎo)致CPU內(nèi)數(shù)據(jù)清零:
1. 沒(méi)有插入電池卡的CPU斷電時(shí)間過(guò)長(zhǎng),內(nèi)部超級(jí)電容放電完畢,TONR區(qū)/C區(qū)/MB14-MB31區(qū)數(shù)據(jù)丟失,V區(qū)和MB0-MB13區(qū)的對(duì)應(yīng)EEPROM內(nèi)沒(méi)有數(shù)據(jù)導(dǎo)致數(shù)據(jù)丟失,
2. 電池卡使用時(shí)間過(guò)長(zhǎng),使之沒(méi)電了, TONR區(qū)/C區(qū)/MB14-MB31區(qū)數(shù)據(jù)丟失,V區(qū)和MB0-MB13區(qū)的對(duì)應(yīng)EEPROM內(nèi)沒(méi)有數(shù)據(jù)導(dǎo)致數(shù)據(jù)丟失,
3. 插在CPU上的存儲(chǔ)卡內(nèi)程序/數(shù)據(jù)與CPU內(nèi)部RAM中運(yùn)行的程序/數(shù)據(jù)不符,一上電時(shí)會(huì)導(dǎo)致原有數(shù)據(jù)/程序的丟失。
4. CPU損壞