姚新景, 張洪良, 張登攀, 王 宇
(河南理工大學(xué) 機(jī)械與動力工程學(xué)院,河南 焦作 454000)
齒輪是重要的基礎(chǔ)傳動零件,廣泛應(yīng)用于機(jī)器設(shè)備、儀器儀表的運(yùn)動傳遞、負(fù)載傳遞和精密分度。在齒輪智能制造的設(shè)計(jì)、加工及在役運(yùn)行的“全生命周期”中,齒輪測量是齒輪高效、高精度生產(chǎn)和可靠運(yùn)行的保障[1]。從齒輪測量技術(shù)本身的發(fā)展來看:一方面,齒輪數(shù)據(jù)的獲取能力不斷增強(qiáng);另一方面,測量數(shù)據(jù)的應(yīng)用方式也在發(fā)生改變,大量的測量數(shù)據(jù)將實(shí)現(xiàn)云端分析。
傳統(tǒng)的測量模式不能滿足測量系統(tǒng)向技術(shù)集成化、人員協(xié)作化、設(shè)備集成化以及信息和數(shù)據(jù)共享化方向發(fā)展的需求,此外,制造系統(tǒng)中的網(wǎng)絡(luò)化測量逐步形成以自動化測量技術(shù)、網(wǎng)絡(luò)通信技術(shù)以及測量體系應(yīng)用軟件三位一體的分布式測量系統(tǒng)。網(wǎng)格制造模式推動了制造資源和測量應(yīng)用在網(wǎng)絡(luò)分布的虛擬組織中的共享和協(xié)作。其中,有許多有影響的基于測量技術(shù)網(wǎng)格應(yīng)用的研究項(xiàng)目,Spencer B等[2]通過協(xié)作測量支持科學(xué)家協(xié)作研究地震對現(xiàn)代社會基礎(chǔ)設(shè)施-建筑物、道路、橋梁等帶來的后果和影響, Jackson T等[3]實(shí)現(xiàn)飛行器引擎在線診斷和數(shù)據(jù)共享,Mcmullen D等[4]實(shí)現(xiàn)了多個實(shí)驗(yàn)室的X射線設(shè)備的互聯(lián)。數(shù)據(jù)交互共享方面,石照耀等[5-6]建立了齒輪數(shù)據(jù)交互接口的標(biāo)準(zhǔn)規(guī)范,并開發(fā)了相應(yīng)的交互接口。但是,由于大多數(shù)的齒輪測量系統(tǒng)以獨(dú)立的形式分布,不同測量系統(tǒng)中的信息是異構(gòu)的、不兼容的,因此上述方法并不完全滿足測量系統(tǒng)服務(wù)集成和數(shù)據(jù)共享的需求。
為解決上述問題,本文采用微服務(wù)架構(gòu)技術(shù),結(jié)合云計(jì)算技術(shù),開發(fā)齒輪云測量終端系統(tǒng)。構(gòu)建一個內(nèi)部資源透明、外部資源集成和協(xié)同提供服務(wù)的終端系統(tǒng),實(shí)現(xiàn)了對不同地方的測量數(shù)據(jù)的采集、存儲、分析,以及對測量指標(biāo)中各項(xiàng)誤差參數(shù)的管理與可視化展示。
齒輪測量過程遵循的基本環(huán)節(jié)為數(shù)據(jù)獲取、數(shù)據(jù)處理、傳輸、存儲、顯示以及齒輪測量結(jié)果對齒輪制造過程的閉環(huán)反饋,齒輪云測量所匯聚的測量資源兼具服務(wù)提供和服務(wù)應(yīng)用。齒輪云測量終端系統(tǒng)以開放的方式通過智能感知和云端來接入齒輪測量設(shè)備、測量標(biāo)準(zhǔn)規(guī)范、齒輪測量大數(shù)據(jù)平臺、測量軟件、齒輪加工及原位測量系統(tǒng)等資源。齒輪云測量終端系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 齒輪云測量終端系統(tǒng)結(jié)構(gòu)
齒輪云測量終端系統(tǒng)主要圍繞用戶在齒輪測量過程中的需求所進(jìn)行的一系列數(shù)據(jù)信息處理,數(shù)據(jù)采集通道的搭建是整個終端系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)集成的關(guān)鍵和核心。數(shù)據(jù)集成是將企業(yè)或機(jī)構(gòu)中分散、零亂、標(biāo)準(zhǔn)不統(tǒng)一的異構(gòu)數(shù)據(jù)進(jìn)行采集、統(tǒng)一存儲的過程,為不同地方的源數(shù)據(jù)入云和解決“數(shù)據(jù)孤島”問題提供了一個方法。
測量系統(tǒng)中的數(shù)據(jù)通過數(shù)據(jù)采集通道,集成到齒輪云測量平臺中,為云平臺中的服務(wù)提供支持。模塊化開發(fā)的齒輪云測量平臺通常需要將復(fù)雜的業(yè)務(wù)邏輯抽象為較小的、可復(fù)用的服務(wù),并通過一定方式將微服務(wù)組織起來。終端系統(tǒng)開發(fā)完畢后,可持續(xù)交付組件到齒輪云測量平臺中,同時需要在服務(wù)注冊中心進(jìn)行注冊。服務(wù)調(diào)用者通過服務(wù)網(wǎng)關(guān)來調(diào)用平臺中的服務(wù)。
測量系統(tǒng)中的數(shù)據(jù)通過數(shù)據(jù)采集通道,集成到齒輪云測量平臺中,為云平臺中的服務(wù)提供支持。在齒輪云測量終端系統(tǒng)數(shù)據(jù)集成的過程中,需要對原始數(shù)據(jù)進(jìn)行抽取-轉(zhuǎn)換-加載(Extract-Transform-Load,ETL)處理,為用戶提供高質(zhì)量的數(shù)據(jù)服務(wù)。
齒輪測量過程中遵循的數(shù)據(jù)分析流程一般為數(shù)據(jù)獲取、數(shù)據(jù)處理、傳輸、存儲、顯示以及反饋。數(shù)據(jù)在云平臺中的流動也是按照數(shù)據(jù)采集、數(shù)據(jù)處理、傳輸、存儲、可視化和數(shù)據(jù)應(yīng)用等。終端系統(tǒng)通過以下幾種途徑進(jìn)行數(shù)據(jù)的采集:
1)從指定網(wǎng)絡(luò)端口,進(jìn)行實(shí)時監(jiān)控新增數(shù)據(jù),多用于日志類數(shù)據(jù)的聚合、移動以及集中式數(shù)據(jù)存儲。
2)通過通信協(xié)議進(jìn)行數(shù)據(jù)的采集,測量現(xiàn)場中的儀器、傳感器通過客戶端協(xié)議接入到大數(shù)據(jù)云平臺,進(jìn)而完成數(shù)據(jù)采集傳輸。
3)對于數(shù)據(jù)文件,終端用戶以文件上傳的方式實(shí)現(xiàn)云端采集功能。
4)對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù),云平臺通過Sqoop組件進(jìn)行數(shù)據(jù)的采集。
系統(tǒng)進(jìn)行數(shù)據(jù)采集時,云平臺數(shù)據(jù)流程如圖2所示。
圖2 云平臺數(shù)據(jù)流程
齒輪領(lǐng)域因其零部件形狀尺寸復(fù)雜、參數(shù)誤差種類繁多以及各種參數(shù)彼此互有聯(lián)系卻各不相同等特征,會在齒輪設(shè)計(jì)、加工、測量和在役的過程中產(chǎn)生大量具有復(fù)雜關(guān)聯(lián)關(guān)系和具有多源異構(gòu)特性的數(shù)據(jù)。使用“名稱/值”對的JSON文檔結(jié)構(gòu)靈活的定義齒輪數(shù)據(jù)結(jié)構(gòu),將維度信息中的表結(jié)構(gòu)轉(zhuǎn)換為基于JSON的文檔結(jié)構(gòu),將事件包含的維度信息通過嵌套文檔的方式保存[7]。例如表一所示的結(jié)構(gòu)化表數(shù)據(jù)可以轉(zhuǎn)換為JSON格式數(shù)據(jù),結(jié)果如圖3所示。
表1 關(guān)系型數(shù)據(jù)示例
圖3 關(guān)系型數(shù)據(jù)對應(yīng)的JSON格式
齒輪云測量平臺采集到的數(shù)據(jù)主要有業(yè)務(wù)數(shù)據(jù)和測量行為數(shù)據(jù),數(shù)據(jù)倉庫以此進(jìn)行一系列的加工處理。本文使用hive將云平臺獲取的數(shù)據(jù)文件映射為數(shù)據(jù)倉庫中的表,并根據(jù)數(shù)據(jù)結(jié)構(gòu)和粒度將數(shù)據(jù)倉庫分為原始數(shù)據(jù)層、明細(xì)數(shù)據(jù)層、服務(wù)數(shù)據(jù)層等,應(yīng)用程序參照需求在不同數(shù)據(jù)層進(jìn)行數(shù)據(jù)處理。
當(dāng)云平臺從系統(tǒng)文件中采集到數(shù)據(jù)后,會在數(shù)據(jù)倉庫的原始數(shù)據(jù)層創(chuàng)建表,測量行為數(shù)據(jù)表中包含具體信息的字段為String類型,原始數(shù)據(jù)層中數(shù)據(jù)表信息字段的數(shù)據(jù)內(nèi)容結(jié)構(gòu)如圖4所示。
圖4 原始數(shù)據(jù)層內(nèi)容字段的數(shù)據(jù)結(jié)構(gòu)
在采集到的測量行為數(shù)據(jù)中,不同測量指標(biāo)所對應(yīng)的字段內(nèi)容不同,例如齒輪累計(jì)偏差指標(biāo)、齒廓偏差指標(biāo)、徑向跳動指標(biāo)等不同測量指標(biāo)的參數(shù)不同,對應(yīng)數(shù)據(jù)表中的字段也不同。對此,數(shù)據(jù)倉庫通過自定義UDF(user defined function)函數(shù)和自定義UDTF(user defined table-generating function)函數(shù)對測量行為數(shù)據(jù)進(jìn)行解析。
進(jìn)行數(shù)據(jù)解析前需要對原始數(shù)據(jù)層的數(shù)據(jù)表進(jìn)行整體的分析,測量行為數(shù)據(jù)表中包含測量指標(biāo)詳情的字段是String類型,其數(shù)據(jù)結(jié)構(gòu)如圖4所示,由時間戳、分隔符“^”和JSON數(shù)據(jù)組成。JSON數(shù)據(jù)由JSON對象和JSON數(shù)組組成,內(nèi)容主要由描述齒輪基本信息的基礎(chǔ)公共字段,和包含不同測量指標(biāo)的功能字段組成,功能字段為JSON數(shù)組。
自定義UDF函數(shù)解析基礎(chǔ)公共字段,通過自定義Java類BaseFieldUDF中的方法實(shí)現(xiàn)。方法的輸入?yún)?shù)為包含測量指標(biāo)詳情的String字符串和基礎(chǔ)公共字段中鍵值對中的key,將傳入的字符串用“^”切割,并通過程序中的判斷語句對傳入的數(shù)據(jù)做簡單的數(shù)據(jù)清洗,去除空json或結(jié)構(gòu)不完整的字段,再取出時間戳和json數(shù)據(jù)。根據(jù)切割后獲取到的json數(shù)據(jù),創(chuàng)建一個JSONObject對象,根據(jù)key值“base”得到基礎(chǔ)公共字段的json對象baseJson,循環(huán)遍歷基礎(chǔ)公共字段中的key向baseJson中取值,從而把基礎(chǔ)公共字段的值完整的解析出來。
自定義UDTF函數(shù)基于前面UDF函數(shù),在原來的json有一個初步的解析之后,對不同的測量指標(biāo)數(shù)據(jù)進(jìn)行解析。自定義UDTF函數(shù)類FuncJsonUDTF,需要繼承通用抽象類GenericUDTF,重寫initialize()、process()和close()等方法。initialize()方法中指定輸出參數(shù)的名稱和參數(shù)類型:func_name,func_json。兩個都是string類型。當(dāng)沒有數(shù)據(jù)需要處理的時候會調(diào)用close()方法,關(guān)閉資源。process()方法中輸入一條記錄,輸出若干條結(jié)果,輸出結(jié)果的數(shù)量取決于測量指標(biāo)詳情部分的數(shù)組所包含的測量指標(biāo)個數(shù)。
基于云平臺的齒輪云測量終端系統(tǒng)的信息交互本質(zhì)上是數(shù)據(jù)的集成與交換,在基于云平臺的數(shù)據(jù)集成的過程中,機(jī)構(gòu)i的業(yè)務(wù)j的源數(shù)據(jù)信息定義為固定長度的元組:
TSi,j_tuple=(TStype,TSname,TSTable,TSField,TSFieldT,TSExtend ),其中TSi,j_tuple表示機(jī)構(gòu)i的業(yè)務(wù)j的源數(shù)據(jù)信息;TStype存放業(yè)務(wù)數(shù)據(jù)庫類型,例如hive、mysql、hbase、mongodb等;TSname存放數(shù)據(jù)庫名;TSTable存放數(shù)據(jù)庫表名;TSField存放數(shù)據(jù)庫表的字段名;TSFieldT存放數(shù)據(jù)庫表的字段類型;TSExtend存放備注信息。
云平臺上集成到目的地中的數(shù)據(jù)信息定義模型與源數(shù)據(jù)信息定義模型相似,源數(shù)據(jù)與目的地?cái)?shù)據(jù)的對應(yīng)關(guān)系為:
Transfer={TSi,j_tuple,TDi,j_tuple,RuleTSi,j →TDi,j},其中TDi,j表示目的地?cái)?shù)據(jù)信息;RuleTSi,j →TDi,j表示源數(shù)據(jù)信息向目的地?cái)?shù)據(jù)轉(zhuǎn)換的規(guī)則。上述過程對應(yīng)云平臺數(shù)據(jù)集成模型如圖5所示。
圖5 云平臺數(shù)據(jù)集成
齒輪云測量終端系統(tǒng)包括進(jìn)行數(shù)據(jù)交換的齒輪測量云終端、齒輪測量服務(wù)系統(tǒng)和齒輪測量云平臺。
齒輪測量云終端為終端用戶提供齒輪測量云檢索、齒輪信息數(shù)據(jù)云存儲、測量數(shù)據(jù)處理和測量結(jié)果的可視化表征等服務(wù),基于瀏覽器或其他應(yīng)用程序,調(diào)用統(tǒng)一的應(yīng)用服務(wù)接口。
齒輪測量云平臺主要實(shí)現(xiàn)數(shù)據(jù)的集成功能,對異構(gòu)數(shù)據(jù)源進(jìn)行統(tǒng)一的管理,完成數(shù)據(jù)的共享。云平臺提供的功能服務(wù):數(shù)據(jù)傳輸、應(yīng)用中間件、分布式數(shù)據(jù)存儲、數(shù)據(jù)中心、大數(shù)據(jù)平臺、ETL、大數(shù)據(jù)并行計(jì)算。
齒輪測量服務(wù)系統(tǒng)主要負(fù)責(zé)系統(tǒng)業(yè)務(wù)功能實(shí)現(xiàn)和服務(wù)的組合,采用微服務(wù)架構(gòu),服務(wù)系統(tǒng)與指定的信息源進(jìn)行連接及數(shù)據(jù)交換,并對從指定信息源獲取的齒輪測量信息進(jìn)行數(shù)據(jù)封裝,接著發(fā)送到與之對應(yīng)的數(shù)據(jù)庫和齒輪測量云終端。此外,把從齒輪測量云終端獲取的齒輪綜合評價(jià)結(jié)果保存到對應(yīng)的齒輪測量數(shù)據(jù)庫中;其中,齒輪測量服務(wù)系統(tǒng)包括服務(wù)接口模塊、齒輪測量數(shù)據(jù)管理模塊、測量數(shù)據(jù)封裝模塊和測量數(shù)據(jù)發(fā)送模塊等。
齒輪云測量終端系統(tǒng)開發(fā)過程包括明確各環(huán)節(jié)用戶需求、理清功能原理和功能模塊設(shè)計(jì)思路、整體結(jié)構(gòu)規(guī)劃、標(biāo)準(zhǔn)服務(wù)模塊設(shè)計(jì)、模塊接口定義和模塊化服務(wù)平臺的構(gòu)建等,服務(wù)平臺的模塊化開發(fā)流程如圖6所示。
圖6 齒輪云測量終端系統(tǒng)開發(fā)流程
1)明確各環(huán)節(jié)用戶需求,面向不同用戶和不同服務(wù)場景。
2)理清功能原理和功能模塊設(shè)計(jì)思路,從可裝配、可重用性、一致性等特性來選擇對應(yīng)的功能原理。
3)整體結(jié)構(gòu)規(guī)劃,在盡可能少的結(jié)構(gòu)模塊的情況下,提供盡可能多的服務(wù)種類。
4)標(biāo)準(zhǔn)服務(wù)模塊設(shè)計(jì),抽象出可重用模塊,減輕系統(tǒng)模塊管理難度。
5)模塊接口定義,把不同的結(jié)構(gòu)模塊串聯(lián)起來,使之成為一個柔性組合。
6)模塊化服務(wù)平臺構(gòu)建,建立模塊間的關(guān)系,搭建一個可配置的服務(wù)平臺。
齒輪云測量終端系統(tǒng)后臺代碼主要采用Java語言編寫,通過Spring Boot框架和Spring Cloud技術(shù)進(jìn)行服務(wù)的開發(fā)和管理[8],數(shù)據(jù)持久層使用MyBatis技術(shù)將Java的POJO和MySQL中的數(shù)據(jù)表進(jìn)行映射。利用Vue.js框架進(jìn)行頁面的開發(fā)。使用Hadoop來進(jìn)行云計(jì)算平臺的搭建[9-10],云平臺中Hadoop集群完全分布式網(wǎng)絡(luò)拓?fù)鋱D如圖7所示。
圖7 云平臺中Hadoop集群完全分布式網(wǎng)絡(luò)拓?fù)鋱D
齒輪云測量終端系統(tǒng)應(yīng)用程序的核心業(yè)務(wù)由多個微服務(wù)構(gòu)成,在系統(tǒng)交互頁面中可聚合不同數(shù)量的微服務(wù),后臺服務(wù)利用網(wǎng)關(guān)對外提供接口以便服務(wù)的調(diào)用[11]。
系統(tǒng)中用戶對頁面內(nèi)容的操作和訪問權(quán)限由用戶角色關(guān)系以及角色菜單關(guān)系控制,系統(tǒng)管理員可對用戶權(quán)限進(jìn)行修改,用戶登錄后可以獲取接入云平臺的齒輪測量設(shè)備信息、傳感器信息、齒輪精度參數(shù)、測量指標(biāo)以及國際或國家齒輪測量評價(jià)標(biāo)準(zhǔn),同時可進(jìn)行云平臺中資源的上傳與下載等一系列操作。
對于系統(tǒng)已經(jīng)授權(quán)的用戶而言,可以通過資源管理服務(wù)查看并管理相關(guān)的系統(tǒng)資源信息。主要包括系統(tǒng)中的設(shè)備資源、傳感器采集到的數(shù)據(jù)資源,用戶可以通過終端頁面對這些設(shè)備資源信息進(jìn)行查看和編輯,如設(shè)備的名稱、編號、對應(yīng)的狀態(tài)。
測量數(shù)據(jù)集成管理服務(wù)是齒輪云測量終端系統(tǒng)的核心功能模塊,系統(tǒng)需要將云平臺數(shù)據(jù)采集通道中獲取的數(shù)據(jù)匯聚起來,分析處理后保存在數(shù)據(jù)庫中。此外系統(tǒng)為用戶提供指定時間段的實(shí)測數(shù)據(jù)查詢、誤差曲線繪制、數(shù)據(jù)文件上傳和下載等服務(wù)。
系統(tǒng)根據(jù)用戶給定的檢索條件,對其進(jìn)行關(guān)鍵詞解析,通過倒排索引等技術(shù)在云數(shù)據(jù)中心相應(yīng)的數(shù)據(jù)庫中進(jìn)行資源過濾,最后按照一定的順序?qū)z索到的結(jié)果渲染到Web頁面上。
測量人員可以在齒輪云測量終端系統(tǒng)中通過瀏覽器調(diào)用相應(yīng)的服務(wù)。圖8為齒輪云測量終端系統(tǒng)數(shù)據(jù)中心前端界面。圖9為齒輪云測量平臺數(shù)據(jù)集成中的數(shù)據(jù)管理服務(wù)界面。圖10為測量指標(biāo)分析。
圖8 齒輪云測量終端系統(tǒng)數(shù)據(jù)中心
圖9 齒輪云測量終端系統(tǒng)數(shù)據(jù)管理服務(wù)
圖10 測量指標(biāo)分析
本文針對齒輪測量系統(tǒng)資源有限、分散、獨(dú)立,無法動態(tài)耦合互聯(lián)網(wǎng)平臺及測量資源,齒輪測量數(shù)據(jù)的異構(gòu)性以及數(shù)據(jù)孤島等問題,開發(fā)了齒輪云測量終端系統(tǒng)。該系統(tǒng)通過云平臺從測量現(xiàn)場或系統(tǒng)文件采集到數(shù)據(jù)后,先對數(shù)據(jù)做簡單的清洗、規(guī)整,其次利用數(shù)據(jù)倉庫中的自定義函數(shù)對數(shù)據(jù)進(jìn)行解析轉(zhuǎn)換,解析出各種測量指標(biāo),最后將數(shù)據(jù)統(tǒng)一存放在云數(shù)據(jù)中心中,供系統(tǒng)服務(wù)使用。本文為齒輪及族系協(xié)作測量和信息交流提供了技術(shù)支持和設(shè)計(jì)方案,提高了齒輪測量的數(shù)字化水平。