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

?

基于Java的OPC數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)

2019-07-16 03:14于波彭亮陳前程
電腦知識與技術(shù) 2019年15期

于波 彭亮 陳前程

摘要:針對工業(yè)控制領(lǐng)域中生產(chǎn)設(shè)備種類繁多,數(shù)據(jù)通信協(xié)議不一致,系統(tǒng)集成越發(fā)復(fù)雜,使得企業(yè)難以實現(xiàn)對生產(chǎn)數(shù)據(jù)采集等問題,提出基于OPC技術(shù)的解決方案。鑒于現(xiàn)今企業(yè)上層應(yīng)用系統(tǒng)多為JavaEE架構(gòu),通過采用Java語言實現(xiàn)的Utgard開源類庫與OPC通信技術(shù)來構(gòu)建數(shù)據(jù)采集系統(tǒng),這不僅降低企業(yè)成本,便于自動化控制,同時也是一種新型工業(yè)數(shù)據(jù)采集方式,具有實際應(yīng)用價值。

關(guān)鍵詞:OPC;Java;Utgard;數(shù)據(jù)采集系統(tǒng);工業(yè)控制

中圖分類號:TP311 ? ? ? ? 文獻標(biāo)識碼:A

文章編號:1009-3044(2019)15-0116-03

Abstract: In the field of industrial control, there are many kinds of production equipment, inconsistent data communication protocols and more complex system integration, which make it difficult for enterprises to realize production data acquisition. A solution based on OPC technology is proposed. In view of the Java EE architecture of the upper application systems of enterprises nowadays, the data acquisition system is constructed by Utgard open source components and OPC communication technology implemented in Java language. This not only reduces the cost of enterprises and facilitates automatic control, but also is a new type of industrial data acquisition method, which has practical application value.

Key words: OPC; Java; Utgard; Data Acquisition System; Industrial Control

1 背景

傳統(tǒng)工控領(lǐng)域中,為了實現(xiàn)數(shù)據(jù)采集系統(tǒng),需要通過驅(qū)動程序與現(xiàn)場設(shè)備進行數(shù)據(jù)交換,但由于傳統(tǒng)的過程控制系統(tǒng)是一對一的系統(tǒng),任何一種上位監(jiān)控軟件或其他應(yīng)用軟件,在使用某種硬件設(shè)備時都需要開發(fā)專用的驅(qū)動程序。工作量繁重且不易于系統(tǒng)集成。使用OPC技術(shù)可以很好解決上述問題。OPC提供通用的接口規(guī)范,用于各種過程控制設(shè)備之間的通訊,不論過程中采用何種應(yīng)用軟件和硬件設(shè)備。

由于上層管理軟件越來越多采用Java開發(fā),為了更好地集成,本系統(tǒng)用Java實現(xiàn)。Java語言具有安全性、平臺獨立與可移植性、多線程、動態(tài)性等特點 。利用這些特點可以方便高效編寫桌面應(yīng)用程序、Web應(yīng)用程序等。同時開發(fā)過程中為了不依賴COM組件以及DLL等,保證平臺可移植性,使用純Java開發(fā)的Utgard開源類庫與OPC通信。

2 OPC技術(shù)

2.1 OPC基本結(jié)構(gòu)與通訊方式

OPC——OLE for Process Contrl,微軟公司制定的一套規(guī)范的接口協(xié)議,它是為了不同供應(yīng)廠商的設(shè)備和應(yīng)用程序之間的軟件接口標(biāo)準(zhǔn)化,使其間的數(shù)據(jù)交換更加簡單化的目的而提出的。它基于OLE、COM、DCOM技術(shù),采用客戶端/服務(wù)器(Client/Server)結(jié)構(gòu),規(guī)定了OPC Client與OPC Server之間遵循的規(guī)范接口。服務(wù)端由控制設(shè)備的生產(chǎn)廠商將硬件設(shè)備驅(qū)動程序和通信程序封裝成獨立的服務(wù)器,客戶端通過規(guī)范接口與服務(wù)端通信,在開發(fā)客戶端時可以不包含任何通信接口,程序不必關(guān)心揮服務(wù)器的最佳性能,底層的硬件設(shè)備特性,也不必考慮軟硬件如何如通信,只要遵循數(shù)據(jù)接口協(xié)議,就能夠從服務(wù)器中取得數(shù)據(jù)。標(biāo)準(zhǔn)規(guī)訂了2種通信方式:同步通信方式和異步通信。OPC基本結(jié)構(gòu)如圖1所示。

2.2 OPC數(shù)據(jù)存儲格式

不同于傳統(tǒng)關(guān)系型數(shù)據(jù)庫的表存儲, OPC存儲格式是樹形結(jié)構(gòu)。

服務(wù)端主機存有多個OPC Server,每個OPC Server存有多個item,item中存儲內(nèi)容就是當(dāng)前生產(chǎn)設(shè)備中需要采集與監(jiān)控的數(shù)據(jù)項??蛻舳嗽讷@取數(shù)據(jù)時,需指明服務(wù)器主機名,具體Server以及需要獲取的item所在路徑。

客戶端除了Server,在其下面還有一個存儲層級Group,它分類存儲Server端的item,所以在獲取item時不僅可以一個個獲取,還可以通過批處理技術(shù),通過創(chuàng)建維護一個個Group,將需要獲取的多個item放到這些Group中,一次性獲取出來,從而降低了每獲取一個item而創(chuàng)建一次連接所帶來的消耗問題。

OPC數(shù)據(jù)存儲格式如圖2所示:

3 基于Java的OPC數(shù)據(jù)采集系統(tǒng)的實現(xiàn)

3.1 Kepware作為 OPC服務(wù)器

選取Kepware充當(dāng)OPC服務(wù)器,Kepware作為OPC服務(wù)器可以方便獲取PLC中的運轉(zhuǎn)數(shù)據(jù)等信息,它的優(yōu)勢在于支持市場上絕大多數(shù)的PLC廠商,Kepware主要應(yīng)用領(lǐng)域有數(shù)據(jù)采集技術(shù),歷史數(shù)據(jù)訪問技術(shù)以及遠程數(shù)據(jù)訪問技術(shù)等等。

3.2 使用Utgard開源類庫與OPC服務(wù)器通訊

Utgard 是一個純Java開發(fā)的開源類庫, 是OpenSCADA項目底下的子項目,具有跨平臺特性,全部基于DCOM實現(xiàn),利用Utgard庫文件,可以實現(xiàn)與OPC服務(wù)器進行通訊。它支持在Windows及Linux操作系統(tǒng)上運行,支持組查詢,同步,異步查詢,以及單點的發(fā)布訂閱模式。

3.3 MySQL數(shù)據(jù)庫存儲數(shù)據(jù)

選用MySQL作為持久化存儲系統(tǒng),它是一種關(guān)系型數(shù)據(jù)庫,具有體積小、速度快、總體擁有成本低,同時開源免費等特點。使用MySQL存儲生產(chǎn)設(shè)備中采集過來的關(guān)鍵數(shù)據(jù)參數(shù),將這些數(shù)據(jù)采集存儲起來,可以方便日后追溯。這些數(shù)據(jù)適用于各種類型的過程和生產(chǎn)控制,它可以追溯到產(chǎn)品的以下信息:哪個零件被安裝于成品中了?產(chǎn)品生產(chǎn)過程中,產(chǎn)生了哪些需要控制的關(guān)鍵參數(shù),是否都合格?以及對當(dāng)前制造過程的嚴(yán)密控制等等。

3.4 數(shù)據(jù)采集系統(tǒng)設(shè)計實現(xiàn)

首先在本地操作系統(tǒng)環(huán)境好配置好DCOM,接著使用Utgard實現(xiàn)OPC數(shù)據(jù)采集系統(tǒng),在Eclipse項目工程中導(dǎo)入openscada.opc.dcom 和openscada.opc.lib 2 個庫,其中openscada. opc. dcom 庫使用 J-Interop 實現(xiàn)了與 DCOM 的交互,openscada.opc.lib 庫實現(xiàn)了 OPC 接口程序,這些庫是用 Java 開發(fā)。使用Utgard提供的API函數(shù),建立與OPC服務(wù)器的連接,讀取和寫入OPC服務(wù)器中的變量的參數(shù)值,將這些變量的值地傳遞給軟件系統(tǒng),進而持久化存儲起來,采集進追溯系統(tǒng)。數(shù)據(jù)采集流程如圖3所示。

4 數(shù)據(jù)采集系統(tǒng)的軟件編程實現(xiàn)

OPC數(shù)據(jù)存取服務(wù)器由三個對象組成:服務(wù)器對象(Server)、組對象(Group)和項對象(Item)。通過與OPC Server建立連接后即可讀取數(shù)據(jù)或?qū)懭霐?shù)據(jù)。Utgard支持三種讀取數(shù)據(jù)方式,分別是同步查詢,異步查詢,發(fā)布訂閱模式查詢,支持一種寫入方式,同步寫入。以下是數(shù)據(jù)采集系統(tǒng)編程實現(xiàn)關(guān)鍵API展示:

4.1 與OPC Server建立連接

ConnectionInformation ci = newConnectionInformation();

ci.setHost(ipAddress); //OPC Server的主機地址

ci.setDomain("");

ci.setUser("opcUser");// DCOM配置中OPC用戶

ci.setPassword("123456");//OPC用戶密碼

ci.setClsid("7BC0CC8E-482C-47CA-ABDC-0FE7F9C6E729"); //Kepware軟件在注冊表的ID

Server server = new Server(ci, Executors.newSingleThreadScheduledExecutor());//啟動服務(wù)

server.connect();

4.2 Item的同步查詢

Group group = server.addGroup();

Item item = group.addItem("Random.Real5");

System.out.println(“ItemName:” + item.getId() + “Value:" + item.read(false).getValue());

server.dispose();

4.3 Item的異步查詢

AccessBase access = new SyncAccess(server, PERIOD);

access.addItem("Random.Real5", new DataCallback() {

public void changed(Item item, ItemState itemstate) {

System.out.println("ItemName:"+item.getId()+"value:" + itemstate.getValue());

}

});

access.bind();

Thread.sleep(SLEEP);

access.unbind();

server.dispose();

4.4 Item的發(fā)布訂閱查詢

AccessBase access = new Async20Access(server, PERIOD, false);

access.addItem("Random.Real5", new DataCallback() {

private int count;

public void changed(Item item, ItemState itemstate) {

System.out.println("ItemName:"+item.getId()+"value:" + itemstate.getValue()); }

});

access.bind();

access.unbind();

server.dispose();

4.5 Item的同步寫入

Group group = server.addGroup();

Item item = group.addItem("Square Waves.Real4");

final Float[] integerData = new Float[] { 1202f, 1203f, 1204f };

final JIArray array = new JIArray(integerData, false);

final JIVariant value = new JIVariant(array);

item.write(value);

server.dispose();

5 結(jié)束語

隨著工業(yè)生產(chǎn)的快速發(fā)展,企業(yè)生產(chǎn)規(guī)模越發(fā)龐大,生產(chǎn)設(shè)備逐日增多,使用OPC技術(shù)可以有效簡化生產(chǎn)過程控制中數(shù)據(jù)采集任務(wù)的簡化。使用OPC技術(shù)可以使得現(xiàn)場控制設(shè)備與上層控制系統(tǒng)和生產(chǎn)管理軟件之間的通訊更加方便靈活。本系統(tǒng)采用Java語言開發(fā),可以更好地與現(xiàn)今Java EE企業(yè)架構(gòu)系統(tǒng)集成,同時利用純Java編寫的Utgard開源類庫與OPC服務(wù)器通信,具有平臺無關(guān)性,可移植性等優(yōu)點,同時在穩(wěn)定性和擴展性上都具有很大的操作性,這種新型的數(shù)據(jù)采集方式有很大的實際應(yīng)用場景。

參考文獻:

[1] 王林. 基于SOA的生產(chǎn)運行管理系統(tǒng)的設(shè)計與實現(xiàn)[M]. 北京: 電子工業(yè)出版社, 2015.

[2] 李堃弸. 測控領(lǐng)域中基于 VB的數(shù)據(jù)采集的設(shè)計與實現(xiàn)[J]. 微計算機信息,2005(1): 46-47.

[3] 盧宏, 汪金良, 曾青云. 基于OPC技術(shù)的WinCE實時數(shù)據(jù)采集[J].自動化博覽, 2006(8): 58-60.

[4] 劉莉. 用VB編寫OPC客戶端程序的方法[J]. 工業(yè)控制計算機,2005,18(5):5-6.

[5] 王俊萍. OPC技術(shù)在擴展SCADA系統(tǒng)中的應(yīng)用[J]. 現(xiàn)代電子技術(shù),2005(10):42-44.

[6] 馬增良, 蘭斌. OPC數(shù)據(jù)訪問服務(wù)器實現(xiàn)機制研究[J]. 計算機工程與應(yīng)用,2003, 39(21): 65-67.

【通聯(lián)編輯:謝媛媛】