天天看點

OPC UA詳細介紹

作者:工控自動化程式設計

在了解OPC UA 協定之前,我們先了解一些它的前身OPC 協定,這樣更有利于了解OPC UA 的本質和由來。

OPC

工業控制領域用到大量的現場裝置,在OPC出現以前,軟體開發商需要開發大量的驅動程式來連接配接這些裝置。即使硬體供應商在硬體上做了一些小小改動,應用程式也可能需要重寫。同時,由于不同裝置甚至同一裝置不同單元的驅動程式也有可能不同,軟體開發商很難同時對這些裝置進行通路以優化操作。為了消除硬體平台和自動化軟體之間互操作性的障礙,建立了OPC軟體互操作性标準,開發OPC的最終目标是在工業控制領域建立一套資料傳輸規範。

OPC全稱是OLE(Object Linking and Embedding) for Process Control。為了便于自動化行業不同廠家的裝置和應用程式能互相交換資料,定義了一個統一的接口函數,就是OPC協定規範。OPC是基于WINDOWS COM/DOM的技術,可以使用統一的方式去通路不同裝置廠商的産品資料。簡單來說OPC就是為了用于裝置和軟體之間交換資料。

OPC UA詳細介紹

OPC基金會前前後後規定了不同的接口定義,如下:

OPC DA (Data Access, exchange of real-time values,資料通路),定義了資料交換,包括值、時間和品質資訊

OPC A&E (Alarms & Events, exchange of alarms and events,警報和事件),定義了報警和事件類型消息資訊的交換,以及變量狀态和狀态管理。

OPC HDA (Historical Data Access, exchange of historical values,曆史資料通路),定義了可應用于曆史資料、時間資料的查詢和分析的方法。

OPC XML DA (XML-based exchange of real-time values)

OPC UA

UA全稱是unified architecture(統一架構)。為了應對标準化和跨平台的趨勢,為了更好地推廣OPC,OPC基金會近些年在之前OPC成功應用的基礎上推出了一個新的OPC标準-OPC UA。OPC UA接口協定包含了之前的 A&E, DA,OPC XML DA or HDA,隻使用一個位址空間就能通路之前所有的對象,而且不受WINDOWS平台限制,因為它是從傳輸層以上來定義的,導緻了靈活性和安全性比之前的OPC都提升了。

OPC UA實質上是一種抽象的架構,是一個多層架構,其中的每一層完全是從其相鄰層抽象而來。這些層定義了線路上的各種通信協定,以及能否安全地編碼/解碼包含有資料、資料類型定義等内容的訊息。利用這一核心服務和資料類型架構,人們可以在其基礎上(繼承)輕松添加更多功能。

OPC UA将成為一個轉換工具。其它協定/标準(如BACnet)可以非常輕松地轉換為OPC UA内的一個子集。

OPC UA詳細介紹

OPC UA多層方法實作了最初設計UA規範時的目标:

  • 功能對等性:所有COM OPC Classic規範都映射到UA
  • 平台獨立性:從嵌入式微控制器到基于雲的基礎設施
  • 安全性:資訊加密、身份驗證和稽核
  • 可擴充性:添加新功能而不影響現有應用程式的能力
  • 綜合資訊模組化:用于定義複雜資訊

OPC UA基礎概念

資訊模型(Information model)

OPC UA 使用了對象(objects)作為過程系統表示資料和活動的基礎。對象包含了變量,事件和方法,它們通過引用(reference)來互相連接配接。

OPC UA 資訊模型是節點的網絡(Network of Node,),或者稱為結構化圖(graph),由節點(node)和引用(References)組成,這種結構圖稱之為OPC UA 的位址空間。這種圖形結構可以描述各種各樣的結構化資訊(對象)。

位址空間要點:

  • 位址空間是用來給伺服器提供标準方式,以向用戶端表示對象。
  • 位址空間的實作途徑是使用對象模型,通過變量和方法的對象,以及表達關系的對象。
  • 位址空間中模型的元素被稱為節點,為節點配置設定節點類來代表對象模型的元素。
  • 對象及其元件在位址空間中表示為節點的集合,節點由屬性描述并由引用相連。
  • OPC UA模組化的基本在于節點和節點間的引用。

1、對象模型

OPC UA詳細介紹

2、節點模型

OPC UA詳細介紹

節點模型要點:

  • 節點根據用途分屬于不同的節點類别(NodeClass),一些表示執行個體(/Root/Objects),一些表示類型(/Root/Types)。
  • 節點類依據屬性和引用來定義。OPC UA規範定義的節點類稱為位址空間的中繼資料,位址空間中每個節點都是這些節點類的執行個體。
  • 節點是節點類的執行個體,屬性和引用是節點的基本元件。
  • 屬性(Attribute)用于描述節點,不同的節點類别有不同的屬性(屬性集)。節點類的定義中包括屬性的定義,是以屬性不包括在位址空間中。
  • 引用(Reference)表示節點間的關系。引用被定義為引用類型節點的執行個體,存在于位址空間中。

節點模型通用屬性

OPC UA詳細介紹

包含引用的節點為源節點,被引用的節點稱目标節點。引用的目标節點可以與源節點在同一個位址空間,也可以在另一個OPC伺服器的位址空間,甚至是目标節點可以不存在。

3、引用模型

OPC UA詳細介紹

類型定義節點

類型定義節點是伺服器提供用于對象和變量的類型定義。

标準的節點類

  1. 節點類用于定義OPC UA位址空間中的節點
  2. 位址空間中模型的元素被稱為節點,為節點配置設定節點類來代表對象模型的元素。
  3. 節點類源于通用的基本節點類。
  4. 首先定義基本節點類,然後定義用于組織位址空間的節點類,之後再定義用于代表對象的節點類。
  5. 代表對象的節點類分為三種:用于定義執行個體,定義執行個體的類型,以及定義資料類型。

标準的節點類有如下幾種:

  • 基本節點類:能夠派生所有其他節點類。
  • 對象節點類
  • 對象類型節點類
  • 變量節點類:定義資料變量
  • 變量類型節點類:定義特性
  • 方法節點類:定義方法,方法沒有類型定義,可以綁定到對象上。
  • 引用類型節點類:定義引用。
  • 視圖節點類:定義位址空間中節點子集。
OPC UA詳細介紹

在OPC UA中,最重要的節點類别是對象,變量和方法。

1. 節點類别為對象

節點類别為對象的節點用于(構成)位址空間結構。

  • 對象不包含資料,使用變量為對象公開數值。
  • 對象可用于分組管理對象、變量或方法(變量和方法總屬于一個對象)。
  • 對象也可以是一個事件通知器(設定EventNotifier屬性),用戶端可以訂閱事件通知器來接收事件(事件在位址空間中是不可見的,被綁定到對象)。

2. 節點類别為變量

節點類别為變量的節點代表一個值。

  • 值的資料類型取決于變量,類型的種類在BaseDataType中。
  • 用戶端可以對值進行讀取,寫入和訂閱其變化。
  • 變量節點最重要的屬性是Value,它由DataType,ValueRank和ArrayDimensions屬性定義,通過這三個屬性,可以定義各種類型資料。

3. 節點類别為方法

節點類别為方法的節點,代表伺服器中一個由用戶端調用并傳回結果的方法。

  • 方法指定用戶端使用的輸入參數,并傳回給用戶端輸出參數。
  • 輸入參數和輸出參數作為方法的特性存在,是資料方法的變量。
  • 用戶端使用調用服務(Call)調用方法

OPC UA的模型采用XML 檔案描述,然後通過一個編譯工具可以将XML 編譯成C++語言的程式。

OPC UA的優勢:

一、功能方面,OPC UA不僅支援傳統OPC的所有功能,更支援更多新的功能:

1. 網絡發現:自動查詢本PC機中與目前網絡中可用的OPC Server。

2. 位址空間優化:所有的資料都可以分級結構定義,使得OPC Client不僅能夠讀取并利用簡單資料,也能通路複雜的結構體。

3. 互訪認證:所有的讀寫資料/消息行為,都必須有通路許可。

4. 資料訂閱:針對OPCClient不同的配置與标準,提供資料/消息的監控,以及數值變化時的變化報告。

5. 方案(Methods)功能:OPC UA中定義了通過在OPCServer中定義方案(Methods),來讓OPC client執行特定的程式。

二、平台支援方面,由于不再基于COM/DCOM技術,OPC UA标準提供了更多的可支援的硬體或軟體平台。

三、安全性方面,最大的變化是OPC UA可以通過任何單一端口(經管理者開放後)進行通信,這使得OPC通信不再會由于防火牆受到大量的限制。

OPC UA在通過防火牆時通過提供一套控制方案來解決安全問題:

  • 傳輸:定義了許多協定,提供了諸如超快OPC二進制傳輸或更通用的SOAP-HTTPS等選項
  • 會話加密:資訊以128位或256位加密級别安全地傳輸
  • 資訊簽名:資訊接收時的簽名與發送時必須完全相同
  • 測序資料包:通過排序消除了已發現的資訊重播攻擊
  • 認證:每個UA的用戶端和伺服器都要通過OpenSSL證書辨別,提供控制應用程式和系統彼此連接配接的功能
  • 使用者控制:應用程式可以要求使用者進行身份驗證(登入憑據,證書等),并且可以進一步限制或增強使用者通路權限和位址空間“視圖”的能力
  • 審計:記錄使用者和/或系統的活動,提供通路審計跟蹤

核心的差別是因為OPC和OPC UA協定使用的TCP層不一樣,OPC是基于DOM/COM上,應用層最頂層;OPC UA是基于TCP IP scoket 傳輸層

繼續閱讀