趙艷領,閆曉風,劉 丹
(機械工業(yè)儀器儀表綜合技術經濟研究所 網絡控制研究中心,北京 100055)
基于SDK嵌入式OPC UA服務器設計與實現
趙艷領,閆曉風,劉 丹
(機械工業(yè)儀器儀表綜合技術經濟研究所 網絡控制研究中心,北京 100055)
針對工業(yè)現場設備類型多樣、接口不同導致的系統集成問題,通過開發(fā)一種支持多種接口類型設備的嵌入式OPC UA服務器進行設備綜合管控,并可以方便的集成到已有的信息系統。該服務器以SDK為基礎,并將其移植到Arm和Linux嵌入式系統平臺上,根據SDK提供的API函數構建現場設備到OPC UA地址空間的映射,通過地址空間的管理達到現場設備管控的目的。測試驗證表明,該服務器滿足現場設備管控與集成要求。
OPC UA;OPC UA服務器;SDK;嵌入式系統
隨著智能制造的逐步發(fā)展,物聯網、大數據/云計算等技術在工業(yè)中越來越受到重視和使用,工業(yè)數據越來越體現“數據即資產”這一重要的產業(yè)趨勢[1,2]。然而用于獲取這些工業(yè)數據的設備制造商、設備類型、集成接口等各方面存在較大差異,工業(yè)4.0與智能制造時代面臨的第一個問題將是互聯與互通問題[3],因此采用一種標準的集成方法顯得十分重要。
在傳統的工業(yè)系統集成中,OPC是事實上的集成標準。傳統OPC是在微軟Windows的OLE技術基礎上發(fā)展起來的一種數據交換方法,其目的就是通過一個統一的接口實現不同廠商的軟件產品之間的數據交換。但是由于傳統的OPC 技術逐漸顯示出其不夠靈活、安全機制不足、平臺局限、實現和使用過于復雜等諸多弱點,于是OPC基金會在2006年推出了OPC UA來取代傳統的OPC技術[4,5]。OPC UA是OPC基金會推出的新一代集成規(guī)范,其目的是提出一個企業(yè)制造模型的統一架構。OPC UA支持復雜數據內置,統一的地址空間,跨平臺操作,支持抽象的服務功能。它可以被應用于工業(yè)控制系統、MES以及ERP促進企業(yè)與控制系統的連通性[6,7]。
本文在分析OPC UA應用開發(fā)框架的基礎上,通過對OPC UA SDK(software development kit軟件開發(fā)包)進行選型和移植,以Arm和Linux為嵌入式運行平臺,通過構建設備到OPC UA地址空間的映射和管控,實現嵌入式OPC UA服務器的功能。
1.1 概述
OPC UA功能按角色可以分為OPC UA服務器功能和OPC UA客戶端功能,服務器功能是指用來提供數據和統一的訪問接口和服務,客戶端根據統一的訪問接口和服務可以對OPC UA服務器提供的數據進行操作,這些功能即可以被單獨作為一個應用程序如單純的OPC UA客戶端工具,也可以被集成到用戶程序中如MRS系統支持OPC UA客戶端功能,用戶程序也可能集中了服務器和客戶端兩者的功能。
1.2 OPC UA軟件層
圖1 OPC UA軟件層次圖
圖1是一個常見的OPC UA應用開發(fā)的邏輯軟件層次圖[8],該層次模型是為了更好的開發(fā)軟件和理解OPC UA應用包含的功能。軟件層次包括三個部分,最底層的是OPC UA通信棧,通信棧之上是服務器或者客戶端功能集即對應的SDK軟件開發(fā)包,OPC UA服務器應用或者客戶端應用是根據用戶業(yè)務需要開發(fā)相應的功能如創(chuàng)建地址空間或者定義需要讀取的數據。
1.2.1 通信棧
OPC UA通信棧需要實現OPC UA規(guī)范第6部分(OPC UA統一架構第6部分:映射)的要求,主要功能包括三個部分:
1)數據編碼功能包括二進制和XML編碼對應于第6部分的數據編碼;2)安全相關的功能,對應于第6部分的安全協議;3)通信協議包括消息傳輸使用的網絡協議OPC UA TCP和SOAP/HTTP,對應于第6部分的傳輸協議。
在這里需要強調的是,該部分隱含的是用戶程序運行平臺必須要支持一些功能才能使得OPC UA通信棧正常運行,如運行平臺需要支持TCP/IP網絡協議棧。
1.2.2 OPC UA功能集
OPC UA功能集包括客戶端功能集和服務器功能集如圖2所示,服務器功能集主要是根據構建的地址空間提供數據和服務,客戶端功能集是利用服務訪問數據,在語義上兩者對應的服務種類是一致的,但是角色不同,如節(jié)點屬性操作服務,客戶端執(zhí)行的讀請求,而服務器是應答對應的讀操作。
圖2 OPC UA服務器架構
OPC UA功能集需要實現OPC UA的概念、信息模型、服務等相關規(guī)范,如發(fā)現服務集、安全會話的創(chuàng)建、激活、關閉等操作;節(jié)點的創(chuàng)建、刪除、增加、關聯引用等管理服務;屬性訪問服務如讀、寫、歷史數據查詢服務集;訂閱服務;數據訪問DA(OPC UA第8部分:數據訪問)等功能。
1.2.3 業(yè)務相關功能開發(fā)
對于業(yè)務功能的開發(fā)是根據用戶需求制定的,對于OPC UA服務器而言,業(yè)務功能開發(fā)就是創(chuàng)建地址空間以及地址空間的管理;對于OPC UA客戶端而言,業(yè)務功能開發(fā)主要是確定讀取服務器地址空間哪些數據,怎樣讀取數據等功能。
2.1 OPC UA服務器功能需求
如圖2所示,該嵌入式OPC UA服務器的主要功能是對支持Modbus或Profibus協議的現場儀表進行管控,對外提供統一的OPC UA接口,可以方便的集成到支持OPC UA客戶端功能的信息系統如MES系統中。支持的主要功能包括:
1)需要運行在Arm和Linux系統上;
2)對服務器地址空間里的數據節(jié)點進行讀操作;
3)地服務器址空間里的數據節(jié)點進行寫操作;
4)對服務器地址空間里的數據節(jié)點進行訂閱;
5)對服務器地址空間進度瀏覽;
6)對服務器地址空間創(chuàng)建視圖;
7)對Modbus設備或Profbus設備進行管控。
2.2 SDK的選擇
一般來說,由于OPC UA規(guī)范的復雜性,如果按照OPC UA的標準從零開始開發(fā)一個OPC UA應用程序將耗費大量的人力和財力投入,常見的開發(fā)方式是在OPC UA 通信棧和SDK的基礎上開發(fā)面向應用的程序,這將大大提高開發(fā)速度。本文采用購買第三方SDK進行開發(fā)的方式,商用SDK包含了OPC UA通信棧和功能集功能,對外提供API函數。
目前國內還沒有OPC UA SDK相應的產品和服務,常見的OPC UA SDK供應商包括加拿大的MatrikonOPC、德國的Softing、Prosys、Unified Automation等公司。購買SDK要綜合考慮多方面的因素,主要包括如下幾個關鍵方面,如表1所示。
2.3 SDK的移植
本文根據嵌入式OPC UA服務器功能需求從上述供應商中最終確定了一款SDK(為避嫌不聲明具體哪一家供應商),該SDK以源碼的形式提供,需要移植到本方案使用的ARM和Linux嵌入式系統上,SDK的目錄結構大致如下:
表1 購買OPC UA SDK考慮因素
移植大致流程如下:
1)配置GCC交叉編譯工具;
2)下載OpenSSL源碼和配置OpenSSL環(huán)境(為安全功能提供安全相關庫);
3)修改配置和安裝路徑(/config no-asm shared–prefx=安裝路徑Shared必須要加);
4)修改SDK自帶的Makefle,編譯工具為配置的交叉編譯工具;
5)進行編譯生成SDK庫。
2.4 地址空間的創(chuàng)建
不同的SDK可能API接口不一致,但是具體的功能和創(chuàng)建方法是一致的,采用該SDK提供的API創(chuàng)建地址空間一般分為三個步驟:
1)初始化一個變量/對象;2)創(chuàng)建一個變量/對象;3)增加到某一個對象下。
關鍵API如下:
(1)創(chuàng)建對象增加到某對象下
①UAServer_Init_confg_structure_Folder
②UAServer_Create_Folder
③UAServer_Add_to_objects_folder 增加到Objects目錄下
④UAServer_Add_to_folder 增加到指導的folder節(jié)點下
UAServer_Add_to_objects_folder函數是把創(chuàng)建的對象增加到objects目錄下,objects目錄是OPC UA標準地址空間中的標準節(jié)點,在創(chuàng)建自己地址空間時,第一步就需要在節(jié)點下增加對象。
(2)創(chuàng)建一個模擬量數據點增加到某對象下
①UAServer_Init_confg_structure_AnalogItem
②UAServer_Create_AnalogItem
③UAServer_Add_to_folder
(3)創(chuàng)建一個離散量數據點增加到對象下
①UAServer_Init_confg_structure_TwoStateDiscrete
②UAServer_Create_TwoStateDiscrete
③UAServer_Add_to_folder
其他API函數的使用與此類似。建立一個Modbus目錄,其下存在一個從站slave1,slave1包含多個數據點的目標地址空間,如圖3和圖4所示。
圖3 目標地址空間
圖4 利用API創(chuàng)建地址空間
本文采用標準OPC UA供應商提供的標準OPC UA客戶端對嵌入式OPC UA服務器功能進行測試驗證,驗證系統包括多個Modbus設備和Profibus設備連接到嵌入式服務器上,通過客戶端的操作對基于用戶名和密碼的安全認證、地址空間瀏覽、創(chuàng)建視圖、數據讀寫操作、數據訂閱等功能進行測試驗證,驗證表明該嵌入式OPC UA服務器滿足功能和設計需求,該設備將在實際企業(yè)現場進行示范應用。
OPC UA技術在國內正在形成一個熱潮,在工業(yè)4.0、智能制造等領域被廣泛認可,因此支持OPC UA規(guī)范的數據采集設備在解決設備/系統集成方面將會得到廣泛應用,本文的案例不僅可以針對Modbus和Profibus接口的設備,根據需要,該設備可以支持更多的協議類型,遺憾的是,國內的SDK開發(fā)尚未起步,因此未來國產SDK的開發(fā)工業(yè)軟件強基的一個重要方向。
[1] 胡永利,孫艷豐,尹寶才.物聯網信息感知與交互技術[J].計算機學報,2012,06:1147-1163.
[2] 孫立.工業(yè)大數據對智慧云制造的推動與創(chuàng)新[J].科技管理研究,2016,13:156-158,163.
[3] OPC UA——互聯工廠方案[J].國內外機電一體化技術,2016,04: 26-28.
[4] 王侃侃,張華良.嵌入式OPCUA與DPWS的比較與分析[J].自動化與表,2014,12:5-8,17.
[5] 趙宴輝,聶亞杰,王永麗,李海平.OPC UA技術綜述[J].艦船防化,2010,02:33-37.
[6] 華镕.使用OPC UA的十個原因[J].中國儀器儀表,2013,03:55-57.
[7] 原紅麗,呂靜,劉楓.基于OPC UA客戶端/服務器的現場設備集成[J].西南師范大學學報(自然科學版),2012,03:141-145.
[8] IEC/TR 62541-1.OPC Unifed Architecture –Part 1: Overview and Concepts.
Design and development about the embedded OPC UA server based on SDK
ZHAO Yan-ling, YAN Xiao-feng, LIU Dan
TP319
:A
1009-0134(2017)01-0049-04
2016-11-12
冶金工業(yè)系統能效監(jiān)測評估及優(yōu)化控制技術與系統(2014AA041803)
趙艷領(1984 -),男,工程師,碩士研究生,研究方向為工業(yè)自動化系統開發(fā)、工控系統信息安全和嵌入式軟件開發(fā)等。