劉曉輝,李 鵬,胡光娜
(1.河南許繼儀表有限公司,河南 許昌461000; 2.國網(wǎng)吉林省電力有限公司延邊供電公司,吉林 延吉 133000)
?
電能表系統(tǒng)數(shù)據(jù)存儲(chǔ)的研究
劉曉輝1,李鵬1,胡光娜2
(1.河南許繼儀表有限公司,河南 許昌461000; 2.國網(wǎng)吉林省電力有限公司延邊供電公司,吉林 延吉 133000)
摘要:為了解決電能表系統(tǒng)數(shù)據(jù)現(xiàn)場升級(jí)程序容易出現(xiàn)數(shù)據(jù)混亂的問題,分析了目前電能表系統(tǒng)數(shù)據(jù)存儲(chǔ)的方式,針對(duì)目前電能表系統(tǒng)數(shù)據(jù)存儲(chǔ)的問題提出了改善方案。通過數(shù)據(jù)鏈表創(chuàng)造出一個(gè)可以自由伸縮的數(shù)據(jù)存儲(chǔ)系統(tǒng),形成了以數(shù)據(jù)塊為存儲(chǔ)單元的存儲(chǔ)模式,解決了電能表系統(tǒng)中新增加數(shù)據(jù)會(huì)導(dǎo)致現(xiàn)有數(shù)據(jù)地址改變的問題。文章先從目前電能表系統(tǒng)數(shù)據(jù)存儲(chǔ)的問題說起,隨后提出了新的數(shù)據(jù)存儲(chǔ)模型,并一一介紹了新數(shù)據(jù)存儲(chǔ)模型的創(chuàng)建、讀取、寫入及刪除等操作,并在電能表上成功實(shí)現(xiàn)了新數(shù)據(jù)存儲(chǔ)模型。
關(guān)鍵詞:數(shù)據(jù)存儲(chǔ);數(shù)據(jù)索引;鏈表;數(shù)據(jù)結(jié)構(gòu)
引用格式:劉曉輝,李鵬,胡光娜. 電能表系統(tǒng)數(shù)據(jù)存儲(chǔ)的研究[J].微型機(jī)與應(yīng)用,2016,35(13):73-75.
0引言
在目前很多電能表系統(tǒng)中,數(shù)據(jù)存儲(chǔ)都是順序存儲(chǔ)模式,導(dǎo)致現(xiàn)場升級(jí)完程序后時(shí)常會(huì)有數(shù)據(jù)混亂問題出現(xiàn),究其原因是因?yàn)殚_發(fā)人員新增加數(shù)據(jù),但沒有按順序添加到數(shù)據(jù)列的最后面而導(dǎo)致?,F(xiàn)在很多的電能表系統(tǒng)都是以EEPROM作為擴(kuò)展的外部數(shù)據(jù)存儲(chǔ)器,單相電能表一般采用32 KB的EEPROM存儲(chǔ)器來進(jìn)行數(shù)據(jù)存儲(chǔ),國網(wǎng)智能電表系統(tǒng)中的數(shù)據(jù)都是以數(shù)據(jù)標(biāo)識(shí)符的形式定義,在EEPROM中存儲(chǔ)時(shí)通常都以順序方式進(jìn)行數(shù)據(jù)排列。這種存儲(chǔ)方法形式比較單一,數(shù)據(jù)必須按照固定的格式進(jìn)行順序排序,一旦有新的數(shù)據(jù)添加,這個(gè)新數(shù)據(jù)必須排在數(shù)據(jù)列的最后面,否則就會(huì)影響其他數(shù)據(jù)在EEPROM中的地址,導(dǎo)致電能表升級(jí)程序后數(shù)據(jù)出現(xiàn)異常。本文提出一種新的數(shù)據(jù)存儲(chǔ)方法,解決了新增數(shù)據(jù)必須在數(shù)據(jù)列的最后面添加的弊端,各個(gè)業(yè)務(wù)模塊都可以在數(shù)據(jù)列任意位置添加新數(shù)據(jù)而不用擔(dān)心電能表升級(jí)程序后數(shù)據(jù)異常的問題。
1數(shù)據(jù)存儲(chǔ)的原理
本文提出的這種數(shù)據(jù)存儲(chǔ)的原理基于鏈表[1]的數(shù)據(jù)處理方法,電能表內(nèi)的數(shù)據(jù)采用雙向鏈表的形式進(jìn)行組合,業(yè)務(wù)模塊需要添加新數(shù)據(jù)時(shí),只需要將新數(shù)據(jù)頭指針指向前一個(gè)數(shù)據(jù),尾指針指向后一項(xiàng)數(shù)據(jù),整個(gè)數(shù)據(jù)鏈不會(huì)受到破壞[2]。數(shù)據(jù)存儲(chǔ)原理如圖1。
圖1 數(shù)據(jù)存儲(chǔ)原理
2數(shù)據(jù)的創(chuàng)建和刪除
根據(jù)上述原理,需要對(duì)EEPROM存儲(chǔ)器進(jìn)行整體格式化,即對(duì)存儲(chǔ)空間進(jìn)行分塊并標(biāo)記,如圖2所示。分塊就是將32 KB的存儲(chǔ)空間以16 B為1塊劃分,那么就可以分成2 048個(gè)塊,用前面16個(gè)塊(2 048 bit位)來標(biāo)記每一塊的使用情況,每一個(gè)bit位值為1代表所指向的塊處于使用狀態(tài),bit位值為0代表所指向的塊處于空閑狀態(tài)[3]。
2.1數(shù)據(jù)的創(chuàng)建
創(chuàng)建一個(gè)數(shù)據(jù)就必須有一個(gè)總的數(shù)據(jù)索引FileIndex結(jié)構(gòu)對(duì)象,這個(gè)數(shù)據(jù)索引要實(shí)現(xiàn)的功能就是能通過它找到EEPROM中存放的每一個(gè)數(shù)據(jù),那么這個(gè)FileIndex結(jié)構(gòu)定義就需要有每個(gè)數(shù)據(jù)的地址映射。由數(shù)據(jù)索引[4-6]開始,數(shù)據(jù)索引中包含第一個(gè)數(shù)據(jù)的起始地址,由此地址可以訪問到第一個(gè)數(shù)據(jù)。然后由數(shù)據(jù)結(jié)構(gòu)struct FILE中的數(shù)據(jù)指針pFileNext指向下一個(gè)數(shù)據(jù)的地址,數(shù)據(jù)結(jié)構(gòu)FILE中的數(shù)據(jù)指針pData則指向本數(shù)據(jù)區(qū)域(數(shù)據(jù)區(qū)域就是用來真正存放數(shù)據(jù)的EEPROM地址),依次遞推,查找每一個(gè)數(shù)據(jù),比較數(shù)據(jù)與要?jiǎng)?chuàng)建的新數(shù)據(jù)是否不同(通常采用數(shù)據(jù)標(biāo)識(shí)符區(qū)分),不同則從存儲(chǔ)空間中查找空閑塊分配給該新數(shù)據(jù)使用,相同則不處理。創(chuàng)建數(shù)據(jù)的時(shí)序圖如圖3。
圖2 存儲(chǔ)空間分塊及標(biāo)記示意圖
圖3 數(shù)據(jù)創(chuàng)建時(shí)序
2.2數(shù)據(jù)的刪除
數(shù)據(jù)的刪除與數(shù)據(jù)的創(chuàng)建過程很相似。首先讀出EEPROM中存放的FileIndex結(jié)構(gòu)對(duì)象,由其中的數(shù)據(jù)指針找到第一個(gè)數(shù)據(jù),判斷數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)名與要?jiǎng)h除的數(shù)據(jù)名是否一致,一致則刪除數(shù)據(jù)結(jié)構(gòu)中數(shù)據(jù)塊指針并釋放存儲(chǔ)空間;否則由數(shù)據(jù)結(jié)構(gòu)中的下一個(gè)數(shù)據(jù)指針讀出下一個(gè)數(shù)據(jù)進(jìn)行數(shù)據(jù)名比較,依次遞推,直到找到要?jiǎng)h除的數(shù)據(jù)為止。釋放存儲(chǔ)空間需要將釋放的數(shù)據(jù)塊標(biāo)記置為空閑狀態(tài),以便創(chuàng)建新數(shù)據(jù)時(shí)使用。數(shù)據(jù)刪除時(shí)序圖如圖4。
圖4 數(shù)據(jù)刪除時(shí)序
3數(shù)據(jù)的讀寫操作
在完成數(shù)據(jù)的創(chuàng)建工作之后,就可以通過數(shù)據(jù)名對(duì)數(shù)據(jù)進(jìn)行讀寫操作。
3.1數(shù)據(jù)的讀取
數(shù)據(jù)的讀取是通過讀取EEPROM中的FileIndex結(jié)構(gòu)對(duì)象,由讀出的FileIndex對(duì)象里的數(shù)據(jù)指針找到第1個(gè)數(shù)據(jù)的。比較數(shù)據(jù)的數(shù)據(jù)名與要讀取的數(shù)據(jù)名是否相同,如果相同則通過指向數(shù)據(jù)域的指針pData把要訪問的EEPROM中數(shù)據(jù)讀出來;不同則通過數(shù)據(jù)結(jié)構(gòu)中的下一個(gè)數(shù)據(jù)指針pFileNext讀出第2個(gè)數(shù)據(jù),然后繼續(xù)比較數(shù)據(jù)名是否一樣。以此遞推,直到找到與要讀取的數(shù)據(jù)名一致的數(shù)據(jù)為止,圖5為讀數(shù)據(jù)的實(shí)現(xiàn)過程。
圖5 數(shù)據(jù)讀取時(shí)序
3.2數(shù)據(jù)的寫入
寫數(shù)據(jù)的操作過程與讀數(shù)據(jù)的過程非常相似,也是通過讀數(shù)據(jù)索引FileIndex找到第一個(gè)數(shù)據(jù),然后比較數(shù)據(jù)名是否一致,直到找到數(shù)據(jù)名匹配的數(shù)據(jù)為止,根據(jù)數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)域指針pData把數(shù)據(jù)存儲(chǔ)到EEPROM中對(duì)應(yīng)地址中去,實(shí)現(xiàn)了按數(shù)據(jù)名寫數(shù)據(jù)的操作,如圖6所示。
圖6 數(shù)據(jù)寫入時(shí)序
4結(jié)束語
本文介紹的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)的創(chuàng)建和刪除不會(huì)影響其他數(shù)據(jù)項(xiàng),各個(gè)業(yè)務(wù)模塊在處理新數(shù)據(jù)時(shí)只需將新數(shù)據(jù)添加到業(yè)務(wù)模塊處理的數(shù)據(jù)塊中,不會(huì)影響其他業(yè)務(wù)模塊的數(shù)據(jù)。該數(shù)據(jù)存儲(chǔ)系統(tǒng)已經(jīng)在單相智能表中實(shí)現(xiàn)及應(yīng)用,解決了因新增數(shù)據(jù)而導(dǎo)致其他數(shù)據(jù)地址發(fā)生變化的問題,從而避免了因現(xiàn)場升級(jí)程序而電能表數(shù)據(jù)混亂的發(fā)生。
參考文獻(xiàn)
[1] 李無言.一步步寫嵌入式操作系統(tǒng):ARM編程的方法與實(shí)踐[M].北京:電子工業(yè)出版社,2011.
[2] BIC L F, SHAW A C.操作系統(tǒng)原理[M].梁洪亮,譯.北京:清華大學(xué)出版社,2005.
[3] 馬志剛,劉文怡,凌偉,等.基于PCI和LVDS的高速數(shù)據(jù)存儲(chǔ)系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(4):80-83.
[4] 張良,曹社香.面向卷級(jí)存儲(chǔ)系統(tǒng)即時(shí)恢復(fù)的高效索引方法[J].電子技術(shù)應(yīng)用,2014,40(7):116-118.
[5] 龔雪容,劉根賢,生擁宏,等.基于Flash的關(guān)鍵變量容錯(cuò)存儲(chǔ)技術(shù)研究[J].電子技術(shù)應(yīng)用,2014,40(11):9-11,15.
[6] 徐涴砯,陳光,高孟茹,等.GPS船舶試航數(shù)據(jù)提取與存儲(chǔ)系統(tǒng)的開發(fā)[J].微型機(jī)與應(yīng)用,2013,32(23):86-89.
中圖分類號(hào):TP311.11
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.19358/j.issn.1674- 7720.2016.13.024
(收稿日期:2016-03-10)
作者簡介:
劉曉輝(1980-),男,本科,助理工程師,主要研究方向:電能表軟件開發(fā)維護(hù)。
李鵬(1986-),男,本科,助理工程師,主要研究方向:電能表軟件開發(fā)維護(hù)。
胡光娜(1984-),女,本科,助理工程師,主要研究方向:電力計(jì)量。
Research of watt-hour meter data storage system
Liu Xiaohui1, Li Peng1, Hu Guangna2
(1.Henan XJ Metering Co.,Ltd, Xuchang 461000, China; 2.Metrologecal Center of Jilin Province Power Company, Yanji 133000, China)
Abstract:In order to solve the problem that data field update watt-hour meter system prone to data corruption, this paper analyses the current watt-hour meter system of data storage, and puts forward an improvement proposal based on the problem of the current meter system data storage.Through the data link to create a free scalable data storage system, a data block storage mode is formed, thus the poblem that the new data can lead to the existing data address change can be solved. In this paper, the problem in current watt-hour meter data storage system is mentioned firstly, then a new data storage model is put forward, and the create, read, write, and delete operations of the new data storage model are introduced. The new data storage model is implemented on the watt-hour meter.
Key words:data store; data index; linked list; data structure