《電子技術應用》
您所在的位置:首頁 > 電源技術 > 設計應用 > 電能表系統(tǒng)數據存儲的研究
電能表系統(tǒng)數據存儲的研究
2016年微型機與應用第13期
劉曉輝1,李鵬1,,胡光娜2
(1.河南許繼儀表有限公司,,河南 許昌461000; 2.國網吉林省電力有限公司延邊供電公司,,吉林 延吉 133000)
摘要: 為了解決電能表系統(tǒng)數據現場升級程序容易出現數據混亂的問題,分析了目前電能表系統(tǒng)數據存儲的方式,,針對目前電能表系統(tǒng)數據存儲的問題提出了改善方案,。通過數據鏈表創(chuàng)造出一個可以自由伸縮的數據存儲系統(tǒng),形成了以數據塊為存儲單元的存儲模式,,解決了電能表系統(tǒng)中新增加數據會導致現有數據地址改變的問題,。文章先從目前電能表系統(tǒng)數據存儲的問題說起,隨后提出了新的數據存儲模型,,并一一介紹了新數據存儲模型的創(chuàng)建,、讀取、寫入及刪除等操作,,并在電能表上成功實現了新數據存儲模型,。
Abstract:
Key words :

  劉曉輝1,李鵬1,,胡光娜2

 ?。?.河南許繼儀表有限公司,河南 許昌461000,; 2.國網吉林省電力有限公司延邊供電公司,,吉林 延吉 133000)

  摘要:為了解決電能表系統(tǒng)數據現場升級程序容易出現數據混亂的問題,分析了目前電能表系統(tǒng)數據存儲的方式,,針對目前電能表系統(tǒng)數據存儲的問題提出了改善方案,。通過數據鏈表創(chuàng)造出一個可以自由伸縮的數據存儲系統(tǒng),形成了以數據塊為存儲單元的存儲模式,,解決了電能表系統(tǒng)中新增加數據會導致現有數據地址改變的問題,。文章先從目前電能表系統(tǒng)數據存儲的問題說起,隨后提出了新的數據存儲模型,,并一一介紹了新數據存儲模型的創(chuàng)建,、讀取、寫入及刪除等操作,,并在電能表上成功實現了新數據存儲模型,。

  關鍵詞:數據存儲;數據索引,;鏈表,;數據結構

0引言

  在目前很多電能表系統(tǒng)中,,數據存儲都是順序存儲模式,導致現場升級完程序后時常會有數據混亂問題出現,,究其原因是因為開發(fā)人員新增加數據,,但沒有按順序添加到數據列的最后面而導致。現在很多的電能表系統(tǒng)都是以EEPROM作為擴展的外部數據存儲器,,單相電能表一般采用32 KB的EEPROM存儲器來進行數據存儲,,國網智能電表系統(tǒng)中的數據都是以數據標識符的形式定義,在EEPROM中存儲時通常都以順序方式進行數據排列,。這種存儲方法形式比較單一,,數據必須按照固定的格式進行順序排序,一旦有新的數據添加,,這個新數據必須排在數據列的最后面,,否則就會影響其他數據在EEPROM中的地址,導致電能表升級程序后數據出現異常,。本文提出一種新的數據存儲方法,解決了新增數據必須在數據列的最后面添加的弊端,,各個業(yè)務模塊都可以在數據列任意位置添加新數據而不用擔心電能表升級程序后數據異常的問題,。

1數據存儲的原理

  本文提出的這種數據存儲的原理基于鏈表[1]的數據處理方法,電能表內的數據采用雙向鏈表的形式進行組合,,業(yè)務模塊需要添加新數據時,,只需要將新數據頭指針指向前一個數據,尾指針指向后一項數據,,整個數據鏈不會受到破壞[2],。數據存儲原理如圖1。

  

001.jpg

2數據的創(chuàng)建和刪除

  根據上述原理,需要對EEPROM存儲器進行整體格式化,,即對存儲空間進行分塊并標記,,如圖2所示。分塊就是將32 KB的存儲空間以16 B為1塊劃分,,那么就可以分成2 048個塊,,用前面16個塊(2 048 bit位)來標記每一塊的使用情況,每一個bit位值為1代表所指向的塊處于使用狀態(tài),,bit位值為0代表所指向的塊處于空閑狀態(tài)[3],。

  2.1數據的創(chuàng)建

002.jpg

  創(chuàng)建一個數據就必須有一個總的數據索引FileIndex結構對象,這個數據索引要實現的功能就是能通過它找到EEPROM中存放的每一個數據,,那么這個FileIndex結構定義就需要有每個數據的地址映射,。由數據索引[46]開圖2存儲空間分塊及標記示意圖始,數據索引中包含第一個數據的起始地址,,由此地址可以訪問到第一個數據,。然后由數據結構struct FILE中的數據指針pFileNext指向下一個數據的地址,,數據結構FILE中的數據指針pData則指向本數據區(qū)域(數據區(qū)域就是用來真正存放數據的EEPROM地址),依次遞推,,查找每一個數據,,比較數據與要創(chuàng)建的新數據是否不同(通常采用數據標識符區(qū)分),不同則從存儲空間中查找空閑塊分配給該新數據使用,,相同則不處理,。創(chuàng)建數據的時序圖如圖3。

  

003.jpg

  2.2數據的刪除

  數據的刪除與數據的創(chuàng)建過程很相似,。首先讀出EEPROM中存放的FileIndex結構對象,,由其中的數據指針找到第一個數據,判斷數據結構中的數據名與要刪除的數據名是否一致,,一致則刪除數據結構中數據塊指針并釋放存儲空間,;否則由數據結構中的下一個數據指針讀出下一個數據進行數據名比較,依次遞推,,直到找到要刪除的數據為止,。釋放存儲空間需要將釋放的數據塊標記置為空閑狀態(tài),以便創(chuàng)建新數據時使用,。數據刪除時序圖如圖4,。

004.jpg

3數據的讀寫操作

  在完成數據的創(chuàng)建工作之后,就可以通過數據名對數據進行讀寫操作,。

  3.1數據的讀取

  數據的讀取是通過讀取EEPROM中的FileIndex結構對象,,由讀出的FileIndex對象里的數據指針找到第1個數據的。比較數據的數據名與要讀取的數據名是否相同,,如果相同則通過指向數據域的指針pData把要訪問的EEPROM中數據讀出來,;不同則通過數據結構中的下一個數據指針pFileNext讀出第2個數據,然后繼續(xù)比較數據名是否一樣,。以此遞推,,直到找到與要讀取的數據名一致的數據為止,圖5為讀數據的實現過程,。

005.jpg

  3.2數據的寫入

  寫數據的操作過程與讀數據的過程非常相似,,也是通過讀數據索引FileIndex找到第一個數據,然后比較數據名是否一致,,直到找到數據名匹配的數據為止,,根據數據結構中的數據域指針pData把數據存儲到EEPROM中對應地址中去,實現了按數據名寫數據的操作,,如圖6所示,。  

006.jpg

4結束語

  本文介紹的數據存儲結構,數據的創(chuàng)建和刪除不會影響其他數據項,,各個業(yè)務模塊在處理新數據時只需將新數據添加到業(yè)務模塊處理的數據塊中,,不會影響其他業(yè)務模塊的數據。該數據存儲系統(tǒng)已經在單相智能表中實現及應用,,解決了因新增數據而導致其他數據地址發(fā)生變化的問題,,從而避免了因現場升級程序而電能表數據混亂的發(fā)生。

  參考文獻

 ?。?] 李無言.一步步寫嵌入式操作系統(tǒng):ARM編程的方法與實踐[M].北京:電子工業(yè)出版社,,2011.

  [2] BIC L F, SHAW A C.操作系統(tǒng)原理[M].梁洪亮,,譯.北京:清華大學出版社,,2005.

  [3] 馬志剛,劉文怡,凌偉,,等.基于PCI和LVDS的高速數據存儲系統(tǒng)的設計[J].電子技術應用,2014,40(4):8083.

 ?。?] 張良,曹社香.面向卷級存儲系統(tǒng)即時恢復的高效索引方法[J].電子技術應用,2014,40(7):116118.

  [5] 龔雪容,劉根賢,生擁宏,,等.基于Flash的關鍵變量容錯存儲技術研究[J].電子技術應用,2014,40(11):911,15.

 ?。?] 徐涴砯,陳光,高孟茹,等.GPS船舶試航數據提取與存儲系統(tǒng)的開發(fā)[J].微型機與應用,2013,32(23):8689.


此內容為AET網站原創(chuàng),,未經授權禁止轉載,。