常 翟,張學(xué)典,2,張 平,常 敏
(1.上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093;2.上海理工大學(xué) 上海市現(xiàn)代光學(xué)系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,上海 200093)
隨著全球工業(yè)化的迅猛發(fā)展,各種化工污染物的排放量逐年增加,人類的生活環(huán)境日益惡化,尤其是一些化學(xué)有毒物質(zhì),一旦未經(jīng)處理就非法排放,就會造成非常嚴(yán)重的后果,輕則污染水體、危害水生動植物,重則積聚在魚類或貝類的體內(nèi),最終對人類造成危害。近年來我國的水資源污染狀況日益嚴(yán)重,人們開始意識到生態(tài)環(huán)境對人類生活的重要性,因此保護(hù)水資源、維護(hù)生態(tài)環(huán)境成為人類的責(zé)任和義務(wù)。水質(zhì)監(jiān)測是目前政府對工業(yè)區(qū)域的排污狀況和排污趨勢有效手段,根據(jù)環(huán)保部門所制定的環(huán)境管理依據(jù)[1],對我國的水資源進(jìn)行合理的利用和保護(hù)。
目前,國內(nèi)外主要的水質(zhì)監(jiān)測的方法是先現(xiàn)場采集、后實(shí)驗(yàn)室分析的方法,該方法存在以下缺點(diǎn):監(jiān)測頻率和實(shí)時性低,由于使用先采集后分析的方法,因此不能做到對水質(zhì)的實(shí)時監(jiān)控,每次檢測都需要耗費(fèi)大量的時間;檢測水平不均,水質(zhì)檢測實(shí)驗(yàn)室的檢測設(shè)備老化會降低檢測結(jié)果的準(zhǔn)確性,而大型水質(zhì)檢測儀器分配不均,不能保證每個實(shí)驗(yàn)室都能配備,因此檢測水平有高有低;現(xiàn)場檢測能力低,大多區(qū)域不具備移動水質(zhì)檢測設(shè)備,無法快速地根據(jù)檢測結(jié)果進(jìn)行判斷和決策。
針對目前水質(zhì)檢測方法的不足,設(shè)計了一種水質(zhì)分析儀,該分析儀通過放置于現(xiàn)場水域的水質(zhì)綜合參數(shù)采集模塊采集的各種水質(zhì)參數(shù),例如水體濁度、COD、BOD等參數(shù),使用通用分組無線業(yè)務(wù)(GPRS)遠(yuǎn)程傳送數(shù)據(jù),然后上位機(jī)通過Internet網(wǎng)絡(luò)利用Socket套接字接受數(shù)據(jù),并將數(shù)據(jù)存入SQL Server數(shù)據(jù)庫,通過交互界面進(jìn)行數(shù)據(jù)實(shí)時顯示,完成對水質(zhì)的實(shí)時遠(yuǎn)程監(jiān)控,指導(dǎo)環(huán)保部門和管理者進(jìn)行前瞻性的水質(zhì)管理[2]。
該分析儀主要包括三個部分:下位機(jī)數(shù)據(jù)采集模塊、GPRS通訊模塊和上位機(jī)監(jiān)測軟件。其中下位機(jī)數(shù)據(jù)采集模塊包括控制模塊和水質(zhì)傳感器單元,其中水質(zhì)傳感器為該模塊的核心,有各種需要測試的測量電路。GPRS通訊模塊主要負(fù)責(zé)將下位機(jī)測得的數(shù)據(jù)發(fā)送至GPRS網(wǎng)絡(luò),再由GPRS網(wǎng)絡(luò)與Internet網(wǎng)絡(luò)互聯(lián)[3],起作用是作為下位機(jī)與上位機(jī)的中介。上位機(jī)監(jiān)測軟件主要指運(yùn)行在PC系統(tǒng)上的軟件,通過管理中心的計算機(jī)連接Internet網(wǎng)絡(luò),接收下位機(jī)傳來的數(shù)據(jù)并存入數(shù)據(jù)庫,實(shí)現(xiàn)對數(shù)據(jù)采集模塊采集上來的各種水質(zhì)數(shù)據(jù)的顯示和分析,并對超標(biāo)數(shù)據(jù)進(jìn)行報警處理。文中主要的研究對象為GPRS通訊模塊和上位機(jī)監(jiān)測軟件。圖1為系統(tǒng)的基本結(jié)構(gòu)框架。
圖1 系統(tǒng)架構(gòu)圖Fig.1 System Construction
分析儀的數(shù)據(jù)采集模塊采用紫外分光光度法進(jìn)行水質(zhì)參數(shù)的采集工作,該方法主要利用水中污染物可以吸收紫外線的特征,通過分光法測量水中有機(jī)物的濃度。該方法基于物理-UV法,不同于傳統(tǒng)的化學(xué)法,具有污染小、速度快等優(yōu)點(diǎn),利于水質(zhì)分析儀對水質(zhì)進(jìn)行實(shí)時檢測。
UV法的理論基礎(chǔ)為朗伯比爾定律[4],該定律指出一束平行單色光通過均勻非散射的稀溶液時,溶液對光吸收程度與溶液的濃度及液層厚度的乘積成正比,即:
式(1)中,A為吸光度,C為溶液濃度,L為液層厚度,K為常數(shù)。該定律不僅適用于單獨(dú)的溶液,還適用于不相互作用的多組分溶液。由于每種溶液的吸光度都具有線性特征,因此多組分溶液的對某一單色光的吸收度等于該溶液中各組分對該單色光的吸光度之和,即:
在一般情況下,液層厚度L為定值,常數(shù)K與入射光的波長有關(guān),固定單色光下K也為定值,因此A與C呈正比?,F(xiàn)通過實(shí)驗(yàn)檢測A與C值后,即可得到常數(shù)K,然后只需測量未知濃度的溶液吸光度即可得到該溶液的濃度。
通過UV法解決了傳統(tǒng)化學(xué)法測量時間長、消耗化學(xué)試劑、對環(huán)境造成二次污染等缺點(diǎn),并且可以將分析探頭放置在需要監(jiān)測的水域,實(shí)現(xiàn)了對檢測水域的實(shí)時檢測。
GPRS[5]是一種基于GSM系統(tǒng)的無線分組交換技術(shù),在GSM協(xié)議構(gòu)架的基礎(chǔ)上增加了支持分組交換的協(xié)議,從而實(shí)現(xiàn)基于分組的無線通信服務(wù),它借用了移動的接入網(wǎng)和傳輸網(wǎng),提供端到端的廣域的無線IP連接。作為一種成熟的商用無線通信技術(shù),GPRS技術(shù)在無線監(jiān)測管理系統(tǒng)具有很好的應(yīng)用前景。針對無線遠(yuǎn)程通訊的實(shí)際應(yīng)用要求,GPRS的使用費(fèi)用較其他無線傳輸方式(如3G技術(shù)、SMS技術(shù))低,傳輸速率能夠達(dá)到56kbps并且最大可提升至114kbps[6]。因此系統(tǒng)選用GPRS作為傳輸?shù)闹薪椤?/p>
GPRS無線通信網(wǎng)絡(luò)需要TCP/IP協(xié)議的支持,目前市面上常見的GPRS模塊可分為自帶TCP/IP協(xié)議棧與不帶TCP/IP協(xié)議棧的兩類,自帶協(xié)議棧的GPRS模塊一般價格較高,但是使用方便,用戶只需要通過AT指令即可完成整個通訊過程。不帶協(xié)議棧的GPRS模塊雖然售價較低,但是需要用戶自己在單片機(jī)中嵌入TCP/IP協(xié)議棧,增大了工作量。系統(tǒng)使用Simcom公司推出的內(nèi)嵌TCP/IP協(xié)議的SIM300C模塊,具有標(biāo)準(zhǔn)的AT指令接口,可以提供GSM語音、GPRS上網(wǎng)和短消息等業(yè)務(wù),下行最大傳輸速度為85.6kbps,上行最大傳輸速度為42.8kbps。
系統(tǒng)直接通過向SIM300C發(fā)送AT指令,即可建立TCP/IP連接,并實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸。具體操作步驟如下:
(1)初始化GPRS模塊。使用AT+I(xiàn)PR=9 600命令設(shè)置模塊的通信波特率,系統(tǒng)設(shè)置為9 600bps;使用AT+CGDCONT=1,“IP”,“CMNTE”命令設(shè)置連接的網(wǎng)關(guān),其中IP表示通過指定IP地址進(jìn)行連接,“CMNTE”表示連接網(wǎng)絡(luò)為移動夢網(wǎng);使用AT+CGCLASS=“B”設(shè)置移動終端類別為B,即GPRS上網(wǎng)業(yè)務(wù)。
(2)測試GPRS是否連接成功。使用AT+CGACT=1,1來測試該模塊的GPRS網(wǎng)絡(luò)是否連接成功,如果返回“OK”,則表示連接成功;如果返回“ERROR”,則表示連接失敗,失敗的原因有可能是SIM卡的GPRS業(yè)務(wù)未開通,或者模塊天線未成功安裝,或SIM卡接觸問題等等。
(3)通過 TCP連接網(wǎng)絡(luò)。使用 AT+CIPSTART=“TCP”,“192.168.1.1”,“2020”命令設(shè)置連接參數(shù),其中“TCP”表示使用TCP協(xié)議連接,“192.168.1.1”表示上位機(jī)的IP地址,實(shí)際IP地址由實(shí)際情況決定,“2020”表示監(jiān)聽端口,如果返回“OK”則表示連接成功。使用AT+CIPSEND>“數(shù)據(jù)”命令向指定IP和端口發(fā)送測量數(shù)據(jù);
(4)關(guān)閉連接。使用AT+CIPCLOSE命令關(guān)閉TCP網(wǎng)絡(luò)連接;使用AT+CIPSHUT命令關(guān)閉GPRS連接。
圖2為發(fā)送測量數(shù)據(jù)的流程圖。
使用GPRS模塊進(jìn)行無線通信時,還需注意由于當(dāng)GPRS長時間不產(chǎn)生數(shù)據(jù)流量時,網(wǎng)絡(luò)服務(wù)商提供的服務(wù)器為了節(jié)省寬帶,會自動斷開GPRS的網(wǎng)絡(luò)連接。因此為了保證GPRS模塊數(shù)據(jù)傳輸?shù)膶?shí)時性,防止系統(tǒng)的網(wǎng)絡(luò)中斷,現(xiàn)設(shè)置了“心跳”機(jī)制,即每隔一段時間,都會固定的發(fā)送一份不包含測量數(shù)據(jù)的TCP數(shù)據(jù)包,這樣就可以保證系統(tǒng)網(wǎng)絡(luò)的連續(xù)性。發(fā)送“心跳”數(shù)據(jù)包的頻率可以根據(jù)實(shí)際網(wǎng)絡(luò)服務(wù)商的要求來設(shè)定,盡量避免過多的發(fā)送“心跳”數(shù)據(jù)包,導(dǎo)致額外流量,增加成本。由于GPRS網(wǎng)絡(luò)有時會受到惡劣天氣的影響,導(dǎo)致丟包或短線的現(xiàn)象,因此需要GPRS模塊定時發(fā)送連接請求(ping命令),如果未應(yīng)答請求超過一定次數(shù),則啟動GPRS模塊的重連功能,重新進(jìn)行網(wǎng)絡(luò)連接。
圖2 GPRS數(shù)據(jù)發(fā)送流程圖Fig.2 GPRS data transmission flow chart
上位機(jī)監(jiān)測軟件使用基于.NET框架的C#編程語言,利用Socket套接字進(jìn)行網(wǎng)絡(luò)通信接收下位機(jī)通過GPRS網(wǎng)絡(luò)傳輸?shù)臏y量數(shù)據(jù),將測量數(shù)據(jù)存入SQL Server數(shù)據(jù)庫并通過圖表進(jìn)行實(shí)時顯示。
Socket又稱為套接字,其實(shí)質(zhì)是一種描述符,是目前網(wǎng)絡(luò)通信的一種基本的操作單元。在進(jìn)行網(wǎng)絡(luò)通信時,套接字可以看作兩邊通信連接的一個端點(diǎn),當(dāng)進(jìn)行通信時,首先由一個網(wǎng)絡(luò)應(yīng)用程序?qū)⑿畔懭肫渌谥鳈C(jī)的Socket中;然后通過一定的網(wǎng)絡(luò)協(xié)議,將這段信息傳入另一個網(wǎng)絡(luò)應(yīng)用程序的套接字中;最后通過讀取該主機(jī)中的Socket,完成這段信息的傳輸。由此可知,在網(wǎng)絡(luò)通信過程中,至少需要一對Socket才能完成整個傳輸,現(xiàn)將客戶機(jī)上的套接字稱為ClientSocket,將服務(wù)器上的套接字稱為ServerSocket。為了滿足不同的網(wǎng)絡(luò)連接需求,一般網(wǎng)絡(luò)系統(tǒng)提供三種不同類型的Socket:數(shù)據(jù)報套接字、流式套接字和原始套接字。數(shù)據(jù)報套接字是一種無連接、不可靠的服務(wù),數(shù)據(jù)包獨(dú)立發(fā)送,沒有固定的順序,主要使用UDP協(xié)議進(jìn)行傳輸;流式套接字是一種可靠的、面向連接的服務(wù),數(shù)據(jù)報按照順序進(jìn)行無差錯、無順序的發(fā)送,使用TCP協(xié)議進(jìn)行傳輸;原始套接字則使用最底層的協(xié)議,主要用于檢測新設(shè)備,一般不在實(shí)際中使用。由于系統(tǒng)通過基于TCP協(xié)議的GPRS網(wǎng)絡(luò)傳輸數(shù)據(jù),因此使用的是流式套接字。
.NET類庫中提供了System.net.Socket類,因此系統(tǒng)直接使用C#下的Socket類進(jìn)行網(wǎng)絡(luò)編程。C#下的網(wǎng)絡(luò)編程步驟:首先在服務(wù)器和客戶機(jī)上分別建立ServerSocket和ClientSocket,并將ServerSocket使用Bind方法與指定的端口進(jìn)行綁定,隨后開始監(jiān)聽ServerSocket并等待客戶機(jī)連接該端口。然后ClientSocket使用Connect方法可以連接指定的服務(wù)器端口,一旦ServerSocket接收到ClientSocket的連接請求,即可使用Accept方法建立兩個套接字的連接。建立連接后就可以使用Read和Write方法進(jìn)行網(wǎng)絡(luò)通信。流程如圖3所示。
圖3 Socket通信流程圖Fig.3 Socket communication flow chart
當(dāng)上位機(jī)接收到數(shù)據(jù)采集模塊傳輸過來的數(shù)據(jù)后,需要對該數(shù)據(jù)進(jìn)行存儲和處理,并完成實(shí)時顯示和違規(guī)報警的工作。軟件使用SQL Server數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的存儲工作,數(shù)據(jù)庫可以看作計算機(jī)存儲數(shù)據(jù)的倉庫,在任何應(yīng)用程序開發(fā)中都十分重要,可以將各種數(shù)據(jù)按照某些特定的規(guī)則進(jìn)行保存,便于用戶對數(shù)據(jù)進(jìn)行管理和分析。SQL Server數(shù)據(jù)庫是一種基于關(guān)系代數(shù)的關(guān)系型數(shù)據(jù)庫,是目前應(yīng)用比較廣泛的一種數(shù)據(jù)庫。
為了方便快捷的使用SQL Server數(shù)據(jù)庫,ASP.NET開發(fā)環(huán)境中提供了一種ADO.NET技術(shù),即一種用于和數(shù)據(jù)源進(jìn)行交互的面相對象的類庫,開發(fā)者在開發(fā)應(yīng)用程序時可以利用ADO.NET類庫簡單快速的對數(shù)據(jù)庫進(jìn)行基本操作,例如讀取、插入、更新、刪除等。由于ADO.NET可以以離線的方式對數(shù)據(jù)庫進(jìn)行操作,因此應(yīng)用程序只有在操作數(shù)據(jù)庫時才會與數(shù)據(jù)源進(jìn)行連接,這種方式可以大大減小服務(wù)器資源的占用,提高整個程序的效率。
下面介紹使用ADO.NET類庫對數(shù)據(jù)庫進(jìn)行操作:
(1)數(shù)據(jù)庫連接。在進(jìn)行數(shù)據(jù)庫操作前,必須通過SqlConnection對象完成應(yīng)用程序與數(shù)據(jù)庫的連接,首先提供需要連接數(shù)據(jù)庫的連接字符串,其中包括數(shù)據(jù)庫名稱、用戶名和密碼。然后根據(jù)連接字符串創(chuàng)建SqlConnection對象,并使用Open()方法連接指定數(shù)據(jù)庫,關(guān)閉數(shù)據(jù)庫則使用Close()方法。
(2)操作數(shù)據(jù)庫。應(yīng)用程序需要使用結(jié)構(gòu)化查詢語言(簡稱“SQL”)來完成對數(shù)據(jù)庫的操作,結(jié)構(gòu)化查詢語言是一種高級非過程化編程語言,用戶不必了解數(shù)據(jù)存放的具體方式即可通過該語言在高層數(shù)據(jù)結(jié)構(gòu)上工作,所以SQL語言可以適用于各種不同底層結(jié)構(gòu)的數(shù)據(jù)庫。對于SQL Server數(shù)據(jù)庫而言,應(yīng)用程序需要使用SqlCommand對象完成對數(shù)據(jù)庫的操作。SqlCommand又稱為SQL執(zhí)行命令,該對象提供了多種方法,例如SqlDataReader對象提供Read()方法,可以實(shí)現(xiàn)應(yīng)用程序?qū)?shù)據(jù)庫的讀取操作,而插入操作則需要使用SQL語言,例如“insert into COD表value(‘COD’,‘23’)”該語句表示向COD數(shù)據(jù)表中的COD數(shù)據(jù)列插入23的值。
(3)查詢數(shù)據(jù)庫。在進(jìn)行數(shù)據(jù)庫的數(shù)據(jù)查詢時,可以通過DataSet對象進(jìn)行數(shù)據(jù)集的填充與更新,由于DataSet是獨(dú)立于數(shù)據(jù)庫之外的,因此可以進(jìn)行離線操作。在使用DataSet對象時,需要建立SqlDataAdapter對象作為中介進(jìn)行DataSet與數(shù)據(jù)庫之間的操作。首先創(chuàng)建SqlDataAdapter對象,然后使用Fill()方法提取數(shù)據(jù)庫數(shù)據(jù),然后導(dǎo)入DataSet中進(jìn)行后續(xù)的操作。
軟件在接收到GPRS模塊傳輸過來的數(shù)據(jù)后,先進(jìn)行數(shù)據(jù)包的判斷,由于GPRS模塊傳輸過來的數(shù)據(jù)包存在測量數(shù)據(jù)包和心跳數(shù)據(jù)包,因此不能直接將數(shù)據(jù)存入數(shù)據(jù)庫,需要進(jìn)行包頭的判斷。當(dāng)前數(shù)據(jù)包為測量數(shù)據(jù)包時需要進(jìn)行數(shù)據(jù)的提取,每個數(shù)據(jù)包中包含監(jiān)測點(diǎn)的位置、各種水質(zhì)測量數(shù)據(jù)和最后的包尾結(jié)束符,將有用的數(shù)據(jù)提取出來并存入數(shù)據(jù)庫,當(dāng)提取的水質(zhì)數(shù)據(jù)超標(biāo)時需要進(jìn)行報警操作。最后查詢數(shù)據(jù)庫中的數(shù)據(jù),存入DataSet并通過交互界面用趨勢圖表述出來。
試驗(yàn)中采用三個水質(zhì)分析儀放置在監(jiān)測水域,然后通過GPRS模塊進(jìn)行測量數(shù)據(jù)的發(fā)送,上位機(jī)監(jiān)測軟件安裝在具有公網(wǎng)IP的計算機(jī)上,進(jìn)行數(shù)據(jù)監(jiān)聽,并實(shí)現(xiàn)測量數(shù)據(jù)值顯示及曲線趨勢顯示。圖4為上位機(jī)軟件界面。
經(jīng)過一段時間的運(yùn)行試驗(yàn),該系統(tǒng)可以實(shí)現(xiàn)對檢測區(qū)域的水質(zhì)的變化進(jìn)行實(shí)時、連續(xù)的檢測,且該系統(tǒng)運(yùn)行穩(wěn)定、可靠,沒有出現(xiàn)丟包現(xiàn)象。
圖4 上位機(jī)軟件界面Fig.4 Host computer software interface
提出了一種基于GPRS的紫外水質(zhì)分析儀設(shè)計方案,該系統(tǒng)的傳輸介質(zhì)為基于TCP/IP協(xié)議下的GPRS網(wǎng)絡(luò),并在VS2008環(huán)境下使用C#語言編寫了上位機(jī)監(jiān)控軟件,通過Internet網(wǎng)絡(luò)實(shí)現(xiàn)了檢測數(shù)據(jù)的實(shí)時接收,另外還實(shí)現(xiàn)了保存數(shù)據(jù)、數(shù)據(jù)顯示、歷史趨勢圖和報警等功能。該水質(zhì)分析儀無需網(wǎng)絡(luò)布線,傳輸成本低廉,具有一定的穩(wěn)定性,能夠?yàn)榄h(huán)保檢測部門提供全面、實(shí)時的水質(zhì)監(jiān)測信息。相信隨著GPRS網(wǎng)絡(luò)的不斷完善,該分析儀將會有更廣闊的前景[7]。
[1]佟維妍,劉春梅,趙國材.基于 GPRS數(shù)據(jù)遠(yuǎn)程傳輸?shù)乃|(zhì)參數(shù)監(jiān)測系統(tǒng)[J].自動化與儀表,2010,25(7):52-55.
[2]王 翥,郝曉強(qiáng),魏德寶.基于 WSN和GPRS網(wǎng)絡(luò)的遠(yuǎn)程水質(zhì)監(jiān)測系統(tǒng)[J].儀表技術(shù)與傳感器,2010(1):48-49.
[3]陳 軍,盛占石,陳照章,等.基于 GPRS的水質(zhì)自動監(jiān)測系統(tǒng)的設(shè)計[J].傳感器與微系統(tǒng),2009,28(7):77-79.
[4]馬樹方.分析儀器原理與應(yīng)用[M].上海:華東化工學(xué)院,1987:188-189.
[5]楊增汪,王宜懷,戴新宇.基于ZigBee和GPRS的高壓開關(guān)柜無線監(jiān)測系統(tǒng)設(shè)計[J].電力系統(tǒng)保護(hù)與控制,2010,38(23):203-206.
[6]BATS R J.通用分組無線業(yè)務(wù)(GPRS)技術(shù)與應(yīng)用[M].北京:人民郵電出版社,2004:3-7.
[7]王 磊,許小琳.GPRS無線數(shù)據(jù)傳輸中服務(wù)器端軟件的設(shè)計和實(shí)現(xiàn)[J].測控技術(shù),2007,26(11):55-56.