(重慶三峽學院 重慶 404632)
OPC UA 的全稱為OPC Unified Architecture,它表示OPC統一體系架構,是一種以服務為主提供一個完整的安全可靠的跨平臺架構。OPC UA的優點是使開發人員能夠安全地交換大量的數據,具有更高層次的相互操作性,同時產生了一些新的技術和高水準的性能水平,在原有基礎上增加了原始OPC的功能,同時的,OPC UA不再僅僅依賴DCOM,而是加強建設面向服務的架構(SOA),因此OPC UA越來越得到企業的青睞運用。為了解決工控軟件、PLC、嵌入式網關等產品的系統的兼容性問題,各大廠商都紛紛增加了對OPC UA協議的支持。所以,各種OPC UA設備能不能滿足規約所定義的標準功能集,就要有專門的認證機構提供專業的測試服務。
因此,由OPC基金會授權和委托,OPC中國聯合機械工業儀器儀表綜合技術經濟研究所(ITEI)建立了國內唯一的OPC認證測試實驗室,并在2017年9月5日在中國職工之家飯店正式發布國家標準GB/T 33863.1~.8-2017《OPC統一架構》。
傳統的OPC DA規范采用COM/DCOM技術,只能在Windows平臺當中運行,并且COM技術十分復雜,使OPC的推廣產生許多困難,微軟后期不再維護和升級COM技術。OPC UA規范再也不是基于COM/DCOM技術,也就是說OPC UA不但可以在Windows平臺上實現,更可以在Linux,與其他的嵌入式平臺中實現。標準OPC所具有的功能,OPC UA也都具有。
1.等價功能:OPC UA和OPC在COM中的功能都一樣。
2.多功能平臺支持:支持從嵌入式的微控制器到以云為基礎的分散式控制架構。
3.安全:互訪認證,對于信息的加密性以及安全監聽功能。
4.擴展性功能:在當前程序正常工作的情況下,還可以新增其他應用功能。
5.信息建模的豐富多元化:可對復雜的信息進行定義,而不僅僅是單一的數據。
整個系統采用三層架構設計,從下至上分別是設備驅動層、OPC UA服務層、OPC UA客戶端。
設備驅動層:負責所有底層設備的數據采集;
OPC UA服務層:載入OPC Moduler數據模型,并對底層設備采集的數據按照OPC UA規范進行存儲,為客戶端提供統一訪問接口;
OPC UA客戶端:獲取服務層提供的數據,以及執行可調用的方法。
整個系統的設計框架如圖1所示:

圖1 OPC系統設計框架
OPC服務層設計:
OPC服務層是整個系統的核心層,負責底層數據的臨時存儲以及向客戶端提供數據訪問接口的功能。
UA數據模型設計:
UA數據模型是整個系統的核心設計,在該模型中,定義了整個系統需要用到的底層設備,以及各個設備獲取的數據以及可執行的方法。
構建UA數據模型,可使用Unified Automation UaModuler工具進行設計,在ObjectTypes的BaseObjectType中,對每一個設備增加一個數據模型,并設置相應的設備名稱和描述,之后為新增加的模型增加Children節點,設置該設備可獲取的所有變量(測試值)以及可以調用的方法。設計完成后,可導出對應的BuildingAutomation.xml通用配置文件。如下圖2所示(構建的UT55A數據模型)。

圖2 UT55A數據模型
關鍵類設計:
UANodeManager:
節點管理器,用于讀取BuildingAutomation.xml配置文件,并根UA據模型文件在系統中創建節點地址空間。
UAServerManager:
實例化節點管理器,并啟動整個OPCUA服務,使服務器能夠被發現。
在底層驅動設計中,需要考慮所有設備的數據獲取方式,以及整個地址空間數據模型的組織方式,使得采集的數據能夠正確對應到數據模型中。為此設計了也一個IController接口,和一個UnderlyingSystem關鍵類。
IController接口:
在IController接口中,定義了所有底層設備驅動需要實現的方法,所有的底層設備驅動,按照該接口定義的方法進行編寫。
void DataReceived(object sender,SerialDataReceivedEventArgs e):
接收到數據數據的處理函數。
void OpenCom():
打開通信端口。
bool ReadRegisters():
讀取寄存器。
void SetParam(string strName,object param):
設置底層設備驅動的參數,第一個參數為該設備的名稱,第二個參數為與該設備相關的配置信息,包括設備名稱、該設備對應的底層驅動的類名、與該設備對應的命令文件的路徑、以及該設備的通信端口配置(串口和網口)。
UnderlyingSystem類:
UnderlyingSystem類,用于對底層設備驅動采集的數據進行整理,根據數據模型開辟內存空間,并按照數據模型的接口將數據存放在內存塊中,建立數據字典,與UA模型實現對應關系。
在系統中,設計了ComCfg.xml文件,用于配置與數據模型相對應的各個設備以及設備通信端口,以及各個設備驅動類與底層設備通信所需要用到的命令文件。首先載入該文件,并根據設備類型實例化不同的底層驅動類。
底層驅動類:
實現IController接口,連接設備,通過讀取命令配置文件,與底層設備進行通信讀取數據。
系統中,為每一個設備設計了一個對應的命令配置文件,該文件中所有的命令配置信息與模型文件相對應,也就是說,返回數據的個數、數據類型,都要與模型文件嚴格對應。
如下圖3所示

圖3 OPC UA服務器底層驅動構架
1.OPC UA客戶端設計
在程序中,找到其必需的設計器變量,并將系統組成成分賦空值,并清理正在使用的資源,并且同步判斷是否為托管資源,若是托管資源,窗口設計器則生成相應代碼,并確認服務器名稱及節點地址,由此生成界面控件及標簽,到此,完成客戶端設計過程;若不是托管資源,則返回,繼續清理正在使用的資源。
2.設備配置界面
當我們工作時,運行到指定的模型文件。并且進入到配置界面,再進行對應的串口配置,或網口配置。
服務端采用WinForm窗口程序,方便維護人員對服務端進行配置,如圖4所示。

圖4 OPCUSS設備配置界面
下圖為根據UA數據模型,為不同變量配置命令。

圖5 命令配置界面
下圖為OPC UA客戶端主界面,用于根據IP地址和端口號查找OPC UA服務器,并顯示服務器上的模型信息。

圖6 OPC UA客戶端主頁面
在客戶端,可以顯示不同節點可調用的方法,如下圖所示。

圖7 節點調用界面
在企業進行工作時,當我們運用OPC UA技術時,它極大的方便了我們工作。OPC UA 很好的解決了之前的OPC規范存在的問題,在互操作性上,做了很多改進,加快了研發速度和運行效率,削并且減了工作成本。在以后的生產生活中,除了傳統的OPC 客戶端訪問方式,還有在現場智能設備中投放使用的OPC UA服務器。OPC UA技術其在網絡上具有兼容性,安全系數更高,版本更新更快,平臺更多且相互獨立等優點。它可以在所有的自動化層面上發揮作用,從人機界面,和 PLC,到MES、ERP等其他高層系統,加深了公司和控制系統的交流溝通,信息交互。