權(quán)震華,羅 亮(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽(yáng),621010)
智能電表是智能電網(wǎng)的智能終端,除了具備傳統(tǒng)電能表電能計(jì)量的基本功能以外,還具有用電信息存儲(chǔ)及處理、實(shí)時(shí)監(jiān)控、自動(dòng)控制、信息交互等功能。對(duì)于智能電表不斷的數(shù)據(jù)采集,其電表的精度不僅與檢測(cè)芯片的精度有關(guān),還與存儲(chǔ)方式有很大關(guān)系。存儲(chǔ)方式的選擇直接關(guān)系到電表的正常使用和測(cè)量精度,因此電表數(shù)據(jù)存儲(chǔ)的可靠性和準(zhǔn)確性至關(guān)重要。為保證智能電表中的主要數(shù)據(jù)和參數(shù)快速準(zhǔn)確地存儲(chǔ)且不丟失,需要開發(fā)能夠適合嵌入式方案采用的專用存儲(chǔ)系統(tǒng)。本文設(shè)計(jì)了一款基于EM773多功能電能計(jì)量芯片的無(wú)線智能電表,并針對(duì)其工作過程中實(shí)時(shí)采集電能數(shù)據(jù)存儲(chǔ)數(shù)量大,數(shù)據(jù)類型多,不便于隨時(shí)傳輸?shù)奶攸c(diǎn),設(shè)計(jì)了基于表格文件系統(tǒng)的本地存儲(chǔ)系統(tǒng),很好地滿足了智能電表大量本地電能計(jì)量數(shù)據(jù)快速準(zhǔn)確的存儲(chǔ)要求。
EM773是由NXP公司推出的一款基于ARM Cortex-M0內(nèi)核的低成本32位多功能電能計(jì)量IC,適用于8/16位智能儀表應(yīng)用。EM773的CPU工作頻率可達(dá)48MHz,片上集成32 KB的Flash存儲(chǔ)器和8KB的數(shù)據(jù)存儲(chǔ)器,提供I2C、UART和SPI3種總線接口,另具有3個(gè)通用定時(shí)器和1個(gè)計(jì)量引擎,可用通用I/O管腳25個(gè)。計(jì)量引擎的軟件驅(qū)動(dòng)程序也內(nèi)置于片內(nèi),通過調(diào)用固件中API函數(shù)即可實(shí)現(xiàn)所需計(jì)量功能。這使得用戶可以專注于應(yīng)用層軟件開發(fā),無(wú)需關(guān)注計(jì)量功能相關(guān)細(xì)節(jié),大大降低了開發(fā)難度和時(shí)間。
基于EM733的無(wú)線智能電表系統(tǒng)框圖如圖1所示。EM773是電表系統(tǒng)的處理核心,通過電能采樣模塊對(duì)檢測(cè)線路的電流和電壓進(jìn)行采樣,再通過內(nèi)置的計(jì)量引擎,經(jīng)過一系列的公式變換,最后得出電壓、電流、有功功率、基波無(wú)功功率、視在功率、基波視在功率、功率因素、基波功率因素、非基波視在功率、非有功功率和電流總諧波失真等電能計(jì)量數(shù)據(jù)。電表的顯示選用了由PCF8576作為主控的段式液晶,選用實(shí)時(shí)芯片RX8025提供實(shí)時(shí)的時(shí)間信息,選用CAT24C256作為外部擴(kuò)展存儲(chǔ)器,EM773通過I2C總線對(duì)它們進(jìn)行訪問。電表系統(tǒng)的計(jì)量數(shù)據(jù)通過SPI總線傳送給nRF24L01無(wú)線數(shù)據(jù)傳輸模塊,再通過2.4 GHz ISM頻段無(wú)線發(fā)送給上位機(jī)接收。電表系統(tǒng)的電源直接從檢測(cè)線路上取電,轉(zhuǎn)換后得到系統(tǒng)電路工作所需的12 V、5 V和3.3 V電源。
圖1 無(wú)線智能電表系統(tǒng)框圖
無(wú)線智能電表在工作過程中實(shí)時(shí)采集電能數(shù)據(jù),存儲(chǔ)數(shù)量大,數(shù)據(jù)類型多,而上位機(jī)不能也無(wú)需與其保持長(zhǎng)期的無(wú)線通訊。這就需要在智能電表本地創(chuàng)建一個(gè)規(guī)范化的存儲(chǔ)系統(tǒng)來(lái)保存數(shù)據(jù)。在上位機(jī)需要相關(guān)數(shù)據(jù)時(shí),由其對(duì)智能電表提出查詢請(qǐng)求,智能電表再將本地存儲(chǔ)的數(shù)據(jù)發(fā)送給上位機(jī)。
本設(shè)計(jì)中,針對(duì)智能電表的存儲(chǔ)需求,需要外擴(kuò)存儲(chǔ)器。經(jīng)分析和比較,選擇了256 Kbit的串行電可擦的可編程只讀存儲(chǔ)器CAT24C256,其32 KB的存儲(chǔ)容量和靈活的頁(yè)讀寫方式能很好的勝任智能電表的存儲(chǔ)需求。
CAT24C256的引腳如圖2所示。SCL和SDA分別是I2C總線的串行時(shí)鐘輸入端和串行數(shù)據(jù)/地址端,A0、A1和A2是用于多個(gè)同類器件級(jí)聯(lián)時(shí)設(shè)置器件地址的輸入端,WP是器件寫保護(hù)輸入端,VCC和VSS是器件的供電引腳。
圖2 CAT24C256引腳圖
CAT24C256內(nèi)部有512頁(yè),每一頁(yè)為64 B,任一單元的地址為15 bit,地址范圍為0000H~7FFFH。CAT24C256讀寫協(xié)議支持標(biāo)準(zhǔn)I2C協(xié)議,通過掛載在I2C總線上進(jìn)行讀寫。在遵循標(biāo)準(zhǔn)I2C協(xié)議的讀寫時(shí)序基礎(chǔ)上,CAT24C256增強(qiáng)了讀寫方式,具體寫操作支持寫字節(jié)和寫頁(yè)兩種寫入方式,讀操作支持當(dāng)前地址讀、隨機(jī)讀和讀串3種讀出方式,下面分別介紹各種讀寫方式的操作流程。
CAT24C256支持寫字節(jié)和寫頁(yè)兩種寫入方式。
(1)寫字節(jié)流程
首先向CAT24C256發(fā)送設(shè)備地址字并接到應(yīng)答信號(hào)后,需要發(fā)送兩個(gè)8 bit地址來(lái)選擇要寫數(shù)據(jù)的地址,CAT24C256接收到這個(gè)地址,應(yīng)答一個(gè)零信號(hào),然后根據(jù)時(shí)鐘寫8 bit數(shù)據(jù)到CAT24C256。存儲(chǔ)器接收到數(shù)據(jù)后返回一個(gè)應(yīng)答信號(hào)。
(2)寫頁(yè)流程
CAT24C256具有64 B作為一頁(yè)的寫頁(yè)功能,可以一次性寫入一頁(yè)。寫頁(yè)的初始化過程與寫字節(jié)的方法基本相同。不同的是寫入1 B后,微控制器不發(fā)停止?fàn)顟B(tài)命令,而是在應(yīng)答信號(hào)后,接著輸入63 B。每一個(gè)字節(jié)接收到后,CAT24C256輸出一個(gè)為零的應(yīng)答信號(hào)。因?yàn)橐豁?yè)只有64個(gè)單元,所以數(shù)據(jù)字的地址低6 bit接收到一個(gè)字節(jié)后會(huì)自動(dòng)加1,高位地址不變,即頁(yè)地址不變。當(dāng)內(nèi)部產(chǎn)生的地址到頁(yè)邊界時(shí),接下來(lái)的字節(jié)要放至該頁(yè)的開始。如果發(fā)送至CAT24C256的數(shù)據(jù)超過64 B,則最早寫的字節(jié)將被覆蓋。
CAT24C256支持3種讀出方式:立即地址讀、選擇讀和連續(xù)讀。這3種方式基本操作時(shí)序和寫數(shù)據(jù)一樣。
(1)立即地址讀
立即地址讀是直接讀取數(shù)據(jù),此時(shí)所讀到地址是最后的讀寫操作字節(jié)的地址加1后的地址。只要芯片有電源供給,最后的讀寫操作字節(jié)的地址就將一直保持。當(dāng)讀到CAT24C256的最后字節(jié)后則回到芯片最開始字節(jié)的位置。
(2)選擇讀
給CAT24C256任意一個(gè)地址,即可讀取出1 B的數(shù)據(jù)。
(3)連續(xù)讀
連續(xù)讀是從CAT24C256中讀取一串有效字節(jié),既可以是立即地址讀,也可以是選擇讀。微控制器每接收到一個(gè)字節(jié)后,回一個(gè)應(yīng)答信號(hào)。CAT24C256接收到應(yīng)答信號(hào),地址加1,接著輸出下一個(gè)字節(jié)。微控制器接收到數(shù)據(jù)后不回復(fù)應(yīng)答信號(hào)時(shí),即可停止讀取數(shù)據(jù)。
智能電表的存儲(chǔ)系統(tǒng)軟件設(shè)計(jì)可分為兩個(gè)層次,底層是基于CAT24C256的讀寫協(xié)議時(shí)序要求編寫的底層讀寫驅(qū)動(dòng)函數(shù),上層是針對(duì)電表存儲(chǔ)數(shù)據(jù)量大、數(shù)據(jù)類型多的特點(diǎn)而設(shè)計(jì)的表格文件系統(tǒng)。
(1)寫數(shù)據(jù)函數(shù)
由于在系統(tǒng)存儲(chǔ)過程中需要一次性存儲(chǔ)的數(shù)據(jù)不定,可能一次性寫入數(shù)百個(gè)字節(jié)的數(shù)據(jù),因此需要設(shè)計(jì)一個(gè)能一次寫入任意字節(jié)的函數(shù)。最簡(jiǎn)單的實(shí)現(xiàn)方式是按照寫字節(jié)方式,要寫入數(shù)百個(gè)字節(jié)就調(diào)用數(shù)百次字節(jié)寫函數(shù),但這樣每次都需發(fā)送器件地址信息響應(yīng)等,系統(tǒng)時(shí)間和資源消耗大。因而最終最底層寫函數(shù)選用寫頁(yè)方式來(lái)實(shí)現(xiàn),設(shè)計(jì)的寫數(shù)據(jù)函數(shù)流程圖如圖3所示。寫數(shù)據(jù)函數(shù)原型為:
Uint8 Memwrite (uint16 suba, uint8 *pdatabuf, uint16 num)其中,suba為存儲(chǔ)器寫地址,pdata_buf為數(shù)據(jù)緩沖區(qū)指針,num為寫入數(shù)據(jù)個(gè)數(shù)。
圖3 寫數(shù)據(jù)流程圖
(2)讀數(shù)據(jù)函數(shù)
在讀取數(shù)據(jù)時(shí),CAT24C256不存在物理扇區(qū)限制,可以使用底層讀串操作一次性讀取出任意字節(jié)的數(shù)據(jù)。寫數(shù)據(jù)函數(shù)原型為:
voidMemread (uint16 suba, uint8 *pdatabuf, uint16 num)其中,suba為存儲(chǔ)器讀地址,pdata_buf為數(shù)據(jù)緩沖區(qū)指針,num為讀取數(shù)據(jù)個(gè)數(shù)。
智能電表的表格文件系統(tǒng)是借用FAT32文件系統(tǒng)的思想,構(gòu)建了一個(gè)表格文件存儲(chǔ)系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了文件讀寫、創(chuàng)建、刪除等基本功能,可直接把內(nèi)存映射中的值存入EEPROM中,保證了浮點(diǎn)型、整形和字符型等各種類型的數(shù)據(jù)都不被改變。
表格文件系統(tǒng)將整個(gè)存儲(chǔ)區(qū)分為目錄區(qū)和數(shù)據(jù)區(qū)。目錄區(qū)總共占用320 B,一個(gè)目錄大小占用32 B,支持10個(gè)目錄。每個(gè)目錄包括:文件名、文件創(chuàng)建時(shí)間、文件修改時(shí)間、文件數(shù)據(jù)區(qū)起始地址以及文件水平格數(shù)目和豎直格數(shù)目等。目錄結(jié)構(gòu)體定義如下:
數(shù)據(jù)區(qū)主要存儲(chǔ)文件的數(shù)據(jù),數(shù)據(jù)管理都由文件目錄管理。整個(gè)數(shù)據(jù)區(qū)大小達(dá)到31 KB。
針對(duì)該文件系統(tǒng)構(gòu)建了操作基本函數(shù),其中主要使用到的函數(shù)包括:表格創(chuàng)建函數(shù)、表格打開函數(shù)、表格讀取函數(shù)、表格寫函數(shù)和表格關(guān)閉函數(shù),如表1所示。
表1 表格文件系統(tǒng)操作函數(shù)
其中,表格創(chuàng)建函數(shù)主要實(shí)現(xiàn)表格創(chuàng)建功能,需要提供文件名,創(chuàng)建的表格水平和豎直方向的大小以及單元格大小,其具體實(shí)現(xiàn)流程如圖4所示。表格寫函數(shù)和表格讀函數(shù)的實(shí)現(xiàn)機(jī)制完成相同,主要是把數(shù)據(jù)幀寫入文件的指定地址或者從文件中讀取出數(shù)據(jù)。表格寫函數(shù)的具體實(shí)現(xiàn)流程如圖5所示。
本文針對(duì)無(wú)線智能電表工作過程中實(shí)時(shí)采集電能數(shù)據(jù)存儲(chǔ)數(shù)量大、數(shù)據(jù)類型多、不便于隨時(shí)傳輸?shù)奶攸c(diǎn),設(shè)計(jì)了基于串行EEPROM的外部本地存儲(chǔ)系統(tǒng)?;贑AT24C256的讀寫工作特點(diǎn),為該存儲(chǔ)系統(tǒng)設(shè)計(jì)了底層讀寫驅(qū)動(dòng)函數(shù),能一次性讀寫數(shù)百個(gè)字節(jié),滿足了智能電表實(shí)時(shí)數(shù)據(jù)快速讀寫的要求;設(shè)計(jì)了表格文件系統(tǒng)和多個(gè)操作函數(shù),可對(duì)浮點(diǎn)型、整形、字符型等各種類型的數(shù)據(jù)實(shí)現(xiàn)準(zhǔn)確無(wú)誤的高效存儲(chǔ),有效滿足了智能電表大量本地電能計(jì)量數(shù)據(jù)快速準(zhǔn)確存儲(chǔ)的應(yīng)用要求。本文介紹的本地存儲(chǔ)系統(tǒng)方案對(duì)其他有較大數(shù)據(jù)量存儲(chǔ)要求的嵌入式應(yīng)用也具有較高的參考價(jià)值。
圖4 表格文件創(chuàng)建流程圖
圖5 表格文件讀寫流程圖
[1] 忻龍彪,王東,龍?jiān)谠?智能監(jiān)控電能表的設(shè)計(jì)與實(shí)現(xiàn)[J].儀器儀表裝置,2010:16-18.
[2] 靜恩波. 基于嵌入式系統(tǒng)的智能電表設(shè)計(jì)與研究[J]. 低壓電器 ,2011(3):.26-30.
[3] 馬莉娟.智能電網(wǎng)對(duì)智能電表的要求及發(fā)展的影響[J].通信電源技術(shù),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.