禹鑫燚 唐權瑞 施甜峰 殷慧武 歐林林
(浙江工業(yè)大學信息工程學院 杭州310023)
無論是中國提出的“中國制造2025”,還是德國提出的“工業(yè)4.0”,核心都是實現制造智能化[1]。隨著工業(yè)自動化進程不斷推進,工業(yè)物聯網已成為新一代信息技術的重要組成部分[2-3]。工業(yè)網關是一種支持不同協議之間互相轉換的設備,從而使不同的網絡協議之間可以互聯互通,作為上位機和下位機的協議轉換站,工業(yè)網關將采集的數據根據對應的協議進行轉換后傳輸給上位機。
國外對工業(yè)網關的研究起步較早,文獻[4]利用OPC UA 的信息模型和能源相關的CPS 需求,對能量流進行連續(xù)監(jiān)測評估。文獻[5]介紹了OPC UA服務器的一般啟動過程,地址空間的生成步驟,生成對象、變量、方法和視圖節(jié)點類型的專門算法。文獻[6]提出了Web 平臺的定義,通過該平臺的REST 架構可以對OPC UA服務器進行訪問。而隨著國內“智能制造”的提出,部分高校對工業(yè)網關進行了深入研究,一些物聯網廠商也研發(fā)了多款工業(yè)網關產品,例如研華AdvanTech ADAM6000 系列[7]。文獻[8]針對現行的兩線制通信的缺陷,將下層多個儀表的數據通過一個智能網關進行匯聚,網關和儀表之間采用點對點的通信方式。文獻[9]提出了一種基于Profibus-DP 現場總線與ZigBee 技術的工業(yè)無線網關裝置,該裝置實現工業(yè)現場總線網絡與ZigBee 無線傳感器網絡之間的協議轉換。文獻[10]研究了無線接入網關裝置,并構建基于無線傳感器網絡的冷軋連退線重要設備狀態(tài)監(jiān)測系統(tǒng)。文獻[11]提出了一種基于工業(yè)網關的數據采集系統(tǒng),該系統(tǒng)作為一個標準的數據采集平臺,可實現對多源異構的數據采集。文獻[12]實現了將RTEX 網絡嵌入到EtherMAC 總線中,并能對其進行靈活的應用。文獻[13]具體分析了UA 的核心功能,包括地址空間技術和數據編碼技術,并在兩者的基礎上,利用消息代理機制,完成了發(fā)布者和訂閱者的功能開發(fā)。文獻[14]介紹了面向工業(yè)智能設備的嵌入式Web網關的安全性解決方案,對網關系統(tǒng)的安全需求進行了分析。
從目前的研究成果來看,市場上的工業(yè)網關功能參差不齊,系統(tǒng)穩(wěn)定性有待進一步提高,并且由于工業(yè)現場網絡的封閉性,維護人員無法遠程獲取設備的相關信息,使設備維護成本增加,也缺少設備預測性維護的功能。因此對設備進行數據采集和遠程獲取設備信息非常重要。
針對目前不同品牌型號設備協議不一致和設備現場維護成本高等問題,本文設計了OPC UA 協議工業(yè)網關系統(tǒng),工業(yè)網關可以將不同品牌不同型號的設備通過工業(yè)以太網進行連接,然后根據配置文件動態(tài)采集所需數據,并通過4G 網絡將數據上傳到云端保存,供監(jiān)控平臺進行實時數據顯示、歷史數據顯示、實時數據分析和遠程控制等操作。為此本文開發(fā)了基于瀏覽器/服務器(browser/server,B/S)和服務器/客戶機(client/server,C/S)結構的工業(yè)監(jiān)控平臺,實現對工廠設備的遠程監(jiān)控,開發(fā)基于.NET Core框架的OPC UA服務器,實現對工廠設備的遠程數據采集,在Web 網頁端對設備數據進行實時分析,對設備進行預測性維護,最后搭建實驗平臺,通過實驗對工業(yè)網關系統(tǒng)的可行性進行了驗證。
本文主要對工廠設備進行數據采集、數據存儲、遠程監(jiān)控和數據分析等操作,設計工業(yè)網關系統(tǒng),以解決設備協議不統(tǒng)一、設備無法上云等問題。該工業(yè)網關系統(tǒng)應具有以下功能:(1)兼容TCP/IP、OPC UA 和消息隊列遙測傳輸協議(message queuing telemetry transport,MQTT)等,并根據配置文件對設備進行數據采集、數據存儲等任務;(2)通過簡單的初始化設置,遠程啟動工業(yè)網關并進行數據采集;(3)OPC UA 客戶端和工業(yè)監(jiān)控平臺分別基于C/S 結構和B/S 結構查看設備在線情況、實時數據、設備運行日志和歷史數據;(4)云端服務器實時數據分析。
為了解決工業(yè)數據集成不足、工業(yè)軟件開發(fā)困難和平臺應用相對單一等問題,本文基于數據采集的經典設計思想,進行了系統(tǒng)的硬件設計和軟件設計。系統(tǒng)硬件部分進行了工業(yè)網關的選型和工業(yè)網關的系統(tǒng)構建等操作,軟件部分設計了OPC UA 協議服務器、OPC UA 客戶端、配置界面和工業(yè)監(jiān)控平臺。
服務器采用.NET Core 3.1 和Win 64 作為開發(fā)框架,因此不受操作系統(tǒng)的限制,可以跨平臺運行,提升系統(tǒng)的性能和穩(wěn)定性。使用OPC UA 協議進行數據采集,能夠降低工廠采集系統(tǒng)開發(fā)難度;采用Open VPN 接入遠程網絡,可以保證遠程訪問安全;為了對工廠數據進行預測性維護,使用Spark 技術對數據進行實時分析,并將分析結果實時推送給工程師。針對不同的工作用途,設計了B/S 和C/S 結構的客戶端。系統(tǒng)總體架構如圖1 所示,工業(yè)網關作為設備和工業(yè)監(jiān)控平臺的連接器,向下與設備進行組網,向上給工業(yè)監(jiān)控平臺傳輸數據;工業(yè)網關將數據通過存儲到Redis 數據庫供Web 瀏覽器進行查詢并顯示,與客戶端通過Socket 通信傳輸數據。
圖1 系統(tǒng)總體結構圖
工業(yè)網關系統(tǒng)的硬件部分主要將各種設備和工業(yè)網關通過工業(yè)以太網進行連接,并使其所有設備位于同一網段中,遠程配置界面動態(tài)生成工業(yè)網關配置文件,配置完成后將XML 配置文件發(fā)布到Zoo-Keeper服務的node 節(jié)點,待工業(yè)網關運行時自動進行熱更新配置文件,并進行初始化和啟動系統(tǒng)。
工業(yè)網關選用飛凌嵌入式FET335xS 核心板。FET335xS 核心板基于TI 公司Sitara 系列的工業(yè)級ARM 處理器AM3354 設計完成,ARM Cortex-A8 架構,運行頻率為800 MHz。板載512 MB 的DDR3 內存,采用256 MB 的SLCNandFlash 存儲芯片。工業(yè)網關相比傳統(tǒng)數據采集具有體積小、無需布線安裝便捷、能適應各種復雜的工業(yè)環(huán)境和有效降低運維成本等優(yōu)勢。在圖2 中,所有PLC 設備和嵌入式設備經過交換機以工業(yè)以太網的方式進行連接。
圖2 系統(tǒng)硬件構成
為了使OPC UA服務器在Linux-ARM 系統(tǒng)中正常運行,需要對工業(yè)網關系統(tǒng)進行系統(tǒng)移植,分別進行bootloader 的裁剪與移植、根文件系統(tǒng)和操作系統(tǒng)的移植,并成功燒寫到搭建好的工業(yè)網關平臺中。bootloader 移植主要是為了引導內核可以正常的運行,為Linux-ARM 操作系統(tǒng)的運行做準備;內核移植主要是提供對外的接口方便擴展,如SD 卡、串口、以太網和4G 等接口;根文件系統(tǒng)主要將磁盤或Flash 等存儲設備劃分為若干個分區(qū),在不同的分區(qū)存放不同類型的文件。
本系統(tǒng)軟件部分設計了OPC UA服務器、配置界面、OPC UA 客戶端和基于Vue 的工業(yè)監(jiān)控平臺。OPC UA服務端和OPC UA 客戶端之間通過請求響應進行通訊,在服務器配置界面完成配置文件后,將生成的XML 文件上傳到ZooKeeper 中,服務器獲取ZooKeeper服務node 節(jié)點下的配置文件并設置監(jiān)聽,當數據發(fā)生變化時自動進行熱更新。軟件系統(tǒng)總體框架如圖3 所示。
圖3 系統(tǒng)軟件系統(tǒng)構架
目前在工廠中還有一部分老舊設備不支持OPC UA 功能,傳統(tǒng)方法是為每個設備單獨寫一個數據采集程序。在實際過程中,由于工廠存在很多品牌和型號的設備,導致工作量巨大,增加開發(fā)難度。并且如果在開發(fā)的時候重新為每個設備開發(fā)新的設備驅動,也可能出現新的兼容性問題。
為了解決這些問題,本文設計了基于.NET Core架構的OPC UA 協議服務器,該OPC UA 協議服務器需要滿足協議轉換和兼容廠商提供的設備驅動等功能。為了能夠兼容不同設備提供的驅動,同時兼容自己開發(fā)的設備驅動,本文設計了公共設備讀寫接口,在開發(fā)設備驅動時,只需要將對應的設備驅動繼承公共接口,然后重寫接口,就可以對設備進行數據采集。
根據上述功能需求,本文設計的OPC UA服務器具有5 大模塊,分別是協議解析模塊、數據采集模塊、數據持久化、配置文件更新和簽名證書安全機制,服務器各模塊如圖4 所示。
圖4 OPC UA服務器模塊圖
配置文件更新:在OPC UA服務器啟動后,首先獲取ZooKeeper 的node 節(jié)點下的配置文件并設置監(jiān)聽,如果節(jié)點下數據發(fā)生變化則通知OPC UA服務器實現熱更新。
數據采集:配置文件解析完成后,根據設備的型號調用對應的設備驅動,并根據數據請求器和規(guī)則解析器的解析結果對設備進行數據采集。
數據持久化:為了適應不同的應用場景,將已經采集轉換后的數據存入非關系型數據庫和關系型數據庫。將實時讀取的數據存入Redis 數據庫中,定時將Redis 數據庫中的數據轉存到MySQL 數據庫中,作持久化處理。將數據按照指定的格式進行存儲并借助優(yōu)秀的讀寫性能來提高數據的檢索效率。
簽名證書安全機制:該服務器采用X.509 證書,對用戶名/密碼進行身份認證,提供了數字簽名、加密傳輸以及級別驗證,以防止非授權的用戶訪問,防止蓄意破壞和修改過程數據。
協議解析:使用協議解析器將其他協議的數據轉換成OPC UA 協議的數據,根據XML 配置文件進行解析,解析后的信息交給數據采集部分。
分布式集群ZooKeeper 主要為了在配置界面完成文件配置后,將生成的XML 文件上傳到ZooKeeper 中。在服務器啟動時向ZooKeeper 發(fā)送請求,自動更新配置文件即可,這樣可以減少系統(tǒng)擁堵,也可以保障服務器讀取XML 文件的快速高效。
配置界面主要是對節(jié)點配置器、解析規(guī)則配置器和登錄方式選擇進行初始化配置,配置完成后發(fā)布到ZooKeeper 中。具體如圖5 所示。
圖5 配置文件界面
配置界面完成配置后,先將生成的XML 配置文件發(fā)布到ZooKeeper服務的node 節(jié)點下,同時將配置文件保存在DB 塊中,OPC UA服務器從ZooKeeper 中讀取配置并監(jiān)聽配置的變化,實時傳輸到OPC UA服務器中,實現配置文件更改后,OPC UA服務器無需重啟,即可自動進行熱更新。
根據使用場景的不同,本文設計了客戶端和瀏覽器端,由于客戶端數據實時性更好、安全性能更強,適用于在工廠本地使用;而瀏覽器操作方便,可以遠程監(jiān)測工廠數據,更適合于在外監(jiān)控工廠數據。
OPC UA 客戶端通過和服務器建立連接,進行瀏覽和操作OPC UA服務器的地址空間等。OPC UA 客戶端界面是基于C#語言自主開發(fā)的跨平臺中間件軟件,它是對現成的OPC UA Client SDK 進行二次開發(fā)而成。
根據設計需求,將OPC UA 客戶端設計成4 個模塊,包括實時數據顯示、歷史數據顯示、AE 通知報警和日志查詢、設備在線狀態(tài)。
實時數據顯示:通過和服務器進行Socket 連接,連接成功后,向服務器發(fā)送讀取數據的指令,接收到指令后,顯示在客戶端界面上。
歷史數據顯示:負責歷史數據在磁盤文件中的存儲、壓縮、讀取、訪問。從MySQL 中根據日期區(qū)間以及設備節(jié)點名稱查詢該設備在日期區(qū)間內的數據。為了方便使用者配置查詢信息,歷史數據查詢模塊提供了向導功能。
AE 通知報警和日志查詢:負責報警的條件判斷、報警存儲、報警通知,并實施包括報警的分組、過濾等功能。
設備在線狀態(tài):在服務器中,定義一個TypeName函數,TypeName 函數獲取的標識碼是唯一的標識碼,該標識碼通過MD5 算法生成,各個設備不會重復,在異型客戶端訪問設備數據時可直接通過該標識碼定位到該設備的數據。設備啟動后TypeName的值為1,設備離線時TypeName 的值為0,客戶端通過查詢對應的值來判斷設備在線情況。
OPC UA 客戶端界面如圖6 所示。
圖6 OPC UA 客戶端界面
為滿足工廠人員可以實時監(jiān)測工廠設備數據,設計了工業(yè)監(jiān)控平臺(圖7)。通過監(jiān)控平臺進行遠程設備管理、實時數據查看和歷史數據查詢等操作。將系統(tǒng)的數據處理工作放在云端服務器上,有效地降低高速計算給工業(yè)網關帶來的負擔,Web 端實時從數據庫中讀取數據顯示在網頁上,并對設備進行預測性維護。當設備出現故障需要遠程運維時,現場工程師給定權限后專業(yè)工程師可以遠程對設備進行調試。本文還設計了數據分析模塊,該模塊可以直接使用本模塊默認的預測分析模型,也可以上傳自己訓練好的預測分析模型,對設備進行預測性維護。
圖7 工業(yè)監(jiān)控平臺界面圖
當設備出現故障現場無法維修時,可通過Open VPN 軟件,遠程接入工廠局域網,通過工業(yè)監(jiān)控平臺,遠程對設備進行控制,直至設備恢復正常運行。
本文基于所設計的工業(yè)網關系統(tǒng)搭建了工業(yè)網關實驗系統(tǒng)。實驗系統(tǒng)包括1 臺西門子S7-1200 PLC 設備、1 臺UR5 機器人、1 臺飛凌嵌入式FET335xS核心板(Linux-ARM 系統(tǒng))、1 個路由器,以及1 個筆記本電腦和若干根網線,如圖8 所示。
圖8 實驗平臺
首先給個人計算機(personal computer,PC)、可編程邏輯控制器(programmable logic controller,PLC)設備、UR5 機器人分配相應的IP 地址,使3 個設備位于同一網段;接著通過博途軟件和機器人示教盒分別載入PLC 梯形圖程序以及機器人程序,并啟動PLC 和機器人。準備工作完成后,打開配置界面對服務器進行初始化設置,實驗結果如圖9(a)所示。配置完成后,將生成的XML 配置文件上傳到ZooKeeper服務的node 節(jié)點,實驗結果如圖9(b)所示。遠程啟動OPC UA服務器,服務器先訪問Zoo-Keeper服務器并訂閱node 節(jié)點,然后進行配置文件熱更新,實驗結果如圖9(c)所示。接著對配置文件進行解析,解析完成后,根據配置文件進行數據采集和數據存儲。
圖9 OPC UA服務器準備界面實驗結果
客戶端通過輸入服務器的URL 與服務器建立連接,并通過調用服務器的Browse服務來獲得OPC UA服務器的設備節(jié)點信息,實驗結果如圖10(a)所示。然后調用服務器的Read服務讀取設備節(jié)點的參數信息,來獲取綁定的節(jié)點信息的value值,實驗結果如圖10(b)所示。Web 端網頁通過對數據庫的查詢,獲取設備的數據信息,并將數據信息顯示在實時數據界面,實驗結果如圖10(c)所示。
圖10 OPC UA 客戶端實驗結果
為了檢測工業(yè)網關系統(tǒng)的性能,對服務器的功能進行性能測試。實驗中同時對多個設備進行數據采集和數據存儲,且有多個客戶端同時訪問服務器,進行并發(fā)寫入操作。測試結果如下:本工業(yè)網關系統(tǒng)可以同時支持最大并發(fā)客戶端用戶為50 個,服務器支持Linux 和Windows 操作系統(tǒng)運行,實時數據庫最多存儲50 萬組數據,實時數據的寫入時間不超過0.1 s,實時數據顯示在Web 網頁上的時間不超過0.5 s。
通過以上實驗可知,該工業(yè)網關系統(tǒng)滿足跨平臺需求,一套源碼可以在多個操作系統(tǒng)平臺運行。經過配置后可以使用OPC UA 協議對所有設備進行數據采集。實驗結果表明,本文設計的工業(yè)網關系統(tǒng)可以對PLC 設備和UR5 等設備進行有效的數據采集,并且可以通過客戶端和Web 網頁端遠程監(jiān)測設備實時數據,表明本系統(tǒng)可以滿足小型工廠數字化轉型的需要。
本文設計并實現了基于OPC UA 協議的工業(yè)網關系統(tǒng)。該系統(tǒng)可以對PLC、數控機床和機器人等不同設備進行數據采集。使用OPC UA 協議能為不具備OPC UA 功能的設備提供數據采集的功能,使用配置文件對設備進行數據采集能夠提高程序的靈活性,避免了程序的反復修改。通過ZooKeeper 分布式集群對配置文件進行高效管理,同時對系統(tǒng)中的重要數據進行備份,從而提升了系統(tǒng)的可靠性?;?NET Core 框架編寫OPC UA服務器,使服務器可以跨平臺運行,提高系統(tǒng)性能。此外,工業(yè)網關系統(tǒng)還提供了驅動模板,為后續(xù)服務器中添加新類型的設備驅動提供方便,同時驅動模板的存在使得驅動加載器能更高效地工作,無縫地接入到系統(tǒng)中。實驗表明該系統(tǒng)運行效果良好,為工廠的數字化升級提供了一種新的思路。