一(yī)、OPC通信

   OPC——OLE for Process Contrl,微軟公司對象鏈接和嵌入技術在過程控制方面的應用,是一(yī)系列接口、方法和屬性的标準集。它基于OLE、COM、DCOM技術、XML,采用客戶端/服務器(Client/Server)結構,将通訊協議與設備/應用隔離(lí)的技術。微軟的OLE、COM定義了各種不同的軟件如何交互使用和分(fēn)享數據,從而使得OPC能夠提供通用的接口規範,用于各種過程控制設備之間的通訊,不論過程中(zhōng)采用何種應用軟件和硬件設備。

OLE——Object Linking & Embeding,對象鏈接與嵌入,也就是現在的微軟的ActiveX。


   現在市場上的數據源有很多種形式:PLC、DCS、數據庫、Scale 、RTU等等。數據也可以通過多種媒介傳輸,如以太網、無限通訊、串口通訊等。過程應用所依賴的操作系統也可以不同:Unix、Windows。

   過去(qù),設備供應商(shāng)提供自己的驅動程序來獲取數據。但這樣以來,供應商(shāng)就以一(yī)種專權享有的方式儲存下(xià)來。當用戶每次需要對系統進行改進或擴張時,用戶就必須和同一(yī)家設備供應商(shāng)聯系。從另一(yī)個角度來看,在傳統的控制系統中(zhōng),智能設備之間及智能設備與控制系統軟件之間的信息共享是通過驅動程序來實現的。不同廠家的設備使用不同的驅動程序,緻使工(gōng)業控制軟件中(zhōng)包含越來越多的底層通訊模塊。另外(wài),由于相對特定應用的驅動程序一(yī)般不支持硬件特點的變化,這樣,使得工(gōng)業控制軟、硬件的的升級和維護都極爲不便。還有,在同一(yī)個時刻,兩個客戶應用一(yī)般不能對同一(yī)個設備進行讀寫,因爲他們擁有不同的、相互獨立的驅動程序。同時對同一(yī)個設備進行操作,可能會導緻沖突甚至系統崩潰。

   OPC技術的出現很好的解決了這些問題。OPC技術的出現解決了這種客戶相對被動的局面,因爲它是一(yī)種技術平台。不論客戶端是誰,不論客戶端使用哪種工(gōng)程控制軟件,隻要它理解OPC語言,都可以順暢無阻的從設備中(zhōng)取得數據。

   作爲有20年基礎的強大(dà)技術平台,OPC擁有一(yī)整套包括接口、屬性和方法的标準集。從而提供給用戶用于過程控制和工(gōng)業自動化應用。舉個例子來說明,在一(yī)個龐大(dà)的數據共享網絡中(zhōng),OPC扮演什麽樣的角色。一(yī)個跨國公司中(zhōng)有來自各個國家的人,說不同的母語,但他們卻能很好的交流,這就是英語作爲交流平台的作用。同樣,OPC就扮演這樣一(yī)個數據傳譯器的作用。


1.傳統技術與OPC技術

1.1傳統的過程控制系統結構

傳統的過程控制系統是一(yī)對一(yī)的系統,任何一(yī)種HMI等上位監控軟件或其它應用軟件,在使用某種硬件設備時都需要開(kāi)發專用的驅動程序。

  

系統構建完成後的最終結果是:

Ø  1種軟件要使用N類硬件設備需要開(kāi)發N個驅動程序;

Ø  M類軟件要使用N類硬件設備需要開(kāi)發M*N個驅動程序;

Ø  每增加1個新的應用軟件需要另外(wài)開(kāi)發N個硬件設備的驅動程序;

Ø  每增加1個新的硬件設備需要爲M個軟件開(kāi)發新的設備驅動程序。

在上圖所示的例子中(zhōng),針對4種控制設備所完成的3個應用系統一(yī)共需要開(kāi)發3*4=12種驅動程序。新增應用軟件或者硬件設備帶來的隻會是驅動程序種類的迅速增長。


1.2基于OPC技術的過程控制系統結構

基于OPC技術的過程控制系統則可以完美地解決傳統方式種的上述問題。

任何一(yī)種設備隻需要提供一(yī)種驅動就可以供任何軟件系統使用,系統構建完成後的最終結果是:

Ø  M類軟件要使用N類硬件設備隻需要開(kāi)發N個驅動。

Ø  每增加1個新的應用軟件不需要另外(wài)開(kāi)發硬件設備的驅動程序;

Ø  每增加1個新的硬件設備隻需要爲開(kāi)發1個新設備的驅動程序;

在上圖所示的例子中(zhōng),針對4種控制設備所完成的3個應用系統一(yī)共僅需要開(kāi)發4種驅動程序。新增應用軟件或者硬件設備可以輕松的擴展您的系統。



二、應用案例介紹

某項目三個不同的數據源:PLC、震動觀測系統、計算引擎

傳送數據到三個不同的應用程序。

基本要求:硬件工(gōng)作負荷最小(xiǎo)化、軟件應用成本最小(xiǎo)化、軟件購置成本最小(xiǎo)化。

沒有OPC技術的傳統解決方案:

   讓每一(yī)個控制應用程序和通過中(zhōng)間特制驅動或接口(如RDI)從不同數據源中(zhōng)提取所需數據。舉例來說,Wonderware公司的InTouch人機界面是用于可視化工(gōng)業過程控制的軟件,它需要一(yī)個IO驅動,用安全通訊協議TSAA交流;另一(yī)個驅動通過Modbus通訊協議從BNC振動源中(zhōng)讀取數據;還需要一(yī)個驅動和Excell電子表格動态交換。這樣以來,每一(yī)個應用程序和每一(yī)個數據出處都需要一(yī)個中(zhōng)間驅動或者接口。一(yī)共需要9個這樣的接口才能滿足客戶要求,财力、人力耗費(fèi)較大(dà)。當以後需要更多的數據源或更多的應用程序時,将更爲麻煩。從技術角度說,如果兩個應用程序恰好對同一(yī)個設備進行了訪問或操作,它們相互獨立的驅動程序可能會引起訪問上的沖突,從而導緻系統出問題。此方案保守估計:10天 5萬美元。


應用OPC技術的解決方案:

   提供3個OPC服務器,分(fēn)别給Triconex PLC,BNC振動源和Excell電子表格。這些服務器是Matrikon公司已經開(kāi)發好的,針對不同協議的數據接口,不需要投入開(kāi)發費(fèi)用、時間。作爲客戶端的三個應用軟件業都是支持OPC接口的。這樣以來,OPC服務器和應用軟件之間實行OPC實時數據通訊。當OPC服務器接收到來自3個不同應用程序對同一(yī)個數據點的訪問要求時,數據源隻需傳輸該數據一(yī)次到相應的OPC服務器便可滿足應用軟件的要求。相比原來的數據傳輸量來說,OPC技術大(dà)大(dà)減少了對數據源也就是硬件設備的負擔,從而延長了它們的壽命。此方案:2天,1萬美元

快:因爲應用OPC服務器即用即拿,即插即用。省:因爲開(kāi)發的人力物(wù)力已經完成,所需OPC服務器數量不會太多。

這個案例中(zhōng),所有的OPC服務器可以安裝在一(yī)台PC機上進行操作,彼此互相獨立。且OPC服務器并不占用處理器的很多時間和容量。但霍尼韋爾的PHD數據庫必須單獨安裝在另外(wài)一(yī)台PC機上,這是因爲霍尼韋爾要求在安裝它的數據庫的機器上不要安裝其他的服務器和軟件。

   OPC技術的廣泛應用還在于它非常好的延展性。比如說,随着客戶業務量的增大(dà),客戶希望擴大(dà)系統規模,那麽客戶所需要做的就是将原有的硬件設置不斷複制。雖然連接的硬件設備可能不同,但是從硬件設計的角度講,客戶已經節省了很多時間和成本。


三、OPC服務器

在OPC結構中(zhōng),OPC服務器扮演十分(fēn)重要的角色,其所兼容的設備分(fēn)類有:

-硬件設備:DCS,PLC,掃描儀,電子設備…

-應用軟件:HMI,曆史數據庫,震動檢測器…

-通訊協議:DDE,Modbus,ODBC,GenCS…

-操作系統:Windows,UNIX,VMS,Macintosh,嵌入式OS…

   即OPC服務器可以從上面任何一(yī)種形式的數據産生(shēng)實體(tǐ)中(zhōng)讀取數據。這個實體(tǐ)可以是霍尼韋爾PHD的Application,也可以是Modbus的通訊協議,還可以是一(yī)種PLC,也就是一(yī)種Device(硬件設備),或者是一(yī)種Platform.


常用的OPC服務器

1. Matrikon公司的OPCServer Simulator


   簡單,單文件注冊後,各種數據類型,各種點類型(隻讀點,隻寫點,讀寫點)都有了,更好的一(yī)點是,如果想做大(dà)規模的測試,10萬點,那麽隻需要在它的Random下(xià)添加任意名稱即可,OPCServer會自動給你建出對應的測點,還是随機數變化。

1.1配置時的幾個關鍵概念

   Alias Group(Group) ——對Items的分(fēn)類管理,自定義的。類似于Java中(zhōng)的包。

   Alias (Item) ——一(yī)個Item代表與服務器進行通信的PLC或其它硬件設備上的一(yī)個地址。與Kepware中(zhōng)的一(yī)樣。

配置順序如下(xià)(在Alias Configuration下(xià)):

New AliasGroup/Alias --> Inset Alias


2.Kepware公司的OPCServer

   一(yī)個商(shāng)業軟件,需要花費(fèi)金錢購買License的,但Kepware公司的OPCServer需要花錢的不是OPCServer本身,而是采集驅動。不過Kepware公司的OPCServer提供了不花錢的仿真驅動,用來測試上非常好的。

   缺點就是太龐大(dà),不簡單,學習成本較高。但爲了能滿足OPC這類産品的各種測試,它真的是最佳選擇。可以去(qù)它的官方網站下(xià)載。

2.1配置時的幾個關鍵概念

   Chanel——通道是一(yī)個從PC到一(yī)個或多個外(wài)部設備之間的傳播媒介。一(yī)個通道可以用來代表一(yī)個串行端口(一(yī)個安裝在個人電腦上的卡或是以太網接口)。

Device——設備代表了與服務器進行通信的PLC或其他硬件。它受限于Channel所選擇的設備驅動程序(Device driver)。

Group——對tags的分(fēn)類管理,自定義的。類似于Java中(zhōng)的包。

   Tag——一(yī)個Tag代表與服務器進行通信的PLC或其它硬件設備上的一(yī)個地址。服務器允許動态标簽(客戶端自定義創建)和用戶定義的靜态标簽(服務端管理人員(yuán)創建的标簽)。動态标簽是直接進入了OPC客戶端和指定設備存取數據。靜态标簽在服務器被創建的且支持标簽擴展,他們可以從OPC客戶浏覽,支持标簽浏覽。

配置順序如下(xià):

New Channel -->New Device --> New Group/Tag --> New Tag


四、OPC客戶端

OPC客戶端同樣扮演重要的角色,是用來從OPC服務器獲取數據的軟件程序

單向地向OPC服務器發出請求,服務器響應。

對OPC而言,最簡單的應用:人機界面HMI可以看作是連接到OPC服務器的客戶端應用。


常用的OPC客戶端

1 Matrikon公司的OPCClient

   标準,穩定,單文件,通訊過程的信息還比較豐富。缺點就是大(dà)了點,2M多。

2 Kepware公司的OPCClient

   功能很強大(dà),标準,穩定,日志(zhì)信息很豐富,最推薦的功能是支持對OPCServer中(zhōng)點名的條件過濾,支持點表的導入導出,支持自動導入OPCServer的所有點,根據點表識别好點壞點,按照列排序,用它可以彌補很多國産組态軟件不能在線遍曆OPCServer點表的功能、不能過濾OPCServer點的功能、不能識别OPCServer中(zhōng)好點壞點的功能等。缺點就是非單文件。


工(gōng)作原理:


詳細原理圖:

OPC Client和OPC Server配置的安全策略

下(xià)表是對 OPC Client 和 OPC Server 所在操作系統之間的安全策略的配置對應說明:


五. Java實現OPC客戶端

有兩種開(kāi)源包,分(fēn)别是JeasyOpc和utgard(Openscada),他們的區别如下(xià):

   經對比分(fēn)析,我(wǒ)們采用Utgard(Openscada)開(kāi)源技術,Openscada可以很好的實現與OPC服務器的鏈接及讀寫數據等功能,還可以随時獲取和修改OPC的Server和Item的屬性狀态信息。所以它能夠很好的滿足我(wǒ)們的需求,建議使用Openscada。

5.1 Openscada鏈接配置方法

   OPC數據存取服務器由三個對象組成:服務器對象(Server)、組對象(Group)和項對象(Item)。

按說明配置好OPC Server  與 OPC Client 所在電腦的組件服務配置和防火(huǒ)牆設置(windows7直接關閉就行了)注意一(yī)定要把本機希望鏈接OPC服務的用戶或用戶組添加到DCOM配置列表中(zhōng),否則鏈接會失敗。

如果其他都配置好了,運行程序還是連接不上的話(huà),首先常看防火(huǒ)牆是否配置(或關閉)。

OPC對象——服務器(OPC  Server)、組(OPC  Group)、項(OPC  Item)。

Openscada開(kāi)源項目:

  ConnectionInformation中(zhōng):

    Host——本地主機/網絡主機IP (示例:localhost(默認)、127.0.0.1)

    Domain——域(默認爲localhost)

    User——用戶名

    Password——用戶登錄密碼

    Clsid——應用在注冊表中(zhōng)相對應的CLSID值

    Grogid——應用在注冊表中(zhōng)對應的程序名稱

    【Clsid 和 Grogid 作用相同,隻要設置一(yī)個就可以了,如果兩個都設置了,程序會優先選擇Clsid。我(wǒ)們建議使用Clsid,因爲使用Grogid時,Openscada的内部處理還是會通過JISystem.getClsidFromProgId( progId )方法将其轉換爲Clsid,并且還需要進行服務器上用戶的權限的高級配置才可以使用。查找Clsid和Grogid的方法:打開(kāi)注冊表(regedit)—》在HKEY_CLASSES_ROOT下(xià)找到相應的OPC服務器名稱,該名稱就是Grogid,在其目錄下(xià)的CLSID的值(右邊區域)就是Clsid】

5.2 Openscada遠程鏈接時常見的問題及解決方法

(1)org.jinterop.dcom.common.JIException: Message not found for errorCode:0xC0000034

原因:未啓動RemoteRegistry和Windows Management Instrumentation服務。

解決方法:打開(kāi)控制面闆,點擊【管理工(gōng)具】—>>【服務】,啓動RemoteRegistry和Windows ManagementInstrumentation服務。

 

(2)org.jinterop.dcom.common.JIException:Access is denied, please check whether the [domain-username-password] arecorrect. Also, if not already done please check the GETTING STARTED and FAQsections in readme.htm. They provide information on how to correctly configurethe Windows machine for DCOM access, so as to avoid such exceptions.  [0x00000005]

原因:首先檢查錯誤提示的配置信息是否有誤,如果都正确,則原因可能是你訪問的當前用戶沒有該訪問權限。

解決方法:

1、打開(kāi)注冊列表,

選擇HKEY_CLASSES_ROOT\CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6}

2、右鍵點擊[權限]>>【高級】>>[所有者]>>添加opc用戶到權限項目中(zhōng),點擊應用,确定。