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