劉東偉
衡水市冀州區(qū)綜合檢驗(yàn)檢測(cè)中心 河北衡水 053200
電能表的類(lèi)型在社會(huì)經(jīng)濟(jì)發(fā)展的過(guò)程中也在不斷增加,各大廠(chǎng)商所生產(chǎn)的電能表也大不相同,這一因素就會(huì)導(dǎo)致各個(gè)型號(hào)的電能表之間的質(zhì)量也存在較大差異,而電能表檢定工作的主要作用就是確保電能表在正常使用中能夠可靠計(jì)量,但在開(kāi)展電能表檢定工作的過(guò)程中會(huì)出現(xiàn)一些較難解決的問(wèn)題。
目前,常用的智能電能表存儲(chǔ)芯片有3種,即FRAM,EEPROM和NORFlash。其中,F(xiàn)RAM的空間最小,主要用于存儲(chǔ)數(shù)據(jù)變化最頻繁的電能量數(shù)據(jù);EEPROM的空間適中,用于存儲(chǔ)需量、參數(shù)、關(guān)聯(lián)列表等變化頻率一般的數(shù)據(jù);NORFlash的空間最大,用于存儲(chǔ)事件、凍結(jié)等數(shù)據(jù)量較大且寫(xiě)入后不會(huì)頻繁改變的數(shù)據(jù)。FRAM和EEPROM[6]無(wú)需擦除,可直接對(duì)任意地址進(jìn)行“寫(xiě)”操作,且使用壽命較長(zhǎng),基本不需要對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行特殊管理,但是其存儲(chǔ)容量較小且價(jià)格昂貴。NORFlash[7]支持任意地址的訪(fǎng)問(wèn),在“寫(xiě)”操作前必須進(jìn)行擦除,一次性擦除范圍隨芯片特性而定,一般不小于4kB,使用不夠便捷,需要對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行有效管理,但是存儲(chǔ)容量較大且價(jià)格便宜?;谶@3種存儲(chǔ)芯片特性,在此僅討論對(duì)NORFlash存儲(chǔ)數(shù)據(jù)(主要是事件、凍結(jié)數(shù)據(jù))的管理方法。以三相智能電能表為例,共有72類(lèi)事件、13類(lèi)凍結(jié),共計(jì)85類(lèi)數(shù)據(jù)需要存儲(chǔ)在NORFlash。
將NORFlash的最小擦除單元記為Sector,則傳統(tǒng)方法管理流程可描述如下:
步驟1根據(jù)每類(lèi)數(shù)據(jù)的數(shù)據(jù)大小,以Sector為單位,分別劃分固定的存儲(chǔ)區(qū)域。
步驟2為每類(lèi)數(shù)據(jù)分別設(shè)置In,Out和Sum三個(gè)變量。其中,In始終指向“寫(xiě)”操作地址;Out始終指向最早的1條記錄;Sum為當(dāng)前實(shí)際存儲(chǔ)的數(shù)據(jù)記錄總次數(shù)。
步驟3盡可能多地為分鐘凍結(jié)分配Sector,以降低擦除頻率。寫(xiě)數(shù)據(jù)時(shí)按照In指向的地址寫(xiě)入。讀數(shù)據(jù)時(shí)根據(jù)Out和要讀取的數(shù)據(jù)順序編號(hào)來(lái)計(jì)算偏移地址,再讀取數(shù)據(jù)。擦除管理即當(dāng)分配的存儲(chǔ)區(qū)無(wú)空閑時(shí),擦除Out指向的Sector,同時(shí)更新In,Out和Sum的值。
(1)RAM占用。每類(lèi)數(shù)據(jù)都要分配3個(gè)指針,85個(gè)文件共計(jì)占用約1kB,對(duì)資源緊張的電表而言,RAM占用較大。
(2)擦除頻率與磨損均衡性。產(chǎn)生頻繁的某類(lèi)數(shù)據(jù)存儲(chǔ)區(qū)會(huì)擦除頻繁,不經(jīng)常產(chǎn)生的某些類(lèi)數(shù)據(jù)存儲(chǔ)區(qū)則長(zhǎng)時(shí)間處于空閑狀態(tài)。另外,若某種故障工況下導(dǎo)致某些事件頻繁產(chǎn)生,或者某類(lèi)數(shù)據(jù)的數(shù)據(jù)量較大時(shí),也會(huì)提高擦除頻率。整體而言,擦除頻率可控性較差,整片F(xiàn)lash的磨損均衡性也較差。
(3)靈活性。每類(lèi)數(shù)據(jù)的存儲(chǔ)區(qū)域是預(yù)先固定的,當(dāng)數(shù)據(jù)類(lèi)型變化或Flash規(guī)格變化時(shí),都需重新分配存儲(chǔ)區(qū)域,靈活性較差。
(4)對(duì)分鐘凍結(jié)的處理。沒(méi)有特別的針對(duì)性措施,只能通過(guò)多分配Sector來(lái)降低分鐘凍結(jié)存儲(chǔ)區(qū)域的擦除頻率。
所提新型智能電能表數(shù)據(jù)管理方法結(jié)合智能電能表數(shù)據(jù)的特性,采用鏈表和重映射的概念思想,提高了訪(fǎng)問(wèn)NORFlash的科學(xué)性和靈活性,且資源占用低,數(shù)據(jù)存取便捷高效,適用于智能電能表。
以Sector為單位,將NORFlash劃分為鏈表區(qū)和數(shù)據(jù)區(qū)兩部分。鏈表區(qū)存放各類(lèi)數(shù)據(jù)在數(shù)據(jù)區(qū)的對(duì)應(yīng)存儲(chǔ)地址;數(shù)據(jù)區(qū)存放各類(lèi)數(shù)據(jù)的具體內(nèi)容。數(shù)據(jù)存取時(shí),先在鏈表區(qū)查找該類(lèi)數(shù)據(jù)在數(shù)據(jù)區(qū)的對(duì)應(yīng)存儲(chǔ)地址,再到數(shù)據(jù)區(qū)對(duì)該類(lèi)數(shù)據(jù)的具體內(nèi)容進(jìn)行存取操作。
(1)鏈表區(qū)結(jié)構(gòu)設(shè)計(jì)。鏈表區(qū)由多個(gè)鏈表組成。為便于管理,每個(gè)鏈表大小可設(shè)置為與Sector相等,每類(lèi)數(shù)據(jù)對(duì)應(yīng)各自的鏈表。因此,對(duì)于三相智能電能表,鏈表區(qū)大小為85個(gè)Sector。鏈表由鏈表單元Link組成。Link由1B狀態(tài)標(biāo)志和3B數(shù)據(jù)地址組成。其中,狀態(tài)標(biāo)志表示4種狀態(tài),空閑、有效、可擦除、已擦除;數(shù)據(jù)地址表示該Link對(duì)應(yīng)的數(shù)據(jù)記錄在數(shù)據(jù)區(qū)的存放地址。
(2)數(shù)據(jù)區(qū)結(jié)構(gòu)設(shè)計(jì)。除去鏈表區(qū)占用的空間,NORFlash中的剩余空間為數(shù)據(jù)區(qū)。數(shù)據(jù)區(qū)由數(shù)據(jù)單元Data組成,為提高讀寫(xiě)速率,一般Data大小等于Flash的頁(yè)大小。Data由1B狀態(tài)標(biāo)志、3B串聯(lián)地址、1B數(shù)據(jù)編號(hào)和數(shù)據(jù)具體內(nèi)容組成。其中,狀態(tài)標(biāo)志與Link中的狀態(tài)標(biāo)志保持一致;數(shù)據(jù)編號(hào)表示不同類(lèi)型的數(shù)據(jù);串聯(lián)地址一般為0,但若1個(gè)Data不足以存儲(chǔ)該類(lèi)數(shù)據(jù),則串聯(lián)地址存放下1個(gè)Data的地址。
在數(shù)據(jù)區(qū)設(shè)置Base,Dirty,Reserve和In四個(gè)指針。其中,Base為重映射指針,始終指向數(shù)據(jù)區(qū)邏輯地址0對(duì)應(yīng)的Sector(即數(shù)據(jù)存入最早的Sector);Dirty指向待擦除的Sector;Reserve指向擦除備用的Sector;In指向待寫(xiě)入的空閑Data。寫(xiě)數(shù)據(jù)時(shí),在In指向的Data中寫(xiě)入數(shù)據(jù),若數(shù)據(jù)大小超過(guò)Data,則查找下一個(gè)空閑Data繼續(xù)寫(xiě)入數(shù)據(jù),直至文件數(shù)據(jù)寫(xiě)完。同時(shí)Data中的狀態(tài)標(biāo)志和串聯(lián)地址。完成后,在鏈表中查找空閑Link,更新Link中的狀態(tài)標(biāo)志和數(shù)據(jù)地址。
與傳統(tǒng)方法相比,在RAM占用、磨損均衡性和擦除頻率以及靈活性等方面都有很大的提高,希望對(duì)智能電能表的數(shù)據(jù)管理提供一些參考。