張 飛 , 張 云 , 韓彥嶺 , 袁國良
(1.上海海事大學(xué) 信息工程學(xué)院,上海 201306;2.上海海洋大學(xué) 信息學(xué)院,上海 201306)
21世紀(jì)以來,隨著國家經(jīng)濟(jì)的發(fā)展,工業(yè)化進(jìn)程的推進(jìn),面對日益嚴(yán)重的水資源短缺、水環(huán)境污染等問題,水工業(yè)行業(yè)迎來了水資源費用上漲、飲用水水質(zhì)標(biāo)準(zhǔn)提高、廢水排放標(biāo)準(zhǔn)更加嚴(yán)格,以及水價上漲等諸多的挑戰(zhàn)和機會[1]。監(jiān)測江河、湖泊、水庫等飲用水資源的水質(zhì)成為當(dāng)前環(huán)境保護(hù)的熱點。在這樣的背景下,大力推動了水質(zhì)監(jiān)測設(shè)備的發(fā)展。水質(zhì)監(jiān)測是及時、準(zhǔn)確、全面地反映水環(huán)境質(zhì)量和污染現(xiàn)狀的重要手段,是制定切實可行的污染防治和水環(huán)境保護(hù)措施的前提和基礎(chǔ)[2]。水質(zhì)監(jiān)測在我國已經(jīng)有一定的時間,當(dāng)前水質(zhì)監(jiān)測的主要方法主要有3種:1)人工定點定時取樣,實驗室離線分析;2)便攜式儀器現(xiàn)場人工取樣檢測;3)由固定監(jiān)測站點連續(xù)取樣,自動在線分析[3]。這3種方法都無法滿足對不同水域水質(zhì)連續(xù)動態(tài)變化監(jiān)測的要求,更難以及時發(fā)現(xiàn)由于誤排放或事故性泄露而引起的水質(zhì)指標(biāo)的急劇變化。常規(guī)的水環(huán)境監(jiān)測手段已難以滿足對水質(zhì)監(jiān)測的需要[4]。
文中所述水質(zhì)監(jiān)測系統(tǒng)基于無線電臺的通信方式并運用Modbus通信協(xié)議優(yōu)點,將傳感器收集到的水質(zhì)數(shù)據(jù)實時傳送給監(jiān)控中心。實現(xiàn)了遠(yuǎn)距離不斷傳輸水質(zhì)指標(biāo)數(shù)據(jù),實時監(jiān)測水質(zhì)變化的目的。
水質(zhì)監(jiān)測系統(tǒng)總體結(jié)構(gòu)設(shè)計如圖1所示,左邊的前方監(jiān)測系統(tǒng)位于監(jiān)測的水域現(xiàn)場,右邊的監(jiān)控中心位于遠(yuǎn)離監(jiān)測區(qū)的本地控制中心。兩者通過微波電臺進(jìn)行通信。
圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Diagram of the system structure
前方監(jiān)測部分圍繞著CPU模塊展開設(shè)計,外圍由GPS模塊、收集模塊、5個傳感器和一個電臺組成。監(jiān)控中心的結(jié)構(gòu)非常簡單,只需要由一臺PC機和一個同型號的電臺。CPU模塊采用MS-CPU32,運行著一個精簡版的Linux內(nèi)核,具有非常高的數(shù)據(jù)處理速度和運行大型程序能力,該內(nèi)核已經(jīng)內(nèi)建了一個根據(jù)Modbus協(xié)議編寫的從設(shè)備程序,該程序已實現(xiàn)了開機自啟動收集水質(zhì)數(shù)據(jù)功能。GPS模塊主要作用是能夠讓監(jiān)控中心時刻知道監(jiān)測設(shè)備所監(jiān)測水域的坐標(biāo),實現(xiàn)精確定位監(jiān)測設(shè)備的作用。收集模塊主要負(fù)責(zé)收集傳感器輸出的信號進(jìn)行模數(shù)轉(zhuǎn)換,存到寄存器,最后通過電臺發(fā)送出去。GPS、傳感器模塊和電臺的詳細(xì)參數(shù)將在實驗驗證部分給出詳細(xì)介紹。
下面要設(shè)計的主要在監(jiān)控中心端,用一個電臺和PC機與前方監(jiān)測系統(tǒng)進(jìn)行通信。由于CPU模塊內(nèi)建的程序使用Modbus協(xié)議編寫,要求監(jiān)控中心的PC機程序也必須用Modbus協(xié)議編寫。
Modbus協(xié)議[5-6]由施耐德電器發(fā)起制定,協(xié)議在應(yīng)用層采用Modbus消息定義,在傳輸層和網(wǎng)絡(luò)層采用TCP/IP,用于以太網(wǎng)通訊[7]。Modbus協(xié)議是應(yīng)用于電子控制器上的一種語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其他設(shè)備之間可以通信。它已經(jīng)成為一個工業(yè)標(biāo)準(zhǔn)。
控制器通信使用主從技術(shù),即僅一設(shè)備(主設(shè)備)能進(jìn)行查詢,其他設(shè)備(從設(shè)備)根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。典型的主設(shè)備:主機和可編程儀表。典型的從設(shè)備:可編程控制器。主設(shè)備可以單獨和從設(shè)備通信,也能以廣播方式和所有從設(shè)備通信。如果單獨通信,從設(shè)備返回一消息作為回應(yīng),如果是以廣播方式查詢,則不作任何回應(yīng)。Modbus協(xié)議建立了主設(shè)備查詢的格式:設(shè)備地址(或廣播)、功能代碼、發(fā)送的數(shù)據(jù)、校驗碼,從設(shè)備也以相同的格式回應(yīng)主設(shè)備。Modbus支持RTU和ASCII兩種數(shù)據(jù)傳輸模式,本文所述水質(zhì)監(jiān)測系統(tǒng)中選用RTU模式,消息中的每個8Bit包含代表2個的十六進(jìn)制字符。這種方式的主要優(yōu)點是:同樣波特率下,可以比ASCII方式傳送更多的數(shù)據(jù)。RTU幀如表1所示。
表1 RTU報文幀Tab.1 RTU frame structure
設(shè)備地址用來標(biāo)識不同的從設(shè)備,范圍是0~247。地址0在廣播中使用。功能碼主要告之從設(shè)備要執(zhí)行的操作,從設(shè)備回傳同樣的功能碼說明已執(zhí)行正確的操作,反之則回傳不同的功能碼,告知發(fā)生的不同錯誤。例如功能碼03H是要求從設(shè)備讀保持寄存器并返回其中的內(nèi)容。常用的功能碼如下表2所示,數(shù)據(jù)區(qū)定義了根據(jù)功能碼的要求執(zhí)行操作所需的信息,與功能碼相關(guān)。主機與從機通過信息幀中的校驗碼來判斷信息在傳輸過程中是否出現(xiàn)錯誤[8],有錯則丟棄。無錯才執(zhí)行相應(yīng)的操作。
表2 Modbus功能碼Tab.2 Modbus function codes
所述的水質(zhì)監(jiān)測系統(tǒng)中,監(jiān)控中心的PC機作為主設(shè)備用來查詢,前方監(jiān)測系統(tǒng)的CPU模塊作為從設(shè)備進(jìn)行應(yīng)答。CPU模塊采用默認(rèn)的01H作為從設(shè)備地址。主設(shè)備使用03H功能碼對從設(shè)備保持寄存器中的數(shù)據(jù)進(jìn)行讀取。PC機和CPU模塊采用查詢應(yīng)答機制,不斷從前方監(jiān)測系統(tǒng)讀取數(shù)據(jù)。
1)通信連接
首先兩個電臺要確保在有效的無線傳輸距離范圍內(nèi),其次由于無線電臺使用2.4 GHz頻率,此頻段微波繞射能力較差,按直線傳播,所以兩個電臺之間不能有高大遮擋物。在電臺上有一個信號燈顯示為藍(lán)色時,說明2個電臺聯(lián)通。按照Modbus協(xié)議的要求,通信的雙方必須嚴(yán)格按照Modbus數(shù)據(jù)幀的格式進(jìn)行指令和數(shù)據(jù)的打包和讀取。主從設(shè)備在收到數(shù)據(jù)幀后都要判斷地址碼是否正確,然后進(jìn)行CRC校驗,都正確后雙方通信才完全建立。
2)數(shù)據(jù)傳輸
傳感器采集的數(shù)據(jù)經(jīng)過收集模塊的模數(shù)轉(zhuǎn)換后存儲到寄存器中,同時GPS的坐標(biāo)也被存儲到寄存器中。在監(jiān)控中心主設(shè)備的讀取指令傳送到CPU模塊并進(jìn)行指令解析后,CPU下達(dá)讀指定寄存器數(shù)據(jù)的指令,數(shù)據(jù)從寄存器中讀出,通過串口RS-232送達(dá)電臺1,數(shù)據(jù)通過無線傳輸?shù)诫娕_2后,經(jīng)由串口RS-232到達(dá)PC機中,PC機對數(shù)據(jù)進(jìn)行相應(yīng)的存儲和顯示處理。PC機和CPU模塊之間的數(shù)據(jù)讀取,按照查詢應(yīng)答機制,要求PC機不斷的向CPU模塊發(fā)送讀取的指令。
監(jiān)控中心的主設(shè)備控制程序是在Window XP系統(tǒng)下使用Qt編寫,Qt是一個跨平臺的C++應(yīng)用程序開發(fā)框架,廣泛用于開發(fā)GUI程序。由于主從設(shè)備使用串口RS-232將數(shù)據(jù)送達(dá)電臺,而Qt沒有自己的串口通信控制類,這里使用的是開源的第三方開發(fā)的qextserialport類,它是繼承自Qt的QIODevice父類。前方監(jiān)測系統(tǒng)和監(jiān)控中心的串口參數(shù)設(shè)置為:波特率19 200 bps、數(shù)據(jù)位8位、無校驗位、停止位為1。監(jiān)控中心軟件模塊設(shè)計包括5個部分:串口通信模塊、定時發(fā)送Modbus指令模塊、數(shù)據(jù)接收和解析模塊、數(shù)據(jù)顯示模塊、數(shù)據(jù)保存模塊。首先對串口參數(shù)進(jìn)行設(shè)置,打開串口,程序開始計時,每隔一段時間(這里是10秒),主設(shè)備自動向從設(shè)備發(fā)送Modbus指令,接著主設(shè)備開始接收并解析從設(shè)備發(fā)送來的數(shù)據(jù),然后把數(shù)據(jù)顯示出來,并進(jìn)行保存。
主程序流程圖如圖2所示,在發(fā)送接收指令的過程中,主從設(shè)備有一個Modbus指令處理判斷的過程。Modbus指令的判斷過程流程圖如圖3所示,當(dāng)指令到達(dá)從設(shè)備時,從設(shè)備對發(fā)送過來的指令進(jìn)行分析,首先判斷功能碼是不是支持的功能碼,不支持,則將該指令丟棄,并返回01H異常碼,在支持的情況下會進(jìn)行判斷是不是在支持的功能碼的范圍之內(nèi),不支持則返回03H的異常碼。如果在范圍之內(nèi)則會進(jìn)行最后的CRC校驗,判斷指令是否錯誤,如果有錯則返回02H異常碼,在沒有錯誤時,則進(jìn)入后面的處理的程序,接著判斷寄存器數(shù)據(jù)的可讀性,在寄存器不能讀時則返回04H異常碼。從設(shè)備中處理完這些流程后,從設(shè)備會將把這些存儲的數(shù)據(jù)傳輸出來。
圖2 主程序流程圖Fig.2 Working flow chart of the program
1)實驗原件和實驗環(huán)境介紹
傳感器監(jiān)測的水質(zhì)參數(shù)分別為pH、溶解氧、溫度、濁度、電導(dǎo)率,具有符合工業(yè)標(biāo)準(zhǔn)的4~19 mA的模擬輸出信號。電臺使用的是FreeWave公司的GXM系列電臺。下面給出監(jiān)測系統(tǒng)使用的傳感器和電臺等部分原件具體型號,原件型號如表3所示。
圖3 Modbus指令判斷流程圖Fig.3 Flow chart of the Modbus command
表3 設(shè)備參數(shù)表Tab.3 Specific model of the main components
實驗所選取的地點如圖4所示,A點是上海海洋大學(xué)信息學(xué)院,B點為上海海洋大學(xué)一號門,C點位于橋的下坡上。在A點和C點之間存在大量綠化帶,室外測試在白天進(jìn)行。
圖4 實驗地點示意圖Fig.4 Experimental places in the map
2)實驗結(jié)果
整個系統(tǒng)設(shè)計完成后,在經(jīng)過室內(nèi)長時間測試成功后,不斷嘗試增加兩個電臺之間的距離??刂浦行能浖\行界面如圖5所示,界面包含了串口參數(shù)設(shè)置、8個水質(zhì)參數(shù)和GPS坐標(biāo)的經(jīng)緯度,其中溶解氧溫度、濁度(50NTU)、電導(dǎo)率溫度是根據(jù)另外的5個指標(biāo)數(shù)據(jù)計算所得。
圖5 監(jiān)控中心軟件界面圖Fig.5 Software interface in the monitoring center
實驗結(jié)果如表4所示,分為室內(nèi)、室外兩種實驗,其中室外實驗又根據(jù)距離的不同分為實驗2和實驗3。對于室內(nèi)實驗最為簡單,可以長時間的進(jìn)行,測試時間大于48小時。實驗結(jié)果顯示存儲的數(shù)據(jù)沒有任何錯誤發(fā)生,兩個電臺間距離為10米左右,數(shù)據(jù)可以實現(xiàn)2秒每次的讀取與存儲,而且可以根據(jù)日期不同,每日零時自動更換存儲數(shù)據(jù)的文件名稱。對于室外實驗2,控制中心在位于B點,監(jiān)測系統(tǒng)位于A點,兩點間距離約為230 m,天線位于四樓樓頂,經(jīng)過3個小時的不間斷測試,數(shù)據(jù)傳輸正常,沒有錯誤和時延,數(shù)據(jù)讀取間隔設(shè)置為10 s一次。實驗3距離最大,約為1 920 s,控制中心位于C點,由于使用車載電源進(jìn)行測試,測試時間有一定限制,初步測試時間為2小時,電臺天線位于車篷上面,監(jiān)測系統(tǒng)仍然位于A點,天線位置不變,每15 s對數(shù)據(jù)進(jìn)行讀取一次,但依然有3組數(shù)據(jù)發(fā)生錯誤,特別是溶解氧和溶解氧溫度這兩個數(shù)據(jù)都發(fā)生了亂碼,同組中的其他數(shù)據(jù)發(fā)生錯誤概率較小。這里的數(shù)據(jù)正確率是按發(fā)生錯誤的組數(shù)與收到數(shù)據(jù)的總組數(shù)相比得出的結(jié)果。
表4 實驗結(jié)果Tab.4 Experimental results
從表4可以看出,在兩個電臺間距離不斷增大時,數(shù)據(jù)讀取存儲的時間要變長,而且在距離為1 920 m時,數(shù)據(jù)傳輸發(fā)生錯誤,這是由于電臺通信時,數(shù)據(jù)傳輸?shù)貌坏劫|(zhì)量保證,A點和C點在一些遮擋物作用下,再加上多徑傳輸特性的影響,發(fā)生了錯誤或延時,導(dǎo)致串口讀取的數(shù)據(jù)發(fā)生了錯誤。該監(jiān)測系統(tǒng)將被用于監(jiān)測湖泊水質(zhì)的變化,在距離上要小于實驗2測試時的距離,所以能夠保證數(shù)據(jù)的有效性和實時性。如今后要傳輸更遠(yuǎn)的距離,可以在兩個電臺之間增加一個中繼器,達(dá)到數(shù)據(jù)的有效視距傳輸。
本研究運用Modbus協(xié)議在工業(yè)上優(yōu)點,使用電臺傳輸水質(zhì)監(jiān)測系統(tǒng)所監(jiān)測的水質(zhì)數(shù)據(jù),是對Modbus協(xié)議在水質(zhì)監(jiān)測系統(tǒng)應(yīng)用上的再一次肯定。無線電臺的使用使得數(shù)據(jù)傳輸更加方便,具有通信距離遠(yuǎn)、設(shè)備簡單、成本低廉、抗毀性強、靈活機動等特點。2.4 GHz的微波傳輸按直線傳輸,在距離較遠(yuǎn)、遮擋物較多,會造成信號損耗。雖然數(shù)據(jù)能夠通過電臺進(jìn)行傳輸,但是有一定的錯誤率,這對實時監(jiān)測水質(zhì)的設(shè)備來說是不準(zhǔn)許的。所以在保證數(shù)據(jù)有效傳輸?shù)那闆r下,應(yīng)該盡量使兩個電臺之間距離在數(shù)據(jù)不發(fā)生錯誤的情況下使用。為了克服距離上、傳輸速度及穩(wěn)定性問題,水質(zhì)監(jiān)測系統(tǒng)應(yīng)該向綜合3G網(wǎng)絡(luò)和衛(wèi)星通信的復(fù)合通信模式方向上發(fā)展。
[1]程立.在線水質(zhì)分析儀器應(yīng)用技術(shù)的發(fā)展[J].分析儀器,2011(2):75-76.
CHENG Li.Development of application techniques of on-line water quality analysis instruments[J].Analytical Instrumentation,2011(2):75-76.
[2]李宇航,廖海洋,溫志渝,等.庫區(qū)水質(zhì)在線監(jiān)測數(shù)據(jù)采集控制系統(tǒng)設(shè)計[J].傳感器與微系統(tǒng),2011,30(2):61-62.
LI Yu-hang,LIAO Hai-yang,WEN Zhi-yu,et al.Design of online water quality monitoring data acquisition and control system for the reservoir[J].Transducer and Microsystem Technologies,2011,30(2):61-62.
[3]柴小麗,沈博,王青玲.水質(zhì)監(jiān)測中的快速傳感技術(shù)[J].環(huán)境科學(xué)與技術(shù),2006,29(5):36-37.
CHAI Xiao-li,SHEN Bo,WANG Qing-ling.Fast sensing technology in water quality monitoring[J].Environmental Science and Technology,2006,29(5):36-37.
[4]呂愛東,宋萬琦,李鎮(zhèn)西.淺論水質(zhì)監(jiān)測系統(tǒng)的由來和發(fā)展[J].黑龍江水利科技,2002(3):70-71.
LV Ai-dong,SONG Wan-qi,LI Zhen-xi.Discussing about the origin and development of water quality monitoring system[J].Heilongjiang Science and Technology of Water Conservancy,2002(3):70-71.
[5]Modicon Inc.Modicon Modbus Protocol Reference Guide[Z].1996.
[6]MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b[Z].Modbus-IDA,2006.
[7]孫璐.Modbus/TCP協(xié)議在遠(yuǎn)程監(jiān)測中的應(yīng)用[J].計算技術(shù)與自動化,2009,28(4):119-120.
SUN Lu.A application of remote monitoring based Modbus/TCP [J].Computing Technology and Automation,2009,28(4):119-120.
[8]李明偉,郭廣峰,黃鴿.PIC單片機與觸摸屏串行通信的MODBUS協(xié)議實現(xiàn)[J].電子技術(shù)應(yīng)用,2005(9):40-42.
LI Ming-wei,GUO Guang-feng,HUANG Ge.PIC microcontroller communicate with touch screen by serial port based on modbus[J].Electronic Technology Application,2005(9):40-42.