柴處處,韓慶敏,杜軍釗
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京 100083)
基于OPCUA技術(shù)的實(shí)時(shí)數(shù)據(jù)服務(wù)的研究與應(yīng)用
柴處處,韓慶敏,杜軍釗
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京100083)
隨著工業(yè)4.0的深入及新一代信息技術(shù)的推廣,處于控制層和操作層的數(shù)據(jù)采集平臺(tái)逐漸成為實(shí)現(xiàn)智能制造的關(guān)鍵指標(biāo),而實(shí)時(shí)數(shù)據(jù)服務(wù)是數(shù)據(jù)采集平臺(tái)中最重要的服務(wù)之一,是數(shù)據(jù)采集平臺(tái)運(yùn)行的基礎(chǔ)。針對(duì)離散制造業(yè)生產(chǎn)線的柔性要求和信息量的增大、設(shè)備/系統(tǒng)種類的多樣化的現(xiàn)狀,客戶不斷提出如何實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)獲取、安全存儲(chǔ)以及便捷的配置和訪問等重要問題。提出了基于OPCUA技術(shù)的實(shí)時(shí)數(shù)據(jù)服務(wù),不僅解決了數(shù)據(jù)采集平臺(tái)中信息模型的一致問題,而且為處于智能制造體系中基礎(chǔ)層的數(shù)據(jù)采集平臺(tái)提供了一個(gè)開放的高效的通信服務(wù)。結(jié)果表明,該服務(wù)具有標(biāo)準(zhǔn)化、便于集成、節(jié)省開發(fā)成本、符合市場(chǎng)需求等優(yōu)點(diǎn)。
OPCUA;實(shí)時(shí)數(shù)據(jù)服務(wù);數(shù)據(jù)采集平臺(tái)
隨著市場(chǎng)對(duì)制造企業(yè)“大規(guī)模定制化”的要求越來越強(qiáng)烈,工業(yè)現(xiàn)場(chǎng)的根本結(jié)構(gòu)有了新的發(fā)展,傳統(tǒng)層次化的結(jié)構(gòu)模型已經(jīng)越來越不適應(yīng)“柔性化、敏捷化”的生產(chǎn)需求。德國(guó)工業(yè)4.0提出的網(wǎng)狀結(jié)構(gòu)將成為未來的趨勢(shì)。在這種網(wǎng)狀結(jié)構(gòu)中,要求每一個(gè)節(jié)點(diǎn)(包括人、機(jī)、系統(tǒng)等)都能夠點(diǎn)對(duì)點(diǎn)的通信,處于物理世界和數(shù)字世界的分界線上的實(shí)時(shí)數(shù)據(jù)服務(wù)也必須適應(yīng)新的架構(gòu)和要求:適合大規(guī)模分布式部署,提供面向多異構(gòu)系統(tǒng)的便捷安全的數(shù)據(jù)訪問機(jī)制,實(shí)現(xiàn)可配置的信息模型,適合系統(tǒng)的集成和改造,這是未來工業(yè)現(xiàn)場(chǎng)實(shí)時(shí)數(shù)據(jù)服務(wù)的發(fā)展趨勢(shì)。而OPC UA技術(shù)的諸多優(yōu)點(diǎn)非常適用于實(shí)現(xiàn)數(shù)據(jù)采集平臺(tái)的實(shí)時(shí)數(shù)據(jù)服務(wù)。
工業(yè)4.0的核心技術(shù)是信息物理系統(tǒng)(Cyber-Physical Systems,CPS),它通過集成先進(jìn)的感知、計(jì)算、通信、控制等信息技術(shù)和自動(dòng)控制技術(shù),構(gòu)建了物理空間與信息空間中人、機(jī)、物、環(huán)境、信息等要素相互映射、適時(shí)交互、高效協(xié)同的復(fù)雜系統(tǒng),實(shí)現(xiàn)系統(tǒng)內(nèi)資源配置和運(yùn)行的按需相應(yīng)、快速迭代、動(dòng)態(tài)優(yōu)化。信息物理系統(tǒng)能夠?qū)⑽锢韺?shí)體、生產(chǎn)環(huán)境和制造過程精準(zhǔn)映射到虛擬空間并進(jìn)行實(shí)時(shí)反饋,即把設(shè)備、生產(chǎn)線、工廠、供應(yīng)商、產(chǎn)品、客戶緊密地連接在一起,實(shí)現(xiàn)制造業(yè)生產(chǎn)模式的重構(gòu)。工業(yè)4.0將無處不在的傳感器、專用設(shè)備、嵌入式終端系統(tǒng)、智能控制系統(tǒng)、通信設(shè)施通過CPS形成一個(gè)智能網(wǎng)絡(luò),使得產(chǎn)品與生產(chǎn)設(shè)備之間、不同的生產(chǎn)設(shè)備之間以及數(shù)字世界和物理世界之間能夠互聯(lián),使得機(jī)器、工作部件、系統(tǒng)以及人類會(huì)通過網(wǎng)絡(luò)持續(xù)地保持?jǐn)?shù)字信息的交流[1]。
基于OPC UA技術(shù)的數(shù)據(jù)采集平臺(tái)是一個(gè)高度集成、開放和共享的數(shù)據(jù)服務(wù)平臺(tái),能夠?qū)崿F(xiàn)工廠內(nèi)各類裝備、控制系統(tǒng)和信息系統(tǒng)的互聯(lián)互通,以及物料、產(chǎn)品、設(shè)備與人的無縫集成,是實(shí)現(xiàn)從單個(gè)機(jī)器、產(chǎn)線、車間到工廠的工業(yè)全系統(tǒng)互聯(lián)互通的重要基礎(chǔ)平臺(tái),支撐數(shù)據(jù)流動(dòng),為打造萬(wàn)物互聯(lián)的世界提供了基礎(chǔ)和前提,是構(gòu)建智能制造的基石。
實(shí)時(shí)數(shù)據(jù)服務(wù)是數(shù)據(jù)采集平臺(tái)中最重要的服務(wù)之一,是整個(gè)平臺(tái)運(yùn)行的基礎(chǔ)[2]。實(shí)時(shí)數(shù)據(jù)服務(wù)能將現(xiàn)場(chǎng)設(shè)備采集的數(shù)據(jù)存入OPC UA的地址空間中,還能夠?qū)ι蠈舆壿嬏峁└鞣N服務(wù),是整個(gè)數(shù)據(jù)采集平臺(tái)的核心。
2.1OPCUA產(chǎn)生的背景
經(jīng)典OPC接口是基于COM和DCOM技術(shù)的,有諸多缺點(diǎn):不具有平臺(tái)無關(guān)性,僅適用于微軟平臺(tái)環(huán)境;DCOM的遠(yuǎn)程訪問具有局限性,并且難以配置;COM產(chǎn)生的傳輸報(bào)文過于復(fù)雜,通過Internet來發(fā)送COM報(bào)文非常困難;DA、Aamp;E和HAD服務(wù)器之間相互獨(dú)立,不便于協(xié)調(diào)工作[3]。
OPC UA的誕生是希望為所有的基于COM的規(guī)范建立一個(gè)沒有損失任何功能和性能的真正替代品。另外,它同時(shí)滿足了能夠描述復(fù)雜系統(tǒng)的、豐富的和可擴(kuò)展的建模能力,以及平臺(tái)獨(dú)立的系統(tǒng)接口及安全性的所有需求。
2.2OPCUA的優(yōu)勢(shì)
OPC UA能夠替代OPC并且得到廣泛應(yīng)用是因?yàn)镺PC UA有如下優(yōu)點(diǎn):
(1)組件對(duì)象模型(COM)/分布式組件對(duì)象模型(DCOM)的終止;
(2)打破COM的局限;
(3)OPC通信穿過防火墻;
(4)在非視窗平臺(tái)使用OPC;
(5)通過Web服務(wù)實(shí)現(xiàn)跨平臺(tái)的OPC通信;
(6)統(tǒng)一數(shù)據(jù)模型;
(7)支持復(fù)雜數(shù)據(jù)結(jié)構(gòu);
(8)保證通信不丟失數(shù)據(jù);
(9)對(duì)非授權(quán)數(shù)據(jù)訪問而增加的保護(hù);
(10)支持新的命令調(diào)用。
2.3OPCUA應(yīng)用程序架構(gòu)
如圖1所示,應(yīng)用程序架構(gòu)分為三層,客戶端和服務(wù)器程序工作在SDK的上層,高級(jí)功能表示為軟件開發(fā)工具箱(SDK),低級(jí)功能部分表示為協(xié)議棧。本文中的數(shù)據(jù)采集平臺(tái)使用OPC基金會(huì)提供的SDK進(jìn)行開發(fā)。
2.4OPCUA的地址空間
地址空間定義了服務(wù)器的數(shù)據(jù)和怎樣管理這些數(shù)據(jù),它是由節(jié)點(diǎn)和節(jié)點(diǎn)間的引用組成的。地址空間是通過節(jié)點(diǎn)管理器對(duì)象來管理的,而節(jié)點(diǎn)管理器通常用來定義OPC UA的節(jié)點(diǎn),最重要的節(jié)點(diǎn)類別是對(duì)象、變量和方法。
圖1 應(yīng)用程序架構(gòu)
實(shí)時(shí)數(shù)據(jù)包含了豐富的系統(tǒng)運(yùn)行信息,反映了當(dāng)前設(shè)備運(yùn)行狀況和生產(chǎn)狀況。通過對(duì)實(shí)時(shí)數(shù)據(jù)的分析和處理,能夠了解生產(chǎn)現(xiàn)場(chǎng)運(yùn)行狀態(tài)、預(yù)測(cè)設(shè)備的健康狀況和事故的發(fā)生概率,有利于檢測(cè)系統(tǒng)的運(yùn)行和預(yù)測(cè)性維護(hù)[4]。實(shí)時(shí)數(shù)據(jù)服務(wù)不僅能夠?qū)⒉杉降臄?shù)據(jù)存入OPC UA的地址空間中,還能將數(shù)據(jù)存入歷史數(shù)據(jù)庫(kù)并向上層提供查詢數(shù)據(jù)的功能,并且能夠在數(shù)據(jù)超出預(yù)設(shè)時(shí)產(chǎn)生報(bào)警。因此,對(duì)于整個(gè)數(shù)據(jù)采集平臺(tái),實(shí)時(shí)數(shù)據(jù)服務(wù)的作用至關(guān)重要。
3.1原理
如圖2所示,實(shí)時(shí)數(shù)據(jù)服務(wù)是數(shù)據(jù)采集平臺(tái)的核心,可以分為通信接口管理服務(wù)、實(shí)時(shí)數(shù)據(jù)訪問服務(wù)、報(bào)警管理服務(wù)、歷史數(shù)據(jù)服務(wù)、權(quán)限管理服務(wù)、日志服務(wù)、數(shù)據(jù)訪問服務(wù)和配置服務(wù)8個(gè)模塊?,F(xiàn)場(chǎng)數(shù)據(jù)采集服務(wù)器從現(xiàn)場(chǎng)設(shè)備上采集數(shù)據(jù)、文件,提供訪問服務(wù)給通用客戶端(可跨網(wǎng)段訪問)。歷史數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)歷史服務(wù)器上,需要的客戶端可通過其提供的服務(wù)進(jìn)行多種形式的查詢。當(dāng)采集到的數(shù)據(jù)超出預(yù)設(shè)的限度時(shí),報(bào)警管理服務(wù)將會(huì)產(chǎn)生報(bào)警,及時(shí)提示客戶端對(duì)報(bào)警進(jìn)行處理。
圖2 數(shù)據(jù)采集平臺(tái)設(shè)計(jì)
3.2模塊設(shè)計(jì)
3.2.1實(shí)時(shí)數(shù)據(jù)訪問服務(wù)
實(shí)時(shí)數(shù)據(jù)訪問服務(wù)主要實(shí)現(xiàn)兩方面的功能:一是對(duì)外提供實(shí)時(shí)數(shù)據(jù),二是將實(shí)時(shí)數(shù)據(jù)存入歷史數(shù)據(jù)隊(duì)列。實(shí)時(shí)數(shù)據(jù)訪問服務(wù)的關(guān)鍵在于創(chuàng)建地址空間。
地址空間是通過節(jié)點(diǎn)管理器(NodeManager)對(duì)象來管理的,節(jié)點(diǎn)管理器通常用來定義OPC UA的節(jié)點(diǎn)。UaServer包含一個(gè)基本的節(jié)點(diǎn)管理器NodeManagerRoot,它處理標(biāo)準(zhǔn)的OPC UA服務(wù)器的地址空間。它定義了地址空間的根結(jié)構(gòu),而根結(jié)構(gòu)中包含了主要的文件夾(Views,Object和Types)。它也管理服務(wù)器對(duì)象,而服務(wù)器對(duì)象用于向UA客戶端發(fā)布服務(wù)器狀態(tài)和診斷信息。為了能在服務(wù)器的地址空間中增加自己的節(jié)點(diǎn),必須定義自己的節(jié)點(diǎn)管理器和自己的命名空間,自己的節(jié)點(diǎn)管理器類定義如下:
public class NodeManager extends NodeManagerUaNode {
//給nodeManager加監(jiān)聽
public NodeManager(UaServer server) {}
public void createAddressSpace() {}
public void processDataChanger(UaVariable
variable, DataValue dataValue){}
public void myDataChanger(UaVariable variable){}
……
}
創(chuàng)建地址空間后,從下層設(shè)備讀取的數(shù)據(jù)就可以存到相應(yīng)的節(jié)點(diǎn)位置。
讀寫服務(wù)不僅允許讀寫變量的值,而且可以使用通用方式去讀寫節(jié)點(diǎn)屬性,用來訪問地址空間中的元數(shù)據(jù)。I/O管理器用于處理客戶端應(yīng)用程序的讀寫調(diào)用。為了更加定制化地讀數(shù)據(jù),設(shè)計(jì)為不使用默認(rèn)的I/O管理器的功能,而是選擇實(shí)現(xiàn)自己的IOManager類,然后在節(jié)點(diǎn)管理器中將它注冊(cè)進(jìn)去,這樣就可以使用IoManager中的方法對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行讀寫操作了。
讀數(shù)據(jù)的另一種方法是訂閱變化的數(shù)據(jù)[5]。對(duì)于需要周期性更新變量值的客戶端來說,這是個(gè)好辦法。定義自己的事件管理器myEventManager監(jiān)控客戶端訂閱的創(chuàng)建、修改或移除等動(dòng)作并做出反應(yīng)。重寫NodeManager類的afterCreateMonitoredDataItem()方法和deleteMonitoredItem()方法來持續(xù)追蹤監(jiān)視dataItems,當(dāng)監(jiān)視的值發(fā)生改變時(shí),可以調(diào)用MonitoredEventItem.notifyEvent()發(fā)送到客戶端。
將采集到的實(shí)時(shí)數(shù)據(jù)存入實(shí)時(shí)數(shù)據(jù)隊(duì)列[6]。用戶可以在界面中設(shè)置采集頻率,程序會(huì)以同樣的頻率將實(shí)時(shí)數(shù)據(jù)隊(duì)列中的數(shù)據(jù)與歷史數(shù)據(jù)隊(duì)列中的數(shù)據(jù)進(jìn)行對(duì)比,若兩隊(duì)列數(shù)據(jù)一致,則實(shí)時(shí)數(shù)據(jù)隊(duì)列將數(shù)據(jù)清空,歷史數(shù)據(jù)隊(duì)列不變;若兩隊(duì)列數(shù)據(jù)不一致,則實(shí)時(shí)數(shù)據(jù)隊(duì)列清空,將改變的數(shù)據(jù)添加到歷史數(shù)據(jù)隊(duì)列。在緩存中創(chuàng)建一個(gè)報(bào)警隊(duì)列,當(dāng)實(shí)時(shí)數(shù)據(jù)隊(duì)列中的對(duì)象根據(jù)設(shè)定的上、下限值判斷發(fā)生越界時(shí),將此對(duì)象插入報(bào)警隊(duì)列。
3.2.2通信接口管理服務(wù)
通信接口管理服務(wù)負(fù)責(zé)管理一個(gè)數(shù)據(jù)采集服務(wù)器的通信鏈路,包括建立鏈接、診斷故障、關(guān)閉鏈接、配置鏈接參數(shù)(對(duì)不同的驅(qū)動(dòng)有不同的配置界面,可設(shè)置設(shè)備地址、端口、刷新周期等),實(shí)現(xiàn)將不同類型的數(shù)據(jù)轉(zhuǎn)化為地址空間中的數(shù)據(jù)類型。
3.2.3報(bào)警管理服務(wù)
報(bào)警管理服務(wù)能夠判斷實(shí)時(shí)數(shù)據(jù)是否越界并且在越界后進(jìn)行提示。SDK中有兩種重要的事件類型:標(biāo)準(zhǔn)事件和條件。ExclusiveLevelAlarmType是一個(gè)定制化條件,用來初始化一個(gè)報(bào)警節(jié)點(diǎn):
final NodeId myAlarmId = new NodeId(ns, quot;MyLevel.Alarmquot;);
myAlarm = new ExclusiveLevelAlarmType (myNodeManager, myAlarmId, quot;MyLevelAlarmquot;, Locale.ENGLISH);
3.2.4歷史數(shù)據(jù)訪問服務(wù)
歷史數(shù)據(jù)訪問服務(wù)中創(chuàng)建了一個(gè)歷史數(shù)據(jù)隊(duì)列,并將原始的數(shù)據(jù)列表復(fù)制到歷史數(shù)據(jù)隊(duì)列中,當(dāng)歷史數(shù)據(jù)隊(duì)列中的數(shù)據(jù)發(fā)生變化時(shí),才將變化的數(shù)據(jù)插入歷史數(shù)據(jù)庫(kù),數(shù)據(jù)表中會(huì)有時(shí)間戳列,記錄數(shù)據(jù)的變化時(shí)刻。當(dāng)上層MES和ERP需要查詢歷史數(shù)據(jù)時(shí),調(diào)用程序中的操作數(shù)據(jù)庫(kù)的方法,可以返回查詢結(jié)果。設(shè)計(jì)中使用歷史管理器處理所有歷史數(shù)據(jù)和事件函數(shù)。在SDK中沒有默認(rèn)的函數(shù),所以要自己追蹤歷史數(shù)據(jù)并且實(shí)現(xiàn)這些服務(wù)。程序定義了自己的子類(HistoryManager類),并且重寫方法,然后用myNodeManager.getHistoryManager()把這個(gè)管理器設(shè)置到自己的節(jié)點(diǎn)管理器中。
3.2.5權(quán)限管理服務(wù)
權(quán)限管理服務(wù)能夠根據(jù)客戶端的分類進(jìn)行權(quán)限的增、刪、改、查,有利于提高整個(gè)數(shù)據(jù)采集平臺(tái)的安全性。
3.2.6日志服務(wù)
日志服務(wù)能夠記錄數(shù)據(jù)采集平臺(tái)中發(fā)生的事件信息,根據(jù)這些信息可以進(jìn)行排錯(cuò),優(yōu)化數(shù)據(jù)采集平臺(tái)的性能。
3.2.7配置服務(wù)
配置服務(wù)能夠配置數(shù)據(jù)采集平臺(tái)運(yùn)行所需的所有條件,如配置數(shù)據(jù)庫(kù)。
3.2.8數(shù)據(jù)訪問服務(wù)
(1)標(biāo)準(zhǔn)OPC UA訪問方式
對(duì)于支持OPC UA的上層業(yè)務(wù)邏輯,可以直接訪問實(shí)時(shí)數(shù)據(jù)服務(wù)的地址空間。
(2)標(biāo)準(zhǔn)API接口訪問方式
對(duì)于不支持OPC UA的上層業(yè)務(wù)邏輯,不能識(shí)別地址空間的對(duì)象。數(shù)據(jù)訪問服務(wù)提供標(biāo)準(zhǔn)API接口訪問方式,將對(duì)象轉(zhuǎn)化為上層業(yè)務(wù)邏輯能識(shí)別的數(shù)據(jù)類型。在程序中設(shè)計(jì)了一個(gè)動(dòng)態(tài)鏈接庫(kù),包含了4個(gè)方法:Read(),Write(),Open()和Close(),對(duì)上層業(yè)務(wù)邏輯提供高效的讀寫服務(wù)。
public void readData(){}
//讀數(shù)據(jù)
public boolean writeData(){}
//寫數(shù)據(jù)
public void openConnect(){}
//打開連接
public void closeConnect(){}
//關(guān)閉連接
在數(shù)據(jù)采集平臺(tái)中使用實(shí)時(shí)數(shù)據(jù)服務(wù),成功實(shí)現(xiàn)了從多個(gè)不支持OPC UA的設(shè)備中采集簡(jiǎn)單數(shù)據(jù)和文件,完成了將實(shí)時(shí)數(shù)據(jù)存入歷史數(shù)據(jù)庫(kù),并向上層提供數(shù)據(jù)訪問服務(wù)的功能。
智能制造信息化與工業(yè)化深度融合是工業(yè)4.0的一個(gè)關(guān)鍵目標(biāo)?;贠PC UA技術(shù),實(shí)現(xiàn)一套工業(yè)異構(gòu)系統(tǒng)的互聯(lián)組件和工具,使得它們之間組網(wǎng)更簡(jiǎn)單,集成開發(fā)量降低,實(shí)現(xiàn)智能制造的核心目標(biāo)——萬(wàn)物互聯(lián)。
[1] 中國(guó)電子技術(shù)標(biāo)準(zhǔn)化研究院.信息物理系統(tǒng)白皮書[R].2017-3.
[2] 朱耀春,陸會(huì)明,張永慶.OPC數(shù)據(jù)服務(wù)器的開發(fā)與測(cè)試(Ⅰ)[I].現(xiàn)代電力,2003,20(6): 63-66.
[3] MAHNKE W,LEITNER S H,DAMM M.OPC 統(tǒng)一架構(gòu)[M].馬國(guó)華,譯.北京:機(jī)械工業(yè)出版社,2011.
[4] 朱耀春.OPC數(shù)據(jù)存取服務(wù)器的開發(fā)與研究[D].北京:華北電力大學(xué),2003.
[5] 孫建華.OPC UA服務(wù)器數(shù)據(jù)管理與訂閱功能模塊研究與開發(fā)[D].北京:華北電力大學(xué),2011.
[6] 魏亞敏,李軼,張申,等.礦山物聯(lián)網(wǎng)時(shí)間同步系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子技術(shù)應(yīng)用,2017,43(1): 81-83.
2017-04-27)
柴處處(1990-),女,碩士,工程師,主要研究方向:智能制造、工業(yè)軟件等。
韓慶敏(1979-),女,碩士,高級(jí)工程師,主要研究方向:工業(yè)軟件、自動(dòng)化控制系統(tǒng)、智能制造、現(xiàn)場(chǎng)總線等。
Research and application of real-time data service based on OPC UA technology
Chai Chuchu, Han Qingmin, Du Junzhao
(National Computer System Engineering Research Institute of China, Beijing 100083, China)
With the development of INDUSTRIE 4.0 and the promotion of the new generation of information technology, the data acquisition platform which is in the control layer and operation layer is becoming the key index of intelligent manufacturing, while real-time data service is one of the most important service in data acquisition platform and the foundation of the platform. For the situation that there is increasing flexibility requirements and a amount of information and diversification of equipment system types, customs continually put forward many important problems, such as how to realize the real-time and reliable storage of data collection and convenient configuration and access. The real-time data service based on OPC UA technology presented in this paper not only solves the problem of the consistency of information model in data acquisition platform, but also provides an open and efficient communication service for the data acquisition platform based on the intelligent manufacturing system. The results show that the service has many advantages, such as standardization, convenient for integration, saving development cost and meeting the requirements of the market.
OPC UA; real-time data service; data acquisition platform
TP311.5
A
10.19358/j.issn.1674- 7720.2017.22.002
柴處處,韓慶敏,杜軍釗.基于OPCUA技術(shù)的實(shí)時(shí)數(shù)據(jù)服務(wù)的研究與應(yīng)用J.微型機(jī)與應(yīng)用,2017,36(22):5-7,10.