薛美盛 李先知 孫勝杰 袁 鑫
(中國科學(xué)技術(shù)大學(xué)信息科學(xué)技術(shù)學(xué)院,合肥 230027)
分布式污水處理廠遠程監(jiān)控系統(tǒng)的開發(fā)
薛美盛 李先知 孫勝杰 袁 鑫
(中國科學(xué)技術(shù)大學(xué)信息科學(xué)技術(shù)學(xué)院,合肥 230027)
采用OPC協(xié)議和ZMQ協(xié)議,開發(fā)了一套分布式污水處理廠遠程監(jiān)控系統(tǒng)。系統(tǒng)主要包括數(shù)據(jù)采集、存儲、發(fā)送及接收指令等幾個主要模塊,給出了這幾個模塊的設(shè)計方案。在各污水處理廠配置一套遠程監(jiān)控節(jié)點,實現(xiàn)了現(xiàn)場數(shù)據(jù)的采集、存儲和遠程發(fā)送,同時可方便地接收遠程指令。
遠程監(jiān)控 OPC ZMQ
隨著計算機技術(shù)和自動控制理論的發(fā)展,現(xiàn)代工廠越來越多地采用計算機進行控制[1,2]。在污水處理現(xiàn)場,基本上實現(xiàn)了全自動控制,但傳統(tǒng)的工業(yè)控制網(wǎng)絡(luò)主要是針對現(xiàn)場設(shè)備進行監(jiān)控。工業(yè)控制網(wǎng)絡(luò)分布在不同現(xiàn)場,不能直接與互聯(lián)網(wǎng)連接,導(dǎo)致各設(shè)備數(shù)據(jù)和資源比較封閉,形成信息孤島[3]。這將不利于企業(yè)的統(tǒng)一管控,控制效率低,給企業(yè)的管理帶來了極大的不便。
將工業(yè)控制網(wǎng)絡(luò)和互聯(lián)網(wǎng)進行連接,實現(xiàn)工業(yè)控制網(wǎng)絡(luò)遠程通信,利用網(wǎng)絡(luò)接口將工業(yè)控制網(wǎng)絡(luò)的各種信息發(fā)送到遠程監(jiān)控端,實現(xiàn)統(tǒng)一控制,提高工業(yè)控制效率。筆者開發(fā)的遠程監(jiān)控系統(tǒng),在現(xiàn)場以O(shè)PC協(xié)議實現(xiàn)數(shù)據(jù)的采集,并將數(shù)據(jù)存在本地數(shù)據(jù)庫中,利用服務(wù)器端ZMQ協(xié)議,將數(shù)據(jù)發(fā)送到遠程服務(wù)器,并將接收的遠程指令寫到工業(yè)控制現(xiàn)場。遠程監(jiān)控端根據(jù)不同的FactoryID來區(qū)分不同的工業(yè)控制網(wǎng)絡(luò),并將控制指令寫到不同的工業(yè)控制網(wǎng)絡(luò)現(xiàn)場,對分布式污水處理現(xiàn)場真正地實現(xiàn)了遠程監(jiān)視和控制。
OPC協(xié)議標(biāo)準(zhǔn)包括OPC數(shù)據(jù)訪問、報警與事件及歷史數(shù)據(jù)訪問等。OPC技術(shù)基于Windows的OLE、COM和DCOM技術(shù)[4],為硬件廠商和應(yīng)用軟件開發(fā)者提供了一套標(biāo)準(zhǔn)接口。OPC數(shù)據(jù)訪問技術(shù)把硬件廠商和軟件開發(fā)商分離開來,提供了從不同的硬件設(shè)備和數(shù)據(jù)庫提取數(shù)據(jù)的標(biāo)準(zhǔn)方法。OPC采用客戶端和服務(wù)器端通信模式,硬件開發(fā)者通過提供OPC服務(wù)器,使任何帶有OPC接口的客戶程序都可采用統(tǒng)一的方式,對不同的硬件設(shè)備數(shù)據(jù)進行存取。采用OPC技術(shù)開發(fā)工業(yè)控制系統(tǒng)已成為一種趨勢,在短短的幾年內(nèi)得到了越來越多的硬件廠商和軟件開發(fā)者的支持,成為了工業(yè)控制軟件的標(biāo)準(zhǔn)[5]。
2.1數(shù)據(jù)采集模塊
在遠程監(jiān)控系統(tǒng)中,工業(yè)控制網(wǎng)絡(luò)現(xiàn)場數(shù)據(jù)的采集包括OPC服務(wù)器數(shù)據(jù)節(jié)點和數(shù)據(jù)采集傳輸儀數(shù)據(jù)節(jié)點?,F(xiàn)階段污水處理基本上都采用計算機監(jiān)控系統(tǒng),比較常用的監(jiān)控軟件有西門子的WinCC、三維力控的ForceControl和亞控的組態(tài)王[6]。該系統(tǒng)現(xiàn)場使用的組態(tài)軟件是亞控的組態(tài)王6.53版本,組態(tài)王安裝好以后就可以做OPC服務(wù)器,其OPC服務(wù)器的名稱為KingView.View.1[7]。監(jiān)控系統(tǒng)采用OPC協(xié)議和OPC服務(wù)器進行通信。數(shù)據(jù)采集傳輸儀采用廣州某公司K37型環(huán)保數(shù)采儀,它和環(huán)保中心通過GPRS進行通信,同時本身帶有兩個RS-232接口,監(jiān)控系統(tǒng)采用RS-232接口和Modbus協(xié)議同數(shù)據(jù)采集傳輸儀通信[8]。
系統(tǒng)使用C#開發(fā)OPC客戶端,利用自動化接口和OPCDAAuto.dll開源組件[9]。開發(fā)OPC客戶端的流程包括:枚舉計算機上所有的OPC服務(wù)器名稱、連接需要的OPC服務(wù)器、遍歷該OPC服務(wù)器所有的Group、遍歷Group下所有的Item[9,10]、選取自己感興趣的數(shù)據(jù)節(jié)點。如果連接遠程OPC服務(wù)器,還需要配置OPC服務(wù)器和客戶端的DCOM。為了實現(xiàn)OPC服務(wù)器的冗余備份,還要填寫備用服務(wù)器的IP地址和OPC服務(wù)器的名稱。主程序中設(shè)置一個10s的定時器,對數(shù)據(jù)進行采集,將采集到的數(shù)據(jù)暫存到存儲和發(fā)送隊列中,供存儲和發(fā)送模塊進行調(diào)用。本項目是連接本地OPC服務(wù)器,無需對服務(wù)器和客戶端的DCOM進行配置,連接界面如圖1所示。
圖1 OPC客戶端連接界面
2.2數(shù)據(jù)存儲模塊
現(xiàn)場采用的數(shù)據(jù)庫是微軟公司的SQL Server 2008,它提供了兩種數(shù)據(jù)庫的連接方式,根據(jù)用戶名和密碼連接,也可以采用Windows驗證進行連接[11]。在使用用戶名和密碼連接數(shù)據(jù)庫時,需要指定數(shù)據(jù)庫服務(wù)器的名稱、數(shù)據(jù)庫名稱、數(shù)據(jù)庫用戶名和密碼。存儲之前先在數(shù)據(jù)庫中建兩個豎表,每個表的大小為800,并且以采集的時間作為表的主鍵。目前數(shù)據(jù)節(jié)點有1 280多個,隨著數(shù)據(jù)節(jié)點的增多,當(dāng)容量達到了設(shè)計上限,數(shù)據(jù)庫會自動建立容量為800的新表。
2.3數(shù)據(jù)發(fā)送和接收指令模塊
數(shù)據(jù)發(fā)送采用JSON格式,它是一種輕量級的數(shù)據(jù)交換格式,具有良好的可讀性,可在不同平臺之間進行數(shù)據(jù)交換[12]。筆者采用第三方開源組件Newtonsoft.Json.dll對數(shù)據(jù)進行JSON格式序列化[13]。隨著數(shù)據(jù)節(jié)點的增多,數(shù)據(jù)量也在變大,故在數(shù)據(jù)發(fā)送之前先對數(shù)據(jù)進行GZIP數(shù)據(jù)壓縮,減少帶寬壓力。為保證工業(yè)控制網(wǎng)絡(luò)數(shù)據(jù)的安全性,在數(shù)據(jù)發(fā)送之前需要進行加密,采用的加密算法是AES對稱加密算法,它是美國國家標(biāo)準(zhǔn)與技術(shù)研究所用于加密電子數(shù)據(jù)的規(guī)范,是一個迭代的、對稱密鑰分組的密碼,可以使用128、192和256位密鑰[14]。
遠程服務(wù)器端采用ZMQ協(xié)議,它是類似于socket的一系列接口,跟socket的主要區(qū)別是,普通的socket是端到端的(1∶1的關(guān)系),而ZMQ卻是可以N∶M的關(guān)系。BSD套接字是點對點的連接,但點對點連接需要顯式地建立連接、銷毀連接、選擇協(xié)議(TCP/UDP)及處理錯誤等。而ZMQ屏蔽了這些細節(jié),讓網(wǎng)絡(luò)編程更為簡單。數(shù)據(jù)發(fā)送之前需要指定遠程ZMQ服務(wù)器的IP地址、端口號,設(shè)置數(shù)據(jù)包的個數(shù),發(fā)送周期、密鑰和工廠的FactoryID。
現(xiàn)場接收的遠程指令也為JSON格式,接收到的指令格式如下:
[“request”:“send_command”,”factory_id”:“jnshw_001”,“signal_id”:“auto_001”, “datetime”:“yyyymmdd hh:mm:ss”, “schedule_time”:“300s”, “command”:“shut”]
處理完現(xiàn)場指令向服務(wù)器發(fā)送確認(rèn)指令如下:
[“ack”:“command_success”,“factory_id”:“jnshw_001”,“signal_id”:“auto_001”, “datetime”:“yyyymmdd hh:mm:ss”, “value”:”0”]
為確?,F(xiàn)場和遠程服務(wù)器之間通信正常,每10s由中控采集向遠程網(wǎng)關(guān)發(fā)送一次心跳包。格式如下:
[“request”:“heartbeat”, “heartbeat_id”:“yyyymmdd_1”, “factory_id”:“jnshw_01”]
指令接收時序如圖2所示。
2.4其他模塊
日志的記錄是軟件開發(fā)中的重要組成部分。它可以記錄下完整的時序邏輯,供開發(fā)人員盡快找到應(yīng)用程序中的Bug,一旦在程序中加入了Log輸出代碼,程序運行過程中就能生成并輸出日志信息而無需人工干預(yù)。該系統(tǒng)主要把日志分為錯誤日志和時序邏輯日志兩個文件夾,文件夾的名字以日期命名,每天生成一個文件夾。日志記錄使用的組件是Log4net,它是第三方開源組件,可以在系統(tǒng)出現(xiàn)異常時,根據(jù)保存的日志信息,查看當(dāng)時系統(tǒng)的狀態(tài)。在程序容易出現(xiàn)異常的地方使用try…catch語句,捕捉到異常,并記錄到日志。
當(dāng)初次啟動系統(tǒng)的時候,系統(tǒng)會創(chuàng)建XML配置文件,用來保存系統(tǒng)的配置參數(shù)。主要包括用戶數(shù)據(jù)庫名稱、OPC服務(wù)器的地址、ZMQ服務(wù)器的地址和端口及發(fā)送數(shù)據(jù)包的設(shè)置參數(shù)等。XML文件可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,對于描述復(fù)雜的數(shù)據(jù)結(jié)構(gòu)非常方便,但使用上比INI文件稍麻煩[15]。再次啟動程序的時候,程序會自動從配置文件上查找相應(yīng)的參數(shù)。程序的主界面如圖3所示。
圖2 指令接收時序
圖3 程序主界面
在遠程服務(wù)器端,將接收的數(shù)據(jù)繪制出實時曲線,可方便地監(jiān)測某些變量是否滿足要求,根據(jù)變量的變化趨勢及時向現(xiàn)場發(fā)送控制指令。服務(wù)器端節(jié)點曲線如圖4所示。
圖4 服務(wù)器端節(jié)點曲線
遠程監(jiān)控系統(tǒng)基于OPC通信協(xié)議和ZMQ協(xié)議,將孤立的工業(yè)控制網(wǎng)絡(luò)連接到互聯(lián)網(wǎng),實現(xiàn)了遠程中心對分布式污水處理廠的實時監(jiān)視和控制。系統(tǒng)包括數(shù)據(jù)采集、存儲、發(fā)送及接收指令等幾個主要模塊,根據(jù)單元測試用例,對模塊進行了單元測試。最終將開發(fā)的系統(tǒng)運行在工業(yè)控制現(xiàn)場,可在遠程數(shù)據(jù)中心實時監(jiān)控不同污水處理廠的數(shù)據(jù),并向現(xiàn)場發(fā)送控制指令,給企業(yè)的管理帶來了極大的方便。
[1] 任學(xué)勇,王鵬起,車顏喆,等.流化床式生物質(zhì)快速熱解設(shè)備監(jiān)控系統(tǒng)的設(shè)計與開發(fā)[J].化工機械,2011,38(2):166~169.
[2] 童少為,施云貴.基于系列GE90-30 PLC實現(xiàn)的鍋爐汽包水位監(jiān)控系統(tǒng)[J].化工機械,2006,33(4):236~240.
[3] 李俊.基于TCP/IP協(xié)議的工業(yè)控制網(wǎng)絡(luò)遠程通信網(wǎng)關(guān)研究[J].自動化與儀器儀表,2014,(10):3~6.
[4] 李善宣.OPC技術(shù)在工業(yè)控制系統(tǒng)中的應(yīng)用研究[D].成都:西南交通大學(xué),2006.
[5] 顧志剛.一類基于OPC的工業(yè)控制系統(tǒng)的研究[D].杭州:浙江工業(yè)大學(xué),2007.
[6] 馬國華.監(jiān)控組態(tài)軟件的相關(guān)技術(shù)發(fā)展趨勢[J].自動化博覽,2009,26(2):16~20.
[7] 何新軍,張明贊.基于組態(tài)王的污水處理系統(tǒng)通訊設(shè)計[J].化工自動化及儀表,2004,31(5):38~40.
[8] 駱冬松,李瓊.基于GPRS的環(huán)保數(shù)據(jù)采集傳輸系統(tǒng)的研究與設(shè)計[J].工業(yè)儀表與自動化裝置,2011,(2):22~25.
[9] 黃娟.基于C#的OPC數(shù)據(jù)通信的設(shè)計與實現(xiàn)[J].工業(yè)控制計算機,2013,26(11):14~15.
[10] 黃錦花,常喜茂.基于快速開發(fā)工具的OPC客戶端的開發(fā)與實現(xiàn)[J].化工自動化及儀表,2013,40(7):894~897.
[11] 祁新安,侯清江.SQL Server數(shù)據(jù)庫的運用研究[J].制造業(yè)自動化,2010,32(14):30~32.
[12] 高靜,段會川.JSON數(shù)據(jù)傳輸效率研究[J].計算機工程與設(shè)計,2011,32(7):2267~2270.
[13] 王魁生,王曉波.利用JSON進行網(wǎng)站客戶端與服務(wù)器數(shù)據(jù)交互[J].軟件導(dǎo)刊,2010,9(3):147~149.
[14] 趙雪梅.AES加密算法的實現(xiàn)及應(yīng)用[J].常熟理工學(xué)院學(xué)報,2010,24(2):105~110.
[15] 張學(xué)敏.XML設(shè)計方法研究[D].武漢:武漢理工大學(xué),2006.
DevelopmentofRemoteMonitoringSystemforDistributedWastewaterTreatmentPlants
XUE Mei-sheng, LI Xian-zhi, SUN Sheng-jie, YUAN Xin
(SchoolofInformationScienceandTechnology,UniversityofScienceandTechnologyofChina,Hefei230027,China)
Through making use of OPC protocol and ZMQ protocol, a remote monitoring system for distributed sewage treatment plants was developed, in which, the modules for data collection and storage, data sending and receiving can be seen and the design scheme for these modules was presented; the remote monitoring nodes scattered over the sewage treatment plants can collect and store and send and receive field data, including the remote orders. The application of this system improves both management and control level greatly.
remote monitoring, OPC, ZMQ
2015-10-23
TH865
A
1000-3932(2016)07-0747-04