趙曉峰
(1.江蘇省無(wú)線傳感系統(tǒng)應(yīng)用工程技術(shù)開發(fā)中心,無(wú)錫 214153;2.無(wú)錫商業(yè)職業(yè)技術(shù)學(xué)院 物聯(lián)網(wǎng)技術(shù)學(xué)院,無(wú)錫 214153)
目前,在工業(yè)過(guò)程控制領(lǐng)域,大多采用上位機(jī)和下位機(jī)協(xié)同工作的模式,需要工作人員在線值守,限制其活動(dòng)范圍,在農(nóng)田灌溉、水利排澇等應(yīng)用環(huán)境下,已經(jīng)顯露出弊端。在“互聯(lián)網(wǎng)+”背景下,如何對(duì)傳統(tǒng)的工業(yè)控制系統(tǒng)進(jìn)行改造或升級(jí),以瀏覽器、移動(dòng)終端等多方式實(shí)現(xiàn)遠(yuǎn)程監(jiān)控,已成為工業(yè)控制領(lǐng)域必須解決的問(wèn)題[1]。本文在分析傳統(tǒng)工業(yè)系統(tǒng)基礎(chǔ)上,設(shè)計(jì)基于OPC技術(shù)的Web工控系統(tǒng),采用訂閱發(fā)布機(jī)制處理實(shí)時(shí)數(shù)據(jù),解決了數(shù)據(jù)并發(fā)寫入設(shè)備的問(wèn)題。
傳統(tǒng)的工業(yè)控制系統(tǒng)包括3個(gè)部分:(1)PLC硬件,通過(guò)嵌入的程序邏輯完成模擬信號(hào)和數(shù)字信號(hào)的處理,控制硬件運(yùn)行,通過(guò)OPC標(biāo)準(zhǔn)與OPC Server通信;(2)OPC Server屬于中間服務(wù)層,接收 PLC數(shù)據(jù),對(duì)外提供統(tǒng)一的OPC DA接口;(3)上位機(jī)的組態(tài)軟件訪問(wèn)OPC Server,提供實(shí)時(shí)數(shù)據(jù)通訊和圖表功能[2]。在傳統(tǒng)的工業(yè)控制網(wǎng)進(jìn)行擴(kuò)展,增加Web應(yīng)用平臺(tái),直接與OPC Server通訊,就能實(shí)現(xiàn)遠(yuǎn)程的實(shí)時(shí)工控系統(tǒng),從而可以為各類的訪問(wèn)終端提供接入服務(wù)。圖1所示為改進(jìn)后的Web工業(yè)控制系統(tǒng)(虛線左側(cè)是傳統(tǒng)工控系統(tǒng))。
圖1 Web工控系統(tǒng)結(jié)構(gòu)Fig.1 Architecture of Web industrial control system
工控Web應(yīng)用主要由3部分構(gòu)成,表示層和Restful接口提供應(yīng)用的交互界面;權(quán)限控制用于定義設(shè)備管理上的約束;數(shù)據(jù)中心用于定義應(yīng)用系統(tǒng)范圍內(nèi)PLC設(shè)備及其狀態(tài)變量,為上層應(yīng)用下發(fā)的命令提供解析和執(zhí)行,解決應(yīng)用數(shù)據(jù)與設(shè)備數(shù)據(jù)的同步問(wèn)題;DCOM通訊層通過(guò)DCOM接口,將PLC的數(shù)據(jù)按OPC規(guī)范與OPC Server進(jìn)行相互的通訊[3]。工控Web應(yīng)用的邏輯結(jié)構(gòu)如圖2所示。
圖2 Web應(yīng)用結(jié)構(gòu)Fig.2 Architecture of Web application
考慮應(yīng)用系統(tǒng)的跨平臺(tái)、穩(wěn)定性以及服務(wù)的可擴(kuò)展性,采用Tomcat7.0作為應(yīng)用服務(wù)器,Redis 2.8作為實(shí)時(shí)數(shù)據(jù)緩存和消息路由,SQL Server 2008存儲(chǔ)歷史數(shù)據(jù)和應(yīng)用配置信息。
OPC定義了一個(gè)工業(yè)標(biāo)準(zhǔn)接口,基于微軟的COM/DCOM技術(shù),使任何帶有OPC接口的客戶程序都可以采用統(tǒng)一的方式存取不同硬件廠商的設(shè)備[4]。OPC Server通過(guò)DCOM接口為外部程序提供OPC規(guī)范的數(shù)據(jù)訪問(wèn),DCOM通過(guò)對(duì)象遠(yuǎn)程調(diào)用ORPC協(xié)議來(lái)支持對(duì)遠(yuǎn)程對(duì)象的調(diào)用。Java訪問(wèn)OPC Server,可以采用OPC基金會(huì)推薦的Utgard項(xiàng)目,它是一個(gè)純Java實(shí)現(xiàn)的類庫(kù),相比其它JNI的實(shí)現(xiàn)方式更為可靠和穩(wěn)定,并且不依賴于其它組件。OPC Server在Windows系統(tǒng)中需要進(jìn)行DCOM的配置,分配相應(yīng)的權(quán)限,才能由特定的用戶進(jìn)行DCOM調(diào)用[5]。
數(shù)據(jù)服務(wù)中心的主要任務(wù)是數(shù)據(jù)同步,主要在OPC Server和Redis之間進(jìn)行,Redis是一個(gè)高效的鍵值數(shù)據(jù)庫(kù),支持字符串類型、散列類型、列表類型、集合類型等鍵值數(shù)據(jù),是一個(gè)高效的內(nèi)存數(shù)據(jù)庫(kù),支持訂閱/發(fā)布方式對(duì)消息進(jìn)行處理[6]。在本系統(tǒng)中,Redis作為Web應(yīng)用的緩沖,保存設(shè)備的實(shí)時(shí)數(shù)據(jù),同時(shí)通過(guò)訂閱發(fā)布機(jī)制幫助應(yīng)用實(shí)現(xiàn)對(duì)設(shè)備的實(shí)時(shí)控制。
數(shù)據(jù)同步服務(wù)以多線程方式工作,運(yùn)行的基本流程如圖3所示,左側(cè)是讀取OPC Server數(shù)據(jù)流程,右側(cè)是寫入OPC Server數(shù)據(jù)流程,采用讀寫分離的雙線程工作模式,減少相互影響。Web應(yīng)用寫入OPC Server采用了訂閱發(fā)布機(jī)制,由Redis通過(guò)匹配訂閱條件,將訂閱者感興趣的消息從消息隊(duì)列里進(jìn)行提取,然后通過(guò)路由轉(zhuǎn)發(fā),投遞給相應(yīng)的訂閱者[7-8]。
圖3 數(shù)據(jù)同步讀、寫模型Fig.3 Read and write model of data synchronization
讀取OPC Server數(shù)據(jù),由SyncAccess對(duì)象根據(jù)更新頻率自動(dòng)觸發(fā)事件,事件處理由注冊(cè)在SyncAccess中的DataCallback對(duì)象完成,該對(duì)象的changed方法負(fù)責(zé)接收事件中包含的數(shù)據(jù),將數(shù)據(jù)值由Variant類型轉(zhuǎn)換成Java基本數(shù)據(jù)類型,以“變量名-值”的形式保存在Redis中。
寫入OPC Server數(shù)據(jù),采用了訂閱發(fā)布模式,由業(yè)務(wù)層把數(shù)據(jù)以JSON格式發(fā)布到指定的Channel中。Redis通知訂閱該Channel的對(duì)象接收數(shù)據(jù),創(chuàng)建OPC Item對(duì)象,把數(shù)據(jù)寫入OPC Server。訂閱對(duì)象需要繼承JedisPubSub,實(shí)現(xiàn)onMessage方法,對(duì)數(shù)據(jù)進(jìn)行處理。
客戶端接口主要包括兩部分,一是由瀏覽器訪問(wèn)的Web動(dòng)態(tài)網(wǎng)頁(yè),二是為移動(dòng)終端提供的一組Web API接口,也能訪問(wèn)設(shè)備數(shù)據(jù)和遠(yuǎn)程控制設(shè)備。移動(dòng)端的Web API接口采用Restful風(fēng)格,數(shù)據(jù)格式統(tǒng)一采用JSON格式來(lái)描述。Web界面借助于HTML5的WebSocket通訊方式,可以在Web頁(yè)中實(shí)現(xiàn)與服務(wù)器實(shí)時(shí)通訊,通過(guò)頁(yè)面動(dòng)態(tài)展示設(shè)備數(shù)據(jù)和圖形[9]。
本文所實(shí)現(xiàn)的Web工控系統(tǒng)已運(yùn)行于某市水利項(xiàng)目,項(xiàng)目由5個(gè)PLC控制的泵、閘站組成,利用水利系統(tǒng)內(nèi)網(wǎng)通訊,實(shí)現(xiàn)Web瀏覽器遠(yuǎn)程控制泵站水泵啟停和閘門升降,并在查詢系統(tǒng)中顯示實(shí)時(shí)數(shù)據(jù)、歷史數(shù)據(jù)、水位過(guò)程線等過(guò)程控制信息,數(shù)據(jù)每隔15 min或1 min內(nèi)功率變化>10%時(shí),自動(dòng)存入SQL Server2008數(shù)據(jù)庫(kù)。案例的泵閘遠(yuǎn)程控制界面如圖4所示。
圖4 泵閘遠(yuǎn)程控制界面Fig.4 Remote control interface of pump and gate
在工業(yè)互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)的背景下,基于Web的工業(yè)控制系統(tǒng)越來(lái)越受關(guān)注。本文研究的基于OPC技術(shù)的Web工業(yè)控制系統(tǒng),有效解決了Web應(yīng)用的實(shí)時(shí)數(shù)據(jù)存儲(chǔ)和設(shè)備并發(fā)控制問(wèn)題;而且對(duì)傳統(tǒng)工控系統(tǒng)的擴(kuò)展不影響原系統(tǒng)運(yùn)行,通過(guò)OPC Server與Web平臺(tái)的相互協(xié)作,實(shí)現(xiàn)對(duì)工業(yè)控制系統(tǒng)的實(shí)時(shí)控制。未來(lái)會(huì)將本文所開發(fā)的遠(yuǎn)程工業(yè)控制系統(tǒng)應(yīng)用于其他領(lǐng)域。
[1]劉宇.基于Android平臺(tái)的遠(yuǎn)程工業(yè)監(jiān)控系統(tǒng)[J].計(jì)算機(jī)測(cè)量與控制,2014,22(4):1087-1089.
[2] 崔嵩.OPC技術(shù)與分布式實(shí)時(shí)數(shù)據(jù)庫(kù)在SCADA系統(tǒng)中的開發(fā)與應(yīng)用[D].山東:山東大學(xué),2014.
[3]尹菲,郭鳳儀,孫倩,等.復(fù)雜工業(yè)過(guò)程控制中實(shí)時(shí)數(shù)據(jù)OPC Server的設(shè)計(jì)與研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(5):126-129.
[4]王立萍.基于OPC標(biāo)準(zhǔn)的數(shù)據(jù)存取客戶端應(yīng)用開發(fā)[J].機(jī)床與液壓,2015,43(4):171-173.
[5]楊海鵬,戴波.石油化工廠實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].江南大學(xué)學(xué)報(bào):自然科學(xué)版,2014,13(6):698-705.
[6]Josiah L Carlson.Redis in Action[M].Manning Publications,2013.
[7]虞海江,馬建剛,葉丹,等.基于發(fā)布訂閱模式的數(shù)據(jù)集成中間件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2007(11):12-15.
[8]張舒,李超,赫陽(yáng),等.基于訂閱發(fā)布的車輛GPS應(yīng)急監(jiān)控調(diào)度平臺(tái)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(2):445-450.
[9]楊建業(yè),耿建平.基于HTML5的實(shí)時(shí)Web數(shù)據(jù)監(jiān)測(cè)系統(tǒng)[J].桂林電子科技大學(xué)學(xué)報(bào),2015,35(2):136-141.