樓嘉宇 馬琪
摘 要: 介紹一個(gè)由數(shù)據(jù)采集終端和數(shù)據(jù)處理主機(jī)組成的遠(yuǎn)程電網(wǎng)電流數(shù)據(jù)采集系統(tǒng)設(shè)計(jì),采集終端對(duì)電網(wǎng)電流進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,通過GPRS/互聯(lián)網(wǎng)發(fā)送至云端的數(shù)據(jù)處理主機(jī),數(shù)據(jù)處理主機(jī)對(duì)數(shù)據(jù)接收及處理。數(shù)據(jù)采集終端由STM32完成對(duì)A/D采集和GPRS數(shù)據(jù)發(fā)送的控制。
關(guān)鍵詞: 電網(wǎng)電流數(shù)據(jù)采集; 互聯(lián)網(wǎng); 數(shù)據(jù)處理; 數(shù)據(jù)采集
中圖分類號(hào): TN99?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)05?0017?02
Design of remote current data acquisition system for power grid
LOU Jia?yu, MA Qi
(Microelectronics CAD Institute, Hangzhou Dianzi University, Hangzhou 310018, China)
Abstract: The design of a power?grid′s remote current data acquisition system consisting of data acquisition terminal and data processing host is introduced in this paper. The data acquisition terminal executes real?time data acquisition of power?grid current and transmits the data to the data processing host through GPRS/ Internet. The data processing host receives and processes the data. The chip STM32 is used in the data acquisition terminal to control A/D acquisition and GPRS transmission.
Keyword: current data acquisition of power grid; Internet; data processing; data acquisition
0 引 言
隨著計(jì)算機(jī)與集成電路的發(fā)展,遠(yuǎn)程數(shù)據(jù)采集向著遠(yuǎn)距離與智能化的方向發(fā)展,遠(yuǎn)程采集數(shù)據(jù)技術(shù)在國(guó)內(nèi)外得到了很多應(yīng)用,尤其在國(guó)外有著很多的研究成果,但由于工業(yè)需求不同,導(dǎo)致數(shù)據(jù)采集技術(shù)與形式有著眾多的方向,許多技術(shù)相對(duì)單一[1]。針對(duì)電網(wǎng)信號(hào)更精確的監(jiān)控需求,需要對(duì)電網(wǎng)波形進(jìn)行實(shí)時(shí)的采集,并傳輸?shù)皆贫说臄?shù)據(jù)處理主機(jī)上進(jìn)行數(shù)據(jù)儲(chǔ)存和分析。基于這種需求,本文設(shè)計(jì)了一個(gè)由數(shù)據(jù)采集終端和數(shù)據(jù)處理主機(jī)組成的遠(yuǎn)程電網(wǎng)電流采集系統(tǒng),數(shù)據(jù)采集終端以STM32芯片控制A/D芯片進(jìn)行電網(wǎng)電流數(shù)據(jù)采集,通過GPRS發(fā)送數(shù)據(jù)。數(shù)據(jù)處理主機(jī)接收數(shù)據(jù),也可以對(duì)數(shù)據(jù)采集終端進(jìn)行時(shí)間校準(zhǔn)、重啟以及改變觸發(fā)條件等操作[2]。
1 系統(tǒng)結(jié)構(gòu)
如圖1所示,遠(yuǎn)程采集系統(tǒng)在功能上包括數(shù)據(jù)采集、數(shù)據(jù)傳輸和數(shù)據(jù)處理,在結(jié)構(gòu)上則由數(shù)據(jù)采集終端來(lái)完成數(shù)據(jù)采集和數(shù)據(jù)傳輸,由數(shù)據(jù)處理主機(jī)完成數(shù)據(jù)處理。數(shù)據(jù)采集終端由STM32控制芯片、ADC、時(shí)鐘芯片、GPRS模塊、電流互感器等組成,將市電通過電流互感器接入電路中,經(jīng)ADC采集后將數(shù)據(jù)儲(chǔ)存在控制芯片的內(nèi)存中,時(shí)鐘芯片用于獲取數(shù)據(jù)采集時(shí)間,最后由GPRS模塊通過互聯(lián)網(wǎng)把數(shù)據(jù)傳輸?shù)綌?shù)據(jù)處理主機(jī)。數(shù)據(jù)的內(nèi)容包括數(shù)據(jù)采集觸發(fā)時(shí)間、市電電壓初相位以及經(jīng)過A/D轉(zhuǎn)換后的市電電流采樣數(shù)據(jù)。數(shù)據(jù)處理主機(jī)用于數(shù)據(jù)的接收、儲(chǔ)存以及電流電壓相位差的計(jì)算。
2 硬件設(shè)計(jì)
數(shù)據(jù)采集終端的硬件電路如圖2所示,STM32控制芯片選用STM32F103,ADC芯片選用MAX1110,時(shí)鐘芯片選用RX8025,GPRS模塊選用M590。市電電流通過電流互感器接入,經(jīng)過信號(hào)放大電路放大后接入ADC芯片采樣,并將采樣數(shù)據(jù)傳輸至主控芯片儲(chǔ)存。電壓處理電路將接入的正弦波電壓轉(zhuǎn)換成方波信號(hào)輸入至主控芯片。供電電路分別給主控芯片、ADC模塊、RTC時(shí)鐘模塊、GPRS通信模塊、SD卡儲(chǔ)存模塊供以不同的直流電壓。
STM32控制芯片通過對(duì)GPIO口的PB6、PB7引腳設(shè)置高低電平完成對(duì)時(shí)鐘芯片的初始化以及采樣觸發(fā)時(shí)間的讀取,通過對(duì)GPIO口PA4、PA5引腳設(shè)置高低電平以及發(fā)送控制量實(shí)現(xiàn)對(duì)ADC芯片的采樣控制,通過PB11、PA3、PA2控制GPRS模塊的開關(guān)機(jī)和數(shù)據(jù)收發(fā),通過PB5、PD2、PC8~PC12引腳控制SD卡的初始化和數(shù)據(jù)儲(chǔ)存[3]。
3 軟件設(shè)計(jì)
3.1 數(shù)據(jù)采集終端軟件設(shè)計(jì)
數(shù)據(jù)采集終端的軟件流程如圖3所示。程序的整體采用循環(huán)機(jī)制,程序進(jìn)行相關(guān)的初始化設(shè)置后進(jìn)入循環(huán)程序,同時(shí)開啟中斷服務(wù)以及看門狗程序。程序在循環(huán)內(nèi)運(yùn)行時(shí),如果有A/D定時(shí)器中斷、DMA中斷及SD卡拔出中斷產(chǎn)生時(shí),優(yōu)先處理中斷服務(wù),同時(shí)程序循環(huán)運(yùn)行過程不停進(jìn)行“喂狗”(即初始化看門狗程序的定時(shí)時(shí)間),當(dāng)發(fā)生意外,程序不在循環(huán)內(nèi)運(yùn)行時(shí),看門狗程序可以使STM32重新啟動(dòng),從而保證了系統(tǒng)的可靠性[4]。
(1) 電流數(shù)據(jù)采樣
程序初始化時(shí)通過設(shè)定定時(shí)器中斷時(shí)間設(shè)置了采樣率。STM3通過定時(shí)器T3中斷服務(wù)函數(shù)啟動(dòng)ADC芯片采樣電流信號(hào),采樣數(shù)據(jù)通過SPI接口采用DMA傳輸方式傳輸給STM32。DMA半滿中斷服務(wù)函數(shù)則將數(shù)據(jù)寫入STM32內(nèi)存中的取名為AD_Buffer的數(shù)組中。AD_Buffer數(shù)組可存放5×20個(gè)周波的電流數(shù)據(jù),每個(gè)周波包括有128個(gè)電流采樣點(diǎn)數(shù)據(jù)(采樣點(diǎn)數(shù)為[2N,]便于FFT變換)。
(2) 電壓初相位數(shù)據(jù)獲得
市電電壓經(jīng)過電路轉(zhuǎn)換輸入到STM32的信號(hào)為矩形波,對(duì)應(yīng)STM32輸入端口的外部中斷模式設(shè)置為下降沿中斷,根據(jù)從開始采樣到下降沿中斷之間的時(shí)間,可計(jì)算出電壓的初相位。
(3) SD卡初始化與數(shù)據(jù)存儲(chǔ)
程序循環(huán)中首先進(jìn)行SD卡初始化,初始化完成后其狀態(tài)為“TRUE”,當(dāng)程序運(yùn)行過程中若SD卡被拔出時(shí),其中斷服務(wù)函數(shù)會(huì)將其狀態(tài)改為“FALSE”。當(dāng)其狀態(tài)為TRUE時(shí),說(shuō)明初始化完成,自動(dòng)跳過初始化程序段;若被改為“FALSE”狀態(tài),程序運(yùn)行到這個(gè)地方時(shí)將不再跳過,將重新檢測(cè)和初始化。當(dāng)數(shù)據(jù)發(fā)送成功后,程序?qū)l(fā)送成功的數(shù)據(jù)儲(chǔ)存到SD卡,包括觸發(fā)時(shí)間,電壓初相位和電流采樣數(shù)據(jù),用于進(jìn)行數(shù)據(jù)備份。
(4) GPRS上線及數(shù)據(jù)發(fā)送
數(shù)據(jù)在發(fā)送之前需要保證GPRS的在線狀態(tài)。在系統(tǒng)初始化中啟動(dòng)GPRS模塊,在循環(huán)中則完成GPRS在線注冊(cè),采用TCP協(xié)議,先建立PPP連接,后建立TCP連接,并保持GPRS的在線狀態(tài)。因?yàn)殚L(zhǎng)時(shí)間沒有數(shù)據(jù)發(fā)送或接收GPRS模塊連接會(huì)自動(dòng)斷開,因此如果2 min內(nèi)沒有數(shù)據(jù)的傳輸則發(fā)送一個(gè)“心跳包”即一個(gè)字符“1”,以保證GPRS模塊不會(huì)自動(dòng)斷開;當(dāng)采樣數(shù)據(jù)的數(shù)量滿足發(fā)送條件時(shí),STM32將數(shù)據(jù)以AT指令格式通過UART傳輸至GPRS模塊,一個(gè)AT指令發(fā)送的數(shù)據(jù)為一個(gè)包,GPRS模塊M590每包不超過1 024 B,每包數(shù)據(jù)包括“采集終端ID+采集觸發(fā)時(shí)間+電壓初相位+電流采樣數(shù)據(jù)”[5]。
發(fā)送數(shù)據(jù)過程中,GPRS模塊不斷通過UART返回“返回值”至STM32內(nèi)開辟的串口緩沖區(qū),而STM32通過緩沖區(qū)的“返回值”判斷是否發(fā)送成功,是否需要重發(fā)。
3.2 數(shù)據(jù)處理主機(jī)軟件設(shè)計(jì)
數(shù)據(jù)處理主機(jī)軟件主要實(shí)現(xiàn)以下功能:
(1) 配置通信端口號(hào):端口號(hào)必須與數(shù)據(jù)采集終端發(fā)送鏈接請(qǐng)求的 ID號(hào)一致。
(2) 對(duì)數(shù)據(jù)采集終端進(jìn)行時(shí)間校正:通過TCP通道把當(dāng)前時(shí)間信息發(fā)送至數(shù)據(jù)采集終端,從而使數(shù)據(jù)采集終端獲得當(dāng)前的時(shí)間信息(年月日時(shí)分秒)。
(3) 數(shù)據(jù)的接收與處理:因?yàn)橛行奶拇嬖冢枰獙?duì)收到的數(shù)據(jù)進(jìn)行判斷,心跳包不寫入數(shù)據(jù)文件,只將有效數(shù)據(jù)寫入數(shù)據(jù)文件。
(4) 電流電壓相位差的計(jì)算,對(duì)采樣電流數(shù)據(jù)進(jìn)行快速傅里葉變換,通過基波分量可求得電流初相位,而數(shù)據(jù)采集終端傳來(lái)的數(shù)據(jù)中已包含了電壓初相位,電流初相位與電壓初相位之差得出相位差。
接收數(shù)據(jù)過程中,必須開辟足夠大的緩存區(qū),否則容易出現(xiàn)丟包的現(xiàn)象。
4 結(jié) 語(yǔ)
本文設(shè)計(jì)了一個(gè)基于GPRS的遠(yuǎn)程電網(wǎng)電流數(shù)據(jù)采集系統(tǒng),系統(tǒng)包括數(shù)據(jù)采集終端和數(shù)據(jù)處理主機(jī)兩部分。數(shù)據(jù)采集終端通過互感器實(shí)時(shí)采樣供電電網(wǎng)電流,將其轉(zhuǎn)換成數(shù)字信號(hào),經(jīng)過適當(dāng)?shù)臄?shù)據(jù)處理形成傳輸數(shù)據(jù)包格式,然后將數(shù)據(jù)包通過GPRS傳送給網(wǎng)絡(luò)端的數(shù)據(jù)處理主機(jī),并將數(shù)據(jù)處理主機(jī)發(fā)送的控制命令傳輸給數(shù)據(jù)采集模塊。數(shù)據(jù)處理主機(jī)將收集到的數(shù)據(jù)信息存儲(chǔ)于數(shù)據(jù)文件中以便用戶進(jìn)行波形顯示、數(shù)據(jù)查詢和分析。
參考文獻(xiàn)
[1] 劉博.基于GPRS的遠(yuǎn)程數(shù)據(jù)采集傳輸系統(tǒng)設(shè)計(jì)[D].大連:大連海事大學(xué),2008.
[2] 張曉剛.仿真駕駛模擬器數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].科技信息,2010,14(3):221?222.
[3] 李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航天航空大學(xué)出版社,2008.
[4] 王永虹,徐煒,郝立平.STM32系列ARM Cortex?M3微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[5] BENTHAM Jeremy. TCP/IP lean web servers for embedded systems [J]. CMP Books, 2003, 20(4): 134?140.
[6] 李秋雙,原明亭.基于STM32芯片的電能質(zhì)量在線檢測(cè)裝置的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2012,35(20):180?182.