楊佳淼 袁藝超 趙聯(lián)昌 夏冬
關(guān)鍵詞:Vue;Spring Boot;數(shù)控機(jī)床;監(jiān)控系統(tǒng)
中圖分類號:TP311.5 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2023)03-0089-04
1 引言
智能制造和工業(yè)4.0的核心是實現(xiàn)制造過程的信息化、網(wǎng)絡(luò)化、智能化,而數(shù)控機(jī)床是智能制造單元以及智能化生產(chǎn)線中的核心設(shè)備[1],其運(yùn)行狀態(tài)的好壞直接影響著產(chǎn)品質(zhì)量和加工效率。對于生產(chǎn)線來說,一臺設(shè)備故障往往影響整個生產(chǎn)線的正常運(yùn)轉(zhuǎn)。數(shù)控機(jī)床作為一種復(fù)雜機(jī)電產(chǎn)品,價格高昂,維修成本高,通過以太網(wǎng)實現(xiàn)對機(jī)床的遠(yuǎn)程監(jiān)控,可以實時掌握機(jī)床的運(yùn)行狀態(tài),以及加工過程中的關(guān)鍵參數(shù)的變化趨勢,當(dāng)機(jī)床發(fā)生故障時可及時告知設(shè)備維護(hù)人員處理機(jī)床發(fā)生的故障,從而提高機(jī)床的使用效率,提升加工產(chǎn)品質(zhì)量[2]。
隨著Web技術(shù)、物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,使得實現(xiàn)多種類不同通信協(xié)議數(shù)控機(jī)床的監(jiān)控成為可能。本文針對市場上使用率較高的西門子、力士樂、華中數(shù)控系統(tǒng),采用目前流行的開發(fā)框架Vue 和SpringBoot,以及第三方組件庫Element UI、Echarts、DataV等,開發(fā)出前后端分離的機(jī)床監(jiān)控系統(tǒng),包括數(shù)據(jù)采集、數(shù)據(jù)存儲、Web用戶操作界面,用戶只需要通過瀏覽器就可實現(xiàn)對系統(tǒng)的訪問。
2 系統(tǒng)功能需求
系統(tǒng)需能實現(xiàn)如下功能。
2.1 權(quán)限管理
系統(tǒng)的使用人員可以分為系統(tǒng)管理員、設(shè)備管理員、設(shè)備維護(hù)人員、生產(chǎn)管理人員等,不同的人員應(yīng)能設(shè)置查看系統(tǒng)中與其自身職責(zé)相關(guān)的功能。授權(quán)的用戶可以通過瀏覽器訪問系統(tǒng)。
2.2 機(jī)床數(shù)據(jù)采集展示功能
需要實時采集機(jī)床運(yùn)行過程中的數(shù)據(jù),能夠靈活設(shè)置需要采集的參數(shù),并對采集到的數(shù)據(jù)進(jìn)行存儲,便于后續(xù)的分析研究。同時系統(tǒng)可以顯示監(jiān)測的數(shù)據(jù)以及趨勢圖、報警記錄及統(tǒng)計報表、機(jī)床效率等。
2.3 故障維修經(jīng)驗的存儲
需建立故障維修經(jīng)驗庫,設(shè)備維護(hù)人員需要把工作過程中習(xí)得的經(jīng)驗進(jìn)行線上存儲。
3 系統(tǒng)功能模塊介紹
機(jī)床監(jiān)控系統(tǒng)主要包括系統(tǒng)管理、基礎(chǔ)數(shù)據(jù)、機(jī)床監(jiān)控、故障診斷、數(shù)據(jù)分析。模塊結(jié)構(gòu)如圖1所示。
3.1 系統(tǒng)管理
由系統(tǒng)管理員對這些模塊的數(shù)據(jù)進(jìn)行初始化,包括錄入使用系統(tǒng)的用戶信息、角色信息、部門信息等,為每個用戶分配角色,對不同的角色劃分不同的功能模塊權(quán)限,使不同類型的管理人員使用與自身職能相對應(yīng)的功能模塊。通過管理員添加并激活的用戶才有權(quán)登錄系統(tǒng)。配置管理用于設(shè)置上傳圖片的路徑。
3.2 基礎(chǔ)數(shù)據(jù)基礎(chǔ)數(shù)據(jù)
包括機(jī)床信息模塊、參數(shù)設(shè)置模塊。機(jī)床信息模塊用于對系統(tǒng)中管理的機(jī)床信息進(jìn)行初始化,包括機(jī)床編號、型號、名稱、IP地址、通信協(xié)議、端口、機(jī)床圖片等,其中通信協(xié)議主要包含OPCUA、OPCDA、Nc-Link、Modbus。在參數(shù)設(shè)置模塊中對每臺機(jī)床需要采集的參數(shù)進(jìn)行靈活設(shè)置。
3.3 機(jī)床監(jiān)控機(jī)床監(jiān)控
包括監(jiān)控中心模塊、事件中心模塊、歷史數(shù)據(jù)查詢模塊。監(jiān)控中心模塊可查看機(jī)床的基本信息、當(dāng)前的加工數(shù)量、機(jī)床當(dāng)前的狀態(tài)以及詳細(xì)的運(yùn)行參數(shù)。事件中心模塊可以記錄機(jī)床開機(jī)、關(guān)機(jī)、故障等事件。歷史數(shù)據(jù)查詢模塊可以查看采集機(jī)床的歷史數(shù)據(jù),并可以將數(shù)據(jù)繪制成曲線圖,從而直觀地查看數(shù)據(jù)的變化趨勢。
3.4 故障診斷
故障診斷包括故障信息模塊、維修信息模塊、故障案例檢索模塊。通過建立故障庫、維修經(jīng)驗庫,設(shè)備維護(hù)人員在遇到自己難以解決的機(jī)床故障時,可以在系統(tǒng)中進(jìn)行查詢,幫助其快速定位問題發(fā)生的原因以及故障的解決辦法,提高工作效率。同時方便設(shè)備維護(hù)人員進(jìn)行經(jīng)驗知識的分享,不會因為人員流動造成維修經(jīng)驗的流失。
3.5 數(shù)據(jù)分析
數(shù)據(jù)分析可以統(tǒng)計機(jī)床OEE以及故障統(tǒng)計報表。通過OEE及故障統(tǒng)計報表,管理人員可以直觀地看出影響生產(chǎn)效率的瓶頸工序,對綜合利用率低以及容易發(fā)生故障的設(shè)備及時進(jìn)行維護(hù)和檢修,從而提高生產(chǎn)效率,降低因停機(jī)造成的損失。
4 系統(tǒng)實現(xiàn)
系統(tǒng)采用B/S架構(gòu),前后端分離技術(shù)進(jìn)行開發(fā),前端采用Vue框架,后端采用Spring Boot框架。
4.1 采用的Vue框架和Spring Boot 框架介紹
Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式的Js框架,只關(guān)注視圖層,采用自底向上增量開發(fā)的設(shè)計,Vue框架采用MVVM模式,實現(xiàn)數(shù)據(jù)的雙向綁定,能將后端傳遞的數(shù)據(jù)轉(zhuǎn)化成所看到的頁面,也能將所看到的頁面轉(zhuǎn)化成后端的數(shù)據(jù)。它與Angular Js、React框架相比,Vue更加簡單,運(yùn)行速度更快,易于與第三方庫整合[3]。
Spring Boot是由Pivotal團(tuán)隊提供的框架,其設(shè)計目的是簡化Spring應(yīng)用的初始搭建以及開發(fā)過程。SpringBoot遵循“約定優(yōu)于配置”的原則,可以極大地簡化Spring配置流程,從而使開發(fā)人員不再需要自定義樣板化的配置,讓開發(fā)人員更加專注于系統(tǒng)業(yè)務(wù)的實現(xiàn)[4]。
4.2 開發(fā)環(huán)境
開發(fā)工具:Eclipse;開發(fā)環(huán)境:Windows7;Web服務(wù)器:Apache-tomcat-8.5.51、JDK 1.8.0_192;數(shù)據(jù)庫:MySQL 5.7.17。
4.3 數(shù)據(jù)采集程序開發(fā)
機(jī)床實時數(shù)據(jù)是由監(jiān)控系統(tǒng)中的數(shù)據(jù)采集程序完成。在Spring Boot 中需要引入OPCUA、OPCDA、Nc-Link、Modbus相關(guān)協(xié)議的jar包,與機(jī)床通信時調(diào)用jar包中對應(yīng)的通信接口函數(shù)。下面以西門子數(shù)控系統(tǒng)的OPCUA通信協(xié)議為例,數(shù)據(jù)采集程序步驟如圖2所示。
進(jìn)行機(jī)床數(shù)據(jù)采集時,首先在系統(tǒng)機(jī)床信息模塊中,手動開啟連接選項,系統(tǒng)才會進(jìn)行機(jī)床連接與數(shù)據(jù)讀取。關(guān)閉連接選項后,系統(tǒng)會斷開連接停止數(shù)據(jù)采集。
建立連接:根據(jù)獲取的機(jī)床信息,通過getEnd?points(String endpointUrl)獲取OPC UA的服務(wù)端節(jié)點(diǎn),設(shè)置OPCUA的連接配置,創(chuàng)建OPCUA 客戶端opcUaClient,然后利用connect().get()進(jìn)行連接。
讀取數(shù)據(jù):調(diào)用read?Values ( double maxAge,TimestampsToReturn time?stampsToReturn, List nodeIds)進(jìn)行數(shù)據(jù)讀取。在調(diào)用該方法前,需要將機(jī)床采集的參數(shù)添加到List中。
斷開連接:調(diào)用dis?connect().get()斷開系統(tǒng)與機(jī)床的連接。
4.4 界面程序開發(fā)
在Vue 中引入Ele?ment UI、Echarts、DataV組件進(jìn)行界面開發(fā),ElementUI 是基于Vue 的一個UI組件庫,該庫中包含了豐富的網(wǎng)頁端組件,不需要開發(fā)人員對常用的按鈕、輸入框、下拉框、表格、樹等組件進(jìn)行二次封裝,只需要對屬性進(jìn)行簡單配置就能滿足使用需求,方便程序員進(jìn)行頁面快速布局和開發(fā),整個UI風(fēng)格簡約、實用,同時極大地提高了開發(fā)者的效率,是一個非常受歡迎的組件庫。Echarts和DataV提供了豐富的折線圖、柱狀圖、餅圖、邊框等數(shù)據(jù)可視化圖表,方便程序開發(fā)人員構(gòu)建大屏數(shù)據(jù)展示頁面,并且兼容當(dāng)前大部分的主流瀏覽器[5]。如圖3 所示,監(jiān)控中心界面可以查看機(jī)床基本信息、當(dāng)前的狀態(tài)以及加工數(shù)量。
通過點(diǎn)擊單臺機(jī)床圖片進(jìn)入到單臺機(jī)床監(jiān)控界面,如圖4所示,可以查看單臺機(jī)床詳細(xì)的運(yùn)行參數(shù),例如主軸轉(zhuǎn)速、主軸倍率、進(jìn)給軸倍率、主軸電流、跟隨誤差等實時數(shù)據(jù)。
如圖5所示,維修信息界面可以查看與機(jī)床故障相對應(yīng)的維修辦法。
4.5 后端程序開發(fā)
后端程序采用三層結(jié)構(gòu)設(shè)計,分為Controller層、Service層、Dao層。Controller層是控制層,負(fù)責(zé)接收前端發(fā)來的http 請求以及參數(shù),調(diào)用Service 層中的方法,并接收方法返回值,傳遞數(shù)據(jù)給前端。Service層是服務(wù)層,主要負(fù)責(zé)處理業(yè)務(wù)邏輯,調(diào)用Dao層中的方法,接收方法返回值,傳遞數(shù)據(jù)給Controller層。Dao層是數(shù)據(jù)持久層,該層負(fù)責(zé)對數(shù)據(jù)庫表進(jìn)行增、刪、改、查操作,返回數(shù)據(jù)給Service層。這使程序結(jié)構(gòu)非常清晰,實現(xiàn)了程序的高度解耦。下面以監(jiān)控中心模塊中獲取機(jī)床信息、狀態(tài)為例。
1) Controller層負(fù)責(zé)接收前端請求,調(diào)用service層getAllList()方法,并將結(jié)果返回給前端
@GetMapping(value="/allList")
public Object getAllList(){
List
getAllList();
return Rets.success(list);
}
2) Service層調(diào)用調(diào)用Dao層getAllList()方法,并將結(jié)果返回上層
public List
return machineInfoRepository.getAllList();
}
3) Dao層負(fù)責(zé)從數(shù)據(jù)庫查詢并將結(jié)果返回給上層
@Query(nativeQuery = true,value = "select mi.id as
id,mi.code as code, "+
"mi.name as name,mi.pictrue as pictrue," +
" mi.ip as ip,mi.isopcua as connect,mi.status as sta?
tus,"+
" mi. process_count as processCount, fi. real_file_
name as img"+
" from machine_info mi LEFT JOIN t_sys_file_info
fi on mi.pictrue=fi.id")
List
4.6 前后端的數(shù)據(jù)交互
前后端交互通過JSON(JavaScript Object Notation)格式的數(shù)據(jù)。JSON是一種輕量級的數(shù)據(jù)交換格式,完全獨(dú)立于編程語言,結(jié)構(gòu)簡潔,數(shù)據(jù)存儲空間小、數(shù)據(jù)冗余少且傳輸速度快[6],可以在不同語言之間進(jìn)行數(shù)據(jù)交換。監(jiān)控中心界面向后端發(fā)送請求,后端返回給前端機(jī)床信息、機(jī)床圖片信息、加工數(shù)量及當(dāng)前狀態(tài)等JSON格式的數(shù)據(jù),最終由前端程序接收并對數(shù)據(jù)進(jìn)行展示。如圖6所示,通過瀏覽器的開發(fā)者工具查看后端返回的JSON格式數(shù)據(jù)。
5 結(jié)束語
1) 本文提出基于Vue+Spring Boot的數(shù)控機(jī)床監(jiān)控系統(tǒng),為機(jī)床監(jiān)控系統(tǒng)的研發(fā)提供了一套切實可行的方法。系統(tǒng)上線后,經(jīng)現(xiàn)場驗證,運(yùn)行穩(wěn)定可靠。
2) 系統(tǒng)實現(xiàn)了OPCUA、OPCDA、Nc-Link、Modbus協(xié)議的通信,進(jìn)行此類設(shè)備通信時,無需再做二次開發(fā)。連接新設(shè)備時,只需通過機(jī)床信息模塊和參數(shù)設(shè)置模塊手動錄入相關(guān)信息就可實現(xiàn)設(shè)備數(shù)據(jù)采集、存儲、展示。
3) 該系統(tǒng)實現(xiàn)對機(jī)床數(shù)據(jù)的實時采集存儲,為將來實現(xiàn)設(shè)備的預(yù)測性維護(hù)提供數(shù)據(jù)支撐。
4) 采用前后端分離的模式開發(fā)機(jī)床監(jiān)控系統(tǒng),前端界面和后端程序可同步開發(fā),提升了系統(tǒng)開發(fā)效率,縮短了系統(tǒng)開發(fā)周期。后端采用三層結(jié)構(gòu)設(shè)計有利于系統(tǒng)的更新和維護(hù)工作。