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