關(guān)于S7-200中EEPROM存儲區(qū)的問題?
劉玉蓉
發(fā)布于2014-11-21 17:14
91
0
標(biāo)簽:
設(shè)備是用在分布式供暖系統(tǒng)中,每年只運行5個月左右,而且電源穩(wěn)定性不高,日常出現(xiàn)停電也是有可能的。
系統(tǒng)中關(guān)于設(shè)備禁用、啟停時間、報警值設(shè)定、傳感器誤差偏移量等設(shè)定參數(shù)必須進(jìn)行保存,保證即使停機半年以上再次開機時仍然有效。
但這些參數(shù)不是一成不變的,因此使用數(shù)據(jù)塊的方式下載不可行。
業(yè)主考慮成本問題,PLC沒有配置存儲卡和電池。
以上,除了使用SMB31和SMW32這兩個參數(shù)之外,還有別的選擇么?
如果使用這種方式對數(shù)據(jù)進(jìn)行保存,那么PLC再次啟動時是自己講存儲的數(shù)據(jù)從EEPROM調(diào)出來放到對應(yīng)的寄存器中,還是需要再另行處理的?
佳答案
有別的選擇和方法!
EEPROM區(qū)能實現(xiàn)數(shù)據(jù)永久保持,不依靠超級電容或者電池就可以保持?jǐn)?shù)據(jù)。
S7-200 CPU內(nèi)的程序塊下載時,會同時下載到EEPROM中,也就是說程序下載后,將永久保持。同樣,系統(tǒng)塊和數(shù)據(jù)塊下載時,也會同時下載到EEPROM中。
S7-200 CPU一上電后,CPU先去檢查RAM區(qū)域中的數(shù)據(jù),如果在超級電容或者電池有電的情況下,數(shù)據(jù)并未丟失,則使用該RAM區(qū)的數(shù)據(jù);如果超級電容或者電池沒電了,導(dǎo)致數(shù)據(jù)丟失,則CPU去讀EEPROM中相應(yīng)的區(qū)域(包含數(shù)據(jù)塊中的數(shù)據(jù)定義內(nèi)容),如果在EEPROM中存有永久保持的數(shù)據(jù),則CPU將EEPROM中的數(shù)據(jù)寫回到RAM區(qū)中,再進(jìn)行下面的工作。
如果EEPROM中也沒有對應(yīng)存儲區(qū)的數(shù)據(jù)了,則該存儲區(qū)的數(shù)據(jù)將變成0。
EEPROM的寫入分為如下幾種情況:
1、MB0—MB13的設(shè)置,只需要在系統(tǒng)塊—斷電數(shù)據(jù)保持中設(shè)置即可。
2、數(shù)據(jù)塊中定義的數(shù)據(jù),如圖3所示,當(dāng)下載數(shù)據(jù)塊的時候,同時會將定義的數(shù)據(jù)下載到EEPROM中,這樣,當(dāng)?shù)綦姇r間超過超級電容和電池的保持時間之后,再上電時,CPU會將EEPROM中存儲的數(shù)據(jù)塊中定義的數(shù)據(jù)數(shù)值寫回到RAM中對應(yīng)的存儲區(qū),實現(xiàn)永久保持?jǐn)?shù)據(jù)的目的。也就是恢復(fù)成數(shù)據(jù)的初始設(shè)置值。
注意:實現(xiàn)該功能一定要將定義好數(shù)據(jù)的數(shù)據(jù)塊下載到CPU中。
3、使用SMB31和SMW32控制字來實現(xiàn)將V區(qū)的數(shù)據(jù)存到EEPROM中
特殊存儲器字節(jié)31 (SMB31)命令S7-200將V存儲區(qū)中的某個值復(fù)制到永久存儲器的V存儲區(qū),置位SM31.7提供了初始化存儲操作的命令。特殊存儲器字32 (SMW32)中存儲所要復(fù)制數(shù)據(jù)的地址。
詳細(xì)參考:《S7-200CPU掉電數(shù)據(jù)保持常見問題》
https://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