田闊 明平壽 楊恒 張夢輝 皮理想
1.中冶武勘工程技術有限公司;2.中冶武勘智誠(武漢)工程技術有限公司
本文提出了一種組件式數據采集模型,基于該模型,設計并實現了一套組件式數據采集系統。其核心思想是將數據采集過程分解為通信、解析、輸出三個子過程,對應通訊組件、解析組件、輸出組件,實現物理世界到數字空間的映射,三類組件分別負責與設備數據交換、報文解析、數據輸出。只要組件繼承接口模塊,就能納入數據采集系統中統一管理,能夠對每一個組件單獨進行維護和升級,盡可能地復用每一個組件成果,等同于利用不同協議數據采集中的共性子過程,實現現有資源再利用,減少研發投入、技術難度、運維成本效果。
沒有數據采集,物聯網將是無源之水。收集設備數據、過程數據、質量數據,可以用于監測設備運行狀態、優化生產流程、預測性維護、提高產品質量、改進用戶體驗、提高能源利用效率等場景,是企業提質、降本、增效、節能、減排活動的重要支撐[1-3]。
一個工廠所涉及的物聯網設備基數多,不同設備間數據格式和協議不一,實現高效、可靠、統一的數據采集成為了一個難題[4]。主流的數據采集方案是給每一類設備每一類協議開發獨立的采集程序,眾多獨立采集程序直接部署或發布成微服務,采集程序將數據匯聚到消息隊列中,供持久化模塊統一消費存儲[5-8]。當新增一類協議數據時,需要技術人員新建一項較為龐大的軟件工程,存在一定技術難度,還需在軟件進行充分測試后,再對新設備數據進行接入與持久化;另外,繁多的采集服務,增加采集系統交付周期、研發成本,也給工廠采集數據運維帶來困難。
物聯網數據采集系統包括設備連接管理、報文結構解析、數據內容輸出三個模塊,由此可以推導出:一個完整的數據采集過程,可以分解為通信、解析、輸出三個子過程。進一步地,本文提出一種組件式數據采集模型,其核心思想在于采集過程組件化,將物理世界中的通信、解析、輸出三個子過程,分別對應數字空間的通訊組件、解析組件、輸出組件,通過組合不同的通訊組件、解析組件、輸出組件,形成多個數據采集通道,完成對多設備多協議物聯網數據進行采集,并提供數據持久化、顯示服務。
如圖1 所示為本文提出的組件式數據采集模型示意圖。其中,采集通道是通訊組件、解析組件、輸出組件三類組件的組合,實現與設備或傳感器通信、數據格式解析、數據輸出工作,實現物聯網數據接入、數據匯聚。

圖1 組件式數據采集模型Fig.1 Component based data collection model
(1)通訊組件是物理世界中的通信在數字空間的映射,每一種通訊組件與通信協議一一對應,支持TCP、MQTT、HTTP、串口、OPC UA 等多種通信協議,作為通信代理,被動或主動與現場設備建立通信信道,接收或輪詢現場設備數據并發送到解析組件,同時將解析組件返回的反饋數據,回傳給物理設備。
(2)解析組件是物理世界中的數據解析在數字空間的映射,每一種解析組件與數據協議一一對應,支持HJ212、JTT809、CJT188、DLT645、BACnet、Modbus等多種數據解析方法,解析來自通訊組件傳遞的數據,將解析結果發送到輸出組件,并計算反饋數據發送給通訊組件。
(3)輸出組件是物理世界中的顯示輸出在數字空間的映射,支持數據庫插入、HTTP 接口傳輸、文件寫入、控制臺打印等多種數據持久化、發布、顯示方法,用于將來自解析組件的數據輸出到指定的數據庫系統、文件系統或介質中。
如圖2 所示是在上述組件式數據采集模型的基礎上形成的數據采集系統架構圖,對各類組件做了接口約束,引入通道服務對組件調度管理,實現組件的統一調度管理,同時確保當現有組件不能滿足數據采集需求時,技術人員可在數據采集系統里新增一個繼承了接口模塊的組件,并注冊到組件服務里,完成新協議新設備數據接入、存儲。通訊組件、解析組件和輸出組件都是獨立的組件,可以分別進行維護和升級,通過對現有資源再利用,減少研發投入、技術難度、運維成本效果。

圖2 組件式物聯網數據采集系統架構圖Fig.2 Architecture diagram of component based IoT data collection system
每一個組件通過繼承一個或多個接口,實現對組件進行約束,納入到通道服務中統一管理,其中具體描述如下:
(1)通用組件接口,用于定義和約束通訊組件、解析組件、輸出組件的名稱、編號、參數列表、日志函數,并使組件符合采集系統要求;
(2)通用組件方法,用于固化通訊組件、解析組件、輸出組件所需的通用方法,包括組件名稱的查詢及設置方法、組件編號的查詢及設置方法、組件參數的查詢及設置方法、組件日志函數的設置及調用方法;
(3)通訊組件接口,用于定義通訊組件的啟動方法、關閉方法,其中啟動方法、關閉方法均約束了入參類型,并強制要求啟動和關閉方法返回執行狀態;
(4)解析組件接口,用于定義解析組件的執行方法,并約束該執行方法返回執行狀態;
(5)輸出組件接口,用于定義輸出組件的執行方法,并約束該執行方法返回執行狀態。
上述接口模塊定義通訊組件、解析組件、輸出組件的接口,實現多個組件通用方法,確保組件在采集系統中正確運行。同時,在現有組件不能滿足數據采集需求時,允許技術人員在數據采集子系統中新增一個繼承了接口模塊的組件,完成新設備新協議的數據接入、解析、輸出工作。組件式數據采集系統,并不拘泥具體設備具體協議,也不局限具體的數據發布和共享方式,只要組件繼承接口模塊,就能納入數據采集系統中統一管理。
一個完整的采集過程分解為通信、解析、輸出三個子過程,對應通訊組件、解析組件、輸出組件。這三類組件職責明確,分別負責與設備數據交換、報文解析、數據輸出。通過對組件的調度管理,復用每一個組件成果,等同于利用不同協議數據采集中的共性子過程。
其中組件有序調度是關鍵,由通道服務對通訊組件、解析組件、輸出組件進行管理,包括提供組件注冊服務;查詢通訊組件、解析組件、輸出組件編碼及名稱清單服務;根據組件編碼獲取組件實例化;對通訊組件、解析組件、輸出組件編碼進行組合,形成采集通道;提供采集通道的開啟、關閉功能。
依據章節2 的系統架構圖,編程開發了一套組件式采集系統軟件,目前已應用到多個大型項目中,主要實現了組件模塊、通道服務、日志服務、數據發布等功能。
組件模塊包括組件接口,以及繼承了組件接口的通訊組件、解析組件和輸出組件。其中通訊組件包括TCP服務通訊組件、TCP 客戶端通訊組件、MQTT 服務通訊組件、MQTT 客戶端通訊組件、HTTP 服務通訊組件、HTTP 客戶端通訊組件、串口通訊組件、OPC UA 通訊組件;解析組件包括HJ212 解析組件、JTT809 解析組件、CJT188 解析組件、DLT645 解析組件、BACnet 解析組件、Modbus 解析組件;輸出組件包括關系數據庫輸出組件、時序數據庫輸出組件、文件輸出組件、WebAPI輸出組件、控制臺輸出組件、WebSocket 輸出組件。
通道服務負責通道的創建、初始化、運行、銷毀全過程,是數據采集系統的核心模塊。通道服務所管理的通道,實現通訊組件、解析組件、輸出組件的注冊、組合、調度,負責目標協議或設備的數據采集。如圖3 所示為通道服務編輯界面,如圖4 所示為數據采集通道運行截圖。

圖3 數采通道編輯Fig.3 Data acquisition channel editing

圖4 數采通道運行截圖Fig.4 Screenshot of data acquisition channel operation
日志服務提供了系統日志和報文日志的記錄和存儲,為故障排查和問題分析、性能監控和優化、安全審計和合規性、資源利用和容量規劃、業務分析和決策支持提供數據支撐。日志服務在系統運維、安全監控、性能優化和合規性等方面發揮著重要的作用,幫助保障系統的可用性、安全性和穩定性。
通過使用本采集系統的MQTT 代理進行數據發布,不同設備和協議的數據可以以統一的方式進行共享。其他設備或應用程序可以訂閱相關的主題,從而實現數據的訂閱和獲取。這種方式可以有效地實現設備間的數據交換、共享和集成,提供更靈活和擴展的數據通信方式。
使用統一的數據格式,配合MQTT 協議進行數據發布,可以簡化系統的集成和數據處理流程,提高系統的可靠性和可擴展性。同時,通過使用發布-訂閱模式,可以實現數據的實時更新和傳遞,滿足實時數據共享和訂閱的需求。
本文根據物理世界中的數據采集過程,推導出一種組件式數據采集模型,即物理世界的設備數據交換、報文解析、數據輸出與數字空間的通訊組件、解析組件、輸出組件一一對應。基于該數據采集模型,設計了組件式數據采集系統架構,通道是采集系統的核心,主要用來對三類組件進行管理,包括提供組件注冊服務、查詢組件編碼及名稱清單服務、對組件實例化、對組件進行組合、提供通道的開啟與關閉功能。最后實現了組件式數據采集系統,其系統具備組件模塊、通道服務、日志服務、數據發布四大功能。該數據采集系統在項目中的應用實踐表明,可以用配置的形式高效完成物聯網數據的接入和持久化工作,有效提高了設備接入效率,降低了系統運維成本。