天天看點

物聯網協定-OPC

作者:AIoT歐陽子

1、簡介

OPC(工業控制與自動化)協定,全稱是OLE(Object Linking and Embedding) for Process Control。支援OPC-DA(Data Access)、OPC-AC(Alarm & Conditions)、OPC-HA(Historical Access)規範等。

為了便于自動化行業不同廠家的裝置和應用程式能互相交換資料,定義了一個統一的接口函數,就是OPC協定規範。有了OPC就可以使用統一的方式去通路不同裝置廠商的産品資料。簡單來說:OPC就是為了用于裝置和軟體之間交換資料。

OPC UA是工業4.0時代一個重要的通信協定(IEC 62541),為自動化裝置定義了統一的接口标準,為工控領域的程式設計提供便利性,各大企業的裝置都支援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伺服器。而一個想要使用其他應用程式資訊的應用程式被稱為UA用戶端。但是,期望與經典OPC相比,更多的應用是在一個應用程式中包含UA伺服器和UA用戶端。其中一個原因是,越來越多的UA伺服器将被直接內建在裝置中,同時實作一個UA用戶端使裝置到裝置的通信變得可行。另一個原因是, OPC UA用作配置接口, UA用戶端同時也是一個可以通過OPC UA進行配置的UA伺服器。

2、OPC和OPC UA差別

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

3、OPC UA的優勢

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

  • 網絡發現:自動查詢本PC機中與目前網絡中可用的OPC Server。
  • 位址空間優化:所有的資料都可以分級結構定義,使得OPC Client不僅能夠讀取并利用簡單資料,也能通路複雜的結構體。
  • 互訪認證:所有的讀寫資料/消息行為,都必須有通路許可。
  • 資料訂閱:針對OPCClient不同的配置與标準,提供資料/消息的監控,以及數值變化時的變化報告。
  • 方案(Methods)功能:OPC UA中定義了通過在OPCServer中定義方案(Methods),來讓OPC client執行特定的程式。

平台支援方面,由于不再基于COM/DCOM技術,OPC UA标準提供的更多的可支援的硬體或軟體平台。硬體平台諸如傳統的PC機、基于雲的伺服器、PLC、ARM等其他微處理器;而軟體平台可支援微軟的Windows、蘋果公司的OSX、安卓,以及其他的基于Linux的分布式作業系統。

安全性方面,最大的變化是OPC UA可以通過任何單一端口(經管理者開放後)進行通信,這使得OPC通信不再會由于防火牆受到大量的限制。在通訊的過程中面臨着衆多的外部安全威脅,例如:資訊洩露,篡改指令,越權操作,僞造重發,泛濫攻擊等。面對這些威脅,OPC UA則使用加密,簽名,使用者認證,權限通路控制,會話管理等方式一層一層完成深度防禦。

4、OPC UA的資訊模型與統一架構

OPC UA的資訊模型來源于面向對象程式設計(OOP)的思想,這也是最契合實際需求的。假設在工業現場有若幹台空調需要監控,首先我們需要監視它的溫度,濕度,運作狀态;其次我們需要對它進行啟停操作;然後我們需要接受它的非停事故報警資訊;最後我們常常需要分析某一時段的運作參數來判斷空調的狀态。運用面向對象程式設計的思想,我們建立一個類—空調,在這個類中分别定義相應的屬性,方法和事件,其中屬性即可以是簡單的資料,也可以是複雜的結構體。這個類即可了解成OPC UA的資訊模型。OPC UA将現場的這些實時資料(DA),曆史資料(HDA)還有事故報警資料(A&E),在同一平台進行管理,即為統一架構。

PC UA的這個資訊模型其實也不是在工控界獨領風騷的,在PTC的物聯網平台Thingworx中的物模型(thing model),羅克韋爾的CIP協定也都是類似的面向對象的模型。

5、OPC UA與IoT

面對物聯網這個風口,OPC UA也希望将自己打造成一款IoT主流協定。OPC UA能夠很好的支援HTTPS,在與HTTPS配合時,可以發送XML或者JSON格式的資料。

現在很多的物聯網平台也已經支援OPC UA了,比如國外的Azure,國内的阿裡雲等物聯網平台。下圖是阿裡雲的一個配置界面,接入網關協定中可以選擇OPC UA。

不過OPC UA最初的client與server之間的查詢與響應的一對一模式最适合通訊節點較少,通訊資訊量大且穩定持續的場景。在物聯網的應用場景中,往往通訊節點比較多,但是節點間的通訊量不大,有時還需要一對多、多對一通訊。如果還用一對一的模式去擁抱物聯網,容易撲個空。這時OPC UA引入了pub/sub機制,融合了一些MQTT協定,就能比較好的支援物聯網的場景了。

6、OPC UA裝置接入流程

OPC UA是通過節點(Node)以及節點之間的引用進行業務模組化的。是以,采集業務資料前,要先知道OPC UA裝置定義了哪些節點,我們可以通過OPC UA用戶端工具Softing OPC Client檢視已定義的節點,再在平台端建立與節點屬性對應的opcua裝置類型資料點,添加opcua裝置時輸入OPC UA伺服器URL,這樣OPC UA裝置就能成功接入平台了。

7、OPC UA開源庫

python-opcua:

優點:它最大的特點就是簡單,用pip install opcua安裝即可,經過幾年更新以後,對OPCUA協定的支援也越來越充分,既支援伺服器,又支援用戶端。下面是官網給出的執行個體,用不到30行代碼就能建立一個包含一個動态點的伺服器。

缺點:這個庫的性能差一些;有部分OPC UA協定标準中定義的服務還沒有支援。最後,在使用的過程中發現存在一些bug。

UA-.NETStandard:

優點:這個庫是OPC基金會官方出品的庫,包含伺服器,用戶端,可以在windows,linux運作,也可以在iOS和Android運作。它的性能很好,拿到了OPCUA實驗室的官方認證,對OPC UA協定标準支援的全面程度自然沒得說了。

缺點:從工控人的角度看,需要一些C#的程式設計技能,上手稍微慢一點,沒有Python那個庫容易學習。Git上同樣有一些執行個體工程,可以在它們的基礎上根據自己的開發和測試需求做修改。

繼續閱讀