国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OPC技術的DCS數據獲取的實現方法

2018-05-14 13:45韓萌萌任帥男
科技風 2018年5期

韓萌萌 任帥男

摘 要:介紹了基于OPC技術的DCS數據獲取的原理和方法,結合實際敘述了上位機軟件DCS與OPC服務器之間的通信以及OPC服務器與OPC客戶端之間的通信,重點給出了關鍵程序示例。在OPC數據交換接口的基礎上,后續(xù)的上層應用系統(tǒng)的開發(fā)變得簡捷高效。

關鍵詞:OPC技術;數據獲?。籇CS

中圖分類號:TP273 文獻標識碼:A

隨著企業(yè)信息化建設的投資比例增大,許多企業(yè)為了實現不同生產裝置的DCS系統(tǒng)和數據采集接口之間的數據通訊,解決生產管理過程中的上層監(jiān)控與底層控制脫節(jié)的問題,提高企業(yè)生產效益,OPC技術應運而生。OPC作為軟件和硬件之間數據通信的橋梁,是一種標準。本文應用了OPC技術規(guī)范作用于DCS系統(tǒng)實現數據獲取的目的。

1 OPC技術

OPC(OLE for Process Control),是微軟公司以COM/DCOM技術為基礎,采用客戶端/服務器模式,開發(fā)出的應用于控制領域的一種工業(yè)標準。針對當前工業(yè)控制領域不同生產裝置互相通信的要求,OPC為其制定了完整的編程接口屬性和方法,這就為不同設備包括軟硬件之間的交互訪問提供了依據[1]。

OPC既可以應用于本地PC機,同時也支持網絡內不同應用程序間包括跨平臺應用程序間的通訊,實現了硬件設備與系統(tǒng)軟件之間實時通訊。該規(guī)范的基本思想是:由支持OPC接口的硬件廠商開發(fā)對應其硬件設備的OPC服務器,負責獲取硬件設備生產的數據并暫存;OPC客戶端,即支持OPC接口的系統(tǒng)軟件就可以通過連接OPC服務器來讀寫之前獲取到的數據。OPC連接模式如下圖所示。

OPC服務器支持兩種類型的數據訪問接口:自動化接口(Automation interface);定制接口(Custom interface)。兩種接口定義了OPC客戶端和OPC服務器之間進行通訊的方法。用戶可以自己編寫OPC客戶端程序,在客戶端程序中調用OPC服務器對象接口及對應的方法來訪問OPC服務器讀寫數據。

一個OPC數據訪問服務器中包含3類對象模型,OPC服務器(Server)、OPC組(Group)、OPC項(Item)。它們之間的聯(lián)系是Server對象維護有關服務器的信息并作為Group對象的容器,而Group對象維護有關其自身的信息,提供包容Item對象的機制,并管理Item對象[2-3]。

2 OPC客戶端程序的設計開發(fā)

這里采用了Java語言編寫的開源項目J-Interop和Utgard實現OPC客戶端[4]。

2.1 Utgard

Utgard屬于Openscada開源項目,基于J-Interop做的,純Java語言編寫,具有跨平臺的特點,用于和OPC Server進行通訊。Openscada可以很好的實現與OPC服務器的連接以及讀寫數據的功能,并且可以隨時獲取和修改OPC的Server和Item的屬性狀態(tài)信息等。而J-Intgard是純Java封裝的用于COM/DCOM通訊的開源項目。需要注意的是,在使用Utgard之前需要配置好服務器端的DCOM組件。

2.2 使用Utgard訪問OPC server

開發(fā)步驟及相應代碼大致為:

(1)導入關鍵jar包。

(2)編寫配置文件,設置連接服務器的主機用戶密碼等信息。

(3)遍歷當前所連接的服務器上所有支持OPC DA2.0規(guī)范的OPC服務器應用。

(4)創(chuàng)建ConnectionInformation類。

final ConnectionInformation ci = new ConnectionInformation();

ci.setHost(host);

ci.setClsid(serverList.getClsIdFromProgId ("Matrikon.OPC.Simulation"));

ci.setUser(user);

ci.setPassword(password);

其中通過Clsid的方式查找OPC Server更快,但如果事先不知道clsid,也可以通過ServerList類的getClsIdFromProgId方法來查詢相應OPC

Server名稱的Clsid。

(5)創(chuàng)建Server類并連接:ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();

Server server = new Server(ci, exec);

server.connect();

(6)Utgard有兩種數據訪問方式——直接通過item的read/write方法或者使用AccessBase(讀取數據)。需要注意的是,不管采用哪一種方式,返回結果都是通過ItemState類來獲取,通過調用ItemState的getValue方法可以獲得訪問結果,返回結果是JIVarant類型的,里面包含了OPC訪問時的各種類型及處理方法。

按照上述方法步驟,使用Utgard連接至OPC服務器,然后使用Async20Access類隔時間段地進行異步讀取數據??蛻舳顺绦蛟赪indows下和Linux下均能成功連接OPC Server,并獲取到數據。

3 結語

本文給出了利用OPC技術實現DCS數據獲取的方法,基于Java語言成功開發(fā)出OPC客戶端并實現跨平臺連接OPC服務器。這一構建方法為工業(yè)領域上層應用系統(tǒng)的開發(fā)提供了一種有效途徑[5]。

參考文獻:

[1]胡強,趙英凱.OPC技術在DCS與工廠管理網數據通訊中的應用[J].工業(yè)儀表與自動化裝置,2002(03):25-28.

[2]王燕,王健.OPC接口技術在DCS數據交換中的應用[J].微計算機信息,2010,26(31):48-49+37.

[3]晏明軍.基于Java的OPC客戶端的實現[J].電子技術,2010,47(07):56-57.

[4]孫亮清.用Java實現OPC客戶端[J].上海船舶運輸科學研究所學報,2011,34(01):34-37.

[5]謝鵬華,牛昱光.DCS遠程監(jiān)控實驗教學系統(tǒng)的OPC技術實現方法[J].太原理工大學學報,2011,42(02):149-154.

普安县| 柘荣县| 青龙| 马尔康县| 无棣县| 兴城市| 个旧市| 平阳县| 遂宁市| 如皋市| 太康县| 新和县| 松江区| 青岛市| 比如县| 尼玛县| 灵台县| 甘肃省| 和田市| 兖州市| 长乐市| 广平县| 财经| 巴南区| 建湖县| 威宁| 新兴县| 互助| 临沭县| 南涧| 湖口县| 塔城市| 颍上县| 德保县| 辛集市| 舞阳县| 万山特区| 武清区| 承德市| 昌吉市| 乌兰县|