張曉輝 那蓉萃 李顏秀
(中冶賽迪重慶信息技術(shù)有限公司 重慶市 401122)
物聯(lián)網(wǎng)通信優(yōu)勢下,工業(yè)互聯(lián)網(wǎng)所涉及的數(shù)據(jù)類型和格式越來越繁雜,匯總難度也越來越大,對各種類協(xié)議設(shè)備的適配都需要由采集、分類、傳輸?shù)炔僮髯鳛橹?,網(wǎng)關(guān)設(shè)備在整個過程中主要發(fā)揮承上啟下的作用,以此來使數(shù)據(jù)信息在不同網(wǎng)絡(luò)間安全傳遞。
工業(yè)互聯(lián)網(wǎng)平臺分為四個層次。見圖1。
結(jié)合圖1,工業(yè)互聯(lián)網(wǎng)通用平臺共由四部份組成,由下至上來看,邊緣層位于最底端,負責(zé)與全部類型傳感設(shè)備和其它終端設(shè)備進行連接,因此這一層也被稱作接入層。接入層具體負責(zé)完成對底層數(shù)據(jù)的收集,也包括各種人員信息,之后對這些信息數(shù)據(jù)進行匯總處理,在相應(yīng)技術(shù)支持下(負載均衡),模塊化管理將最終實現(xiàn),進而達到提升資源使用效率的目的;平臺層是在IaaS基礎(chǔ)上擴展出來的一個應(yīng)用平臺,是整個平臺架構(gòu)的核心層,用于實現(xiàn)數(shù)據(jù)計算、處理、存儲等操作,同時也具備算法分析、資源調(diào)度、應(yīng)用開發(fā)等功能;應(yīng)用層包括兩方面內(nèi)容,一是常規(guī)業(yè)務(wù)運行,二是創(chuàng)新應(yīng)用,其創(chuàng)建背景是滿足深度挖掘數(shù)據(jù)應(yīng)用價值的需求。在相應(yīng)功能支持下,工業(yè)應(yīng)用層能夠使機械、化工、電子等多個領(lǐng)域生產(chǎn)活動得到充分整合,并通過使用人工智能、可視化等新興技術(shù),使具體工藝和技術(shù)在特定場景中展勢出來。
圖1:工業(yè)互聯(lián)網(wǎng)通用平臺架構(gòu)
與網(wǎng)絡(luò)信息傳輸相同,工業(yè)環(huán)境下數(shù)據(jù)傳輸和收集,也需要有相應(yīng)協(xié)議來支撐。協(xié)議類型分為兩類,一類是“網(wǎng)內(nèi)”傳輸協(xié)議,即子網(wǎng)內(nèi)傳輸協(xié)議,另一類是通過互聯(lián)網(wǎng)傳輸?shù)?,不同網(wǎng)絡(luò)之間的傳輸協(xié)議。
1.2.1 子網(wǎng)內(nèi)傳輸協(xié)議
子網(wǎng)主要是指物理空間和虛擬空間內(nèi)的局域網(wǎng)絡(luò),在相關(guān)協(xié)議支持下,傳感設(shè)備可與同級設(shè)備和上層設(shè)備進行通信。按照通信方式劃分,子網(wǎng)內(nèi)傳輸協(xié)議又分為近距離通信協(xié)議、遠距離通信協(xié)議、有線通信協(xié)議。Mod bus是目前通用的一種工業(yè)控制器網(wǎng)絡(luò)通信協(xié),在自動化領(lǐng)域里得到廣泛應(yīng)用。其優(yōu)點包括:使用簡單,開放性強,沒有版權(quán)要求。ASCII和RTU是Mod Bus的兩種通信模式,相比之下,采用十六進制傳送數(shù)據(jù)的RTU模式數(shù)據(jù)傳送效率更高。
1.2.2 子網(wǎng)外傳輸協(xié)議
子網(wǎng)外通信協(xié)議運行基礎(chǔ)是TCP/IP協(xié)議,支持工業(yè)環(huán)境內(nèi)部網(wǎng)絡(luò)設(shè)備與互聯(lián)網(wǎng)通信。REST/HTTP協(xié)議、COAP協(xié)議、MQTT協(xié)議是三種比較主流的子網(wǎng)外傳輸協(xié)議,它們各自擁有特殊的應(yīng)用范圍和屬性特征。其中,REST/HTTP協(xié)議在標(biāo)準(zhǔn)HTTP協(xié)議基礎(chǔ)上得到廣泛應(yīng)用,COAP協(xié)議可簡化無線傳感網(wǎng),MQTT協(xié)議能夠使各種協(xié)議得到很好的兼容。
不同規(guī)模工業(yè)現(xiàn)場對互聯(lián)網(wǎng)網(wǎng)關(guān)管理系統(tǒng)設(shè)計的要求不同,為了更好明確系統(tǒng)設(shè)計需求,文章以大型工業(yè)設(shè)備為例進行分析。通常而言,工業(yè)網(wǎng)絡(luò)系統(tǒng)傳輸數(shù)據(jù)分類兩類,一種是狀態(tài)數(shù)據(jù),另外則是控制數(shù)據(jù)。其中,第一種的特點是海量數(shù)據(jù)且對及時性要求高,后者則負責(zé)更新邊緣網(wǎng)關(guān)信息及數(shù)據(jù)處理工作。結(jié)合工業(yè)生產(chǎn)實際,大型設(shè)備在運行過程中容易出現(xiàn)數(shù)據(jù)上傳準(zhǔn)確性偏低(由環(huán)境混亂、干擾較多導(dǎo)致)、數(shù)據(jù)量增長速度過快(由過高監(jiān)控需求導(dǎo)致)、數(shù)據(jù)格式難統(tǒng)一、設(shè)備反應(yīng)時間較長等問題,因此,新構(gòu)建的工業(yè)互聯(lián)網(wǎng)管理平臺需要具備如下四項功能:
(1)數(shù)據(jù)的實時顯示和歷史查詢;
(2)實現(xiàn)遠程控制;
(3)保證數(shù)據(jù)傳輸及時性、準(zhǔn)確性、有效性;
(4)確保系統(tǒng)足夠安全、穩(wěn)定,以及具備可擴展性。
基于上述問題和需求,本研究設(shè)計了圖2所示的網(wǎng)關(guān)架構(gòu)。
圖2:數(shù)據(jù)過濾流程圖
工業(yè)互聯(lián)網(wǎng)管理平臺體系架構(gòu)共分為三個層次,由下至上排列為:傳感器設(shè)備、網(wǎng)關(guān)、云服務(wù)平臺。其中,分布廣泛的傳感器設(shè)備會完成各類工業(yè)數(shù)據(jù)獲取任務(wù),根據(jù)工業(yè)互聯(lián)網(wǎng)中的數(shù)據(jù)分布情況,采取合理有效的方式對數(shù)據(jù)進行采集和匯總,最后輸送到網(wǎng)關(guān)。結(jié)合實際需求,系統(tǒng)功能設(shè)計分為三個模塊:數(shù)據(jù)智能回傳模塊,協(xié)同任務(wù)分發(fā)模塊,“網(wǎng)關(guān)+云端”管理平臺。在網(wǎng)關(guān)設(shè)計方面,數(shù)據(jù)接入,數(shù)據(jù)管理,數(shù)據(jù)應(yīng)用分別代表三個不同的功能層級。
所謂“智能”,主要指對每一條設(shè)備中的數(shù)據(jù)進行標(biāo)識,這種標(biāo)識往往具有唯一性,而結(jié)合數(shù)據(jù)固有屬性和特征,以及用戶實際需求進行預(yù)處理,則被認(rèn)為是實現(xiàn)數(shù)據(jù)唯一性的基礎(chǔ)?;诠I(yè)互聯(lián)網(wǎng)應(yīng)用的智能回傳模塊設(shè)計,網(wǎng)關(guān)數(shù)據(jù)層支持閾值和頻率兩種過濾方式。但同時也支持自定義過濾,用戶可將計算腳本下發(fā)到指定網(wǎng)關(guān)(數(shù)據(jù)過濾流程見圖2)??紤]到網(wǎng)關(guān)設(shè)備具有內(nèi)存低、容量小等特點,因此不建議采用HTTP協(xié)議進行數(shù)據(jù)傳輸,否則會造成負載過重,引發(fā)開銷過大等問題。MQTT具有低成本、輕量級、支持高并發(fā),以及兼容性強等優(yōu)點,比較適合作為向云端傳輸數(shù)據(jù)的協(xié)議。
任務(wù)分發(fā)模塊設(shè)計以云端至網(wǎng)關(guān)任務(wù)下發(fā)機制為基礎(chǔ),該機制主要用于解決網(wǎng)關(guān)升級問題,以滿足工業(yè)生產(chǎn)任務(wù)更新和重配置需求。Docker鏡像和計算腳本是下發(fā)文件的主要內(nèi)容。新的Docker容器部署分為兩個步驟,一是將已發(fā)布的映像從Docker服務(wù)中提取出來,二是基于鏡像啟動容器。針對Docker注冊表負擔(dān)過重、網(wǎng)絡(luò)流量泛濫、鏡像服務(wù)失敗等問題,本設(shè)計采用了基于P2P網(wǎng)絡(luò)的文件分發(fā)系統(tǒng)。P2P網(wǎng)絡(luò)可以挖掘所有節(jié)點的帶寬資源并進行充分利用,減輕云端的負荷壓力,讓部署環(huán)節(jié)提速。由于本次網(wǎng)關(guān)管理系統(tǒng)設(shè)計是以工業(yè)互聯(lián)網(wǎng)應(yīng)用環(huán)境為背景的,因此對分發(fā)節(jié)點的研究必須以工業(yè)環(huán)境下的網(wǎng)關(guān)設(shè)備作為基礎(chǔ)。結(jié)合工業(yè)生產(chǎn)實際來看,任何一臺被使用的PC機(客戶端主機)都將通過一個專門的IP地址與外部環(huán)境進行通信??紤]到私有網(wǎng)絡(luò)結(jié)構(gòu)相對簡單,且網(wǎng)關(guān)節(jié)點所處于的網(wǎng)絡(luò)環(huán)境比較優(yōu)越(速度快、延遲低),因此不需要對主機隱藏在NAT網(wǎng)絡(luò)后面這一情況進行單獨處理。以此為基礎(chǔ),原有平臺只需要擴展一個務(wù)分發(fā)協(xié)調(diào)控制器即可。P2P通信模式環(huán)境下,借助云控制器進行調(diào)度,網(wǎng)關(guān)既是資源提供方,又是資源請求方,數(shù)據(jù)傳輸速率與請求方的數(shù)量呈正比。
2.4.1 網(wǎng)關(guān)平臺設(shè)計
工業(yè)互聯(lián)網(wǎng)網(wǎng)關(guān)不僅被視為用戶觀測數(shù)據(jù)的第一窗口,更是整個系統(tǒng)最為重要的管理平臺,在高效完成簡單管理工作的同時,減輕了云端管理壓力。在某種程度上,網(wǎng)關(guān)管理平臺能夠任一數(shù)據(jù)分析需求和管理需求
在本次設(shè)計中,網(wǎng)關(guān)管理平臺可實現(xiàn)的功能主要包括以下三項內(nèi)容:
(1)可以對網(wǎng)關(guān)狀態(tài)進行直接監(jiān)控和管理。不管是正在運行的網(wǎng)關(guān)設(shè)備,還是處于非工作狀態(tài)的網(wǎng)關(guān)設(shè)備,都將會受到直接監(jiān)控和管理,過程中,網(wǎng)關(guān)應(yīng)用平臺也會隨具體要求而得到更新。
(2)可以直接監(jiān)控和管理傳感節(jié)點。根據(jù)需要,網(wǎng)關(guān)管理平臺能夠?qū)θ我庖粋€傳感器節(jié)點設(shè)備進行列表查詢,包括過往日志和歷史數(shù)據(jù),同時也支持參數(shù)修改與數(shù)據(jù)刪除操作。
(3)可實現(xiàn)數(shù)據(jù)智能回傳。對每一條設(shè)備中的數(shù)據(jù)進行唯一性標(biāo)識,結(jié)合數(shù)據(jù)固有屬性和特征,對用戶實際需求進行預(yù)處理。
2.4.2 云端管理平臺設(shè)計
云端管理平臺設(shè)計共分三部分內(nèi)容,包括基礎(chǔ)結(jié)構(gòu),負載均衡,功能設(shè)計。
首先看基礎(chǔ)結(jié)構(gòu),多功能服務(wù)集群以平臺的形式得以展現(xiàn),在底層基礎(chǔ)功能架構(gòu)的支撐下,體現(xiàn)平臺與應(yīng)用的優(yōu)勢,用戶將享有新增應(yīng)用和應(yīng)用拓展的權(quán)利,前提是,需要根據(jù)自身實際使用需求進行操作。本次設(shè)計所采用的平臺架構(gòu)是REST,與RPC、SOAP相比,此結(jié)構(gòu)結(jié)構(gòu)更加清晰,可擴展性更強。但需要指出的是,它并不是一種標(biāo)準(zhǔn),只是一種設(shè)計風(fēng)格。
然后看負載均衡,負載均衡是Web服務(wù)應(yīng)用需要認(rèn)真考慮的一個問題,結(jié)合實際來看,DNS輪詢、LVS調(diào)度和Nginx服務(wù)反向代理被認(rèn)為是比較有效的三種解決方案。以DNS輪詢?yōu)槔?,用戶在訪問瀏覽器時,首先需要借助DNS功能來解析即將鏈接的IP地址,再通過此IP訪問Web服務(wù)。而對于DNS輪詢來說,它會在服務(wù)權(quán)重配置基礎(chǔ)上,通過對解析記錄和服務(wù)IP進行添加和綁定來實現(xiàn)負載均衡。
最后是功能設(shè)計,主要內(nèi)容有:網(wǎng)關(guān)設(shè)備和網(wǎng)關(guān)下節(jié)點設(shè)備管理、節(jié)點數(shù)據(jù)訂閱和查詢、任務(wù)文件下發(fā)和用戶數(shù)據(jù)管理。Web應(yīng)用通過REST API接口向后端HTTP服務(wù)發(fā)送請求和數(shù)據(jù),接受到請求后,通過Mongo DB數(shù)據(jù)庫、MQTT服務(wù)、本地服務(wù)等三種途徑中的一種來完成其與Web服務(wù)的數(shù)據(jù)交互。
本次工業(yè)互聯(lián)網(wǎng)網(wǎng)關(guān)管理平臺設(shè)計采用了RESTful架構(gòu),并且為使系統(tǒng)穩(wěn)定性能夠滿足全部生產(chǎn)需求,還特別加入了代理服務(wù)器,即Nginx。它是一種Web服務(wù)器,具備負載均衡、Web緩存、代理HTTP等功能;在開發(fā)ice-work等開放性組件平臺前提下,以React前端框架作為用戶訪問界面;系統(tǒng)任務(wù)分發(fā)功能開發(fā)在HTTP協(xié)議控制下來完成;借助NATS消息隊列來實現(xiàn)高并發(fā)網(wǎng)關(guān)數(shù)據(jù)匯總,NATS屬于一種高性能、開源的中間件,其量級較輕,吞吐量遠遠高出其他同類型軟件;借助MQTT協(xié)議和EMQ代理服務(wù)器功能實現(xiàn)數(shù)據(jù)智能回傳功能;網(wǎng)關(guān)和云端數(shù)據(jù)庫使用SQLite、Mongo DB和Mysql,其中,SQLite屬于一種進程內(nèi)的庫,作為數(shù)據(jù)管理模塊中的數(shù)據(jù)庫,SQLite充分發(fā)揮了自身內(nèi)存占用量小,量級輕,不需要任何外部依賴等優(yōu)勢。系統(tǒng)整體架構(gòu)模式見圖3。
圖3:工業(yè)互聯(lián)網(wǎng)網(wǎng)關(guān)管理系統(tǒng)架構(gòu)圖
第一次啟動網(wǎng)關(guān)管理平臺軟件時,會初始化系統(tǒng)數(shù)據(jù),之后,網(wǎng)關(guān)配置信息表會生成。此市,需要用手動的方式來對網(wǎng)關(guān)ID和網(wǎng)關(guān)區(qū)域,以及接入密鑰和MQTT服務(wù)地址、端口號進行設(shè)置。需要指出的是,“Topic全局唯一”是整個網(wǎng)關(guān)配置過程需要格外注意的一項內(nèi)容。當(dāng)網(wǎng)關(guān)配置完成并獲得具體信息后,需要通過“消息訂閱”的方式與網(wǎng)關(guān)內(nèi)消息列隊進行溝通,實現(xiàn)與底層傳感節(jié)點間的傳輸。在NATS中,有兩種主題類型,一是設(shè)備狀態(tài)數(shù)據(jù),表示設(shè)備基本信息已經(jīng)處于或尚未處于工作狀態(tài),另一種是設(shè)備實時采集數(shù)據(jù),負責(zé)為傳感器實際采集到的電流電壓數(shù)據(jù)。網(wǎng)關(guān)系統(tǒng)初始化完成后,如果讀取到MQTT服務(wù)地址,可直接上傳數(shù)據(jù)。數(shù)據(jù)上傳前需判斷預(yù)處理情況,若不需要對數(shù)據(jù)進行預(yù)處理,則直接從NATS訂閱的數(shù)據(jù)上傳;若需要進行預(yù)處理,將由智能回傳功能負責(zé)完成。
任務(wù)文件會在任務(wù)分發(fā)模塊實現(xiàn)過程中通過云端系統(tǒng)進行上傳,并生成一個具有唯一性的任務(wù)ID。在依次對網(wǎng)關(guān)區(qū)域、ID、網(wǎng)關(guān)優(yōu)先級進行輸入后任務(wù)列表會根據(jù)所輸入的內(nèi)容自動生成,并在文件內(nèi)容被上傳,以及網(wǎng)關(guān)ID和地域信息被確定后,生成任務(wù)列表。收到下一個心跳包后,與數(shù)據(jù)庫內(nèi)數(shù)據(jù)信息對比,判斷網(wǎng)關(guān)是否處于任務(wù)列表中。通過對比結(jié)果,將對應(yīng)的任務(wù)類型、序號以及網(wǎng)關(guān)列表作為結(jié)果返回到網(wǎng)關(guān)。在接收到心跳包返回值后,網(wǎng)關(guān)會對其內(nèi)容進行判別,以判別結(jié)果作為基準(zhǔn),決定是否進行其它操作。
3.4.1 網(wǎng)關(guān)管理平臺搭建
通常而言,工業(yè)互聯(lián)網(wǎng)網(wǎng)關(guān)需要具備用戶接入、設(shè)備接入、平臺管理等基礎(chǔ)性功能。結(jié)合前面設(shè)計分析與需求,網(wǎng)關(guān)管理平臺應(yīng)當(dāng)具備網(wǎng)關(guān)狀態(tài)監(jiān)控和管理,傳感節(jié)點數(shù)據(jù)監(jiān)控和管理,數(shù)據(jù)處理等幾項功能。功能結(jié)構(gòu)圖見圖4。
圖4:工業(yè)互聯(lián)網(wǎng)網(wǎng)關(guān)管理平臺功能結(jié)構(gòu)圖
在平臺更新方面,當(dāng)云端上傳了新的應(yīng)用版本時,會通過反向控制功能來告知網(wǎng)關(guān),除新版本內(nèi)容外,信息還包含了URL地址。在網(wǎng)關(guān)接收到版本更新信息后,平臺更新欄會立刻新增出一個下載按鈕,用戶可直接點擊該按鈕進行下載,進而完成版本更新。
3.4.2 云端管理平臺搭建
在網(wǎng)關(guān)設(shè)備管理中,心跳包用于完成網(wǎng)關(guān)與云端服務(wù)的連接需求,按照1分鐘發(fā)送一次的頻率。心跳包內(nèi)包含了網(wǎng)關(guān)內(nèi)網(wǎng)IP、運行狀態(tài)、接入設(shè)備ID等多項信息。處理和提取請求參數(shù)被接收到后的有效值,并在網(wǎng)關(guān)設(shè)備數(shù)據(jù)列表中轉(zhuǎn)存。,通過網(wǎng)關(guān)ID判斷是否需要進一步下發(fā)控制信息,無論是否要下發(fā),后需要回復(fù)相應(yīng)字段信息。在節(jié)點數(shù)據(jù)訂閱方面,節(jié)點數(shù)據(jù)的Topic是以按需訂閱要求和標(biāo)準(zhǔn)來進行定義的,通過添加相應(yīng)前綴,以及借助相關(guān)協(xié)議與MQTT服務(wù)功能,列表中的Topic又得到進一步遍歷。在數(shù)據(jù)節(jié)點查詢方面,節(jié)點數(shù)據(jù)查詢被分為實時數(shù)據(jù)查詢和歷史數(shù)據(jù)查詢兩種,系統(tǒng)在實際運行中會不間斷的對Topic列表中的消息進行訂閱,并將那些已訂閱的消息進行儲存,這樣,過往數(shù)據(jù)信息便能通過歷史數(shù)據(jù)查詢方式進行查找,而后端服務(wù)在從數(shù)據(jù)庫中獲得有效信息后,會將這些結(jié)果傳遞至前端。
互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,加速了工業(yè)新業(yè)態(tài)的生成,工業(yè)互聯(lián)網(wǎng)及其相關(guān)內(nèi)容已成為現(xiàn)階段我國一項主要發(fā)展任務(wù)。針對數(shù)據(jù)量并發(fā)數(shù)多,設(shè)備管理雜而亂和數(shù)據(jù)分析的難度大等問題,工業(yè)互聯(lián)網(wǎng)網(wǎng)關(guān)管理系統(tǒng)設(shè)計要從需求出發(fā),找到問題的解決辦法,對原有系統(tǒng)進行不斷優(yōu)化,通過增設(shè)新功能來滿足應(yīng)用需求。