田闊 明平壽 楊恒 張夢(mèng)輝 皮理想
1.中冶武勘工程技術(shù)有限公司;2.中冶武勘智誠(chéng)(武漢)工程技術(shù)有限公司
本文提出了一種組件式數(shù)據(jù)采集模型,基于該模型,設(shè)計(jì)并實(shí)現(xiàn)了一套組件式數(shù)據(jù)采集系統(tǒng)。其核心思想是將數(shù)據(jù)采集過(guò)程分解為通信、解析、輸出三個(gè)子過(guò)程,對(duì)應(yīng)通訊組件、解析組件、輸出組件,實(shí)現(xiàn)物理世界到數(shù)字空間的映射,三類組件分別負(fù)責(zé)與設(shè)備數(shù)據(jù)交換、報(bào)文解析、數(shù)據(jù)輸出。只要組件繼承接口模塊,就能納入數(shù)據(jù)采集系統(tǒng)中統(tǒng)一管理,能夠?qū)γ恳粋€(gè)組件單獨(dú)進(jìn)行維護(hù)和升級(jí),盡可能地復(fù)用每一個(gè)組件成果,等同于利用不同協(xié)議數(shù)據(jù)采集中的共性子過(guò)程,實(shí)現(xiàn)現(xiàn)有資源再利用,減少研發(fā)投入、技術(shù)難度、運(yùn)維成本效果。
沒(méi)有數(shù)據(jù)采集,物聯(lián)網(wǎng)將是無(wú)源之水。收集設(shè)備數(shù)據(jù)、過(guò)程數(shù)據(jù)、質(zhì)量數(shù)據(jù),可以用于監(jiān)測(cè)設(shè)備運(yùn)行狀態(tài)、優(yōu)化生產(chǎn)流程、預(yù)測(cè)性維護(hù)、提高產(chǎn)品質(zhì)量、改進(jìn)用戶體驗(yàn)、提高能源利用效率等場(chǎng)景,是企業(yè)提質(zhì)、降本、增效、節(jié)能、減排活動(dòng)的重要支撐[1-3]。
一個(gè)工廠所涉及的物聯(lián)網(wǎng)設(shè)備基數(shù)多,不同設(shè)備間數(shù)據(jù)格式和協(xié)議不一,實(shí)現(xiàn)高效、可靠、統(tǒng)一的數(shù)據(jù)采集成為了一個(gè)難題[4]。主流的數(shù)據(jù)采集方案是給每一類設(shè)備每一類協(xié)議開(kāi)發(fā)獨(dú)立的采集程序,眾多獨(dú)立采集程序直接部署或發(fā)布成微服務(wù),采集程序?qū)?shù)據(jù)匯聚到消息隊(duì)列中,供持久化模塊統(tǒng)一消費(fèi)存儲(chǔ)[5-8]。當(dāng)新增一類協(xié)議數(shù)據(jù)時(shí),需要技術(shù)人員新建一項(xiàng)較為龐大的軟件工程,存在一定技術(shù)難度,還需在軟件進(jìn)行充分測(cè)試后,再對(duì)新設(shè)備數(shù)據(jù)進(jìn)行接入與持久化;另外,繁多的采集服務(wù),增加采集系統(tǒng)交付周期、研發(fā)成本,也給工廠采集數(shù)據(jù)運(yùn)維帶來(lái)困難。
物聯(lián)網(wǎng)數(shù)據(jù)采集系統(tǒng)包括設(shè)備連接管理、報(bào)文結(jié)構(gòu)解析、數(shù)據(jù)內(nèi)容輸出三個(gè)模塊,由此可以推導(dǎo)出:一個(gè)完整的數(shù)據(jù)采集過(guò)程,可以分解為通信、解析、輸出三個(gè)子過(guò)程。進(jìn)一步地,本文提出一種組件式數(shù)據(jù)采集模型,其核心思想在于采集過(guò)程組件化,將物理世界中的通信、解析、輸出三個(gè)子過(guò)程,分別對(duì)應(yīng)數(shù)字空間的通訊組件、解析組件、輸出組件,通過(guò)組合不同的通訊組件、解析組件、輸出組件,形成多個(gè)數(shù)據(jù)采集通道,完成對(duì)多設(shè)備多協(xié)議物聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行采集,并提供數(shù)據(jù)持久化、顯示服務(wù)。
如圖1 所示為本文提出的組件式數(shù)據(jù)采集模型示意圖。其中,采集通道是通訊組件、解析組件、輸出組件三類組件的組合,實(shí)現(xiàn)與設(shè)備或傳感器通信、數(shù)據(jù)格式解析、數(shù)據(jù)輸出工作,實(shí)現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)接入、數(shù)據(jù)匯聚。
圖1 組件式數(shù)據(jù)采集模型Fig.1 Component based data collection model
(1)通訊組件是物理世界中的通信在數(shù)字空間的映射,每一種通訊組件與通信協(xié)議一一對(duì)應(yīng),支持TCP、MQTT、HTTP、串口、OPC UA 等多種通信協(xié)議,作為通信代理,被動(dòng)或主動(dòng)與現(xiàn)場(chǎng)設(shè)備建立通信信道,接收或輪詢現(xiàn)場(chǎng)設(shè)備數(shù)據(jù)并發(fā)送到解析組件,同時(shí)將解析組件返回的反饋數(shù)據(jù),回傳給物理設(shè)備。
(2)解析組件是物理世界中的數(shù)據(jù)解析在數(shù)字空間的映射,每一種解析組件與數(shù)據(jù)協(xié)議一一對(duì)應(yīng),支持HJ212、JTT809、CJT188、DLT645、BACnet、Modbus等多種數(shù)據(jù)解析方法,解析來(lái)自通訊組件傳遞的數(shù)據(jù),將解析結(jié)果發(fā)送到輸出組件,并計(jì)算反饋數(shù)據(jù)發(fā)送給通訊組件。
(3)輸出組件是物理世界中的顯示輸出在數(shù)字空間的映射,支持?jǐn)?shù)據(jù)庫(kù)插入、HTTP 接口傳輸、文件寫(xiě)入、控制臺(tái)打印等多種數(shù)據(jù)持久化、發(fā)布、顯示方法,用于將來(lái)自解析組件的數(shù)據(jù)輸出到指定的數(shù)據(jù)庫(kù)系統(tǒng)、文件系統(tǒng)或介質(zhì)中。
如圖2 所示是在上述組件式數(shù)據(jù)采集模型的基礎(chǔ)上形成的數(shù)據(jù)采集系統(tǒng)架構(gòu)圖,對(duì)各類組件做了接口約束,引入通道服務(wù)對(duì)組件調(diào)度管理,實(shí)現(xiàn)組件的統(tǒng)一調(diào)度管理,同時(shí)確保當(dāng)現(xiàn)有組件不能滿足數(shù)據(jù)采集需求時(shí),技術(shù)人員可在數(shù)據(jù)采集系統(tǒng)里新增一個(gè)繼承了接口模塊的組件,并注冊(cè)到組件服務(wù)里,完成新協(xié)議新設(shè)備數(shù)據(jù)接入、存儲(chǔ)。通訊組件、解析組件和輸出組件都是獨(dú)立的組件,可以分別進(jìn)行維護(hù)和升級(jí),通過(guò)對(duì)現(xiàn)有資源再利用,減少研發(fā)投入、技術(shù)難度、運(yùn)維成本效果。
圖2 組件式物聯(lián)網(wǎng)數(shù)據(jù)采集系統(tǒng)架構(gòu)圖Fig.2 Architecture diagram of component based IoT data collection system
每一個(gè)組件通過(guò)繼承一個(gè)或多個(gè)接口,實(shí)現(xiàn)對(duì)組件進(jìn)行約束,納入到通道服務(wù)中統(tǒng)一管理,其中具體描述如下:
(1)通用組件接口,用于定義和約束通訊組件、解析組件、輸出組件的名稱、編號(hào)、參數(shù)列表、日志函數(shù),并使組件符合采集系統(tǒng)要求;
(2)通用組件方法,用于固化通訊組件、解析組件、輸出組件所需的通用方法,包括組件名稱的查詢及設(shè)置方法、組件編號(hào)的查詢及設(shè)置方法、組件參數(shù)的查詢及設(shè)置方法、組件日志函數(shù)的設(shè)置及調(diào)用方法;
(3)通訊組件接口,用于定義通訊組件的啟動(dòng)方法、關(guān)閉方法,其中啟動(dòng)方法、關(guān)閉方法均約束了入?yún)㈩愋停?qiáng)制要求啟動(dòng)和關(guān)閉方法返回執(zhí)行狀態(tài);
(4)解析組件接口,用于定義解析組件的執(zhí)行方法,并約束該執(zhí)行方法返回執(zhí)行狀態(tài);
(5)輸出組件接口,用于定義輸出組件的執(zhí)行方法,并約束該執(zhí)行方法返回執(zhí)行狀態(tài)。
上述接口模塊定義通訊組件、解析組件、輸出組件的接口,實(shí)現(xiàn)多個(gè)組件通用方法,確保組件在采集系統(tǒng)中正確運(yùn)行。同時(shí),在現(xiàn)有組件不能滿足數(shù)據(jù)采集需求時(shí),允許技術(shù)人員在數(shù)據(jù)采集子系統(tǒng)中新增一個(gè)繼承了接口模塊的組件,完成新設(shè)備新協(xié)議的數(shù)據(jù)接入、解析、輸出工作。組件式數(shù)據(jù)采集系統(tǒng),并不拘泥具體設(shè)備具體協(xié)議,也不局限具體的數(shù)據(jù)發(fā)布和共享方式,只要組件繼承接口模塊,就能納入數(shù)據(jù)采集系統(tǒng)中統(tǒng)一管理。
一個(gè)完整的采集過(guò)程分解為通信、解析、輸出三個(gè)子過(guò)程,對(duì)應(yīng)通訊組件、解析組件、輸出組件。這三類組件職責(zé)明確,分別負(fù)責(zé)與設(shè)備數(shù)據(jù)交換、報(bào)文解析、數(shù)據(jù)輸出。通過(guò)對(duì)組件的調(diào)度管理,復(fù)用每一個(gè)組件成果,等同于利用不同協(xié)議數(shù)據(jù)采集中的共性子過(guò)程。
其中組件有序調(diào)度是關(guān)鍵,由通道服務(wù)對(duì)通訊組件、解析組件、輸出組件進(jìn)行管理,包括提供組件注冊(cè)服務(wù);查詢通訊組件、解析組件、輸出組件編碼及名稱清單服務(wù);根據(jù)組件編碼獲取組件實(shí)例化;對(duì)通訊組件、解析組件、輸出組件編碼進(jìn)行組合,形成采集通道;提供采集通道的開(kāi)啟、關(guān)閉功能。
依據(jù)章節(jié)2 的系統(tǒng)架構(gòu)圖,編程開(kāi)發(fā)了一套組件式采集系統(tǒng)軟件,目前已應(yīng)用到多個(gè)大型項(xiàng)目中,主要實(shí)現(xiàn)了組件模塊、通道服務(wù)、日志服務(wù)、數(shù)據(jù)發(fā)布等功能。
組件模塊包括組件接口,以及繼承了組件接口的通訊組件、解析組件和輸出組件。其中通訊組件包括TCP服務(wù)通訊組件、TCP 客戶端通訊組件、MQTT 服務(wù)通訊組件、MQTT 客戶端通訊組件、HTTP 服務(wù)通訊組件、HTTP 客戶端通訊組件、串口通訊組件、OPC UA 通訊組件;解析組件包括HJ212 解析組件、JTT809 解析組件、CJT188 解析組件、DLT645 解析組件、BACnet 解析組件、Modbus 解析組件;輸出組件包括關(guān)系數(shù)據(jù)庫(kù)輸出組件、時(shí)序數(shù)據(jù)庫(kù)輸出組件、文件輸出組件、WebAPI輸出組件、控制臺(tái)輸出組件、WebSocket 輸出組件。
通道服務(wù)負(fù)責(zé)通道的創(chuàng)建、初始化、運(yùn)行、銷毀全過(guò)程,是數(shù)據(jù)采集系統(tǒng)的核心模塊。通道服務(wù)所管理的通道,實(shí)現(xiàn)通訊組件、解析組件、輸出組件的注冊(cè)、組合、調(diào)度,負(fù)責(zé)目標(biāo)協(xié)議或設(shè)備的數(shù)據(jù)采集。如圖3 所示為通道服務(wù)編輯界面,如圖4 所示為數(shù)據(jù)采集通道運(yùn)行截圖。
圖3 數(shù)采通道編輯Fig.3 Data acquisition channel editing
圖4 數(shù)采通道運(yùn)行截圖Fig.4 Screenshot of data acquisition channel operation
日志服務(wù)提供了系統(tǒng)日志和報(bào)文日志的記錄和存儲(chǔ),為故障排查和問(wèn)題分析、性能監(jiān)控和優(yōu)化、安全審計(jì)和合規(guī)性、資源利用和容量規(guī)劃、業(yè)務(wù)分析和決策支持提供數(shù)據(jù)支撐。日志服務(wù)在系統(tǒng)運(yùn)維、安全監(jiān)控、性能優(yōu)化和合規(guī)性等方面發(fā)揮著重要的作用,幫助保障系統(tǒng)的可用性、安全性和穩(wěn)定性。
通過(guò)使用本采集系統(tǒng)的MQTT 代理進(jìn)行數(shù)據(jù)發(fā)布,不同設(shè)備和協(xié)議的數(shù)據(jù)可以以統(tǒng)一的方式進(jìn)行共享。其他設(shè)備或應(yīng)用程序可以訂閱相關(guān)的主題,從而實(shí)現(xiàn)數(shù)據(jù)的訂閱和獲取。這種方式可以有效地實(shí)現(xiàn)設(shè)備間的數(shù)據(jù)交換、共享和集成,提供更靈活和擴(kuò)展的數(shù)據(jù)通信方式。
使用統(tǒng)一的數(shù)據(jù)格式,配合MQTT 協(xié)議進(jìn)行數(shù)據(jù)發(fā)布,可以簡(jiǎn)化系統(tǒng)的集成和數(shù)據(jù)處理流程,提高系統(tǒng)的可靠性和可擴(kuò)展性。同時(shí),通過(guò)使用發(fā)布-訂閱模式,可以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)更新和傳遞,滿足實(shí)時(shí)數(shù)據(jù)共享和訂閱的需求。
本文根據(jù)物理世界中的數(shù)據(jù)采集過(guò)程,推導(dǎo)出一種組件式數(shù)據(jù)采集模型,即物理世界的設(shè)備數(shù)據(jù)交換、報(bào)文解析、數(shù)據(jù)輸出與數(shù)字空間的通訊組件、解析組件、輸出組件一一對(duì)應(yīng)。基于該數(shù)據(jù)采集模型,設(shè)計(jì)了組件式數(shù)據(jù)采集系統(tǒng)架構(gòu),通道是采集系統(tǒng)的核心,主要用來(lái)對(duì)三類組件進(jìn)行管理,包括提供組件注冊(cè)服務(wù)、查詢組件編碼及名稱清單服務(wù)、對(duì)組件實(shí)例化、對(duì)組件進(jìn)行組合、提供通道的開(kāi)啟與關(guān)閉功能。最后實(shí)現(xiàn)了組件式數(shù)據(jù)采集系統(tǒng),其系統(tǒng)具備組件模塊、通道服務(wù)、日志服務(wù)、數(shù)據(jù)發(fā)布四大功能。該數(shù)據(jù)采集系統(tǒng)在項(xiàng)目中的應(yīng)用實(shí)踐表明,可以用配置的形式高效完成物聯(lián)網(wǎng)數(shù)據(jù)的接入和持久化工作,有效提高了設(shè)備接入效率,降低了系統(tǒng)運(yùn)維成本。