技術(shù)
環(huán)保數(shù)據(jù)監(jiān)測(cè)系統(tǒng)是環(huán)境保護(hù)中的重要環(huán)節(jié),傳統(tǒng)的環(huán)境監(jiān)測(cè)是人工采集數(shù)據(jù),監(jiān)管效果差。針對(duì)這一問題設(shè)計(jì)了一種無線遠(yuǎn)程環(huán)境在線監(jiān)測(cè)系統(tǒng),下位機(jī)采用西門子S7-200 PLC(可編程控制器)采集、存儲(chǔ)現(xiàn)場(chǎng)數(shù)據(jù),通過GPRS(通用分組無線服務(wù))DTU(數(shù)據(jù)傳輸單元)主動(dòng)向數(shù)據(jù)中心發(fā)送采集到的實(shí)時(shí)數(shù)據(jù),并能夠在指定的時(shí)間段內(nèi)接收上位機(jī)指令,進(jìn)行歷史數(shù)據(jù)查詢;上位機(jī)利用VB 6.0的Winsock控件接收多臺(tái)數(shù)據(jù)采集終端的數(shù)據(jù),并進(jìn)行分析處理。該系統(tǒng)已經(jīng)在佛山市南海區(qū)運(yùn)行,有效地提高了環(huán)境監(jiān)管的效率。
傳統(tǒng)的環(huán)境監(jiān)測(cè),大多是環(huán)保局工作人員到污染源現(xiàn)場(chǎng)采集數(shù)據(jù),手工記錄工廠的污染治理情況。由于要監(jiān)測(cè)的廠家眾多,且廠家地理位置分散,工廠偷排現(xiàn)象十分普遍,即使花費(fèi)了大量的人力和物力也無法完整地采集到污染源的相關(guān)數(shù)據(jù)??梢姡瑐鹘y(tǒng)的人工環(huán)境監(jiān)測(cè)手段已無法滿足環(huán)境監(jiān)測(cè)的需要,針對(duì)這些問題,設(shè)計(jì)一個(gè)遠(yuǎn)程環(huán)境在線監(jiān)測(cè)系統(tǒng),系統(tǒng)要求:①實(shí)時(shí)監(jiān)測(cè)生產(chǎn)設(shè)備和治污設(shè)備的運(yùn)行狀態(tài);②能夠存儲(chǔ)一周內(nèi)的數(shù)據(jù),進(jìn)行歷史數(shù)據(jù)的查詢和補(bǔ)足;③以動(dòng)畫形式實(shí)時(shí)顯示設(shè)備狀態(tài),以曲線形式進(jìn)行對(duì)比分析,為污染源監(jiān)管提供客觀科學(xué)依據(jù),提高環(huán)保執(zhí)法現(xiàn)代化水平。
現(xiàn)場(chǎng)數(shù)據(jù)的采集、遠(yuǎn)程傳送、上位機(jī)可靠接收數(shù)據(jù)是一個(gè)成功的遠(yuǎn)程監(jiān)控系統(tǒng)的關(guān)鍵所在。本系統(tǒng)采用西門子PLC(programmable logic controllerr,可編程控制器)采集生產(chǎn)設(shè)備和治污設(shè)備的開關(guān)量信息;使用工業(yè)級(jí)GPRS(general packet radio service,通用分組無線服務(wù))DTU(data terminal unit,數(shù)據(jù)傳輸單元)傳送數(shù)據(jù);利用2個(gè)基于TCP/IP(transmission control protocol/internet protocol,傳輸控制協(xié)議/網(wǎng)際協(xié)議)協(xié)議的應(yīng)用程序之間相互通信的套接字(Socket)技術(shù)接收數(shù)據(jù)。數(shù)據(jù)中心服務(wù)器將接收到的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,并以動(dòng)畫、曲線等形式顯示。
1 系統(tǒng)架構(gòu)
系統(tǒng)的總體結(jié)構(gòu)如圖1所示。系統(tǒng)主要由3部分組成:西門子S7—200CPU 224XP CN采集實(shí)時(shí)數(shù)據(jù)部分、GPRS DTU數(shù)據(jù)傳輸部分、環(huán)保局?jǐn)?shù)據(jù)中心部分。
圖1系統(tǒng)總體結(jié)構(gòu)
1.1 PLC實(shí)時(shí)數(shù)據(jù)采集
PLC實(shí)時(shí)讀取輸入寄存器IW0的值,將時(shí)鐘信息和設(shè)備狀態(tài)信息數(shù)據(jù)打包后,通過串行口RS 485每隔30S將數(shù)據(jù)發(fā)送到GPRS DTU通信模塊,然后再傳送到中心服務(wù)器,供實(shí)時(shí)的動(dòng)畫和曲線等顯示使用,PLC每隔5 min存儲(chǔ)一條記錄到歷史數(shù)據(jù)表中,歷史數(shù)據(jù)表可在指定的時(shí)間段內(nèi)接受數(shù)據(jù)中心服務(wù)器發(fā)送來的數(shù)據(jù)杏詢/數(shù)據(jù)補(bǔ)足等命令,完成相應(yīng)的歷史數(shù)據(jù)查詢功能和某天的數(shù)據(jù)補(bǔ)足功能。
1.2 GPRS無線數(shù)據(jù)傳輸
GPRS是在現(xiàn)有GSM(global system for mobilecommunication,泛歐式數(shù)位行動(dòng)電話系統(tǒng))網(wǎng)絡(luò)的基礎(chǔ)上疊加了一個(gè)新的網(wǎng)絡(luò)形成的邏輯實(shí)體而發(fā)展出來的新的分組數(shù)據(jù)承載業(yè)務(wù)。GPRS的理論帶寬可達(dá)171.2 kbit.S-1,實(shí)際使用帶寬大約在10~70kbit.S-1,底層支持TCP/IP協(xié)議,使得GPRS能夠與Internet實(shí)現(xiàn)無縫連接,GPRS無線網(wǎng)絡(luò)具有接入速度快、永遠(yuǎn)在線、覆蓋面廣、運(yùn)營(yíng)成本低廉、組網(wǎng)靈活、系統(tǒng)擴(kuò)容方便等特點(diǎn)。
GPRS DTU是GPRS網(wǎng)絡(luò)的數(shù)據(jù)終端,GPRSDTU提供了RS232/RS485接口,可以跟PLC等串口設(shè)備連接起來進(jìn)行數(shù)據(jù)交互,在GPRS DTU模塊上配置了串口設(shè)備的波特率、數(shù)據(jù)位、校驗(yàn)位、數(shù)據(jù)中心的IP地址、端口等信息后,就可以透明地將PLC發(fā)往串口的數(shù)據(jù)通過GPRS網(wǎng)絡(luò)傳送到Internet網(wǎng)絡(luò),然后再通過局域網(wǎng)將數(shù)據(jù)傳送到數(shù)據(jù)中心服務(wù)器。
1.3數(shù)據(jù)中心服務(wù)器
數(shù)據(jù)中心服務(wù)器接收并保存數(shù)據(jù)到SQL(structured query language,結(jié)構(gòu)化查詢語言)數(shù)據(jù)庫(kù)中,然后對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的操作,最終將數(shù)據(jù)以動(dòng)畫、曲線等形式顯示,為科學(xué)執(zhí)法提供數(shù)據(jù)支持,數(shù)據(jù)的接收采用VB 6.0的Winsock控件來實(shí)現(xiàn),是本系統(tǒng)的關(guān)鍵之一。在數(shù)據(jù)傳輸過程中,要求數(shù)據(jù)中心服務(wù)器的IP地址與GPRS DTU中的IP地址一致。系統(tǒng)運(yùn)行時(shí),啟動(dòng)Socket監(jiān)聽,與遠(yuǎn)程數(shù)據(jù)采集終端建立通信連接之后,就可以進(jìn)行正常的數(shù)據(jù)接收。
2 PLC的程序設(shè)計(jì)
2.1 PLC通信方式
選擇合適的通信方式,是實(shí)現(xiàn)高效數(shù)據(jù)傳輸?shù)年P(guān)鍵。西門子S7—200系列CPU224XP_CN的通信方式有4種。
2.1.1點(diǎn)對(duì)點(diǎn)(point to point interface,PPI)方式
用于和西門子編程軟件或西門子的人機(jī)接口產(chǎn)品通信,是一種主從應(yīng)答式通信模式。這種通信方式需要專用的PPI電纜。
2.1.2多點(diǎn)接口協(xié)議(multipoint interface,MPI)方式
用于在西門子的產(chǎn)品之間建立小型的通信網(wǎng)絡(luò),允許多主通信和主從式通信。
2.1.3 DP(decentralized periphery,分散外設(shè))方式
用于實(shí)現(xiàn)與分布式I/O(遠(yuǎn)程I/O)的高速通訊。可以使用不同廠家的PROFIBUS(process field bus,過程現(xiàn)場(chǎng)總線)設(shè)備,但是需要專門的接口卡。
2.1.4 自由端口通信方式
這種通信方式允許用戶根據(jù)自己的實(shí)際情況定義通信協(xié)議,在多種智能設(shè)備之間進(jìn)行通信。
PLC通過串口將數(shù)據(jù)上傳至GPRS DTU,再由GPRS DTU通過無線網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到數(shù)據(jù)中心服務(wù)器。自由端口通信協(xié)議可以通過程序靈活控制PLC串口的通信方式,通過程序控制,在大部分時(shí)間內(nèi)使PLC作為主機(jī),主動(dòng)上傳實(shí)時(shí)數(shù)據(jù),在指定的時(shí)間段內(nèi)又可使PLC為從機(jī),接受上位機(jī)的查詢命令,進(jìn)行歷史數(shù)據(jù)的查詢,這樣可以最大限度地降低系統(tǒng)數(shù)據(jù)流量,降低運(yùn)營(yíng)成本。
2.2 PLC程序
PLC程序的流程如圖2所示,采用模塊化編程。主要程序?yàn)榇诔跏蓟映绦颍瑢?shí)時(shí)數(shù)據(jù)發(fā)送子程序,歷史數(shù)據(jù)存儲(chǔ)子程序,歷史數(shù)據(jù)查詢中斷程序。
2.2.1 串口初始化子程序
S7-200系列CPU224XP_CN提供了2個(gè)標(biāo)準(zhǔn)的RS485端口Port0和Port1,選用Port0進(jìn)行自由端口通信。串口初始化主要是設(shè)置一些標(biāo)志寄存器的值,讓其按照指定的方式通信,比如,通過改變特殊標(biāo)志位寄存器SMB30的值,就可以改變通信的波特率、奇偶校驗(yàn)位、停止位等信息。這些設(shè)定必須與GPRS DTU的相關(guān)參數(shù)值相一致。串口初始化子程序只在每次PLC重啟時(shí)運(yùn)行一次。
圖2 PLC程序流程圖
2.2.2實(shí)時(shí)數(shù)據(jù)發(fā)送子程序
S7-200系列PLC有專用的發(fā)送指令XMT,其格式為XMT_TABLE_PORT。接收指令為RCV,其格式為RCV_TABLE_PORT,其中PORT為通信端口,本系統(tǒng)設(shè)為端口0,TABLE為發(fā)送(接收)數(shù)據(jù)的數(shù)據(jù)緩沖區(qū),其第1個(gè)字節(jié)為發(fā)送字符的個(gè)數(shù),最大為255字節(jié)。
在本系統(tǒng)中,監(jiān)測(cè)的設(shè)備都是比較大型的設(shè)備,不會(huì)頻繁啟停,也就是說監(jiān)控對(duì)象的狀態(tài)不會(huì)頻繁地發(fā)生變化,每隔30 s發(fā)送一次實(shí)時(shí)數(shù)據(jù)到數(shù)據(jù)中心,已經(jīng)可以滿足系統(tǒng)的實(shí)時(shí)性要求。
{$PAGE$}
2.2.3歷史數(shù)據(jù)存儲(chǔ)子程序
系統(tǒng)將采集到的生產(chǎn)設(shè)備和治污設(shè)備的開關(guān)量信息(2字節(jié)),隔5 min存儲(chǔ)一次到歷史數(shù)據(jù)表中??紤]到要進(jìn)行歷史數(shù)據(jù)補(bǔ)足查詢,每8 h(192字節(jié))數(shù)據(jù)作為一個(gè)數(shù)據(jù)存儲(chǔ)單元,再加上數(shù)據(jù)頭和數(shù)據(jù)尾等信息,一個(gè)數(shù)據(jù)區(qū)200個(gè)字節(jié)。歷史數(shù)據(jù)保存7 d需要4 200字節(jié),在PLC內(nèi)存中就可以存儲(chǔ)最近7 d內(nèi)的歷史數(shù)據(jù)。PLC程序使用時(shí)鐘信息確定每個(gè)數(shù)據(jù)具體的存儲(chǔ)位置。
2.2.4歷史數(shù)據(jù)查詢子程序
PLC利用時(shí)鐘信號(hào)控制自由端口通信,讓PLC在每天指定的時(shí)間段內(nèi),允許數(shù)據(jù)中心服務(wù)器對(duì)下位機(jī)進(jìn)行歷史數(shù)據(jù)查詢。當(dāng)進(jìn)行數(shù)據(jù)補(bǔ)足時(shí),就將缺失數(shù)據(jù)所在的數(shù)據(jù)區(qū)的數(shù)據(jù)(200字節(jié))全部發(fā)送到數(shù)據(jù)中心服務(wù)器,確保數(shù)據(jù)庫(kù)歷史數(shù)據(jù)的完整。
查詢結(jié)束后,自動(dòng)返回到PLC主動(dòng)發(fā)送實(shí)時(shí)數(shù)據(jù)模式。
3上位機(jī)程序設(shè)計(jì)
3.1 Winsock控件原理
對(duì)數(shù)據(jù)進(jìn)行可靠的接收是整個(gè)系統(tǒng)的關(guān)鍵。Socket流式套接字是一種針對(duì)TCP的面向連接的套接字。直接采用Socket技術(shù)來實(shí)現(xiàn)數(shù)據(jù)中心服務(wù)器和遠(yuǎn)程數(shù)據(jù)終端通信比較復(fù)雜。因此,采用集成了Socket技術(shù)的Winsock控件。
Winsock控件是微軟Windows提供的網(wǎng)絡(luò)編程接口,提供了基于TCP/IP協(xié)議的接口實(shí)現(xiàn)方法。它把與網(wǎng)絡(luò)通信相關(guān)的Windows Sockets API(application programming interface,應(yīng)用程序接口)函數(shù)封裝成為一個(gè)整體。將網(wǎng)絡(luò)編程要用的函數(shù)作為控件的屬性和方法。通過對(duì)控件相關(guān)屬性的設(shè)置和方法的調(diào)用就可以實(shí)現(xiàn)穩(wěn)定的網(wǎng)絡(luò)通信功能。該控件為用戶提供了訪問TCP和UDP(user datagramprotocol,用戶數(shù)據(jù)包協(xié)議)網(wǎng)絡(luò)的極其方便的途徑,并且適用于Microsoft Access,Visual Basic,VisualC++和Visual FoxPro等多種可視化編程環(huán)境。
本系統(tǒng)有多臺(tái)數(shù)據(jù)終端,要為每臺(tái)數(shù)據(jù)終端建立一個(gè)線程,負(fù)責(zé)實(shí)時(shí)高效的接收和發(fā)送數(shù)據(jù)。Visual Basic 6.0的Winsock控件數(shù)組可以很方便地實(shí)現(xiàn)這一功能,因此采用Visual Basic 6.0開發(fā)上位機(jī)程序。
圖3表示單臺(tái)數(shù)據(jù)終端與服務(wù)器數(shù)據(jù)中心進(jìn)行數(shù)據(jù)交互的過程。當(dāng)有多臺(tái)數(shù)據(jù)終端時(shí),數(shù)據(jù)終端與服務(wù)器建立連接進(jìn)行數(shù)據(jù)交互的過程相同,只需要增加新的Winsock控件實(shí)例,這里使用控件數(shù)組。具體方法是:在窗體中加入Winsock控件,命名為L(zhǎng)istener,將它的Index屬性設(shè)置為0。作為Winsock控件數(shù)組的第一個(gè)元素。然后在窗體的Load事件中聲明一個(gè)模塊級(jí)的變量Count,把Count設(shè)置為0,數(shù)組中的第一個(gè)控件的Local port屬性設(shè)置為1011 (與GPRS DTU一致),接著調(diào)用控件的Listen方法。然后在連接請(qǐng)求時(shí),代碼將檢測(cè)Index是否為0,如果為0,監(jiān)聽控件將增加Count的值,并使用該號(hào)碼來創(chuàng)建新的控件實(shí)例,然后使用新的控件實(shí)例接受新的連接請(qǐng)求。這樣就可以完成多臺(tái)終端與服務(wù)器數(shù)據(jù)中心通信程序的設(shè)計(jì)。
圖3單臺(tái)數(shù)據(jù)終端與服務(wù)器通信工作流程
3.2數(shù)據(jù)中心服務(wù)器接收數(shù)據(jù)
數(shù)據(jù)中心服務(wù)器接收PLC實(shí)時(shí)數(shù)據(jù)的界面如圖4所示??梢钥闯觯邮盏膶?shí)時(shí)數(shù)據(jù)有12個(gè)字節(jié),以16進(jìn)制顯示。在實(shí)時(shí)數(shù)據(jù)框中,00 04表示機(jī)器碼,09 12 02 09 33 02 00 04,表示09年12月02日09點(diǎn)33分02秒,00系統(tǒng)保留位,04表示星期三,8D CF表示設(shè)備的開關(guān)信息。在歷史數(shù)據(jù)框中,可以看到每隔30 s接收到的PLC的實(shí)時(shí)數(shù)據(jù),1表示設(shè)備開,0表示設(shè)備關(guān)。在下位機(jī)補(bǔ)足數(shù)據(jù)框中,是數(shù)據(jù)中心服務(wù)器檢測(cè)到數(shù)據(jù)庫(kù)中某個(gè)時(shí)間段的數(shù)據(jù)有缺失時(shí),進(jìn)行數(shù)據(jù)補(bǔ)足查詢,得到的一段歷史數(shù)據(jù)。
圖4上位機(jī)接收的數(shù)據(jù)畫面
圖5實(shí)時(shí)狀態(tài)圖
服務(wù)器將收到的數(shù)據(jù)存儲(chǔ)到SQL數(shù)據(jù)庫(kù)中,然后在服務(wù)器的人機(jī)界面中,將數(shù)據(jù)以動(dòng)畫、曲線等形式顯示出來,生動(dòng)地展示污染源生產(chǎn)設(shè)備和治污設(shè)施的開關(guān)情況,為科學(xué)監(jiān)管廠家的治污情況提供了數(shù)據(jù)支持。
4結(jié)語
本文利用S7—200 PLC自由端口通信、GPRSDTU透明的數(shù)據(jù)傳輸、VB6.0的Winsock控件,成功實(shí)現(xiàn)了遠(yuǎn)程環(huán)境在線監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)。
本系統(tǒng)已經(jīng)成功地在佛山市南海區(qū)環(huán)保局運(yùn)行。數(shù)據(jù)采集終端可以在環(huán)境惡劣的廠區(qū)穩(wěn)定可靠運(yùn)行;數(shù)據(jù)中心平臺(tái)可以以動(dòng)畫的形式實(shí)時(shí)觀測(cè)到廠區(qū)生產(chǎn)設(shè)備和治理設(shè)備的運(yùn)行狀態(tài)。圖5顯示了某家工廠的設(shè)備運(yùn)行情況,指示燈為綠色表示設(shè)備在運(yùn)行狀態(tài),否則為紅色。此外,還能將生產(chǎn)設(shè)備和治理設(shè)備的歷史運(yùn)行情況以曲線形式進(jìn)行對(duì)比,分析治理設(shè)備是否和生產(chǎn)設(shè)備同步運(yùn)行。
本遠(yuǎn)程環(huán)境監(jiān)測(cè)系統(tǒng)具有永遠(yuǎn)在線,能夠在惡劣的工業(yè)環(huán)境中可靠運(yùn)行、界面友好等特點(diǎn)。不僅可以應(yīng)用在環(huán)境監(jiān)測(cè)方面,在其他需要進(jìn)行遠(yuǎn)程監(jiān)測(cè)的領(lǐng)域也有一定的參考借鑒價(jià)值。