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