沈建良,李亦龍,吳劍芳
(國(guó)網(wǎng)浙江省電力公司電力科學(xué)研究院,杭州310000)
智能電能表[1-2]作為一種電能計(jì)量器具,用來(lái)衡量用戶消費(fèi)電量的多少,是電力公司對(duì)用戶用電收費(fèi)的依據(jù),因此,其存儲(chǔ)數(shù)據(jù)[3-4]的安全可靠顯得十分重要。目前,智能電能表主要存儲(chǔ)數(shù)據(jù)包括當(dāng)前電能、歷史電能以及事件記錄等信息,隨著用電情況的越來(lái)越多變,智能電能表的功能越來(lái)越豐富,特別是OIML R46國(guó)際建議[5-6]的推行,要求智能電能表計(jì)量功能與其他功能相互獨(dú)立,“計(jì)量芯”負(fù)責(zé)計(jì)量功能,“管理芯”負(fù)責(zé)其他功能,即“雙芯”設(shè)計(jì)。因此,新一代智能電能表將涉及計(jì)量芯、管理芯的電能相關(guān)數(shù)據(jù)的校核,同時(shí),計(jì)量芯作為最基礎(chǔ)也是最重要的電能計(jì)量部分,存儲(chǔ)的數(shù)據(jù)量特別大,并且不允許數(shù)據(jù)丟失或錯(cuò)誤。
如何設(shè)計(jì)既能實(shí)現(xiàn)智能電能表的大容量數(shù)據(jù)存儲(chǔ),又能保證數(shù)據(jù)存儲(chǔ)的安全性,就顯得尤為重要。本文從 EEPROM[7-8]及 Flash[9]數(shù)據(jù)保存特點(diǎn)出發(fā),結(jié)合電能存儲(chǔ)數(shù)據(jù)的重要性,提出了一種智能電能表的大容量數(shù)據(jù)存儲(chǔ)方法,來(lái)實(shí)現(xiàn)數(shù)據(jù)的安全存儲(chǔ)。
采用“雙芯”設(shè)計(jì)的智能電能表包含計(jì)量芯和管理芯,計(jì)量芯主要用來(lái)存儲(chǔ)當(dāng)前電能及基礎(chǔ)凍結(jié)電能的數(shù)據(jù)信息。管理芯主要用來(lái)存儲(chǔ)當(dāng)前電能、歷史電能、當(dāng)前需量、歷史需量、事件記錄和運(yùn)行設(shè)置相關(guān)參數(shù)的數(shù)據(jù)信息。
目前,智能電能表主要用到的存儲(chǔ)器包含EEPROM、Flash等[10],EEPROM存儲(chǔ)器具有免擦寫,讀寫壽命超過(guò)100萬(wàn)次的優(yōu)點(diǎn),但其存儲(chǔ)容量有限,主要用來(lái)存儲(chǔ)當(dāng)前電能、當(dāng)前需量和運(yùn)行設(shè)置相關(guān)參數(shù)等數(shù)據(jù)量較小的數(shù)據(jù)信息。Flash存儲(chǔ)器具有存儲(chǔ)容量大的優(yōu)點(diǎn),但寫入數(shù)據(jù)前,如果待存儲(chǔ)區(qū)域不為空,需進(jìn)行擦除操作,且擦除時(shí)間長(zhǎng),同時(shí)擦除次數(shù)不超過(guò)10萬(wàn)次。因此,主要用來(lái)存儲(chǔ)歷史電能、事件記錄等數(shù)據(jù)量較大的數(shù)據(jù)信息。
計(jì)量芯功能需要進(jìn)行基礎(chǔ)凍結(jié)電能信息的保存,用來(lái)滿足管理芯費(fèi)率電能的處理,同時(shí)用于管理芯計(jì)費(fèi)數(shù)據(jù)的校核。為滿足未來(lái)多變的用電信息需求,這里定義基礎(chǔ)電能信息需要滿足正、反向有功總電能每1分鐘的存儲(chǔ)間隔,以及第一、二、三、四象限無(wú)功電能每15分鐘的存儲(chǔ)間隔,并且存儲(chǔ)深度不小于1年。為了保證數(shù)據(jù)的安全性,數(shù)據(jù)通常采用三處備份的方式。由此計(jì)算,電能表存儲(chǔ)數(shù)據(jù)量很大,可超過(guò)20 MByte。因此,采用“雙芯”設(shè)計(jì)的智能電能表數(shù)據(jù)的存儲(chǔ)不僅要求存儲(chǔ)器容量大,而且還需要其具有較長(zhǎng)的讀寫壽命,保證數(shù)據(jù)存儲(chǔ)的安全性。
數(shù)據(jù)存儲(chǔ)區(qū)域主要分為兩處,分別在EEPROM和Flash。利用EEPROM數(shù)據(jù)可直接寫入的特點(diǎn),在EEPROM中實(shí)時(shí)存儲(chǔ)最近兩天的電能數(shù)據(jù)信息,同時(shí)結(jié)合Flash存儲(chǔ)容量大的特點(diǎn),其他時(shí)間的電能數(shù)據(jù)信息都定時(shí)保存在Flash中。該方式可避免實(shí)時(shí)寫Flash數(shù)據(jù)時(shí),擦除Flash操作,減少外部異常對(duì)Flash擦除操作的影響,提高寫入安全性。同時(shí)定時(shí)把EEPROM中的批量數(shù)據(jù),保存至Flash中,提高存儲(chǔ)效率。
在EEPROM中開(kāi)辟兩塊地址空間,用于存儲(chǔ)兩天的數(shù)據(jù)信息,采用交替擦寫的方式存儲(chǔ)數(shù)據(jù)。電能表正常運(yùn)行狀態(tài)時(shí),一處EEPROM存儲(chǔ)空間存放數(shù)據(jù),另一處數(shù)據(jù)為空。當(dāng)EEPROM中儲(chǔ)存的數(shù)據(jù)量滿1天時(shí),將該存儲(chǔ)數(shù)據(jù)寫入Flash中,同時(shí)清除該存儲(chǔ)空間,新紀(jì)錄數(shù)據(jù)存放至EEPROM另一個(gè)地址空間,兩塊存儲(chǔ)空間采用輪換的存儲(chǔ)方式。
在滿足電能表基礎(chǔ)電能信息存儲(chǔ)容量20 MByte的要求下,分析比較采用EEPROM、Flash和EEPROM+Flash三種存儲(chǔ)方式的特點(diǎn),如表1所示。分析可見(jiàn),采用EEPROM+Flash的存儲(chǔ)方式既可以滿足數(shù)據(jù)存儲(chǔ)的讀寫壽命和可靠性要求,同時(shí)又可以在成本上得到有效控制。
表1 三種存儲(chǔ)方式特點(diǎn)比較Tab.1 Comparison of three data storage methods
電能表每分鐘觸發(fā)數(shù)據(jù)存儲(chǔ)動(dòng)作,將當(dāng)前電能表有效時(shí)鐘和需存儲(chǔ)的數(shù)據(jù)組織好后放入臨時(shí)緩存。然后讀取兩處EEPROM地址的數(shù)據(jù),判斷時(shí)標(biāo)是否有效。
第一種情況,兩處地址數(shù)據(jù)都有效。先將兩處地址中時(shí)標(biāo)較小數(shù)據(jù)轉(zhuǎn)存Flash,然后比較臨時(shí)緩存數(shù)據(jù)時(shí)標(biāo)和兩處地址中較大時(shí)標(biāo)的日期大?。海?)若臨時(shí)緩存數(shù)據(jù)時(shí)標(biāo)日期小于EEPROM中較大時(shí)標(biāo)的日期,則不寫入;(2)若臨時(shí)緩存數(shù)據(jù)時(shí)標(biāo)日期大于EEPROM中較大時(shí)標(biāo)的日期,則寫入另一處EEPROM,同時(shí)將該EEPROM中原有效的數(shù)據(jù)轉(zhuǎn)存至Flash;(3)若相等,則判斷臨時(shí)緩存時(shí)標(biāo)中的時(shí)分對(duì)應(yīng)EEPROM中已存數(shù)據(jù)的時(shí)分偏移地址往后(包括這個(gè)點(diǎn))的數(shù)據(jù)是否全部無(wú)效,若全部無(wú)效,則寫入。
第二種情況,一處地址數(shù)據(jù)有效。比較臨時(shí)緩存數(shù)據(jù)時(shí)標(biāo)和有效數(shù)據(jù)時(shí)標(biāo)的日期大?。海?)若臨時(shí)緩存數(shù)據(jù)時(shí)標(biāo)日期小于有效數(shù)據(jù)時(shí)標(biāo)日期,則不寫入;(2)若臨時(shí)緩存數(shù)據(jù)時(shí)標(biāo)日期大于有效數(shù)據(jù)時(shí)標(biāo)日期,則寫入另一處EEPROM地址,同時(shí)將該EEPROM中原有效的數(shù)據(jù)轉(zhuǎn)存至Flash;(3)若相等,則判斷臨時(shí)緩存時(shí)標(biāo)中的時(shí)分對(duì)應(yīng)EEPROM中已存數(shù)據(jù)的時(shí)分偏移地址往后(包括這個(gè)點(diǎn))的數(shù)據(jù)是否全部無(wú)效,若全部無(wú)效,則寫入。
第三種情況:兩處地址都無(wú)效。則將臨時(shí)緩存中的數(shù)據(jù)存入其中一處EEPROM地址。
一是立志“成一家之言”。在年輕的時(shí)候,章學(xué)誠(chéng)就立下大志,要對(duì)《漢書·藝文志》進(jìn)行研究,校讎其書,申明微旨,“又取古今載籍,自六藝以降,訖于近代作者之林,為之商榷利病,討論得失,擬為《文史通義》一書,分內(nèi)外雜篇,成一家言”[1]。章學(xué)誠(chéng)的“成一家之言”是要對(duì)歷史文獻(xiàn)“商榷利病,討論得失”,發(fā)現(xiàn)規(guī)律,提出新的史學(xué)觀點(diǎn),研究新的史學(xué)理論。章學(xué)誠(chéng)的學(xué)術(shù)實(shí)踐也正是這么做的,他在史學(xué)領(lǐng)域大膽發(fā)揮,“自信發(fā)凡起例,多為后世開(kāi)山?!盵2]為千古史學(xué)開(kāi)辟了新的道路。
為提高M(jìn)CU執(zhí)行效率,在MCU處理器正常處理任務(wù)間隙,檢查判斷需寫入的Flash是否為空,若不為空則擦除。避免在寫入時(shí),再進(jìn)行Flash擦除操作,提高Flash數(shù)據(jù)寫入效率,縮短寫入數(shù)據(jù)時(shí)間,進(jìn)一步提高數(shù)據(jù)寫入的可靠性。
當(dāng)EEPROM數(shù)據(jù)存儲(chǔ)流程中觸發(fā)數(shù)據(jù)轉(zhuǎn)存Flash時(shí),比較需轉(zhuǎn)存數(shù)據(jù)的時(shí)標(biāo)與Flash中最近一天數(shù)據(jù)的時(shí)標(biāo):(1)若需轉(zhuǎn)存數(shù)據(jù)的時(shí)標(biāo)大于Flash中最近一天數(shù)據(jù)的時(shí)標(biāo),則將數(shù)據(jù)寫入;(2)若需轉(zhuǎn)存數(shù)據(jù)的時(shí)標(biāo)小于等于Flash中最近一天數(shù)據(jù)的時(shí)標(biāo),則不寫入。
Flash中數(shù)據(jù)按時(shí)標(biāo)順序循環(huán)存儲(chǔ),當(dāng)存儲(chǔ)數(shù)據(jù)量滿1年時(shí),將覆蓋最早一天的數(shù)據(jù),以此類推,如圖1所示。
計(jì)量芯電能數(shù)據(jù)信息在EEPROM與Flash中存儲(chǔ)流程,具體實(shí)現(xiàn)方法如圖2所示。
圖1 Flash數(shù)據(jù)存儲(chǔ)模式Fig.1 Mode of Flash data storage
圖2 計(jì)量芯電能數(shù)據(jù)信息存儲(chǔ)流程Fig.2 Flow chart of electricity data information storage for metering chip
步驟如下:
S101:電能表每分鐘觸發(fā)數(shù)據(jù)存儲(chǔ)動(dòng)作,將當(dāng)前電表時(shí)鐘和需存儲(chǔ)的數(shù)據(jù)組織好后放入臨時(shí)緩存;
S102:讀取兩處存儲(chǔ)區(qū)的數(shù)據(jù),判斷其時(shí)標(biāo)是否都有效,若是進(jìn)入步驟 S103、S104,否則進(jìn)入步驟S111;
S104:將兩處存儲(chǔ)區(qū)中時(shí)標(biāo)較小的有效數(shù)據(jù)作為待轉(zhuǎn)存數(shù)據(jù),然后進(jìn)入步驟S106;
S105:將該臨時(shí)緩存數(shù)據(jù)作為待轉(zhuǎn)存數(shù)據(jù);
S106:比較待轉(zhuǎn)存數(shù)據(jù)的時(shí)標(biāo)是否大于Flash中最近一天數(shù)據(jù)的時(shí)標(biāo),若是進(jìn)入步驟 S107,否則結(jié)束;
S107:將EEPROM中有效的數(shù)據(jù)轉(zhuǎn)存至Flash,然后進(jìn)入步驟S110;
S108:如果臨時(shí)緩存數(shù)據(jù)時(shí)標(biāo)不大于兩處存儲(chǔ)區(qū)中較大時(shí)標(biāo)的日期,則判斷臨時(shí)緩存數(shù)據(jù)時(shí)標(biāo)是否等于兩處存儲(chǔ)區(qū)中較大時(shí)標(biāo)的日期,判斷是進(jìn)入步驟S109,否則結(jié)束;
S109:判斷臨時(shí)緩存時(shí)標(biāo)中的時(shí)分在對(duì)應(yīng)EEPROM中已存數(shù)據(jù)的時(shí)分偏移地址往后(包括這個(gè)點(diǎn))的數(shù)據(jù)是否全部無(wú)效,若是進(jìn)入步驟 S110,否則結(jié)束;
S110:將臨時(shí)緩存數(shù)據(jù)寫入EEPROM;
S111:判斷兩處存儲(chǔ)區(qū)中的數(shù)據(jù)是否有一處有效,若是進(jìn)入步驟S103,否則進(jìn)入步驟S112;
S112:將臨時(shí)緩存中的數(shù)據(jù)存入EEPROM的其中一處存儲(chǔ)區(qū)。
簡(jiǎn)述了智能電能表大容量數(shù)據(jù)存儲(chǔ)方式下存儲(chǔ)器的劃分,結(jié)合目前常用存儲(chǔ)器EEPROM及Flash存儲(chǔ)器特征,研究了如何用目前常用的EEPROM和Flash存儲(chǔ)器安全、高效的存儲(chǔ)“計(jì)量芯”中大容量電能數(shù)據(jù)。有效的避免了現(xiàn)有技術(shù)中EEPROM存儲(chǔ)容量小、Flash閃存擦寫次數(shù)低以及擦寫時(shí)間長(zhǎng)的缺點(diǎn)。在降低EEPROM存儲(chǔ)容量要求的同時(shí),減少了Flash操作次數(shù),不僅提高了雙芯電能表數(shù)據(jù)的存儲(chǔ)效率,而且擴(kuò)展了存儲(chǔ)器的使用壽命,提高了電能表大容量數(shù)據(jù)存儲(chǔ)的安全性與可靠性,同時(shí),在成本上也得到了有效的控制。