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