李程文
(佛山職業(yè)技術(shù)學(xué)院,廣東 佛山 528137)
工業(yè)生產(chǎn)設(shè)備數(shù)據(jù)采集、處理和分析系統(tǒng)利用泛在感知技術(shù)對(duì)各種工業(yè)生產(chǎn)設(shè)備進(jìn)行實(shí)時(shí)高效采集和云端匯聚,并通過(guò)對(duì)數(shù)據(jù)的實(shí)時(shí)處理分析和預(yù)測(cè)設(shè)備運(yùn)行狀態(tài)。傳統(tǒng)制造企業(yè)判斷生產(chǎn)設(shè)備是否會(huì)發(fā)生故障,主要憑借設(shè)備維護(hù)人員長(zhǎng)時(shí)間的經(jīng)驗(yàn)積累和對(duì)生產(chǎn)設(shè)備的逐一排查,人力成本高且滯后。伴隨著現(xiàn)代工業(yè)突飛猛進(jìn)的發(fā)展,工業(yè)設(shè)備也向著高智能、大體型、分布式等方向快速發(fā)展,功能越來(lái)越強(qiáng),設(shè)備結(jié)構(gòu)也愈加復(fù)雜,設(shè)備發(fā)生故障的概率較之前大幅提高,設(shè)備故障的信息數(shù)據(jù)呈指數(shù)型增長(zhǎng)。人工已經(jīng)無(wú)法負(fù)荷設(shè)備產(chǎn)生的海量數(shù)據(jù),無(wú)法完成正確、有效的故障分析[1-3]。
此外,工業(yè)生產(chǎn)設(shè)備結(jié)構(gòu)越復(fù)雜,各部分之間的耦合性就越強(qiáng),故障與故障相互影響的概率就越大,故障機(jī)理變得越復(fù)雜。因此,對(duì)工業(yè)生產(chǎn)設(shè)備所產(chǎn)生的海量信息進(jìn)行實(shí)時(shí)分析就顯得尤為重要,這有助于確定故障發(fā)生的頻率、位置和原因,對(duì)故障的實(shí)時(shí)感知、實(shí)時(shí)預(yù)測(cè)和實(shí)時(shí)處理,從而提高設(shè)備日常維護(hù)效率,減少維護(hù)成本[4-6]。
本系統(tǒng)基于Spark實(shí)時(shí)處理生態(tài)圈框架,實(shí)現(xiàn)了對(duì)工業(yè)生產(chǎn)設(shè)備數(shù)據(jù)的實(shí)時(shí)采集、分析和挖掘,實(shí)現(xiàn)了設(shè)備狀態(tài)在線(xiàn)監(jiān)測(cè)與故障預(yù)警。通過(guò)本系統(tǒng),設(shè)備管理維護(hù)人員能夠?qū)崟r(shí)掌握設(shè)備運(yùn)行狀態(tài)數(shù)據(jù)和整體變化趨勢(shì),做到事前預(yù)防、事中管控、事后檢驗(yàn),在每臺(tái)設(shè)備的工作周期內(nèi),極大地延長(zhǎng)設(shè)備的安全運(yùn)行時(shí)間和縮短設(shè)備的維護(hù)時(shí)間,從而減少生產(chǎn)設(shè)備的突發(fā)性停機(jī)與事故,減少生產(chǎn)設(shè)備運(yùn)行和維護(hù)成本,幫助企業(yè)實(shí)現(xiàn)生產(chǎn)設(shè)備的高效、實(shí)時(shí)、智能管理,提高企業(yè)的生產(chǎn)效益[7-9]。
設(shè)備狀態(tài)檢測(cè)和故障預(yù)警系統(tǒng)的一般業(yè)務(wù)流程為:獲取和記錄數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行抽取、清洗和注釋?zhuān)缓蠹?、聚集或表達(dá)相關(guān)數(shù)據(jù),再對(duì)數(shù)據(jù)進(jìn)行分析建模,最后對(duì)數(shù)據(jù)進(jìn)行解釋和應(yīng)用。根據(jù)這個(gè)過(guò)程,設(shè)計(jì)通用性設(shè)備狀態(tài)數(shù)據(jù)實(shí)時(shí)處理過(guò)程如圖1所示,包括設(shè)備狀態(tài)數(shù)據(jù)采集、設(shè)備狀態(tài)數(shù)據(jù)預(yù)處理、設(shè)備狀態(tài)數(shù)據(jù)分析和設(shè)備狀態(tài)數(shù)據(jù)可視化4個(gè)步驟。
圖1 設(shè)備狀態(tài)數(shù)據(jù)處理流程
設(shè)備狀態(tài)數(shù)據(jù)一般來(lái)源于各種傳感器和各種自動(dòng)化系統(tǒng)數(shù)據(jù),主要為結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)。本系統(tǒng)通過(guò)Flume框架對(duì)設(shè)備運(yùn)行狀態(tài)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集。
在原始數(shù)據(jù)中,通常存在臟數(shù)據(jù),主要包括數(shù)據(jù)缺失、數(shù)據(jù)噪聲、數(shù)據(jù)冗余、數(shù)據(jù)集不均衡等。因此,相關(guān)人員需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。預(yù)處理的方式主要包括數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)描述、特征選擇(組合)、特征抽取等。
通過(guò)大數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等算法建立設(shè)備健康指數(shù)模型并及時(shí)進(jìn)行設(shè)備預(yù)警,可實(shí)現(xiàn)整條生產(chǎn)線(xiàn)設(shè)備的故障診斷分析與預(yù)測(cè)。
管理人員可通過(guò)可視化系統(tǒng)實(shí)時(shí)監(jiān)控設(shè)備、觀(guān)察設(shè)備運(yùn)行狀態(tài),可視化系統(tǒng)能夠顯示報(bào)警信息,同時(shí)支持設(shè)備狀態(tài)在線(xiàn)檢測(cè)、實(shí)時(shí)分析等功能。
基于Spark的工業(yè)數(shù)據(jù)實(shí)時(shí)處理平臺(tái)從實(shí)際業(yè)務(wù)出發(fā),基于Spark實(shí)時(shí)處理生態(tài)圈框架,解決數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)可視化問(wèn)題,可應(yīng)用于工業(yè)大數(shù)據(jù)、工業(yè)互聯(lián)網(wǎng)及工業(yè)數(shù)據(jù)實(shí)時(shí)處理等領(lǐng)域。其系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 工業(yè)數(shù)據(jù)實(shí)時(shí)處理平臺(tái)結(jié)構(gòu)
平臺(tái)采用2臺(tái)搭載Centos系統(tǒng)的服務(wù)器作為主節(jié)點(diǎn),3臺(tái)搭載Centos系統(tǒng)的服務(wù)器作為計(jì)算節(jié)點(diǎn)。部署的組件為JDK11、Scala2.12、Redis5.0.8、Hadoop3.2.2、Spark3.1.3、Flume1.9.0和Kafka2.12。
在數(shù)據(jù)采集環(huán)節(jié)使用Flume框架采集日志數(shù)據(jù),F(xiàn)lume是由Sink,Source和Channel三部分組成。首先,通過(guò)設(shè)置Source類(lèi)型為“file”并使用Linux的“tail -F”命令來(lái)監(jiān)控設(shè)備狀態(tài)日志文件,從而監(jiān)控采集設(shè)備狀態(tài)數(shù)據(jù)的變化,如圖3所示。然后,通過(guò)設(shè)置Sink的類(lèi)型為“Kafka”,并設(shè)置Kafka的topic實(shí)現(xiàn)將變化的結(jié)果實(shí)時(shí)寫(xiě)入Kafka。最后,配置Channel將Source端收集到的數(shù)據(jù)傳輸?shù)絊ink中。
圖3 開(kāi)啟設(shè)備狀態(tài)數(shù)據(jù)實(shí)時(shí)采集
本系統(tǒng)采用SparkStreaming實(shí)時(shí)讀取Kafka中的數(shù)據(jù)然后進(jìn)行處理,創(chuàng)建DStream的方式為Direct直接連接方式,該方式具有高并行能力和速度可以自行控制等特點(diǎn)。第一步創(chuàng)建SparkSession并設(shè)置相關(guān)參數(shù);第二步配置Zookeeper保證系統(tǒng)的一致性與穩(wěn)定性;第三步配置Kafka,此處Topic需要和Flume job文件中的Topic一致,并綁定Kafka的Brokers。配置完成后,每當(dāng)Flume采集到數(shù)據(jù),同時(shí)Kafka成功發(fā)布訂閱,Spark既可通過(guò)SparkStreaming實(shí)時(shí)讀取設(shè)備狀態(tài)數(shù)據(jù)。同時(shí),Spark提供了豐富的算子可以對(duì)獲取的實(shí)時(shí)數(shù)據(jù)進(jìn)行處理,比如當(dāng)實(shí)時(shí)傳入的數(shù)據(jù)中值為“null”的數(shù)據(jù)需要替換為“0”,則可以采用filter算子進(jìn)行處理。
Spark的機(jī)器學(xué)習(xí)庫(kù)MLlib,旨在簡(jiǎn)化機(jī)器學(xué)習(xí)的工程實(shí)踐工作,并易于擴(kuò)展到更大規(guī)模的運(yùn)算。MLlib由一些通用的學(xué)習(xí)算法和工具組成,包括分類(lèi)、回歸、聚類(lèi)、協(xié)同過(guò)濾、降維等,同時(shí)還包括底層的優(yōu)化原語(yǔ)和高層的管道API。本系統(tǒng)使用Spark MLlib對(duì)上一步預(yù)處理后的數(shù)據(jù)進(jìn)行分析,并將處理的結(jié)果存儲(chǔ)入Redis數(shù)據(jù)庫(kù)。
數(shù)據(jù)可視化系統(tǒng)采用B/S架構(gòu),前端采用HTML,CSS和Vue等技術(shù),后臺(tái)采用Sprintboot框架,數(shù)據(jù)可視化話(huà)組件采用ECharts。當(dāng)數(shù)據(jù)處理完成后,本研究使用Sprintboot讀取Redis數(shù)據(jù),使用ECharts,HTML和Vue等前端工具實(shí)現(xiàn)可視化。
本研究采用Spark實(shí)時(shí)處理生態(tài)圈框架中的Flume,Kafka,Spark和相關(guān)數(shù)據(jù)庫(kù)及前后端軟件實(shí)現(xiàn)了基于Spark的設(shè)備狀態(tài)數(shù)據(jù)實(shí)時(shí)處理系統(tǒng),從而實(shí)現(xiàn)對(duì)工業(yè)設(shè)備的狀態(tài)實(shí)時(shí)監(jiān)測(cè),設(shè)備運(yùn)行數(shù)據(jù)實(shí)時(shí)采集、分析和預(yù)測(cè)。本系統(tǒng)的成功運(yùn)行,幫助企業(yè)對(duì)生產(chǎn)設(shè)備運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè),從而減少生產(chǎn)設(shè)備的突發(fā)性停機(jī)與事故,減少生產(chǎn)設(shè)備運(yùn)行和維護(hù)成本,提高了企業(yè)的生產(chǎn)效益。
無(wú)線(xiàn)互聯(lián)科技2022年24期