沈建良,李亦龍,吳劍芳
(國網浙江省電力公司電力科學研究院,杭州310000)
智能電能表[1-2]作為一種電能計量器具,用來衡量用戶消費電量的多少,是電力公司對用戶用電收費的依據,因此,其存儲數據[3-4]的安全可靠顯得十分重要。目前,智能電能表主要存儲數據包括當前電能、歷史電能以及事件記錄等信息,隨著用電情況的越來越多變,智能電能表的功能越來越豐富,特別是OIML R46國際建議[5-6]的推行,要求智能電能表計量功能與其他功能相互獨立,“計量芯”負責計量功能,“管理芯”負責其他功能,即“雙芯”設計。因此,新一代智能電能表將涉及計量芯、管理芯的電能相關數據的校核,同時,計量芯作為最基礎也是最重要的電能計量部分,存儲的數據量特別大,并且不允許數據丟失或錯誤。
如何設計既能實現智能電能表的大容量數據存儲,又能保證數據存儲的安全性,就顯得尤為重要。本文從 EEPROM[7-8]及 Flash[9]數據保存特點出發,結合電能存儲數據的重要性,提出了一種智能電能表的大容量數據存儲方法,來實現數據的安全存儲。
采用“雙芯”設計的智能電能表包含計量芯和管理芯,計量芯主要用來存儲當前電能及基礎凍結電能的數據信息。管理芯主要用來存儲當前電能、歷史電能、當前需量、歷史需量、事件記錄和運行設置相關參數的數據信息。
目前,智能電能表主要用到的存儲器包含EEPROM、Flash等[10],EEPROM存儲器具有免擦寫,讀寫壽命超過100萬次的優點,但其存儲容量有限,主要用來存儲當前電能、當前需量和運行設置相關參數等數據量較小的數據信息。Flash存儲器具有存儲容量大的優點,但寫入數據前,如果待存儲區域不為空,需進行擦除操作,且擦除時間長,同時擦除次數不超過10萬次。因此,主要用來存儲歷史電能、事件記錄等數據量較大的數據信息。
計量芯功能需要進行基礎凍結電能信息的保存,用來滿足管理芯費率電能的處理,同時用于管理芯計費數據的校核。為滿足未來多變的用電信息需求,這里定義基礎電能信息需要滿足正、反向有功總電能每1分鐘的存儲間隔,以及第一、二、三、四象限無功電能每15分鐘的存儲間隔,并且存儲深度不小于1年。為了保證數據的安全性,數據通常采用三處備份的方式。由此計算,電能表存儲數據量很大,可超過20 MByte。因此,采用“雙芯”設計的智能電能表數據的存儲不僅要求存儲器容量大,而且還需要其具有較長的讀寫壽命,保證數據存儲的安全性。
數據存儲區域主要分為兩處,分別在EEPROM和Flash。利用EEPROM數據可直接寫入的特點,在EEPROM中實時存儲最近兩天的電能數據信息,同時結合Flash存儲容量大的特點,其他時間的電能數據信息都定時保存在Flash中。該方式可避免實時寫Flash數據時,擦除Flash操作,減少外部異常對Flash擦除操作的影響,提高寫入安全性。同時定時把EEPROM中的批量數據,保存至Flash中,提高存儲效率。
在EEPROM中開辟兩塊地址空間,用于存儲兩天的數據信息,采用交替擦寫的方式存儲數據。電能表正常運行狀態時,一處EEPROM存儲空間存放數據,另一處數據為空。當EEPROM中儲存的數據量滿1天時,將該存儲數據寫入Flash中,同時清除該存儲空間,新紀錄數據存放至EEPROM另一個地址空間,兩塊存儲空間采用輪換的存儲方式。
在滿足電能表基礎電能信息存儲容量20 MByte的要求下,分析比較采用EEPROM、Flash和EEPROM+Flash三種存儲方式的特點,如表1所示。分析可見,采用EEPROM+Flash的存儲方式既可以滿足數據存儲的讀寫壽命和可靠性要求,同時又可以在成本上得到有效控制。

表1 三種存儲方式特點比較Tab.1 Comparison of three data storage methods
電能表每分鐘觸發數據存儲動作,將當前電能表有效時鐘和需存儲的數據組織好后放入臨時緩存。然后讀取兩處EEPROM地址的數據,判斷時標是否有效。
第一種情況,兩處地址數據都有效。先將兩處地址中時標較小數據轉存Flash,然后比較臨時緩存數據時標和兩處地址中較大時標的日期大?。海?)若臨時緩存數據時標日期小于EEPROM中較大時標的日期,則不寫入;(2)若臨時緩存數據時標日期大于EEPROM中較大時標的日期,則寫入另一處EEPROM,同時將該EEPROM中原有效的數據轉存至Flash;(3)若相等,則判斷臨時緩存時標中的時分對應EEPROM中已存數據的時分偏移地址往后(包括這個點)的數據是否全部無效,若全部無效,則寫入。
第二種情況,一處地址數據有效。比較臨時緩存數據時標和有效數據時標的日期大?。海?)若臨時緩存數據時標日期小于有效數據時標日期,則不寫入;(2)若臨時緩存數據時標日期大于有效數據時標日期,則寫入另一處EEPROM地址,同時將該EEPROM中原有效的數據轉存至Flash;(3)若相等,則判斷臨時緩存時標中的時分對應EEPROM中已存數據的時分偏移地址往后(包括這個點)的數據是否全部無效,若全部無效,則寫入。
第三種情況:兩處地址都無效。則將臨時緩存中的數據存入其中一處EEPROM地址。
一是立志“成一家之言”。在年輕的時候,章學誠就立下大志,要對《漢書·藝文志》進行研究,校讎其書,申明微旨,“又取古今載籍,自六藝以降,訖于近代作者之林,為之商榷利病,討論得失,擬為《文史通義》一書,分內外雜篇,成一家言”[1]。章學誠的“成一家之言”是要對歷史文獻“商榷利病,討論得失”,發現規律,提出新的史學觀點,研究新的史學理論。章學誠的學術實踐也正是這么做的,他在史學領域大膽發揮,“自信發凡起例,多為后世開山?!盵2]為千古史學開辟了新的道路。
為提高MCU執行效率,在MCU處理器正常處理任務間隙,檢查判斷需寫入的Flash是否為空,若不為空則擦除。避免在寫入時,再進行Flash擦除操作,提高Flash數據寫入效率,縮短寫入數據時間,進一步提高數據寫入的可靠性。
當EEPROM數據存儲流程中觸發數據轉存Flash時,比較需轉存數據的時標與Flash中最近一天數據的時標:(1)若需轉存數據的時標大于Flash中最近一天數據的時標,則將數據寫入;(2)若需轉存數據的時標小于等于Flash中最近一天數據的時標,則不寫入。
Flash中數據按時標順序循環存儲,當存儲數據量滿1年時,將覆蓋最早一天的數據,以此類推,如圖1所示。
計量芯電能數據信息在EEPROM與Flash中存儲流程,具體實現方法如圖2所示。

圖1 Flash數據存儲模式Fig.1 Mode of Flash data storage

圖2 計量芯電能數據信息存儲流程Fig.2 Flow chart of electricity data information storage for metering chip
步驟如下:
S101:電能表每分鐘觸發數據存儲動作,將當前電表時鐘和需存儲的數據組織好后放入臨時緩存;
S102:讀取兩處存儲區的數據,判斷其時標是否都有效,若是進入步驟 S103、S104,否則進入步驟S111;
S104:將兩處存儲區中時標較小的有效數據作為待轉存數據,然后進入步驟S106;
S105:將該臨時緩存數據作為待轉存數據;
S106:比較待轉存數據的時標是否大于Flash中最近一天數據的時標,若是進入步驟 S107,否則結束;
S107:將EEPROM中有效的數據轉存至Flash,然后進入步驟S110;
S108:如果臨時緩存數據時標不大于兩處存儲區中較大時標的日期,則判斷臨時緩存數據時標是否等于兩處存儲區中較大時標的日期,判斷是進入步驟S109,否則結束;
S109:判斷臨時緩存時標中的時分在對應EEPROM中已存數據的時分偏移地址往后(包括這個點)的數據是否全部無效,若是進入步驟 S110,否則結束;
S110:將臨時緩存數據寫入EEPROM;
S111:判斷兩處存儲區中的數據是否有一處有效,若是進入步驟S103,否則進入步驟S112;
S112:將臨時緩存中的數據存入EEPROM的其中一處存儲區。
簡述了智能電能表大容量數據存儲方式下存儲器的劃分,結合目前常用存儲器EEPROM及Flash存儲器特征,研究了如何用目前常用的EEPROM和Flash存儲器安全、高效的存儲“計量芯”中大容量電能數據。有效的避免了現有技術中EEPROM存儲容量小、Flash閃存擦寫次數低以及擦寫時間長的缺點。在降低EEPROM存儲容量要求的同時,減少了Flash操作次數,不僅提高了雙芯電能表數據的存儲效率,而且擴展了存儲器的使用壽命,提高了電能表大容量數據存儲的安全性與可靠性,同時,在成本上也得到了有效的控制。