權震華,羅 亮(西南科技大學 信息工程學院,四川 綿陽,621010)
智能電表是智能電網的智能終端,除了具備傳統電能表電能計量的基本功能以外,還具有用電信息存儲及處理、實時監控、自動控制、信息交互等功能。對于智能電表不斷的數據采集,其電表的精度不僅與檢測芯片的精度有關,還與存儲方式有很大關系。存儲方式的選擇直接關系到電表的正常使用和測量精度,因此電表數據存儲的可靠性和準確性至關重要。為保證智能電表中的主要數據和參數快速準確地存儲且不丟失,需要開發能夠適合嵌入式方案采用的專用存儲系統。本文設計了一款基于EM773多功能電能計量芯片的無線智能電表,并針對其工作過程中實時采集電能數據存儲數量大,數據類型多,不便于隨時傳輸的特點,設計了基于表格文件系統的本地存儲系統,很好地滿足了智能電表大量本地電能計量數據快速準確的存儲要求。
EM773是由NXP公司推出的一款基于ARM Cortex-M0內核的低成本32位多功能電能計量IC,適用于8/16位智能儀表應用。EM773的CPU工作頻率可達48MHz,片上集成32 KB的Flash存儲器和8KB的數據存儲器,提供I2C、UART和SPI3種總線接口,另具有3個通用定時器和1個計量引擎,可用通用I/O管腳25個。計量引擎的軟件驅動程序也內置于片內,通過調用固件中API函數即可實現所需計量功能。這使得用戶可以專注于應用層軟件開發,無需關注計量功能相關細節,大大降低了開發難度和時間。
基于EM733的無線智能電表系統框圖如圖1所示。EM773是電表系統的處理核心,通過電能采樣模塊對檢測線路的電流和電壓進行采樣,再通過內置的計量引擎,經過一系列的公式變換,最后得出電壓、電流、有功功率、基波無功功率、視在功率、基波視在功率、功率因素、基波功率因素、非基波視在功率、非有功功率和電流總諧波失真等電能計量數據。電表的顯示選用了由PCF8576作為主控的段式液晶,選用實時芯片RX8025提供實時的時間信息,選用CAT24C256作為外部擴展存儲器,EM773通過I2C總線對它們進行訪問。電表系統的計量數據通過SPI總線傳送給nRF24L01無線數據傳輸模塊,再通過2.4 GHz ISM頻段無線發送給上位機接收。電表系統的電源直接從檢測線路上取電,轉換后得到系統電路工作所需的12 V、5 V和3.3 V電源。

圖1 無線智能電表系統框圖
無線智能電表在工作過程中實時采集電能數據,存儲數量大,數據類型多,而上位機不能也無需與其保持長期的無線通訊。這就需要在智能電表本地創建一個規范化的存儲系統來保存數據。在上位機需要相關數據時,由其對智能電表提出查詢請求,智能電表再將本地存儲的數據發送給上位機。
本設計中,針對智能電表的存儲需求,需要外擴存儲器。經分析和比較,選擇了256 Kbit的串行電可擦的可編程只讀存儲器CAT24C256,其32 KB的存儲容量和靈活的頁讀寫方式能很好的勝任智能電表的存儲需求。
CAT24C256的引腳如圖2所示。SCL和SDA分別是I2C總線的串行時鐘輸入端和串行數據/地址端,A0、A1和A2是用于多個同類器件級聯時設置器件地址的輸入端,WP是器件寫保護輸入端,VCC和VSS是器件的供電引腳。

圖2 CAT24C256引腳圖
CAT24C256內部有512頁,每一頁為64 B,任一單元的地址為15 bit,地址范圍為0000H~7FFFH。CAT24C256讀寫協議支持標準I2C協議,通過掛載在I2C總線上進行讀寫。在遵循標準I2C協議的讀寫時序基礎上,CAT24C256增強了讀寫方式,具體寫操作支持寫字節和寫頁兩種寫入方式,讀操作支持當前地址讀、隨機讀和讀串3種讀出方式,下面分別介紹各種讀寫方式的操作流程。
CAT24C256支持寫字節和寫頁兩種寫入方式。
(1)寫字節流程
首先向CAT24C256發送設備地址字并接到應答信號后,需要發送兩個8 bit地址來選擇要寫數據的地址,CAT24C256接收到這個地址,應答一個零信號,然后根據時鐘寫8 bit數據到CAT24C256。存儲器接收到數據后返回一個應答信號。
(2)寫頁流程
CAT24C256具有64 B作為一頁的寫頁功能,可以一次性寫入一頁。寫頁的初始化過程與寫字節的方法基本相同。不同的是寫入1 B后,微控制器不發停止狀態命令,而是在應答信號后,接著輸入63 B。每一個字節接收到后,CAT24C256輸出一個為零的應答信號。因為一頁只有64個單元,所以數據字的地址低6 bit接收到一個字節后會自動加1,高位地址不變,即頁地址不變。當內部產生的地址到頁邊界時,接下來的字節要放至該頁的開始。如果發送至CAT24C256的數據超過64 B,則最早寫的字節將被覆蓋。
CAT24C256支持3種讀出方式:立即地址讀、選擇讀和連續讀。這3種方式基本操作時序和寫數據一樣。
(1)立即地址讀
立即地址讀是直接讀取數據,此時所讀到地址是最后的讀寫操作字節的地址加1后的地址。只要芯片有電源供給,最后的讀寫操作字節的地址就將一直保持。當讀到CAT24C256的最后字節后則回到芯片最開始字節的位置。
(2)選擇讀
給CAT24C256任意一個地址,即可讀取出1 B的數據。
(3)連續讀
連續讀是從CAT24C256中讀取一串有效字節,既可以是立即地址讀,也可以是選擇讀。微控制器每接收到一個字節后,回一個應答信號。CAT24C256接收到應答信號,地址加1,接著輸出下一個字節。微控制器接收到數據后不回復應答信號時,即可停止讀取數據。
智能電表的存儲系統軟件設計可分為兩個層次,底層是基于CAT24C256的讀寫協議時序要求編寫的底層讀寫驅動函數,上層是針對電表存儲數據量大、數據類型多的特點而設計的表格文件系統。
(1)寫數據函數
由于在系統存儲過程中需要一次性存儲的數據不定,可能一次性寫入數百個字節的數據,因此需要設計一個能一次寫入任意字節的函數。最簡單的實現方式是按照寫字節方式,要寫入數百個字節就調用數百次字節寫函數,但這樣每次都需發送器件地址信息響應等,系統時間和資源消耗大。因而最終最底層寫函數選用寫頁方式來實現,設計的寫數據函數流程圖如圖3所示。寫數據函數原型為:
Uint8 Memwrite (uint16 suba, uint8 *pdatabuf, uint16 num)其中,suba為存儲器寫地址,pdata_buf為數據緩沖區指針,num為寫入數據個數。

圖3 寫數據流程圖
(2)讀數據函數
在讀取數據時,CAT24C256不存在物理扇區限制,可以使用底層讀串操作一次性讀取出任意字節的數據。寫數據函數原型為:
voidMemread (uint16 suba, uint8 *pdatabuf, uint16 num)其中,suba為存儲器讀地址,pdata_buf為數據緩沖區指針,num為讀取數據個數。
智能電表的表格文件系統是借用FAT32文件系統的思想,構建了一個表格文件存儲系統。該系統實現了文件讀寫、創建、刪除等基本功能,可直接把內存映射中的值存入EEPROM中,保證了浮點型、整形和字符型等各種類型的數據都不被改變。
表格文件系統將整個存儲區分為目錄區和數據區。目錄區總共占用320 B,一個目錄大小占用32 B,支持10個目錄。每個目錄包括:文件名、文件創建時間、文件修改時間、文件數據區起始地址以及文件水平格數目和豎直格數目等。目錄結構體定義如下:

數據區主要存儲文件的數據,數據管理都由文件目錄管理。整個數據區大小達到31 KB。
針對該文件系統構建了操作基本函數,其中主要使用到的函數包括:表格創建函數、表格打開函數、表格讀取函數、表格寫函數和表格關閉函數,如表1所示。

表1 表格文件系統操作函數
其中,表格創建函數主要實現表格創建功能,需要提供文件名,創建的表格水平和豎直方向的大小以及單元格大小,其具體實現流程如圖4所示。表格寫函數和表格讀函數的實現機制完成相同,主要是把數據幀寫入文件的指定地址或者從文件中讀取出數據。表格寫函數的具體實現流程如圖5所示。
本文針對無線智能電表工作過程中實時采集電能數據存儲數量大、數據類型多、不便于隨時傳輸的特點,設計了基于串行EEPROM的外部本地存儲系統。基于CAT24C256的讀寫工作特點,為該存儲系統設計了底層讀寫驅動函數,能一次性讀寫數百個字節,滿足了智能電表實時數據快速讀寫的要求;設計了表格文件系統和多個操作函數,可對浮點型、整形、字符型等各種類型的數據實現準確無誤的高效存儲,有效滿足了智能電表大量本地電能計量數據快速準確存儲的應用要求。本文介紹的本地存儲系統方案對其他有較大數據量存儲要求的嵌入式應用也具有較高的參考價值。

圖4 表格文件創建流程圖

圖5 表格文件讀寫流程圖
[1] 忻龍彪,王東,龍在云.智能監控電能表的設計與實現[J].儀器儀表裝置,2010:16-18.
[2] 靜恩波. 基于嵌入式系統的智能電表設計與研究[J]. 低壓電器 ,2011(3):.26-30.
[3] 馬莉娟.智能電網對智能電表的要求及發展的影響[J].通信電源技術,2012,29(4): 91-92.
[4] NXP Semiconductors Inc. EM773Energy metering IC objective data sheet, Rev. 1[Z]. 2010.
[5]. Catalyst Semiconductor Inc, CAT24C256 data sheet, Rev.D[Z].2007.