1. 程式人生 > >OPC技術學習總結

OPC技術學習總結

1. 什麼是OPC

1.1 名詞解釋

Ø  OPC——OLE for Process Contrl,微軟公司物件連結和嵌入技術在過程控制方面的應用,是一系列介面、方法和屬性的標準集。它基於OLE、COM、DCOM技術、XML,採用客戶端/伺服器(Client/Server)結構,將通訊協議與裝置/應用隔離的技術。微軟的OLE、COM定義了各種不同的軟體如何互動使用和分享資料,從而使得OPC能夠提供通用的介面規範,用於各種過程控制裝置之間的通訊,不論過程中採用何種應用軟體和硬體裝置。

Ø  OLE——Object Linking & Embeding,物件連結與嵌入,也就是現在的微軟的ActiveX。

1.2  傳統技術與OPC技術

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

傳統的過程控制系統是一對一的系統,任何一種HMI等上位監控軟體或其它應用軟體,在使用某種硬體裝置時都需要開發專用的驅動程式。

 

 

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

Ø  1種軟體要使用N類硬體裝置需要開發N個驅動程式;

Ø  M類軟體要使用N類硬體裝置需要開發M*N個驅動程式;

Ø  每增加1個新的應用軟體需要另外開發N個硬體裝置的驅動程式;

Ø  每增加1個新的硬體裝置需要為M個軟體開發新的裝置驅動程式。

在上圖所示的例子中,針對4種控制裝置所完成的3個應用系統一共需要開發3*4=12種驅動程式。新增應用軟體或者硬體裝置帶來的只會是驅動程式種類的迅速增長。

1.2.2基於OPC技術的過程控制系統結構

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

任何一種裝置只需要提供一種驅動就可以供任何軟體系統使用,系統構建完成後的最終結果是:

Ø  M類軟體要使用N類硬體裝置只需要開發N個驅動。

Ø  每增加1個新的應用軟體不需要另外開發硬體裝置的驅動程式;

Ø  每增加1個新的硬體裝置只需要為開發1個新裝置的驅動程式;

在上圖所示的例子中,針對4種控制裝置所完成的3個應用系統一共僅需要開發4種驅動程式。新增應用軟體或者硬體裝置可以輕鬆的擴充套件您的系統。

1.3 工作原理

詳細原理圖:

1.4  OPC伺服器所相容的裝置分類

Ø  硬體裝置:DCS,PLC,掃描器,電子裝置…

Ø  應用軟體:HMI,歷史資料庫,震動檢測器…

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

Ø  作業系統:Windows,UNIX,VMS,Macintosh,嵌入式OS…

即OPC伺服器可以從上面任何一種形式的資料產生實體中讀取資料。這個實體可以是霍尼韋爾PHD的Application,也可以是Modbus的通訊協議,還可以是一種PLC,也就是一種Device(硬體裝置),或者是一種Platform。

 

2.常用的OPC伺服器

2.1 Matrikon公司的OPCServer Simulator

簡單,單檔案註冊後,各種資料型別,各種點型別(只讀點,只寫點,讀寫點)都有了,更好的一點是,如果想做大規模的測試,10萬點,那麼只需要在它的Random下新增任意名稱即可,OPCServer會自動給你建出對應的測點,還是隨機數變化。

2.1.1配置時的幾個關鍵概念

Alias Group(Group) ——對Items的分類管理,自定義的。類似於Java中的包。

Alias (Item) ——一個Item代表與伺服器進行通訊的PLC或其它硬體裝置上的一個地址。與Kepware中的一樣。

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

New AliasGroup/Alias --> Inset Alias

2.2 Kepware公司的OPCServer

一個商業軟體,需要花費金錢購買License的,但Kepware公司的OPCServer需要花錢的不是OPCServer本身,而是採集驅動。不過Kepware公司的OPCServer提供了不花錢的模擬驅動,用來測試上非常好的。

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

2.2.1配置時的幾個關鍵概念

Chanel——通道是一個從PC到一個或多個外部裝置之間的傳播媒介。一個通道可以用來代表一個串列埠(一個安裝在個人電腦上的卡或是乙太網介面)。

Device——裝置代表了與伺服器進行通訊的PLC或其他硬體。它受限於Channel所選擇的裝置驅動程式(Device driver)。

Group——對tags的分類管理,自定義的。類似於Java中的包。

Tag——一個Tag代表與伺服器進行通訊的PLC或其它硬體裝置上的一個地址。伺服器允許動態標籤(客戶端自定義建立)和使用者定義的靜態標籤(服務端管理人員建立的標籤)。動態標籤是直接進入了OPC客戶端和指定裝置存取資料。靜態標籤在伺服器被建立的且支援標籤擴充套件,他們可以從OPC客戶瀏覽,支援標籤瀏覽。

配置順序如下:

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

3. 常用的OPC客戶端

3.1 Matrikon公司的OPCClient

標準,穩定,單檔案,通訊過程的資訊還比較豐富,我是比較喜歡用它在建立OPC組時定義同步方式或非同步方式來驗證遠端計算機的OPC配置是否正確。缺點就是大了點,2M多。

3.2 Kepware公司的OPCClient

功能很強大,標準,穩定,日誌資訊很豐富,最推薦的功能是支援對OPCServer中點名的條件過濾,支援點表的匯入匯出,支援自動匯入OPCServer的所有點,根據點表識別好點壞點,按照列排序,用它可以彌補很多國產組態軟體不能線上遍歷OPCServer點表的功能、不能過濾OPCServer點的功能、不能識別OPCServer中好點壞點的功能等。缺點就是非單檔案。

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

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

5. Java實現OPC客戶端

有兩種開源包,分別是JeasyOpc和utgard(Openscada),他們的區別如下:

經對比分析,我們採用Utgard(Openscada)開源技術,Openscada可以很好的實現與OPC伺服器的連結及讀寫資料等功能,還可以隨時獲取和修改OPC的Server和Item的屬性狀態資訊。所以它能夠很好的滿足我們的需求,建議使用Openscada。

5.1 Openscada連結配置方法

OPC資料存取伺服器由三個物件組成:伺服器物件(Server)、組物件(Group)和項物件(Item)。

按說明配置好OPC Server  與 OPC Client 所在電腦的元件服務配置和防火牆設定(windows7直接關閉就行了)注意一定要把本機希望連結OPC服務的使用者或使用者組新增到DCOM配置列表中,否則連結會失敗。

如果其他都配置好了,執行程式還是連線不上的話,首先常看防火牆是否配置(或關閉)。

OPC物件——伺服器(OPC  Server)、組(OPC  Group)、項(OPC  Item)。

Openscada開源專案:

         ConnectionInformation中:

                   Host——本地主機/網路主機IP (示例:localhost(預設)、127.0.0.1)

                   Domain——域(預設為localhost)

                   User——使用者名稱

                   Password——使用者登入密碼

                   Clsid——應用在登錄檔中相對應的CLSID值

                   Grogid——應用在登錄檔中對應的程式名稱

                   【Clsid 和 Grogid 作用相同,只要設定一個就可以了,如果兩個都設定了,程式會優先選擇Clsid。我們建議使用Clsid,因為使用Grogid時,Openscada的內部處理還是會通過JISystem.getClsidFromProgId( progId )方法將其轉換為Clsid,並且還需要進行伺服器上使用者的許可權的高階配置才可以使用。查詢Clsid和Grogid的方法:開啟登錄檔(regedit)—》在HKEY_CLASSES_ROOT下找到相應的OPC伺服器名稱,該名稱就是Grogid,在其目錄下的CLSID的值(右邊區域)就是Clsid】

5.2 Openscada遠端連結時常見的問題及解決方法

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

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

解決方法:開啟控制面板,點選【管理工具】—>>【服務】,啟動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、開啟註冊列表,

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

2、右鍵點選[許可權]>>【高階】>>[所有者]>>新增opc使用者到許可權專案中,點選應用,確定。