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