環保數據監測系統是環境保護中的重要環節,傳統的環境監測是人工采集數據,監管效果差。針對這一問題設計了一種無線遠程環境在線監測系統,下位機采用西門子S7-200 PLC(可編程控制器)采集、存儲現場數據,通過GPRS(通用分組無線服務)DTU(數據傳輸單元)主動向數據中心發送采集到的實時數據,并能夠在指定的時間段內接收上位機指令,進行歷史數據查詢;上位機利用VB 6.0的Winsock控件接收多臺數據采集終端的數據,并進行分析處理。該系統已經在佛山市南海區運行,有效地提高了環境監管的效率。
傳統的環境監測,大多是環保局工作人員到污染源現場采集數據,手工記錄工廠的污染治理情況。由于要監測的廠家眾多,且廠家地理位置分散,工廠偷排現象十分普遍,即使花費了大量的人力和物力也無法完整地采集到污染源的相關數據。可見,傳統的人工環境監測手段已無法滿足環境監測的需要,針對這些問題,設計一個遠程環境在線監測系統,系統要求:①實時監測生產設備和治污設備的運行狀態;②能夠存儲一周內的數據,進行歷史數據的查詢和補足;③以動畫形式實時顯示設備狀態,以曲線形式進行對比分析,為污染源監管提供客觀科學依據,提高環保執法現代化水平。
現場數據的采集、遠程傳送、上位機可靠接收數據是一個成功的遠程監控系統的關鍵所在。本系統采用西門子PLC(programmable logic controllerr,可編程控制器)采集生產設備和治污設備的開關量信息;使用工業級GPRS(general packet radio service,通用分組無線服務)DTU(data terminal unit,數據傳輸單元)傳送數據;利用2個基于TCP/IP(transmission control protocol/internet protocol,傳輸控制協議/網際協議)協議的應用程序之間相互通信的套接字(Socket)技術接收數據。數據中心服務器將接收到的數據存儲到數據庫中,并以動畫、曲線等形式顯示。
1 系統架構
系統的總體結構如圖1所示。系統主要由3部分組成:西門子S7—200CPU 224XP CN采集實時數據部分、GPRS DTU數據傳輸部分、環保局數據中心部分。

圖1系統總體結構
1.1 PLC實時數據采集
PLC實時讀取輸入寄存器IW0的值,將時鐘信息和設備狀態信息數據打包后,通過串行口RS 485每隔30S將數據發送到GPRS DTU通信模塊,然后再傳送到中心服務器,供實時的動畫和曲線等顯示使用,PLC每隔5 min存儲一條記錄到歷史數據表中,歷史數據表可在指定的時間段內接受數據中心服務器發送來的數據杏詢/數據補足等命令,完成相應的歷史數據查詢功能和某天的數據補足功能。
1.2 GPRS無線數據傳輸
GPRS是在現有GSM(global system for mobilecommunication,泛歐式數位行動電話系統)網絡的基礎上疊加了一個新的網絡形成的邏輯實體而發展出來的新的分組數據承載業務。GPRS的理論帶寬可達171.2 kbit.S-1,實際使用帶寬大約在10~70kbit.S-1,底層支持TCP/IP協議,使得GPRS能夠與Internet實現無縫連接,GPRS無線網絡具有接入速度快、永遠在線、覆蓋面廣、運營成本低廉、組網靈活、系統擴容方便等特點。
GPRS DTU是GPRS網絡的數據終端,GPRSDTU提供了RS232/RS485接口,可以跟PLC等串口設備連接起來進行數據交互,在GPRS DTU模塊上配置了串口設備的波特率、數據位、校驗位、數據中心的IP地址、端口等信息后,就可以透明地將PLC發往串口的數據通過GPRS網絡傳送到Internet網絡,然后再通過局域網將數據傳送到數據中心服務器。
1.3數據中心服務器
數據中心服務器接收并保存數據到SQL(structured query language,結構化查詢語言)數據庫中,然后對數據進行相應的操作,最終將數據以動畫、曲線等形式顯示,為科學執法提供數據支持,數據的接收采用VB 6.0的Winsock控件來實現,是本系統的關鍵之一。在數據傳輸過程中,要求數據中心服務器的IP地址與GPRS DTU中的IP地址一致。系統運行時,啟動Socket監聽,與遠程數據采集終端建立通信連接之后,就可以進行正常的數據接收。
2 PLC的程序設計
2.1 PLC通信方式
選擇合適的通信方式,是實現高效數據傳輸的關鍵。西門子S7—200系列CPU224XP_CN的通信方式有4種。
2.1.1點對點(point to point interface,PPI)方式
用于和西門子編程軟件或西門子的人機接口產品通信,是一種主從應答式通信模式。這種通信方式需要專用的PPI電纜。
2.1.2多點接口協議(multipoint interface,MPI)方式
用于在西門子的產品之間建立小型的通信網絡,允許多主通信和主從式通信。
2.1.3 DP(decentralized periphery,分散外設)方式
用于實現與分布式I/O(遠程I/O)的高速通訊。可以使用不同廠家的PROFIBUS(process field bus,過程現場總線)設備,但是需要專門的接口卡。
2.1.4 自由端口通信方式
這種通信方式允許用戶根據自己的實際情況定義通信協議,在多種智能設備之間進行通信。
PLC通過串口將數據上傳至GPRS DTU,再由GPRS DTU通過無線網絡將數據發送到數據中心服務器。自由端口通信協議可以通過程序靈活控制PLC串口的通信方式,通過程序控制,在大部分時間內使PLC作為主機,主動上傳實時數據,在指定的時間段內又可使PLC為從機,接受上位機的查詢命令,進行歷史數據的查詢,這樣可以最大限度地降低系統數據流量,降低運營成本。
2.2 PLC程序
PLC程序的流程如圖2所示,采用模塊化編程。主要程序為串口初始化子程序,實時數據發送子程序,歷史數據存儲子程序,歷史數據查詢中斷程序。
2.2.1 串口初始化子程序
S7-200系列CPU224XP_CN提供了2個標準的RS485端口Port0和Port1,選用Port0進行自由端口通信。串口初始化主要是設置一些標志寄存器的值,讓其按照指定的方式通信,比如,通過改變特殊標志位寄存器SMB30的值,就可以改變通信的波特率、奇偶校驗位、停止位等信息。這些設定必須與GPRS DTU的相關參數值相一致。串口初始化子程序只在每次PLC重啟時運行一次。

圖2 PLC程序流程圖
2.2.2實時數據發送子程序
S7-200系列PLC有專用的發送指令XMT,其格式為XMT_TABLE_PORT。接收指令為RCV,其格式為RCV_TABLE_PORT,其中PORT為通信端口,本系統設為端口0,TABLE為發送(接收)數據的數據緩沖區,其第1個字節為發送字符的個數,最大為255字節。
在本系統中,監測的設備都是比較大型的設備,不會頻繁啟停,也就是說監控對象的狀態不會頻繁地發生變化,每隔30 s發送一次實時數據到數據中心,已經可以滿足系統的實時性要求。
2.2.3歷史數據存儲子程序
系統將采集到的生產設備和治污設備的開關量信息(2字節),隔5 min存儲一次到歷史數據表中。考慮到要進行歷史數據補足查詢,每8 h(192字節)數據作為一個數據存儲單元,再加上數據頭和數據尾等信息,一個數據區200個字節。歷史數據保存7 d需要4 200字節,在PLC內存中就可以存儲最近7 d內的歷史數據。PLC程序使用時鐘信息確定每個數據具體的存儲位置。
2.2.4歷史數據查詢子程序
PLC利用時鐘信號控制自由端口通信,讓PLC在每天指定的時間段內,允許數據中心服務器對下位機進行歷史數據查詢。當進行數據補足時,就將缺失數據所在的數據區的數據(200字節)全部發送到數據中心服務器,確保數據庫歷史數據的完整。
查詢結束后,自動返回到PLC主動發送實時數據模式。
3 上位機程序設計
3.1 Winsock控件原理
對數據進行可靠的接收是整個系統的關鍵。Socket流式套接字是一種針對TCP的面向連接的套接字。直接采用Socket技術來實現數據中心服務器和遠程數據終端通信比較復雜。因此,采用集成了Socket技術的Winsock控件。
Winsock控件是微軟Windows提供的網絡編程接口,提供了基于TCP/IP協議的接口實現方法。它把與網絡通信相關的Windows Sockets API(application programming interface,應用程序接口)函數封裝成為一個整體。將網絡編程要用的函數作為控件的屬性和方法。通過對控件相關屬性的設置和方法的調用就可以實現穩定的網絡通信功能。該控件為用戶提供了訪問TCP和UDP(user datagramprotocol,用戶數據包協議)網絡的極其方便的途徑,并且適用于Microsoft Access,Visual Basic,VisualC++和Visual FoxPro等多種可視化編程環境。
本系統有多臺數據終端,要為每臺數據終端建立一個線程,負責實時高效的接收和發送數據。Visual Basic 6.0的Winsock控件數組可以很方便地實現這一功能,因此采用Visual Basic 6.0開發上位機程序。
圖3表示單臺數據終端與服務器數據中心進行數據交互的過程。當有多臺數據終端時,數據終端與服務器建立連接進行數據交互的過程相同,只需要增加新的Winsock控件實例,這里使用控件數組。具體方法是:在窗體中加入Winsock控件,命名為Listener,將它的Index屬性設置為0。作為Winsock控件數組的第一個元素。然后在窗體的Load事件中聲明一個模塊級的變量Count,把Count設置為0,數組中的第一個控件的Local port屬性設置為1011 (與GPRS DTU一致),接著調用控件的Listen方法。然后在連接請求時,代碼將檢測Index是否為0,如果為0,監聽控件將增加Count的值,并使用該號碼來創建新的控件實例,然后使用新的控件實例接受新的連接請求。這樣就可以完成多臺終端與服務器數據中心通信程序的設計。

圖3單臺數據終端與服務器通信工作流程
3.2數據中心服務器接收數據
數據中心服務器接收PLC實時數據的界面如圖4所示。可以看出,接收的實時數據有12個字節,以16進制顯示。在實時數據框中,00 04表示機器碼,09 12 02 09 33 02 00 04,表示09年12月02日09點33分02秒,00系統保留位,04表示星期三,8D CF表示設備的開關信息。在歷史數據框中,可以看到每隔30 s接收到的PLC的實時數據,1表示設備開,0表示設備關。在下位機補足數據框中,是數據中心服務器檢測到數據庫中某個時間段的數據有缺失時,進行數據補足查詢,得到的一段歷史數據。

圖4上位機接收的數據畫面

圖5實時狀態圖
服務器將收到的數據存儲到SQL數據庫中,然后在服務器的人機界面中,將數據以動畫、曲線等形式顯示出來,生動地展示污染源生產設備和治污設施的開關情況,為科學監管廠家的治污情況提供了數據支持。
4 結語
本文利用S7—200 PLC自由端口通信、GPRSDTU透明的數據傳輸、VB6.0的Winsock控件,成功實現了遠程環境在線監測系統的設計。
本系統已經成功地在佛山市南海區環保局運行。數據采集終端可以在環境惡劣的廠區穩定可靠運行;數據中心平臺可以以動畫的形式實時觀測到廠區生產設備和治理設備的運行狀態。圖5顯示了某家工廠的設備運行情況,指示燈為綠色表示設備在運行狀態,否則為紅色。此外,還能將生產設備和治理設備的歷史運行情況以曲線形式進行對比,分析治理設備是否和生產設備同步運行。
本遠程環境監測系統具有永遠在線,能夠在惡劣的工業環境中可靠運行、界面友好等特點。不僅可以應用在環境監測方面,在其他需要進行遠程監測的領域也有一定的參考借鑒價值。