基于Modem通信的多用戶智能電能表系統(tǒng)的研究
0引言
隨著電子技術(shù)與通信技術(shù)的日益發(fā)展,電子式電能表由于其計(jì)量準(zhǔn)確,功能完備,可實(shí)現(xiàn)遠(yuǎn)
程抄表等優(yōu)點(diǎn),已逐漸被電力企業(yè)和(居民)用戶認(rèn)可和接受,而且提升了供電部門對用電的現(xiàn)代化管理。本文提出了一種基于Modem通信,使用ARM微控制器LPC2210作為控制中心的多用戶智能電表系統(tǒng)的研究方案,這是一種可實(shí)現(xiàn)遠(yuǎn)程控制及自動(dòng)結(jié)算的電表系統(tǒng),也為實(shí)現(xiàn)大規(guī)模自動(dòng)抄表提供了基礎(chǔ)。
1系統(tǒng)工作環(huán)境與總體結(jié)構(gòu)框圖
可實(shí)現(xiàn)遠(yuǎn)程通信的多用戶電表系統(tǒng)總體框圖如圖1所示。主要由多用戶電表單元、通信模塊、系統(tǒng)管理中心、銀行收費(fèi)系統(tǒng)組成。多用戶電表單元采用一個(gè)微處理器和多個(gè)計(jì)量芯片組成,不僅結(jié)構(gòu)相對簡單,而且大大降低了成本。微處理器是整個(gè)系統(tǒng)的核心部分,它一方面對多個(gè)計(jì)量芯片采集的電能數(shù)據(jù)進(jìn)行處理,另一方面作為嵌入式網(wǎng)關(guān),與Modem進(jìn)行連接以實(shí)現(xiàn)與上位機(jī)管理系統(tǒng)的通信。微處理器在收到管理系統(tǒng)的上傳命令時(shí),就會通過Modem電話線上傳數(shù)據(jù),管理系統(tǒng)對收到的數(shù)據(jù)進(jìn)行處理和分析;如果某用戶用電出現(xiàn)異常,管理系統(tǒng)在發(fā)出報(bào)警信號的同時(shí),向微處理器發(fā)送異常命令,由微處理器及其外圍電路共同對該用戶用電進(jìn)行控制。
2系統(tǒng)硬件設(shè)計(jì)
多用戶電表單元是整個(gè)系統(tǒng)的核心,由多個(gè)電壓通道輸入電路、多個(gè)雙電流通道輸入電路、多個(gè)電能計(jì)量芯片BL6501A、微控制器LPC2210、LCD、FLASH、SDRAM、EEPROM、報(bào)警器、73M2901Modem模塊、斷電控制模塊等部分組成。系統(tǒng)中采用32位LPC2210作為整個(gè)控制電路的中心,選擇合適的外圍電路,來實(shí)現(xiàn)電能的定時(shí)、實(shí)時(shí)采集和顯示,與上位機(jī)的遠(yuǎn)程通信,對用戶的供斷電控制和防竊電功能等。系統(tǒng)硬件結(jié)構(gòu)如圖2所示。
2.1 CPU模塊
選用LPC2210作為控制系統(tǒng)的核心,LPC2210是基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的16/32位ARM7TDMI-S CPU的微控制器,具有低成本、低功耗、高性能等優(yōu)點(diǎn)。LPC2210具有144管腳封裝,極低的功耗,16 KB片內(nèi)靜態(tài)RAM,2個(gè)32位定時(shí)器,8路10位ADC,PWM單元6路輸出,實(shí)時(shí)時(shí)鐘和看門狗,2個(gè)標(biāo)準(zhǔn)UART,高速I2C接口,2個(gè)SPI接口,通過配置總線可達(dá)76個(gè)通用I/O口(可承受5V電壓),通過片內(nèi)鎖相環(huán)可實(shí)現(xiàn)最大為60MHz的CPU操作頻率,有空閑和掉電兩種低功耗模式。
2.2計(jì)量模塊
為了提高工作可靠性和便于調(diào)試,本研究采用獨(dú)立的電能測量電路對各用戶的電能進(jìn)行分開測量。選用BL6501A電能計(jì)量芯片,各用戶的電能測量結(jié)果以脈沖形式從BL6501A的CF端輸出,然后經(jīng)I/O口送入LPC2210進(jìn)行集中處理。用LPC2210測量時(shí),只需對每個(gè)電能計(jì)量芯片產(chǎn)生的脈沖進(jìn)行計(jì)數(shù),再乘以脈沖常數(shù),即可測出各個(gè)用戶所用的實(shí)際電量。
2.2.1電能計(jì)量芯片BL6501A
單相雙電流采樣電能計(jì)量芯片BL6501A具有24腳雙列直插塑封裝,利用它可以實(shí)現(xiàn)單相反竊電功能,并在同一方向計(jì)量正向或負(fù)向功率,累計(jì)用電量。BL6501A有兩個(gè)電流采樣端,分別采樣火線和零線電流,當(dāng)兩電流誤差超過2.5%時(shí),表明有竊電行為或錯(cuò)誤接線,F(xiàn)AULT引腳發(fā)出報(bào)警指示信號,并按照兩個(gè)電流中大的一個(gè)電流值計(jì)量。BL6051的CF輸出較高頻率的脈沖,用于計(jì)量和計(jì)算機(jī)數(shù)據(jù)處理,F(xiàn)1和F2輸出較低頻率的脈沖,用于驅(qū)動(dòng)脈沖電機(jī),記錄用電量。BL6501A內(nèi)部電能計(jì)量信號流如圖3所示。
2.2.2多用戶電能脈沖的測量
研究中需要對多路電能脈沖進(jìn)行計(jì)量,由于LPC2210只有兩個(gè)內(nèi)部定時(shí)器/計(jì)數(shù)器,這對于要進(jìn)行多路脈沖采集和監(jiān)控的應(yīng)用場合顯然不夠。通常的計(jì)數(shù)器擴(kuò)展和軟件循環(huán)查詢的方法都有一定的局限性。本文提出一種可用于多用戶電能脈沖測量的方法,此方法是在一種邏輯算法的基礎(chǔ)上,可同時(shí)對多路電能脈沖的電平狀態(tài)進(jìn)行檢測和存儲,不需用到內(nèi)部定時(shí)器或擴(kuò)展計(jì)數(shù)器進(jìn)行脈沖計(jì)數(shù),以軟件功能取代大量的硬件電路具有較高的實(shí)用價(jià)值。
算法中對連續(xù)兩個(gè)測量周期的脈沖電平狀態(tài)進(jìn)行OR_XOR的邏輯運(yùn)算,如式(1)
式中,P表示運(yùn)算結(jié)果,fn表示脈沖電平的現(xiàn)在狀態(tài),fn-1表示前一測量周期的脈沖電平狀態(tài),“+”表示邏輯代數(shù)中的或運(yùn)算,“+”表示異或運(yùn)算。
下面以一用戶計(jì)量脈沖為例,運(yùn)算時(shí),脈沖電平現(xiàn)狀fn先與前一周期的電平狀態(tài)fn-1作或運(yùn)算,結(jié)果再與fn作異或運(yùn)算,得出的結(jié)果P決定是否要進(jìn)行電能脈沖計(jì)數(shù)和存儲,結(jié)果P與脈沖計(jì)數(shù)關(guān)系如表1。
此算法是以檢測脈沖的下降沿來作為電能脈沖測量的依據(jù),在軟件中分別定義LPC2210存儲器中不同的地址,用來存放脈沖上一周期狀態(tài)、現(xiàn)在狀態(tài)及結(jié)果P。當(dāng)P=1時(shí),檢測到脈沖的下降沿,對某路脈沖進(jìn)行計(jì)數(shù),并將當(dāng)前P值保存到相應(yīng)的存儲單元中進(jìn)行累加,最終得出該用戶的用電量。對多用戶電能脈沖的測量,因LPC2210有多個(gè)I/O口,可通過計(jì)量芯片直接輸入多個(gè)用戶的電能脈沖,用OR_XOR的邏輯運(yùn)算按字節(jié)同時(shí)處理8路、16路、32路甚至更多路脈沖。
對某一段定時(shí)時(shí)間電能的測量,可變?yōu)閷@段時(shí)間內(nèi)轉(zhuǎn)換的電脈沖數(shù),在軟件中設(shè)置脈沖常數(shù)C=3200 imp/kWh,然后可由LCD循環(huán)顯示各個(gè)用戶某段時(shí)間的用電量。假設(shè)某用戶用電功率為5 kW,則一小時(shí)用電5 kWh,一秒鐘用電5kWh/3600,再與脈沖常數(shù)C相乘得出脈沖頻率為4.44 Hz,脈沖周期為225 ms,遠(yuǎn)遠(yuǎn)超過LPC2210的指令周期,則此檢測脈沖下降沿的計(jì)數(shù)方法準(zhǔn)確可靠,不會出現(xiàn)漏計(jì)或多計(jì)的現(xiàn)象。
2.3嵌入式Modem模塊
系統(tǒng)中與LPC2210連接的Modem采用嵌入式MODEM芯片73M2901,使用賀氏標(biāo)準(zhǔn)AT命令呼叫和應(yīng)答,實(shí)現(xiàn)與遠(yuǎn)程系統(tǒng)的通信。由于LPC2210微控制器的UART1口帶有完整的調(diào)制解調(diào)接口,所以可將73M2901直接連接到LPC2210的UART1串口上,進(jìn)行數(shù)據(jù)傳輸工作,接口結(jié)構(gòu)如圖4所示。
LPC2210直接采集數(shù)字信號,通過UART1串口送給本端的嵌入式Modem芯片73M2901,73M2901將數(shù)字信號調(diào)制成音頻模擬信號在電話線上傳輸,再經(jīng)過中心站標(biāo)準(zhǔn)Modem調(diào)制成數(shù)字信號送往上位機(jī)管理系統(tǒng)。
2.4其它電路模塊
系統(tǒng)為多用戶電表系統(tǒng),在寫用戶電量時(shí),需要經(jīng)常改寫電量(如增加0.1度改寫一次電量),因此采用擦寫次數(shù)較高、存儲容量較大的EEPROM。研究中數(shù)據(jù)存儲模塊選用帶接口的串行非易失存儲器FM24C16A。用來存儲各用戶的電量數(shù)據(jù)信息和各用戶的計(jì)量模塊的地址,保證采集信息的正確無誤。
電壓輸入通道采用電阻分壓網(wǎng)絡(luò)提供電壓信號,電流通道有兩個(gè)電流輸入端,然而,每一時(shí)刻只有一個(gè)通道用來電能計(jì)量。研究中選擇電流互感器作為電流傳感器。
斷電控制電路主要由跳閘繼電器組成,當(dāng)用戶拖欠電費(fèi)或用電需量持續(xù)超出需量限定一定時(shí)間后,上位機(jī)管理系統(tǒng)將通過Modem發(fā)送斷電指令給LPC2210,然后LPC2210將輸出信號,使繼電器動(dòng)作,切斷供電電源。
3系統(tǒng)軟件設(shè)計(jì)
3.1上位機(jī)軟件設(shè)計(jì)
上位機(jī)軟件用VC++編程,系統(tǒng)中上位機(jī)先完成標(biāo)準(zhǔn)Modem的初始化,需要數(shù)據(jù)傳輸時(shí),上位機(jī)通過Modem撥號建立數(shù)據(jù)傳輸鏈路,然后發(fā)AT控制指令判斷是進(jìn)行異常處理還是接收電能數(shù)據(jù),完成任務(wù)后掛斷電話。此上位機(jī)管理軟件系統(tǒng)的功能框圖如圖5所示。
3.2下位機(jī)軟件設(shè)計(jì)
本文通過移植源碼公開的嵌入式操作系統(tǒng)μC/OS-Ⅱ來管理整個(gè)系統(tǒng)的運(yùn)行,它具有多任務(wù)性、實(shí)時(shí)性等優(yōu)點(diǎn)。要構(gòu)建整個(gè)下位機(jī)軟件框架,首先對μC/OS-Ⅱ和各硬件部分進(jìn)行初始化和參數(shù)設(shè)置,然后是多任務(wù)的創(chuàng)建,對整個(gè)下位機(jī)實(shí)現(xiàn)的功能進(jìn)行任務(wù)分割,并根據(jù)實(shí)際需要為各個(gè)任務(wù)分配優(yōu)先級,各個(gè)任務(wù)是通過搶占CPU的使用權(quán)來運(yùn)行的,它們之間的通信通過信號量、郵箱、消息隊(duì)列等機(jī)制來完成。多任務(wù)模塊的劃分如圖6所示。
在用μC/OS-Ⅱ作為內(nèi)核來編寫整個(gè)下位機(jī)系統(tǒng)的應(yīng)用軟件之前,先完成μC/OS-Ⅱ在LPC2210的移植工作,要根據(jù)LPC2210的特點(diǎn)合理地修改μC/OS-Ⅱ的3個(gè)與LPC2210有關(guān)的文件:OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C,其中包括OSCtxSW(),OSIntCtxSW(),OSTaskStkInit(),OSStartHighRdy(),OSTickISR()等重要文件。
主要是將文件中寄存器的初值進(jìn)行修改,另外還須編寫配置文件、參數(shù)等。為了很好地將系統(tǒng)中的實(shí)時(shí)采集和定時(shí)采集區(qū)分,并且能體現(xiàn)出實(shí)時(shí)采集優(yōu)先級高的特點(diǎn),研究中采用消息隊(duì)列來實(shí)現(xiàn)。
4結(jié)語
多用戶智能電能表系統(tǒng)采用32位ARM芯片作為控制系統(tǒng)的核心,大大提高了系統(tǒng)的數(shù)據(jù)處理能力,并且微控制器通過Modem與上位機(jī)管理系統(tǒng)通信,可實(shí)現(xiàn)供電系統(tǒng)同時(shí)對多個(gè)用戶用電的智能化管理,特別對于公寓用電及單元用電的集中管理其優(yōu)點(diǎn)尤為突出,目前在許多地方已得到廣泛的應(yīng)用。利用提供的各種系統(tǒng)調(diào)用以及任務(wù)間的通訊機(jī)制,使多任務(wù)設(shè)計(jì)得以簡化并保證了系統(tǒng)行為的實(shí)時(shí)性,具有很好的應(yīng)用前景。