陳濤,彭長(zhǎng)超,劉文軍,陳晨
(1.蘇州工業(yè)職業(yè)技術(shù)學(xué)院軟件與服務(wù)外包學(xué)院,江蘇蘇州 215104;2.蘇州礪行信息科技有限公司,江蘇蘇州 215151)
實(shí)現(xiàn)工業(yè)生產(chǎn)要素的互聯(lián)、互通是工業(yè)智能化改造和數(shù)字化轉(zhuǎn)型的基礎(chǔ)[1]。構(gòu)建一個(gè)通用的工業(yè)物聯(lián)使能平臺(tái),實(shí)現(xiàn)多樣化工業(yè)設(shè)備數(shù)據(jù)采集、接入管理、規(guī)則引擎等問(wèn)題成為關(guān)注的焦點(diǎn)[2]。工業(yè)物聯(lián)使能平臺(tái)是工業(yè)互聯(lián)網(wǎng)平臺(tái)的重要構(gòu)成,基于該平臺(tái)可以快速構(gòu)建設(shè)備預(yù)測(cè)性運(yùn)維、生產(chǎn)協(xié)同管理、質(zhì)量追溯等上層創(chuàng)新應(yīng)用[3-5]。
本文提出了一種針對(duì)工業(yè)場(chǎng)景下通用的設(shè)備使能平臺(tái),主要聚焦工業(yè)要素的接入,包括海量設(shè)備的快速接入、設(shè)備生命周期管理、平臺(tái)數(shù)據(jù)流轉(zhuǎn),并為上層應(yīng)用提供支撐。要求平臺(tái)具有良好的通用性和擴(kuò)展性。初步實(shí)踐表明平臺(tái)為構(gòu)建復(fù)雜的工業(yè)應(yīng)用提供良好的支撐能力。
平臺(tái)基于B/S架構(gòu)實(shí)現(xiàn),技術(shù)架構(gòu)如圖1所示。前端采用Vue技術(shù)棧,使用Element ui組件庫(kù)快速搭建前端頁(yè)面,同時(shí)使用Nginx作為反向代理服務(wù)器,增強(qiáng)系統(tǒng)安全性與可伸縮性。后端業(yè)務(wù)使用SpringBoot和JPA的技術(shù)棧。SpringBoot對(duì)比Spring精簡(jiǎn)了配置的同時(shí)整合了其龐大的生態(tài)圈與工具鏈,JPA作為全自動(dòng)的ORM框架對(duì)比半自動(dòng)的MyBatis減少了SQL的編寫(xiě),二者結(jié)合極大地提升了開(kāi)發(fā)效率。平臺(tái)的用戶訪問(wèn)認(rèn)證和授權(quán)使用SpringSecurity和JWT框架實(shí)現(xiàn),Swagger用于自動(dòng)生成接口文檔。出于穩(wěn)定性與安全性考慮,引入了Prometheus和Grafana等中間件,組成了平臺(tái)的監(jiān)控系統(tǒng),實(shí)現(xiàn)了對(duì)平臺(tái)運(yùn)行的可視化智能監(jiān)控。同時(shí),平臺(tái)接入了第三方的短信服務(wù),用于短信登錄與短信告警,加強(qiáng)了用戶安全與及時(shí)告警能力。數(shù)據(jù)存儲(chǔ)采用了MySQL與MongoDB的組合,不同的存儲(chǔ)方式可有效提高查詢效率,提升系統(tǒng)性能。內(nèi)存數(shù)據(jù)庫(kù)Redis用于緩存用戶登錄態(tài)與熱點(diǎn)信息。
圖1 物聯(lián)網(wǎng)使能平臺(tái)技術(shù)架構(gòu)圖
平臺(tái)的核心能力是提供海量設(shè)備接入與靈活的數(shù)據(jù)流轉(zhuǎn),并為上層應(yīng)用提供快速開(kāi)發(fā)能力。平臺(tái)功能架構(gòu)如圖2所示,從左至右分別為設(shè)備側(cè)、平臺(tái)側(cè)與數(shù)據(jù)流轉(zhuǎn)側(cè),上方為上層應(yīng)用。平臺(tái)分為設(shè)備接入、設(shè)備生命周期管理、規(guī)則引擎與運(yùn)營(yíng)監(jiān)控四個(gè)功能模塊。
圖2 平臺(tái)功能架構(gòu)圖
設(shè)備接入模塊中,平臺(tái)為直連設(shè)備、網(wǎng)關(guān)設(shè)備、物聯(lián)網(wǎng)邊緣設(shè)備等不同類型設(shè)備提供接入能力,同時(shí)支持主流Modbus、OPC-UA等工業(yè)協(xié)議,以及MQTT、HTTP、CoAP等IoT協(xié)議。安全上,平臺(tái)還具備KPI證書(shū)頒發(fā)能力,通過(guò)設(shè)備注冊(cè)在線簽發(fā)設(shè)備證書(shū),實(shí)現(xiàn)設(shè)備的安全認(rèn)證。
設(shè)備生命周期管理模塊提供了對(duì)設(shè)備的全生命周期管理,包括設(shè)備基本信息管理、物模型管理與主題管理。此外,平臺(tái)提供設(shè)備模擬器模擬真實(shí)設(shè)備與物聯(lián)網(wǎng)平臺(tái)建立連接。通過(guò)設(shè)備模擬器,測(cè)試物聯(lián)網(wǎng)平臺(tái)與設(shè)備端之間的通信功能。
規(guī)則引擎模塊提供了場(chǎng)景聯(lián)動(dòng)、數(shù)據(jù)流轉(zhuǎn)與告警提示功能。當(dāng)數(shù)據(jù)接入平臺(tái)后,用戶可依據(jù)設(shè)備數(shù)據(jù)手動(dòng)配置規(guī)則用以觸發(fā)一系列動(dòng)作,包括設(shè)備反向控制、數(shù)據(jù)流轉(zhuǎn)以及設(shè)備告警。運(yùn)營(yíng)監(jiān)控模塊提供了可視化大屏用以展示平臺(tái)接入設(shè)備情況,日志服務(wù)記錄了設(shè)備上報(bào)數(shù)據(jù)的日志,同時(shí)也提供SDK與API供接入平臺(tái)用戶與上層應(yīng)用調(diào)用。
3.2.1 設(shè)備管理
設(shè)備管理是設(shè)備生命周期管理模塊的核心。設(shè)備包含三個(gè)要素,分別為設(shè)備基礎(chǔ)信息、物模型與Topic(主題)?;A(chǔ)信息為設(shè)備編號(hào),設(shè)備類型等信息。物模型是為設(shè)備定義的數(shù)據(jù)模型,用于描述設(shè)備的功能,從屬性、命令和事件三個(gè)維度完成對(duì)設(shè)備的建模。Topic主要用于設(shè)備通信。
平臺(tái)將設(shè)備集合抽象為產(chǎn)品,產(chǎn)品通常是一組具有相同功能定義的設(shè)備集合。例如,對(duì)同一型號(hào)的產(chǎn)品,設(shè)備就是該型號(hào)下的某個(gè)設(shè)備。產(chǎn)品也可定義物模型與Topic,設(shè)備與產(chǎn)品綁定后即可繼承產(chǎn)品的物模型與Topic,同時(shí)設(shè)備的信息修改不影響產(chǎn)品。修改產(chǎn)品信息即可同時(shí)修改一組設(shè)備,當(dāng)接入大量設(shè)備時(shí)顯著方便了設(shè)備的管理。
添加設(shè)備時(shí)序圖如圖3所示。在已定義了產(chǎn)品的前提下,添加設(shè)備時(shí)首先綁定產(chǎn)品,自動(dòng)繼承產(chǎn)品的物模型與Topic,再填寫(xiě)基礎(chǔ)信息,同時(shí)獲取設(shè)備的日志列表,若為網(wǎng)關(guān)設(shè)備則顯示子設(shè)備列表。設(shè)備添加完成后即可通過(guò)設(shè)備模擬器調(diào)試,接入平臺(tái)。
圖3 設(shè)備添加時(shí)序圖
圖3 網(wǎng)格模型圖
3.2.2 規(guī)則引擎
規(guī)則引擎是一種開(kāi)發(fā)自動(dòng)化業(yè)務(wù)邏輯的可視化編程方式,可以通過(guò)可視化的方式定義設(shè)備之間聯(lián)動(dòng)規(guī)則或數(shù)據(jù)的流轉(zhuǎn)方式與方向。平臺(tái)在接入設(shè)備的基礎(chǔ)上,通過(guò)流入的設(shè)備數(shù)據(jù)與規(guī)則引擎來(lái)執(zhí)行一系列動(dòng)作。規(guī)則引擎分為場(chǎng)景聯(lián)動(dòng)和數(shù)據(jù)流轉(zhuǎn),二者都由層層遞進(jìn)的觸發(fā)器、執(zhí)行條件、執(zhí)行動(dòng)作三個(gè)部分組成,達(dá)成前者的條件才可進(jìn)入后者的判斷。觸發(fā)器需指定一個(gè)設(shè)備及其屬性以及觸發(fā)條件,屬性可以為一或多個(gè),并可自定義屬性邏輯關(guān)系。執(zhí)行條件為時(shí)間范圍,可為一個(gè)規(guī)則創(chuàng)建多個(gè)時(shí)間范圍。場(chǎng)景聯(lián)動(dòng)的執(zhí)行動(dòng)作分為設(shè)備輸出、告警輸出、規(guī)則輸出。設(shè)備輸出即對(duì)設(shè)備的反向控制,通過(guò)設(shè)備定義的Topic與輸入的指令來(lái)操控設(shè)備執(zhí)行動(dòng)作。告警輸出是設(shè)備數(shù)據(jù)達(dá)到條件時(shí)發(fā)出告警,分為瀏覽器與發(fā)送短信兩種告警方式。規(guī)則輸出是聯(lián)動(dòng)其他的規(guī)則引擎,觸發(fā)規(guī)則輸出后可讓另一個(gè)場(chǎng)景聯(lián)動(dòng)規(guī)則跳過(guò)觸發(fā)器與執(zhí)行條件,直接觸發(fā)執(zhí)行動(dòng)作,提高了規(guī)則設(shè)置的靈活性。數(shù)據(jù)流轉(zhuǎn)的執(zhí)行動(dòng)作是用不同方式將設(shè)備數(shù)據(jù)流轉(zhuǎn)到指定目的地,如數(shù)據(jù)庫(kù)、API以及消息隊(duì)列等,進(jìn)一步構(gòu)建相關(guān)應(yīng)用。
規(guī)則引擎執(zhí)行過(guò)程如圖4所示。首先為設(shè)備上報(bào)數(shù)據(jù)至平臺(tái),平臺(tái)收到數(shù)據(jù)后判定是否為設(shè)備配置了場(chǎng)景聯(lián)動(dòng)或數(shù)據(jù)流轉(zhuǎn)規(guī)則,若無(wú)則跳過(guò)數(shù)據(jù),若有則進(jìn)入觸發(fā)器判斷,達(dá)成觸發(fā)條件則進(jìn)入執(zhí)行條件判斷,通過(guò)后觸發(fā)用戶定義的動(dòng)作。
圖4 規(guī)則引擎執(zhí)行時(shí)序圖
圖4 測(cè)井曲線三維展示
3.2.3 告警管理
規(guī)則引擎中觸發(fā)的告警在告警管理中配置,告警分為平臺(tái)告警與短信告警,用戶需制定告警規(guī)則,包括告警方式與告警觸發(fā)的間隔。告警依靠WebSocket協(xié)議來(lái)實(shí)現(xiàn)即時(shí)通訊,用戶無(wú)須刷新瀏覽器就可實(shí)時(shí)收到服務(wù)端發(fā)來(lái)的告警信息,保證了告警的實(shí)時(shí)性。
具體的告警流程如圖5所示。首先數(shù)據(jù)上報(bào)后由場(chǎng)景聯(lián)動(dòng)規(guī)則來(lái)判定是否觸發(fā)告警,若達(dá)成觸發(fā)條件則會(huì)查詢上次告警時(shí)間并與當(dāng)前時(shí)間求差值同時(shí)與告警間隔做對(duì)比來(lái)確定是否需要告警,如需告警則發(fā)出告警同時(shí)更新上次告警時(shí)間為當(dāng)前時(shí)間,告警的次數(shù)與信息將會(huì)被記錄用作數(shù)據(jù)可視化展示與分析。
圖5 告警流程時(shí)序圖
圖6為設(shè)備管理頁(yè)面,物模型數(shù)據(jù)標(biāo)簽頁(yè)展示了設(shè)備的數(shù)據(jù)模型,功能類型包括屬性、命令和事件,從三個(gè)維度完成對(duì)設(shè)備數(shù)據(jù)建模。日志服務(wù)標(biāo)簽頁(yè)展示了設(shè)備上報(bào)數(shù)據(jù)的日志,Topic列表標(biāo)簽頁(yè)展示了用戶自定義Topic供設(shè)備訂閱,設(shè)備綁定產(chǎn)品后可繼承產(chǎn)品的物模型和Topic列表,若設(shè)備類型為網(wǎng)關(guān)設(shè)備,則展示其子設(shè)備列表。
圖6 設(shè)備管理頁(yè)面
圖7為規(guī)則引擎管理頁(yè)面,以場(chǎng)景聯(lián)動(dòng)規(guī)則為例。選擇一個(gè)產(chǎn)品下的一個(gè)設(shè)備作為觸發(fā)設(shè)備,同時(shí)為此設(shè)備的一個(gè)或多個(gè)屬性添加閾值,選擇判定規(guī)則為“或”或者“且”即完成觸發(fā)器的設(shè)定,選擇一個(gè)或多個(gè)時(shí)間范圍完成對(duì)執(zhí)行條件的設(shè)定,執(zhí)行動(dòng)作中選擇設(shè)備輸出,告警輸出或規(guī)則輸出。設(shè)備輸出中選擇設(shè)備下的屬性或命令后填寫(xiě)屬性值,或命令字符串,平臺(tái)會(huì)將設(shè)備屬性設(shè)為填寫(xiě)值,或控制設(shè)備執(zhí)行命令字符串對(duì)應(yīng)動(dòng)作。數(shù)據(jù)流轉(zhuǎn)規(guī)則參照?qǐng)鼍奥?lián)動(dòng)。
圖7 規(guī)則引擎管理頁(yè)面
圖8告警管理頁(yè)面用于管理告警規(guī)則,告警規(guī)則包含告警名稱、告警等級(jí)、告警方式、聯(lián)系人和相同告警間隔。填寫(xiě)完后點(diǎn)擊啟動(dòng)即可在規(guī)則引擎中綁定告警規(guī)則,觸發(fā)后在平臺(tái)上或短信發(fā)出告警。
圖8 告警管理頁(yè)面
工業(yè)物聯(lián)使能平臺(tái)的建設(shè)能夠有效推動(dòng)制造業(yè)數(shù)字化轉(zhuǎn)型,實(shí)現(xiàn)經(jīng)濟(jì)高質(zhì)量發(fā)展。針對(duì)工業(yè)生產(chǎn)要素的平臺(tái)化接入管理以及高效利用,給出了一種工業(yè)物聯(lián)使能云平臺(tái)的設(shè)計(jì)和實(shí)現(xiàn),平臺(tái)支持主流工業(yè)協(xié)議,實(shí)現(xiàn)設(shè)備接入管理、生命周期管理、規(guī)則引擎與預(yù)警,以及運(yùn)營(yíng)監(jiān)控等功能。平臺(tái)具有良好的擴(kuò)展性和可靠性,有效支撐智能工廠上層創(chuàng)新應(yīng)用。