金應威 汪木蘭 周義皓 周明虎 李麗穎



摘要:數控機床發生故障可能會導致零件報廢和生產停滯,給制造企業造成經濟損失。為了實現高端數控機床全生命周期接近零故障運行,不至于出現停機事故,基于模型—視圖—視圖模型(Model-View-ViewModel,MVVM)架構開發了數控機床遠程數據采集軟件系統,并將運行狀態數據上傳云平臺,以供分析統計和存儲回溯,從而監測數控機床的健康狀態,甚至可以提前預報故障隱患。通過德西MVC-L640 數控機床驗證,遠程采集數據與FANUC 系統內部存儲一致,說明設計軟件達到了預期目標。
關鍵詞:數控機床;數據采集;MVVM 架構
中圖分類號:TP311.52;TP274.2 文獻標識碼:A
0 引言
采用傳統故障診斷技術對復雜的高端數控機床等制造設備進行診斷和維修,其難點在于故障過程往往不能復現,這會影響診斷速度和修復時間,從而導致維修成本增加。通過充分利用數控系統的二次開發功能,實現對數控機床設備進行實時監控、狀態采集、數據分析和結果存儲等,滿足生產廠家遠程監測機床運行狀態的需求,甚至提前對故障隱患進行報警,極大簡化了維修流程[1]。
本文設計的數控機床遠程數據采集軟件系統以德西MVC-L640 為應用對象, 該機床裝配有FANUC 0i-MF 系統,具有高速網絡接口,數據傳輸速率達到100 Mb/s。基于模型—視圖—視圖模型(Model-View-ViewModel,MVVM)架構開發的數控機床遠程數據采集軟件系統在該架構下的代碼結構清晰,可維護性好,便于后期升級,提高開發效率。該系統可以實現遠程狀態監測、數據采集和傳輸、運行數據可視化、結果存儲和故障報警等功能,在高效生產、健康管理、售后維護等方面為數控機床提供有力支持。
1 系統設計
1.1 系統總體設計
為了實現數據可視化、遠程監測等功能,數控機床遠程數據采集軟件系統采用3 層架構設計,分別為提供數據的物理設備層、實現業務邏輯處理的軟件層與遠程監測的云服務平臺層。該系統在本地端進行機床狀態數據的采集和展示,同時通過消息隊列遙測傳輸(message queuing telemetry transport,MQTT)協議上傳至云服務平臺,以實現遠程數據實時監控,系統架構如圖1 所示。
為了使數控機床遠程數據采集軟件具有易開發、可維護、高內聚低耦合等特點,需要對軟件整體進行詳細設計。該軟件最終實現本地與云平臺同步實時監測數控機床狀態的功能,因此系統采用客戶機/ 服務器(client/server)的架構設計。
在這種結構中,通常由專業工作站或高性能個人計算機(personal computer,PC)部署服務器,內嵌大型數據庫系統,在用戶端開發專用的客戶端軟件,充分利用硬件環境優勢,合理分配任務,極大降低系統通信開銷。該客戶端采用MVVM 架構,結合Prism 框架實現視圖層與數據解耦合,通過Prism 的導航框架實現不同頁面之間的切換,并且可以僅切換局部頁面,降低內存使用壓力。通過組件的復用,可以降低代碼量,提高代碼可讀性與系統開發效率[2]。
每一個組件都包含3 個部分:View、Model、ViewModel。通過View 展示用戶界面(userinterface,UI), 與用戶進行交互,ViewModel 對用戶發出的指令進行業務處理,在Model 中處理數據,并基于綁定機制,將ViewModel 中的變化通知到View,使View 及時做出對應的變化。
1.2 功能模塊設計
數控機床遠程數據采集軟件包含4 個模塊,分別為用戶管理、系統配置、數據處理、數據管理與上云。系統模塊設計如圖2 所示。
用戶管理模塊包含4 個部分:用戶登錄、用戶注冊、修改密碼和權限驗證。用戶登錄是通過驗證用戶輸入的賬戶密碼與服務器存儲賬戶密碼是否一致,決定登錄是否成功;用戶注冊是采用MD5 消息摘要算法加密技術,將用戶輸入的賬戶密碼信息加密、存儲至服務器端并記錄用戶權限等級;修改密碼是通過修改數據庫中存儲信息來修改用戶密碼;權限驗證是通過加載服務器中用戶權限來區別用戶等級。
系統配置模塊包含數據庫連接配置、機床IP地址配置、機床端口號配置、MQTT 連接配置等4 個部分。在數據庫連接配置中可以修改連接到的服務器;在機床IP 地址配置與機床端口號配置中可以修改IP 地址與端口號,從而實現不同機床的連接;在MQTT 連接配置中設定云平臺的連接與否和連接密鑰配置。
數據處理模塊包含對數控機床不同數據的采集,并通過不同組件使數據可視化,這些數據分別是設備當前連接狀態、工作總時間、工件總計數、主軸轉速、進給倍率、切削速度、開機時長、運行時長、切削時長、數控機床(computer numericalcontrol machine tools,簡稱CNC)類型、CNC 系統型號、CNC 工作模式、當前報警記錄、歷史報警記錄、伺服系統相對坐標與絕對坐標、主程序號、當前運行程序號、當前程序運行行號等[3]。
數據管理與上云模塊包含數據存儲與輸出(數據管理部分)和上傳阿里云平臺(上云部分)。數據管理部分實現存儲、采集數據和導出歷史數據功能;上云部分通過MQTT 協議將數據實時上傳至阿里云界面并存入云端服務器,提供遠程監控功能。
2 關鍵技術
2.1 數據采集技術
本軟件采用基于TCP/IP(transmission controlprotocol/internet protocol, 傳輸控制協議/ 網際協議)接口的FOCAS 開發數據通信協議,通過高速串行總線(high-speed serial bus,HSSB)或者以太網TCP/IP 與設備進行連接。該協議用于FANUC 公司的CNC、機器人和通用可編程邏輯控制器(programmable logic controller,PLC)進行數據交換。由于該協議采用C++ 語言編寫,為保證編譯語言一致性,將其封裝成動態鏈接庫,在開發時通過引用動態鏈接庫進行代碼調用,用戶可以基于該協議進行上位機操作軟件的開發或定制PLC 模塊與下位設備數據交互組件,通信框架如圖3 所示。
在實際使用C# 語言編程中,首先在項目中添加FOCAS 的fwlib32.dll 文件和fwlib32.cs 類庫,通過調用其中的函數實現上位機與CNC 的通信以及數據采集功能,實現步驟如下[4-5]。
步驟1:將FOCAS 的fwlib32.dll 文件和fwlib32.cs類庫復制到應用程序所在的文件夾中。
步驟2:在源程序中添加已有項目fwlib32.cs類庫。
步驟3:在系統界面中,依次輸入IP 地址和端口號,點擊“連接”按鈕,后臺通過調用函數cnc_allclibhndl3([In,MarshalAs(UnmanagedType.AsAny)]Object ip,ushort port,int timeout,outushort FlibHndl), 建立通信連接。該函數有4 個參數,ip 表示CNC 地址;port 表示端口號;timeout 表示溢出時間;FlibHndl 表示連接句柄。
步驟4:數據傳輸,運用FOCAS 提供的庫函數,完成上位機與數控系統的雙向通信,實現數據采集。
步驟5:調用cnc_resetconnect(ushort FlibHndl)方法,釋放句柄,斷開連接。
2.2 數據雙向綁定技術
由于數控機床遠程數據采集軟件對數據實時性要求很高,需要軟件具備實時刷新數據的功能,本軟件能夠實現視圖層與數據層之間交互的關鍵是使用了數據雙向綁定技術。在本軟件開發中,通過MVVM 架構與Prism 框架實現數據雙向綁定。如圖4所示,在MVVM 架構中Model 不響應任何用戶的操作,其通過View 層、ViewModel 層與用戶進行交互,MVVM 架構的核心組件是ViewModel 層。在ViewModel 層使用依賴倒置原則(dependencyinversion principle,DIP)實現軟件高內聚低耦合的特點,ViewModel 層提供業務邏輯處理方法用于處理用戶交互,并將Model 層中封裝好的屬性暴露或者變為實例對象傳至View 層。當Model 層有數據變動時,利用觀察者設計模式監聽數據變動,通知ViewModel 層并刷新View 層中的視圖,保持數據的一致性與實時性[6]。
2.3 頁面渲染與更新技術
數控機床遠程數據采集軟件具有多個模塊,需要展示機床多個數據,在對數據可視化圖表刷新的過程中需要對當前頁面進行重新渲染或更新。在C# 語言編程中使用XmlDocument 類對文檔對象模型(document object model,DOM)進行操作,由于圖表中的數據值與DOM 中的節點一一對應,當頁面進行重新渲染或更新時,會更新DOM 中的節點,如果對整個節點樹進行刷新會浪費大量內存資源,產生不必要的計算[3]。
在本軟件中使用Diff 算法實現頁面刷新。Diff算法的核心是盡可能少地修改DOM 結構,避免更新整個DOM 結構。該算法優點在于可降低軟件開銷,提高刷新效率,避免在高速采集數據時,由于大量刷新DOM 結構導致出現頁面視圖卡頓、軟件卡死等情況。在數據發生變更時,Diff 算法會生成新的虛擬DOM 結構對象,通過依次對比新舊虛擬DOM 結構對象中的根節點、子節點,確定需要修改的最小節點,最后再更新至真實的DOM 結構中。如圖5 所示,Diff 算法可以做到修改最少的子節點從而完成頁面的渲染與更新。
2.4 數據上云技術
數控機床遠程數據采集軟件需要將本地數據上傳至云端實現遠程監控功能,在本軟件中使用MQTT 協議進行消息傳輸。MQTT 協議是消息隊列遙測傳輸協議,是一種建立于TCP/IP 協議之上、基于發布/ 訂閱模式的輕量級協議[7-8]。
在本軟件中,數據管理與上云模塊將數據打包封裝進Model 對象然后轉為報文發送給云服務器,通過系統配置模塊管理云平臺的用戶名與密碼,保證了通信安全。云平臺選擇訂閱相關主題,接收采集到的機床數據信息,在使用MQTT 協議時采用異步編程,降低耦合度,并且軟件無須等待云平臺的回復響應,提高了軟件的響應速度。此外,采用心跳機制來驗證設備是否在線,提高軟件運行速率。
3 軟件實現
3.1 軟件流程
數控機床遠程數據采集軟件實現了用戶管理功能、數據采集及可視化功能、系統配置功能、數據上云功能。軟件流程如圖6 所示。
3.2 數據可視化
在數控機床遠程數據采集軟件中,需對機床主軸轉速、進給倍率、切削速度進行數據可視化展示。在實際開發過程中使用LiveChart 組件作為可視化組件,LiveChart 是Windows 呈現基礎(windows presentation foundation,WPF)、WinForm等后端技術提供的開源圖表可視化庫,該庫提供了多種類型圖表供開發者使用,如折線圖、曲線圖、柱狀圖、餅圖、散列圖等。這些圖表都支持自定義功能和豐富的用戶交互功能。LiveChart 可以將數據以圖像的方式進行展示。趨勢圖可以直觀地展示機床實時數據變化,去掉以往僅能顯示當前數據的列表形式,采用動態的圖形使用戶更好地掌握設備情況。當監控數據出現異常時,軟件能夠及時報警并標紅,使用戶可以第一時間觀察到提示信息。
3.3 性能優化
數控機床遠程數據采集軟件與一般上位機軟件的區別在于其采用了更多技術進行系統性能優化,保證軟件在低配置設備上也能流暢運行。本軟件運用了分布式技術對大流量數據進行處理,保護關鍵信息,降低了軟件內存占用率;通過消息隊列請求排隊處理,在面對高峰數據量請求時增加系統吞吐量[9];通過調用系統的G 顯卡對圖像進行渲染,避免單純依靠處理器渲染圖像導致的卡頓、死機等現象,提高了軟件的運行流暢度。
4 結語
本文以德西MVC-L640 數控機床為試驗對象,通信采用FOCAS 協議,軟件采用MVVM 架構,以降低軟件系統耦合度、程序內存占用、后期維護和開發新功能難度,提高程序可讀性。相較于WinForm 架構,MVVM 架構可以輕易地修改功能,如將主軸轉速曲線圖更改為折線圖,只需更改View 層顯示模型,而其他層無須變動,從而提高軟件二次開發效率,并降低代碼出現錯誤的可能性。采用MQTT 協議,實現了設備數據上云功能,設計了存儲歷史數據的數據庫,將數控機床運行數據上云,實現數據遠程存儲與下載。通過友好的用戶交互界面,以多種控件方式展示采集數據,實現可視化功能。
根據數據庫前1 000 條信息的對比統計,本軟件系統采集的數據與機床內部數據一致,實現了德西MVC-L640 數控機床運行數據采集功能,從而為后續開發數控機床設備全生命周期的健康管理系統奠定了基礎。
參考文獻
[1] 汪木蘭. 數控原理與系統[M]. 北京:機械工業出版社,2004:213-218.
[2] 游俊慧. MVC、MVP、MVVM 三種架構模式的對比[J]. 辦公自動化,2020,25(22):11-12,27.
[3] 梁文婧,張宏海,張蕾蕾,等. 基于MVVM 模式的中國科技云門戶管理系統的設計與實現[J]. 數據與計算發展前沿,2022,4(2):99-108.
[4] 劉廣琪. 基于FANUC 數控機床的數據采集系統的設計與實現[D]. 成都:電子科技大學,2020.
[5] 王萌,閆磊. Fanuc 數控系統數據采集與主軸負載監視系統[J]. 機電工程技術,2020,49(9):58-59,150.
[6] 高照. 基于MVVM 模式的協同工作平臺的設計與實現 [D]. 北京:北京郵電大學,2020.
[7] 閔強. 基于互聯網的數控機床運行狀態監控技術研究[D]. 武漢:武漢理工大學,2016.
[8] 宋宜璇,童一飛,繆方雷,等. 基于物聯網的數控機床群狀態監測研究[J]. 機械設計與制造工程,2023,52(6):13-18.
[9] 劉峰,鄂海紅. 基于海量數據的消息隊列的性能對比與優化方案[J]. 軟件,2016,37(10):33-37.