摘 要: 設(shè)計了一種基于C/S和B/S混合結(jié)構(gòu)的水表遠程抄表系統(tǒng),以GPRS網(wǎng)絡(luò)和Internet網(wǎng)絡(luò)為通道,實現(xiàn)水表系統(tǒng)的遠程數(shù)據(jù)采集和傳輸,同時給出了一種基于Web集群和數(shù)據(jù)庫集群的負載均衡方案。另外,設(shè)計了一款基于Android平臺的抄表機抄表軟件。該軟件具有二維碼掃描、GPS定位/地圖導(dǎo)航、拍照以及GPRS/WiFi通信等功能。整個系統(tǒng)采用Internet編程、多線程、數(shù)據(jù)庫管理等技術(shù),采用模塊化、結(jié)構(gòu)化的程序設(shè)計思想。系統(tǒng)完成后能夠解決傳統(tǒng)人工入戶抄表帶來的各種弊端,降低供水部門的管理成本,提高用水管理水平和服務(wù)質(zhì)量,實際運行表明該系統(tǒng)通信可靠,實時性好。
關(guān)鍵詞: 自動抄表;無線分組業(yè)務(wù);網(wǎng)絡(luò)編程;多線程技術(shù);Web集群服務(wù)器;負載均衡
隨著電子技術(shù)、計算機技術(shù)以及網(wǎng)絡(luò)通信技術(shù)的快速發(fā)展,供水系統(tǒng)的自動化程度也在不斷地提高,自動抄表已成為各大供水公司所關(guān)注的一個重要課題。目前國內(nèi)的自動抄表系統(tǒng)一般都采用兩層結(jié)構(gòu),底層(集中器與采集器之間)一般利用低壓載波或RS-485總線的通信方式[1-2]。上層(集中器與管理中心之間)的通信根據(jù)信道介質(zhì)不同有電話線、電力線載波、光纖和無線等多種方式,并且以有線的方式居多。但在很多情況下,對于供水公司來說,水表測點分散,地理位置復(fù)雜,實施布線比較困難。
目前基于公共互聯(lián)網(wǎng)遠程監(jiān)控技術(shù)的研究與應(yīng)用在許多領(lǐng)域都引起了關(guān)注,互聯(lián)網(wǎng)已經(jīng)滲透到社會的每一個角落,而通過GPRS網(wǎng)絡(luò)系統(tǒng)[3],設(shè)備可采用Internet的技術(shù)標準與服務(wù)器交換數(shù)據(jù),實現(xiàn)與國際互聯(lián)網(wǎng)的連接。
然而基于供水系統(tǒng)自身的特點,采用自動抄表而沒有人為去監(jiān)督校驗數(shù)據(jù)很難保證數(shù)據(jù)的完全可靠,所以必須開發(fā)一款手持抄表機去配合完成數(shù)據(jù)的檢驗,目前國內(nèi)現(xiàn)有的抄表機抄表存在以下4個問題:(1)抄表機不能夠精確定位每一只水表,導(dǎo)致找表困難;(2)供水企業(yè)難以掌握外出抄表員工的工作情況,常出現(xiàn)有意估抄的情況;(3)水表分布廣泛、不規(guī)律,常常漏抄水表;(4)現(xiàn)有抄表機界面不友好,不便于使用。
本文選用了基于GPRS的無線通信技術(shù)作為遠程集中自動抄表的通信方式,開發(fā)一款服務(wù)器后臺管理軟件,同時開發(fā)了一款基于安卓的手持抄表機終端。
1 系統(tǒng)分析和設(shè)計
1.1 系統(tǒng)體系結(jié)構(gòu)
C/S結(jié)構(gòu)是20世紀90年代開始流行的一種體系結(jié)構(gòu),在C/S結(jié)構(gòu)下,應(yīng)用系統(tǒng)包括客戶機和服務(wù)器兩部分[4],應(yīng)用處理由客戶端來完成,數(shù)據(jù)訪問及事務(wù)處理由服務(wù)器來承擔。C/S結(jié)構(gòu)對程序整體性考慮較多,注重流程及對權(quán)限進行多層次校驗,具有安全性高、聯(lián)機事務(wù)處理性能好的特點,并且還具有應(yīng)用程序開發(fā)效率高的優(yōu)點,但同時也具有內(nèi)在缺陷,例如客戶端平臺相關(guān)性,客戶端管理復(fù)雜,維護困難等。隨著C/S結(jié)構(gòu)的進一步深化,出現(xiàn)了基于Web的B/S結(jié)構(gòu)。B/S結(jié)構(gòu)用戶界面更加友好,可跨平臺使用數(shù)據(jù)庫、超文本、多媒體等多種形式的信息,系統(tǒng)具有可靠性、整體性以及可擴展性,客戶端僅需配置操作系統(tǒng)和Web瀏覽器,更利于軟件的開發(fā)、安裝、升級,節(jié)省開發(fā)維護費用?;赪eb的B/S結(jié)構(gòu)特別適用于信息的瀏覽、查詢與發(fā)布,適于領(lǐng)導(dǎo)輔助決策支持。而C/S結(jié)構(gòu)適用于信息管理、辦公自動化等事務(wù)處理的系統(tǒng)。根據(jù)系統(tǒng)的開發(fā)要求和系統(tǒng)目標,系統(tǒng)選擇C/S和B/S混合的結(jié)構(gòu),該混合結(jié)構(gòu)的軟件開發(fā)由瀏覽器、網(wǎng)頁服務(wù)器、客戶端、事務(wù)服務(wù)器、數(shù)據(jù)庫服務(wù)器(資源文件)和數(shù)據(jù)庫組成,如圖1所示。這種混合結(jié)構(gòu)既發(fā)揮傳統(tǒng)C/S結(jié)構(gòu)成熟的技術(shù),又能借Internet技術(shù)充分發(fā)揮B/S結(jié)構(gòu)的優(yōu)點[5-6]。系統(tǒng)的功能框圖如圖2所示。
1.2 編程工具選擇和數(shù)據(jù)庫建立
Visual C#是極其優(yōu)秀的面向?qū)ο蟮某绦蛟O(shè)計語言,具有開發(fā)簡單、功能強大、擴展方便、易于維護的優(yōu)點,本系統(tǒng)采用該語言開發(fā)實現(xiàn)。ASP.NET實現(xiàn)了網(wǎng)頁的前臺和后臺的分離以及代碼的“隱藏”技術(shù)。因此,利用ASP.NET構(gòu)建網(wǎng)站越來越多,所以網(wǎng)頁部分采用ASP.NET技術(shù)實現(xiàn)。SQL Server作為微軟發(fā)布的一個典型的關(guān)系型數(shù)據(jù)庫應(yīng)用系統(tǒng),功能強大、操作簡便、安全可靠。本系統(tǒng)設(shè)計中選擇Microsoft SQL Server 2008作為數(shù)據(jù)庫服務(wù)器平臺。
在數(shù)據(jù)庫設(shè)計中使用了存儲過程和事務(wù),增強了代碼的重用性和共享性,應(yīng)用程序的開發(fā)速度,開發(fā)質(zhì)量和效率都有所提高,對禁止用戶直接訪問的數(shù)據(jù)對象,通過對用戶進行存儲過程的使用授權(quán),能夠通過執(zhí)行存儲過程去操作那些禁止直接訪問的下層數(shù)據(jù)對象,保證數(shù)據(jù)安全、完整性,通過將事務(wù)管理機制引入存儲過程,保證了系統(tǒng)數(shù)據(jù)的一致性和完整性。
1.3 Internet編程
1.3.1 異步通信
異步通信方式比之同步方式可以提高程序的并行度和效率,其具體的實現(xiàn)是通過委托的方式,事件發(fā)生時,系統(tǒng)會自動地通知回調(diào)函數(shù)去執(zhí)行相關(guān)的操作。但是,異步的方式一般需要在某種程度上的協(xié)調(diào)才能將功能發(fā)揮到極致。例如,在服務(wù)器上獲取正在嘗試連接的客戶端套接字時,由于使用了異步方式,這樣就使得可以在不等待客戶端連接接入,而直接去執(zhí)行后面的代碼,看似好像是效率很高,不阻塞就能夠執(zhí)行,但是如果在該方法尚未接收到連接請求時就在此方法的后面調(diào)用了在套接字上的讀寫操作,就會造成程序執(zhí)行結(jié)構(gòu)的錯誤。.NET Framework可以利用委托異步調(diào)用任何方法,對于任何一種方法,如果希望異步執(zhí)行,最簡單的方法就是通過調(diào)用委托的開啟方法開始異步執(zhí)行,然后執(zhí)行其他操作,最后調(diào)用委托終止方法結(jié)束異步操作,通過輪詢方式檢查異步調(diào)用是否完成。終止方法在異步調(diào)用完成后才返回,因此這種方式非常適合執(zhí)行文件或網(wǎng)絡(luò)操作。
1.3.2 多線程技術(shù)
由于各個現(xiàn)場水表是獨立運行的,向服務(wù)器申請連接及數(shù)據(jù)傳輸事件時也是隨機的,因此非常適合于多線程技術(shù)。當主機監(jiān)聽到有連接請求時,就啟動一個新線程,用于處理相應(yīng)的任務(wù)。一個終端對應(yīng)一個獨立的線程,一旦該線程啟動,將和主線程一起獨立運行,主線程仍然處于監(jiān)聽狀態(tài),從而確保整個系統(tǒng)處于有序狀態(tài),多線程工作流程如圖3所示,創(chuàng)建線程包括創(chuàng)建監(jiān)聽端口的主線程和處理終端任務(wù)的輔助線程。抄表終端工作流程如圖4所示。
?。?)終端回饋信息格式如表2所示。
?。?)在數(shù)據(jù)傳輸過程中,中心服務(wù)器每發(fā)一個小包,必須等待終端有相應(yīng)的反饋后才繼續(xù)發(fā)送。例如發(fā)心跳包后必須回心跳包,發(fā)狀態(tài)查詢包后必須回狀態(tài)查詢包。
1.3.4 通信過程中異常處理
為了保證通信安全可靠和系統(tǒng)的穩(wěn)定,必須將通信過程中的異常處理問題放在一個比較高的位置,例如:(1)Socket連接的異常斷開:在發(fā)送信息失敗Socket斷開的情況需要重連接。發(fā)送線程(Send Thread)在發(fā)現(xiàn)Send失敗后(由計時器通知),關(guān)閉Socket連接,新建Socket并重新連接;(2)發(fā)送請求包異常:發(fā)送請求包后T1時間內(nèi)沒有收到應(yīng)答包判定為應(yīng)答接收失敗。發(fā)送請求包后沒有回應(yīng)的情況、檢測異常,累計3次失敗視為終端掉線,通信的異常情況較多,具體限于篇幅不做詳細介紹。
1.4 Web服務(wù)器集群和數(shù)據(jù)庫服務(wù)器集群技術(shù)[7]
1.4.1 負載均衡算法
將一組服務(wù)器組成集群,對外作為一個整體來提供服務(wù),可以提高服務(wù)器的服務(wù)質(zhì)量。這樣就避免了一臺服務(wù)器由于資源的有限而只能為有限的用戶提供服務(wù)的弊端。此時多個服務(wù)器集群中任務(wù)的合理分配至關(guān)重要。負載均衡算法的好壞直接決定集群中單個節(jié)點的負載,進而影響集群的性能。
目前應(yīng)用服務(wù)器集群負載均衡有硬件和軟件兩種方式,在本系統(tǒng)設(shè)計中選用了軟件的方式,采用動態(tài)加權(quán)方式負擔負載,在系統(tǒng)的運行開始時通過收集每個服務(wù)器的負載情況設(shè)置權(quán)值,真正實現(xiàn)負載均衡。數(shù)據(jù)庫的負載均衡的實現(xiàn)采用的是最小連接法。在數(shù)據(jù)庫中存有連接表。Web服務(wù)器通過查看該表確定連接的對象,同時動態(tài)地修改該表為其他的Web服務(wù)器提供連接標準。
1.4.2 數(shù)據(jù)庫集群負載均衡結(jié)構(gòu)
數(shù)據(jù)庫服務(wù)器在設(shè)計中采用了master/slave機制,每個節(jié)點同時扮演著master和slave的角色,在每一個節(jié)點上操作數(shù)據(jù)庫,其結(jié)果是每一個數(shù)據(jù)庫都得到相同的數(shù)據(jù)。連接到數(shù)據(jù)庫的服務(wù)按照一定的策略分配給其中的一臺服務(wù)器,實現(xiàn)負載的分擔。同時該結(jié)構(gòu)一個master可以對應(yīng)增加多個slave,擴展性良好,如圖5所示。
1.4.3 Web服務(wù)器負載均衡結(jié)構(gòu)
負載均衡器負責(zé)接受客戶端的請求,根據(jù)服務(wù)器的情況將任務(wù)分配給服務(wù)器,同時將結(jié)果返回給客戶。服務(wù)器在接受任務(wù)和返回結(jié)果都需要負載均衡的參與。Internet連接直接和負載均衡器相連接,而不是直接和Web服務(wù)器連接,具體如圖6所示。
2 具體實現(xiàn)
2.1 系統(tǒng)登錄
管理人員登錄時要輸入用戶名和密碼,同時要對系統(tǒng)的基本參數(shù)進行設(shè)置,只有通過認證才能進入系統(tǒng)主界面,否則無法進入。
2.2 用戶管理的實現(xiàn)
為確保信息的安全性,用戶管理模塊對系統(tǒng)使用者的名稱、密碼、權(quán)限等信息做了規(guī)定。該模塊實現(xiàn)了用戶添加、用戶刪除、密碼修改等功能。系統(tǒng)登錄時會根據(jù)登錄者的權(quán)限提供全部或部分功能,當?shù)卿浾呤枪芾韱T時,將提供全部的功能,如果登錄者是一般用戶,將只提供部分功能。
2.3 水表管理的實現(xiàn)
管理人員可以增加、修改、刪除水表信息,導(dǎo)出用戶信息,增加街區(qū)信息等,并且能夠查看修改單個水表的具體信息。管理人員可以實時查看各個自動抄表模塊的運行情況以及手持終端的地理信息位置。
2.4 統(tǒng)計分析的實現(xiàn)
具有編制單個用戶每月報表、全部用戶的每日報表、費用結(jié)算單等功能,并將系統(tǒng)采集到的信息,統(tǒng)計匯總出二次信息,以數(shù)據(jù)表格和趨勢圖的形式顯示統(tǒng)計的詳細數(shù)據(jù),用于管理決策。統(tǒng)計分析模塊除了統(tǒng)計各種常用信息外還包括經(jīng)常發(fā)生故障的用戶及地段等信息。
2.5 系統(tǒng)維護功能的實現(xiàn)
系統(tǒng)維護主要是對系統(tǒng)中需要用到的一些參數(shù)進行設(shè)置或重新配置以及對數(shù)據(jù)庫中的數(shù)據(jù)進行維護,這些參數(shù)一般是比較固定的,但是用戶可以根據(jù)實際的變動情況對其設(shè)置。系統(tǒng)維護包括系統(tǒng)參數(shù)設(shè)置和數(shù)據(jù)維護部分,其中參數(shù)設(shè)置包括系統(tǒng)常用參數(shù)設(shè)置和數(shù)據(jù)庫參數(shù)設(shè)置,系統(tǒng)常用參數(shù)設(shè)置指的是對公司名稱,站點等相關(guān)信息進行設(shè)置,數(shù)據(jù)庫參數(shù)設(shè)置指的是對服務(wù)器名稱、數(shù)據(jù)庫類型、數(shù)據(jù)庫名稱等的恢復(fù)及定期刪除數(shù)據(jù)庫中部分數(shù)據(jù)的功能。此外,后臺服務(wù)管理軟件對數(shù)據(jù)采集的時間和周期也可自行設(shè)定,具體實現(xiàn)鑒于篇幅不做具體描述。
本文提出了一種基于C/S和B/S混合結(jié)構(gòu)的水表遠程抄表和管理系統(tǒng)的設(shè)計方案。既發(fā)揮了C/S模式成熟的技術(shù)特長,避免建立多層C/S模式的高昂代價,又能借Internet技術(shù)充分發(fā)揮B/S模式的優(yōu)點,有效實現(xiàn)快速的信息交流和信息共享。該系統(tǒng)能夠解決傳統(tǒng)抄表帶來的各種弊端,降低供水部門的管理成本,提高用水管理水平和服務(wù)質(zhì)量。手持抄表終端增加現(xiàn)有抄表機沒有的二維碼讀取、地圖導(dǎo)航等功能,彌補了現(xiàn)有抄表機存在的不足。下一步計劃實現(xiàn)與營業(yè)收費系統(tǒng)的互聯(lián)。該系統(tǒng)除在供水公司應(yīng)用外,同時也為電表、煤氣表的數(shù)據(jù)抄收工作以及智能家居提供了技術(shù)解決方案。
參考文獻
[1] 劉基華,盧延詩.基于C/S與B/S的電廠信息管理系統(tǒng)[J].中國測試技術(shù),2003,29(1):49-50.
[2] 栗玉霞,徐建政,劉愛兵.GPRS技術(shù)在自動抄表系統(tǒng)中的應(yīng)用[J].電力自動化設(shè)備,2003,23(12):52-53.
[3] 孫忠富,曹洪太,李洪亮,等.基于GPRS和WEB的溫室環(huán)境信息采集系統(tǒng)的實現(xiàn)[J].農(nóng)業(yè)工程學(xué)報,2006,22(6):131-134.
[4] 王喜富,陳建廣.基于B/S與C/S模式的鐵路運輸安全管理信息系統(tǒng)[J].中國安全科學(xué)學(xué)報,2004,14(3):73-76.
[5] SAEED GHASEMI, MAJID MEGHDAD. The design and management of intelligent systems in mechanical domestic water meters[J]. Open Journal of Urology, 2011,2(4):424-429.
[6] 馮鑒煒.太陽能熱水工程遠程監(jiān)測系統(tǒng)開發(fā)[D].杭州:杭州電子科技大學(xué),2012.
[7] 張鋒,祝永志.B/S模式服務(wù)器集群系統(tǒng)的研究與應(yīng)用[J].電腦知識與技術(shù),2009,5(1):88-89.