基于GPRS的自來水流量監(jiān)測終端的設(shè)計(jì)
系統(tǒng)總體構(gòu)成
自來水流量遠(yuǎn)程監(jiān)測系統(tǒng)的結(jié)構(gòu)如圖1所示。系統(tǒng)由若干監(jiān)測終端、無線數(shù)據(jù)傳輸網(wǎng)絡(luò)和監(jiān)控中心三部分組成。其中,監(jiān)測終端安裝于各供水分區(qū)的監(jiān)測點(diǎn),及時(shí)將監(jiān)測到的流量數(shù)據(jù)通過GPRS網(wǎng)絡(luò)傳輸?shù)皆O(shè)在自來水公司的監(jiān)控中心,由中心對各分區(qū)的數(shù)據(jù)進(jìn)行分析,從而實(shí)現(xiàn)對各分區(qū)供水的科學(xué)管理。這里所說的供水分區(qū)不是一般的給水系統(tǒng)分區(qū)(并聯(lián)分區(qū)或串聯(lián)分區(qū)),而是在供水管網(wǎng)上安裝流量計(jì)將整個(gè)供水系統(tǒng)劃分成若干個(gè)供水區(qū)域,每個(gè)區(qū)域作為一個(gè)監(jiān)測點(diǎn),對管理區(qū)域內(nèi)流進(jìn)的自來水總量和實(shí)際銷售的水量進(jìn)行量化管理,以此來了解和掌握各區(qū)域內(nèi)的需水量、供銷差、漏失量、未收費(fèi)水量等情況。
圖1 系統(tǒng)結(jié)構(gòu)圖
其中,監(jiān)測終端應(yīng)實(shí)現(xiàn)下列功能:
(1)現(xiàn)場采集流量信息,包括瞬時(shí)流量、正向總量、反向總量、流量百分比、差值總量、流速等信息。
(2)具有遠(yuǎn)程通信功能。定時(shí)將采集的流量信息通過GPRS網(wǎng)絡(luò),上傳至監(jiān)控中心。
(3)監(jiān)測終端可以按監(jiān)控中心的指令完成校時(shí)。
(4)停電復(fù)電時(shí)間記錄。監(jiān)測流量計(jì)的供電,一旦停電立即記錄下停電時(shí)間,并報(bào)告監(jiān)控中心,隨即進(jìn)入睡眠模式;恢復(fù)供電時(shí),記錄來電時(shí)間,也上傳到中心。
(5)歷史數(shù)據(jù)記錄。具有一定的非易失性數(shù)據(jù)存儲區(qū),可在本地保存斷電/復(fù)電時(shí)間以及歷史數(shù)據(jù)。
(6)軟件在線升級。監(jiān)測終端預(yù)留升級接口,可在不改變硬件設(shè)計(jì)的情況下根據(jù)用戶的需要對軟件進(jìn)行升級,滿足不同用戶的需求。
監(jiān)測終端的硬件設(shè)計(jì)
監(jiān)測終端由單片機(jī)、GPRS DTU(包括SIM卡、天線等)、供電電路、實(shí)時(shí)時(shí)鐘、Flash存儲器以及數(shù)據(jù)采集設(shè)備組成,如圖2所示。其中,虛線框中是需要用硬件實(shí)現(xiàn)的部分。
圖2 監(jiān)測終端的硬件組成
1 PIC16F877A單片機(jī)
鑒于監(jiān)測終端設(shè)置在無人看管、環(huán)境較惡劣的地方,要求抗干擾能力強(qiáng)、性能可靠,采用了Microchip公司的PIC單片機(jī)中的PIC16F877A。
PIC16F877A單片機(jī)內(nèi)部有8K*14的Flash程序存儲器和368B的RAM數(shù)據(jù)存儲器;采用哈佛結(jié)構(gòu),數(shù)據(jù)線和指令線分離,取數(shù)據(jù)和取指令可以同時(shí)進(jìn)行,執(zhí)行效率高、速度快。
2 GPRS DTU
無線通信模塊采用成都眾山科技有限公司的ZSD2110 GPRS DTU。ZSD2110是一款使用GPRS進(jìn)行無線數(shù)據(jù)傳輸?shù)慕K端設(shè)備,支持PPP、TCP、UDP、ICMP等眾多復(fù)雜網(wǎng)絡(luò)協(xié)議,支持透明數(shù)據(jù)傳輸和用戶自由控制傳輸模式,同時(shí)支持點(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)、設(shè)備間、設(shè)備與中心間等各種不同的通信模式。
3 串行通信接口
從圖2中可看出,單片機(jī)采集數(shù)據(jù)以及跟DTU之間的通信都是通過串行接口,而PIC16F877A只有一個(gè)USART接口。這里采用分時(shí)復(fù)用的原則,通過一片4位總線開關(guān)芯片F(xiàn)ST3125在流量計(jì)與DTU之間切換,平時(shí)與流量計(jì)接通,采集數(shù)據(jù),上傳時(shí)間到時(shí),斷開與流量計(jì)的連接,接通DTU,上傳數(shù)據(jù)(必要時(shí)完成校時(shí))。
4 DS1302實(shí)時(shí)時(shí)鐘
實(shí)時(shí)時(shí)鐘用于提供系統(tǒng)采樣、定時(shí)上傳、記錄斷電/復(fù)電時(shí)間等操作的時(shí)間基準(zhǔn),是本系統(tǒng)不可缺少的一部分。本設(shè)計(jì)選用了DS1302實(shí)時(shí)時(shí)鐘芯片。
DS1302使用32.768kHz的外部晶振,該振蕩電路不需要外接任何電阻或電容,設(shè)計(jì)簡單。需要注意的是,在晶振的選擇上,只能選用負(fù)載電容為6pF的32.768kHz晶振,否則可能會導(dǎo)致晶振不能起振,DS1302不計(jì)時(shí)的問題。
5 SPI Flash存儲器
采用串行Flash作為外部存儲器,記錄歷史數(shù)據(jù)和斷電/復(fù)電時(shí)間。與以往的并行存儲器或鐵電存儲器相比,串行存儲器具有很大優(yōu)勢。并行存儲器存儲容量大,讀寫速度快,但是抗干擾能力差;鐵電存儲器采用串行接口,抗干擾能力強(qiáng),也具有很高的靈活性,可以單字節(jié)讀寫(不需要擦除,可直接改寫數(shù)據(jù)),但其存儲密度小,單位成本高,讀寫速度較慢。而本系統(tǒng)中采用的M25P16存儲器綜合了這二者的優(yōu)點(diǎn),不僅存儲容量大,讀寫速度快,而且抗干擾能力強(qiáng),占用MCU引腳資源少。
6 供電電路及掉電檢測
整個(gè)電路板上器件都工作在5V電壓下。
除了正常供電外,為保證在突然斷電的情況下,能及時(shí)記錄斷電時(shí)間,以備向監(jiān)控中心報(bào)告,還需要備用電源以及斷電檢測電路。本系統(tǒng)主電源采用UPS供電,可保證在交流電斷電的情況下仍能工作,另外從220V交流電直接接一電源作為掉電檢測電路的輸入,經(jīng)光耦隔離,連接到單片機(jī)的RB0引腳,斷電時(shí),觸發(fā)單片機(jī)的RB0外部中斷實(shí)現(xiàn)斷電保護(hù),讀取當(dāng)前DS1302的時(shí)間保存到Flash存儲器,并經(jīng)DTU上傳到監(jiān)控中心,然后使單片機(jī)進(jìn)入低功耗工作狀態(tài)?;謴?fù)供電時(shí),同樣要記錄復(fù)電時(shí)間并上傳。
監(jiān)測終端的軟件設(shè)計(jì)
在監(jiān)測終端的軟件設(shè)計(jì)中,采用模塊化設(shè)計(jì),根據(jù)功能將程序劃分為多個(gè)模塊分別設(shè)計(jì)。這種設(shè)計(jì)方法不僅使得程序結(jié)構(gòu)清晰,而且為以后新功能的擴(kuò)展以及程序的移植提供了便利,在調(diào)試過程中也便于對軟件故障的定位。
軟件在MPLAB IDE8.10環(huán)境下,采用PICC編譯器,用C語言實(shí)現(xiàn)。主程序流程如圖3所示。監(jiān)測終端上電后,先進(jìn)行初始化,然后進(jìn)入循環(huán),根據(jù)條件調(diào)用各個(gè)子程序。其中初始化包括各I/O端口的方向設(shè)置、SPI初始化、中斷標(biāo)志的設(shè)置等。寫數(shù)據(jù)到Flash時(shí),須先判斷整個(gè)Flash是否寫滿,惹是須先擦除才能寫入新數(shù)據(jù)。
圖3 主程序流程圖
在本系統(tǒng)中,單片機(jī)需處理多個(gè)任務(wù),而且有的任務(wù)又是隨機(jī)的,故MCU采用查詢和中斷相結(jié)合的工作方式。其中,定時(shí)上報(bào)采用查詢方式,如圖3所示,而斷電檢測、來電喚醒則通過PIC單片機(jī)的RB0電平變化中斷來完成。但是,在中斷服務(wù)程序中,只簡單的設(shè)置掉電/復(fù)電標(biāo)志,并不執(zhí)行其他復(fù)雜的操作,相應(yīng)的掉電/復(fù)電服務(wù)是在主程序中檢測到掉電/復(fù)電標(biāo)志后才執(zhí)行的。這是因?yàn)?strong>PIC16F877A單片機(jī)只有8層深度的硬件堆棧,在中斷里調(diào)用子程序極易出現(xiàn)堆棧溢出的情況。為了保證程序的可靠運(yùn)行,故將讀取DS1302的時(shí)間、轉(zhuǎn)入睡眠模式等操作都放在主程序中執(zhí)行,使中斷服務(wù)程序盡量短小,提高系統(tǒng)運(yùn)行的可靠性。