[Standard] OPC UA通訊規範簡介

OPC UA

OPC(Open Platform Communications)是用於工業自動化的一種通訊標準,符合OPC標準的設備透過OPC將即時資料傳送給OPC Server,使用者則透過OPC Client向OPC Server取得即時資料,達到監控設備的目的。

OPC於1996年由OPC基金會(OPC Foundation)發布,基於微軟系統下的DDE、COM、DCOM為基礎所開發,定義了程控與工廠自動化所需要的物件、介面、與方法,目的是為了提高不同設備間的協同作業能力,同時提供Windows-based軟體應用程式以及程式控制硬體共同的介面;無論資料來源與型態,利用一致性的方法存取現場的設備,減少硬體設計者、軟體合作廠商、SCADA及HMI廠商在建立、整合設備管理介面上所需要的心力。

OPC規範是公開且免費的,無論是前端硬體設備的廠商,或者後端軟體介面的廠商,都可以加入OPC規範來開發自己的產品。

OPC UA(OPC Unified Architecture)同樣是由OPC基金會所在2008年發布的規範,它是一個平台化獨立的服務導向(service-oriented)架構,將傳統的OPC的各個功能整合為一個可擴展的框架,以多層次的角度完成原始設計的目標。

OPC UA是OPC基金會在OPC推行多年之後所推出的後繼版本,目的改善許多傳統OPC的缺點,並且開發出一個更符合現代工業自動化的理想架構,OPC UA的優點如下:
功能等同性(Functional equivalence): 所有傳統的OPC規範都對應到OPC UA
跨平台(Platform independence): 從嵌入式微型控制器到基於雲端的基礎架構
安全(Secure): 加密,認證和審計(auditing)
可擴展性(Extensible): 在不影響現有應用程式的情況下添加新功能的能力
全面的資訊建模(Comprehensive information modeling): 用於定義復雜的資訊

Functional equivalence

基於傳統OPC的成功基礎,OPC UA目的在於增強並超越傳統OPC的規範,提供一個相容於傳統OPC,但功能更多的工業自動化規範。

OPC UA除了整合傳統OPC的功能,更開發出許配合現代工業自動化的多新功能:
探索(Discovery): 可以在本地端電腦或網路上尋找可用的OPC Server
定址空間(Address space): 所有的資料都以層級的方式,類似檔案與資料夾,讓OPC Client可用簡單的探索資料,並使用複雜的結構
隨選(On-demand): 根據權限進行資料或資訊的讀寫
訂閱(Subscriptions): 監控資料或資訊,並依照使用者的定義回報異常
事件(Events): 根據使用者的定義通知重要訊息
方法(Methods): 使用者可依據OPC Server上定義的方法去執行程式

透過COM/Proxy的包裝函式,就可以簡單的完成OPC UA產品與傳統OPC產品的整合。

Platform independence

在各種硬體平台與作業系統中,跨平台是必要的功能;OPC UA為整個企業提供了互操作性(interoperability)的基礎,無論是設備與設備,或者設備到企業,以及其中的一切。

硬體上無論是傳統PC硬體、雲端服務器、PLC、或微型控制器(ARM等),軟體上無論是Microsoft Windows,Apple OSX,Android或任何Linux套件版本等,OPC UA都可以運行並且相互整合。

Secure

在選擇該使用何種技術的時候,最重要的一項議題就是安全;OPC UA相容於防火牆,並且透過一系列的控制方法來解決安全問題。

這些方法如下:
傳輸(Transport): OPC UA提供了許多傳輸協定供選擇,如超快速OPC-binary傳輸,或更普遍兼容的SOAP-HTTPS之類的協定
Session加密(Session Encryption): 訊息會以128或256bits的加密等級傳輸
訊息簽名(Message Signing): 確保接收到的訊息與發送的訊息完全相同
序列化封包(Sequenced Packets): 透過排序進而排除訊息重送攻擊(replay attacks)
認證(Authentication): 每個OPC UA client與server均透過OpenSSL憑證進行驗證,針對哪些應用程式與系統間可以互相連結提供控制
使用者控制(User Control): 應用程式可以要求使用者進行身分驗證(如登入驗證或者使用憑證驗證),並可進一步管控使用者權限與定址空間的可見程度
審計(Auditing): 記錄使用者與系統的活動,並提供存取審計跟蹤(audit trail)

Extensible

OPC UA的多層級結構提供了一種future proof框架,確保日後新的傳輸協定、安全演算法、編碼標準、或者應用服務等新技術或方法可以結合到OPC UA中,同時對現有的產品保持向下相容。

Comprehensive information modeling

OPC UA的資訊建模框架可將數據(data)轉換為資訊(information),藉由完整的服務導向能力,可將複雜的多層級架構模組化以及擴展;數據類型與結構可透過配置文件(profiles)定義,而這些配置文件可由其他不同企業、組織、廠商進行擴展,成為資訊集成(information integration)的基礎。

留言

  1. 你好!
    針對OPCUA的規範,有個問題想請問您?是否有驗證或認證設備符合OPCUA的程式或單位的標準驗證模式呢?

    回覆刪除
    回覆
    1. 就我所知OPC Foundation本身並沒有提供類似的東西,不過OPC Foundation的網頁中有提供client與server的sample code,也許你可以試試看。
      以我在工作上的經驗,因為OPC UA是個國際標準,所以你找任何有廠商有OPC UA的軟體,應該都可以對OPC UA的設備通訊。

      刪除
  2. OPC-UA支援兩種通訊協定(UA Binary、UA XML),
    二進位通訊協定是opc.tcp://Server,Web服務的通訊協定是https://Server,
    這兩種通訊方式會依據什麼原因做開發選擇與考量呢?(不清楚兩個的差異點),
    取決於區網(UA Binary)與外網(UA XML)嗎?
    謝謝您。

    回覆刪除
  3. 我看了OPC的維基與一些資料,對於這兩種傳輸方式,並沒有去限定哪種要使用在那些狀況下,應該取決於兩種傳輸的優缺點去決定要以哪種方式開發,根據OPC的wiki(http://wiki.opcfoundation.org//index.php?title=Transport_Mappings&printable=yes),因為 Binary有較高的安全性,所以對於網路的安全要求會比較高,而XML就相對比較低一點。

    回覆刪除
  4. 請問 OPC UA 憑證有 self-signed / CA-signed 這兩種差別在那? 謝謝

    回覆刪除
    回覆
    1. 簡單來說的話就是自製身分證跟國家頒發的身分證的差別,在測試環境或者內部網路使用self-signed比較方便,但是安全性、公正性、不可抵賴性等,CA-signed才是在公開場合被認可的認證。

      換句話說,A廠商的設備或軟體之間可以用自己產生的self-signed來確認彼此身分,因為有一定的驗證基礎,而且比製作CA-signed方便,但是A廠商的設備要放到網路上公開認證或者跟B廠商的設備認證,可能就會被要求具有公信力的CA-signed。

      有興趣可以看看Wiki的Certificate Authority(https://en.wikipedia.org/wiki/Certificate_authority)。

      刪除

張貼留言