薛美盛 李先知 孫勝杰 袁 鑫
(中國(guó)科學(xué)技術(shù)大學(xué)信息科學(xué)技術(shù)學(xué)院,合肥 230027)
分布式污水處理廠遠(yuǎn)程監(jiān)控系統(tǒng)的開(kāi)發(fā)
薛美盛 李先知 孫勝杰 袁 鑫
(中國(guó)科學(xué)技術(shù)大學(xué)信息科學(xué)技術(shù)學(xué)院,合肥 230027)
采用OPC協(xié)議和ZMQ協(xié)議,開(kāi)發(fā)了一套分布式污水處理廠遠(yuǎn)程監(jiān)控系統(tǒng)。系統(tǒng)主要包括數(shù)據(jù)采集、存儲(chǔ)、發(fā)送及接收指令等幾個(gè)主要模塊,給出了這幾個(gè)模塊的設(shè)計(jì)方案。在各污水處理廠配置一套遠(yuǎn)程監(jiān)控節(jié)點(diǎn),實(shí)現(xiàn)了現(xiàn)場(chǎng)數(shù)據(jù)的采集、存儲(chǔ)和遠(yuǎn)程發(fā)送,同時(shí)可方便地接收遠(yuǎn)程指令。
遠(yuǎn)程監(jiān)控 OPC ZMQ
隨著計(jì)算機(jī)技術(shù)和自動(dòng)控制理論的發(fā)展,現(xiàn)代工廠越來(lái)越多地采用計(jì)算機(jī)進(jìn)行控制[1,2]。在污水處理現(xiàn)場(chǎng),基本上實(shí)現(xiàn)了全自動(dòng)控制,但傳統(tǒng)的工業(yè)控制網(wǎng)絡(luò)主要是針對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行監(jiān)控。工業(yè)控制網(wǎng)絡(luò)分布在不同現(xiàn)場(chǎng),不能直接與互聯(lián)網(wǎng)連接,導(dǎo)致各設(shè)備數(shù)據(jù)和資源比較封閉,形成信息孤島[3]。這將不利于企業(yè)的統(tǒng)一管控,控制效率低,給企業(yè)的管理帶來(lái)了極大的不便。
將工業(yè)控制網(wǎng)絡(luò)和互聯(lián)網(wǎng)進(jìn)行連接,實(shí)現(xiàn)工業(yè)控制網(wǎng)絡(luò)遠(yuǎn)程通信,利用網(wǎng)絡(luò)接口將工業(yè)控制網(wǎng)絡(luò)的各種信息發(fā)送到遠(yuǎn)程監(jiān)控端,實(shí)現(xiàn)統(tǒng)一控制,提高工業(yè)控制效率。筆者開(kāi)發(fā)的遠(yuǎn)程監(jiān)控系統(tǒng),在現(xiàn)場(chǎng)以O(shè)PC協(xié)議實(shí)現(xiàn)數(shù)據(jù)的采集,并將數(shù)據(jù)存在本地?cái)?shù)據(jù)庫(kù)中,利用服務(wù)器端ZMQ協(xié)議,將數(shù)據(jù)發(fā)送到遠(yuǎn)程服務(wù)器,并將接收的遠(yuǎn)程指令寫(xiě)到工業(yè)控制現(xiàn)場(chǎng)。遠(yuǎn)程監(jiān)控端根據(jù)不同的FactoryID來(lái)區(qū)分不同的工業(yè)控制網(wǎng)絡(luò),并將控制指令寫(xiě)到不同的工業(yè)控制網(wǎng)絡(luò)現(xiàn)場(chǎng),對(duì)分布式污水處理現(xiàn)場(chǎng)真正地實(shí)現(xiàn)了遠(yuǎn)程監(jiān)視和控制。
OPC協(xié)議標(biāo)準(zhǔn)包括OPC數(shù)據(jù)訪問(wèn)、報(bào)警與事件及歷史數(shù)據(jù)訪問(wèn)等。OPC技術(shù)基于Windows的OLE、COM和DCOM技術(shù)[4],為硬件廠商和應(yīng)用軟件開(kāi)發(fā)者提供了一套標(biāo)準(zhǔn)接口。OPC數(shù)據(jù)訪問(wèn)技術(shù)把硬件廠商和軟件開(kāi)發(fā)商分離開(kāi)來(lái),提供了從不同的硬件設(shè)備和數(shù)據(jù)庫(kù)提取數(shù)據(jù)的標(biāo)準(zhǔn)方法。OPC采用客戶端和服務(wù)器端通信模式,硬件開(kāi)發(fā)者通過(guò)提供OPC服務(wù)器,使任何帶有OPC接口的客戶程序都可采用統(tǒng)一的方式,對(duì)不同的硬件設(shè)備數(shù)據(jù)進(jìn)行存取。采用OPC技術(shù)開(kāi)發(fā)工業(yè)控制系統(tǒng)已成為一種趨勢(shì),在短短的幾年內(nèi)得到了越來(lái)越多的硬件廠商和軟件開(kāi)發(fā)者的支持,成為了工業(yè)控制軟件的標(biāo)準(zhǔn)[5]。
2.1數(shù)據(jù)采集模塊
在遠(yuǎn)程監(jiān)控系統(tǒng)中,工業(yè)控制網(wǎng)絡(luò)現(xiàn)場(chǎng)數(shù)據(jù)的采集包括OPC服務(wù)器數(shù)據(jù)節(jié)點(diǎn)和數(shù)據(jù)采集傳輸儀數(shù)據(jù)節(jié)點(diǎn)?,F(xiàn)階段污水處理基本上都采用計(jì)算機(jī)監(jiān)控系統(tǒng),比較常用的監(jiān)控軟件有西門子的WinCC、三維力控的ForceControl和亞控的組態(tài)王[6]。該系統(tǒng)現(xiàn)場(chǎng)使用的組態(tài)軟件是亞控的組態(tài)王6.53版本,組態(tài)王安裝好以后就可以做OPC服務(wù)器,其OPC服務(wù)器的名稱為KingView.View.1[7]。監(jiān)控系統(tǒng)采用OPC協(xié)議和OPC服務(wù)器進(jìn)行通信。數(shù)據(jù)采集傳輸儀采用廣州某公司K37型環(huán)保數(shù)采儀,它和環(huán)保中心通過(guò)GPRS進(jìn)行通信,同時(shí)本身帶有兩個(gè)RS-232接口,監(jiān)控系統(tǒng)采用RS-232接口和Modbus協(xié)議同數(shù)據(jù)采集傳輸儀通信[8]。
系統(tǒng)使用C#開(kāi)發(fā)OPC客戶端,利用自動(dòng)化接口和OPCDAAuto.dll開(kāi)源組件[9]。開(kāi)發(fā)OPC客戶端的流程包括:枚舉計(jì)算機(jī)上所有的OPC服務(wù)器名稱、連接需要的OPC服務(wù)器、遍歷該OPC服務(wù)器所有的Group、遍歷Group下所有的Item[9,10]、選取自己感興趣的數(shù)據(jù)節(jié)點(diǎn)。如果連接遠(yuǎn)程O(píng)PC服務(wù)器,還需要配置OPC服務(wù)器和客戶端的DCOM。為了實(shí)現(xiàn)OPC服務(wù)器的冗余備份,還要填寫(xiě)備用服務(wù)器的IP地址和OPC服務(wù)器的名稱。主程序中設(shè)置一個(gè)10s的定時(shí)器,對(duì)數(shù)據(jù)進(jìn)行采集,將采集到的數(shù)據(jù)暫存到存儲(chǔ)和發(fā)送隊(duì)列中,供存儲(chǔ)和發(fā)送模塊進(jìn)行調(diào)用。本項(xiàng)目是連接本地OPC服務(wù)器,無(wú)需對(duì)服務(wù)器和客戶端的DCOM進(jìn)行配置,連接界面如圖1所示。

圖1 OPC客戶端連接界面
2.2數(shù)據(jù)存儲(chǔ)模塊
現(xiàn)場(chǎng)采用的數(shù)據(jù)庫(kù)是微軟公司的SQL Server 2008,它提供了兩種數(shù)據(jù)庫(kù)的連接方式,根據(jù)用戶名和密碼連接,也可以采用Windows驗(yàn)證進(jìn)行連接[11]。在使用用戶名和密碼連接數(shù)據(jù)庫(kù)時(shí),需要指定數(shù)據(jù)庫(kù)服務(wù)器的名稱、數(shù)據(jù)庫(kù)名稱、數(shù)據(jù)庫(kù)用戶名和密碼。存儲(chǔ)之前先在數(shù)據(jù)庫(kù)中建兩個(gè)豎表,每個(gè)表的大小為800,并且以采集的時(shí)間作為表的主鍵。目前數(shù)據(jù)節(jié)點(diǎn)有1 280多個(gè),隨著數(shù)據(jù)節(jié)點(diǎn)的增多,當(dāng)容量達(dá)到了設(shè)計(jì)上限,數(shù)據(jù)庫(kù)會(huì)自動(dòng)建立容量為800的新表。
2.3數(shù)據(jù)發(fā)送和接收指令模塊
數(shù)據(jù)發(fā)送采用JSON格式,它是一種輕量級(jí)的數(shù)據(jù)交換格式,具有良好的可讀性,可在不同平臺(tái)之間進(jìn)行數(shù)據(jù)交換[12]。筆者采用第三方開(kāi)源組件Newtonsoft.Json.dll對(duì)數(shù)據(jù)進(jìn)行JSON格式序列化[13]。隨著數(shù)據(jù)節(jié)點(diǎn)的增多,數(shù)據(jù)量也在變大,故在數(shù)據(jù)發(fā)送之前先對(duì)數(shù)據(jù)進(jìn)行GZIP數(shù)據(jù)壓縮,減少帶寬壓力。為保證工業(yè)控制網(wǎng)絡(luò)數(shù)據(jù)的安全性,在數(shù)據(jù)發(fā)送之前需要進(jìn)行加密,采用的加密算法是AES對(duì)稱加密算法,它是美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所用于加密電子數(shù)據(jù)的規(guī)范,是一個(gè)迭代的、對(duì)稱密鑰分組的密碼,可以使用128、192和256位密鑰[14]。
遠(yuǎn)程服務(wù)器端采用ZMQ協(xié)議,它是類似于socket的一系列接口,跟socket的主要區(qū)別是,普通的socket是端到端的(1∶1的關(guān)系),而ZMQ卻是可以N∶M的關(guān)系。BSD套接字是點(diǎn)對(duì)點(diǎn)的連接,但點(diǎn)對(duì)點(diǎn)連接需要顯式地建立連接、銷毀連接、選擇協(xié)議(TCP/UDP)及處理錯(cuò)誤等。而ZMQ屏蔽了這些細(xì)節(jié),讓網(wǎng)絡(luò)編程更為簡(jiǎn)單。數(shù)據(jù)發(fā)送之前需要指定遠(yuǎn)程ZMQ服務(wù)器的IP地址、端口號(hào),設(shè)置數(shù)據(jù)包的個(gè)數(shù),發(fā)送周期、密鑰和工廠的FactoryID。
現(xiàn)場(chǎng)接收的遠(yuǎ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)場(chǎng)指令向服務(wù)器發(fā)送確認(rèn)指令如下:
[“ack”:“command_success”,“factory_id”:“jnshw_001”,“signal_id”:“auto_001”, “datetime”:“yyyymmdd hh:mm:ss”, “value”:”0”]
為確保現(xiàn)場(chǎng)和遠(yuǎn)程服務(wù)器之間通信正常,每10s由中控采集向遠(yuǎn)程網(wǎng)關(guān)發(fā)送一次心跳包。格式如下:
[“request”:“heartbeat”, “heartbeat_id”:“yyyymmdd_1”, “factory_id”:“jnshw_01”]
指令接收時(shí)序如圖2所示。
2.4其他模塊
日志的記錄是軟件開(kāi)發(fā)中的重要組成部分。它可以記錄下完整的時(shí)序邏輯,供開(kāi)發(fā)人員盡快找到應(yīng)用程序中的Bug,一旦在程序中加入了Log輸出代碼,程序運(yùn)行過(guò)程中就能生成并輸出日志信息而無(wú)需人工干預(yù)。該系統(tǒng)主要把日志分為錯(cuò)誤日志和時(shí)序邏輯日志兩個(gè)文件夾,文件夾的名字以日期命名,每天生成一個(gè)文件夾。日志記錄使用的組件是Log4net,它是第三方開(kāi)源組件,可以在系統(tǒng)出現(xiàn)異常時(shí),根據(jù)保存的日志信息,查看當(dāng)時(shí)系統(tǒng)的狀態(tài)。在程序容易出現(xiàn)異常的地方使用try…catch語(yǔ)句,捕捉到異常,并記錄到日志。
當(dāng)初次啟動(dòng)系統(tǒng)的時(shí)候,系統(tǒng)會(huì)創(chuàng)建XML配置文件,用來(lái)保存系統(tǒng)的配置參數(shù)。主要包括用戶數(shù)據(jù)庫(kù)名稱、OPC服務(wù)器的地址、ZMQ服務(wù)器的地址和端口及發(fā)送數(shù)據(jù)包的設(shè)置參數(shù)等。XML文件可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,對(duì)于描述復(fù)雜的數(shù)據(jù)結(jié)構(gòu)非常方便,但使用上比INI文件稍麻煩[15]。再次啟動(dòng)程序的時(shí)候,程序會(huì)自動(dòng)從配置文件上查找相應(yīng)的參數(shù)。程序的主界面如圖3所示。

圖2 指令接收時(shí)序

圖3 程序主界面
在遠(yuǎn)程服務(wù)器端,將接收的數(shù)據(jù)繪制出實(shí)時(shí)曲線,可方便地監(jiān)測(cè)某些變量是否滿足要求,根據(jù)變量的變化趨勢(shì)及時(shí)向現(xiàn)場(chǎng)發(fā)送控制指令。服務(wù)器端節(jié)點(diǎn)曲線如圖4所示。

圖4 服務(wù)器端節(jié)點(diǎn)曲線
遠(yuǎn)程監(jiān)控系統(tǒng)基于OPC通信協(xié)議和ZMQ協(xié)議,將孤立的工業(yè)控制網(wǎng)絡(luò)連接到互聯(lián)網(wǎng),實(shí)現(xiàn)了遠(yuǎn)程中心對(duì)分布式污水處理廠的實(shí)時(shí)監(jiān)視和控制。系統(tǒng)包括數(shù)據(jù)采集、存儲(chǔ)、發(fā)送及接收指令等幾個(gè)主要模塊,根據(jù)單元測(cè)試用例,對(duì)模塊進(jìn)行了單元測(cè)試。最終將開(kāi)發(fā)的系統(tǒng)運(yùn)行在工業(yè)控制現(xiàn)場(chǎng),可在遠(yuǎn)程數(shù)據(jù)中心實(shí)時(shí)監(jiān)控不同污水處理廠的數(shù)據(jù),并向現(xiàn)場(chǎng)發(fā)送控制指令,給企業(yè)的管理帶來(lái)了極大的方便。
[1] 任學(xué)勇,王鵬起,車顏喆,等.流化床式生物質(zhì)快速熱解設(shè)備監(jiān)控系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[J].化工機(jī)械,2011,38(2):166~169.
[2] 童少為,施云貴.基于系列GE90-30 PLC實(shí)現(xiàn)的鍋爐汽包水位監(jiān)控系統(tǒng)[J].化工機(jī)械,2006,33(4):236~240.
[3] 李俊.基于TCP/IP協(xié)議的工業(yè)控制網(wǎng)絡(luò)遠(yuǎn)程通信網(wǎng)關(guān)研究[J].自動(dòng)化與儀器儀表,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] 馬國(guó)華.監(jiān)控組態(tài)軟件的相關(guān)技術(shù)發(fā)展趨勢(shì)[J].自動(dòng)化博覽,2009,26(2):16~20.
[7] 何新軍,張明贊.基于組態(tài)王的污水處理系統(tǒng)通訊設(shè)計(jì)[J].化工自動(dòng)化及儀表,2004,31(5):38~40.
[8] 駱冬松,李瓊.基于GPRS的環(huán)保數(shù)據(jù)采集傳輸系統(tǒng)的研究與設(shè)計(jì)[J].工業(yè)儀表與自動(dòng)化裝置,2011,(2):22~25.
[9] 黃娟.基于C#的OPC數(shù)據(jù)通信的設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2013,26(11):14~15.
[10] 黃錦花,常喜茂.基于快速開(kāi)發(fā)工具的OPC客戶端的開(kāi)發(fā)與實(shí)現(xiàn)[J].化工自動(dòng)化及儀表,2013,40(7):894~897.
[11] 祁新安,侯清江.SQL Server數(shù)據(jù)庫(kù)的運(yùn)用研究[J].制造業(yè)自動(dòng)化,2010,32(14):30~32.
[12] 高靜,段會(huì)川.JSON數(shù)據(jù)傳輸效率研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(7):2267~2270.
[13] 王魁生,王曉波.利用JSON進(jìn)行網(wǎng)站客戶端與服務(wù)器數(shù)據(jù)交互[J].軟件導(dǎo)刊,2010,9(3):147~149.
[14] 趙雪梅.AES加密算法的實(shí)現(xiàn)及應(yīng)用[J].常熟理工學(xué)院學(xué)報(bào),2010,24(2):105~110.
[15] 張學(xué)敏.XML設(shè)計(jì)方法研究[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