金星,喬興華
航空工業沈陽飛機工業(集團)有限公司 遼寧沈陽 110000
隨著以數控機床為主體的物聯網在航空制造領域的普遍應用,車間已經基本具備數控程序的在線下發、數控機床運行狀態的在線監控以及設備運行效率的分析等能力。然而,工業物聯網對在制品的識別仍缺乏高效且實用的方法,無法準確獲取機床正在加工什么零件這一重要信息,而在制品信息對于生產線生產能力的計算、現場在制品的統計、作業時間的分析、零件質量過程的追溯等十分必要。
目前,對于機床在線零件識別技術,國內外主要是通過圖像識別或RFID射頻技術來實現,通過在機床上安裝視頻設備或RFID讀取設備,對零件進行識別。但兩種方法都需要安裝硬件設備,安裝維護成本較高;而且當零件外形相似或加工原材料時,會無法準確識別;另外,RFID標簽在零件加工過程中會脫落,需要在加工完成后重新粘貼。為能夠快速準確地獲取機床加工零件信息,需要研究設計一套機床加工零件的識別系統,可以實現機床加工零件的在線高效識別判斷,同時能夠實時獲得機床加工零件信息。
(1)系統結構設計 數控機床零件識別系統按功能劃分,分為7個子模塊,即系統登錄管理、機床綜合信息管理、機床網絡管理、機床程序庫、標準程序庫、程序對比分析和數據存儲。系統登錄管理包括登錄驗證和登錄系統,機床綜合信息管理包括機床信息顯示和機床信息更新,機床網絡管理包括機床網絡開關和機床網絡異常處理,機床程序庫包括機床程序獲取激活和機床程序傳輸與保存,標準程序庫包括標準程序讀取激活和標準程序同步,程序對比分析包括程序對比分析和程序遍歷,數據存儲包括分析結果存儲和分析結果查詢。系統總體結構如圖1所示。

圖1 系統總體結構
(2)系統數據流程分析 系統總體數據輸入輸出如圖2頂層數據流所示。系統總體數據輸入包括數控機床信息、數控機床當前加工程序、MDC系統標準NC程序、MDC系統服務器信息以及對比分析參數;系統輸出的是對比分析結果。

圖2 頂層數據流
系統內部數據流程分析如圖3一層數據流所示,由4部分組成,包括機床程序讀取模塊向機床程序庫提供機床程序,標準程序讀取模塊向標準程序庫提供標準程序數據,程序對比分析模塊從機床程序庫和標準程序庫獲取機床加工程序數據和標準程序數據,以及對比分析模塊向數據存儲模塊提供分析結果。

圖3 一層數據流
對比分析模塊是系統核心模塊,其內部核心數據流如圖4二層數據流所示,對比分析模塊分為4個進程,包括機床加工程序分解、標準程序庫程序遍歷與程序選取、標準程序分解和指令單元對比分析。主要數據流包括機床加工程序分解后向程序分析模塊提供分解后的指令單元,標準程序庫遍歷程序后向分解程序提供標準程序文件,標準程序分解后向程序對比分析模塊提供指令單元數據,對比分析模塊技術結果并輸出。

圖4 二層數據流
運用標準程序庫和機床的在加工程序進行比對和識別,判斷機床當前加工程序對應的標準程序庫中的程序以及這個程序對應的零件編號,主要對比方法是文件的遍歷查找和正則表達式對比運算。
表1是常用的數控機床NC程序結構,主要由三部分組成,即程序頭、主程序和程序結尾。其中程序頭中包含了程序名稱、路徑和機床等信息,這些信息大部分為注釋信息,對機床實際加工沒有具體作用,并且可以隨意更改,不能作為零件識別的依據,因此在程序對比識別中不包含程序頭部分。

表1 NC程序結構
主程序部分是機床加工零件的指令部分,包括對機床主軸轉速、刀具的運動、主軸的進給和床身的各軸向運動的指令。目前,數控加工程序編制都是通過CAD/CAM自動編制的,每行程序都帶有行號,如N1、N2、N3……Nn,通過行號建立程序內容索引,根據索引進行逐行比對。
程序對比是在機床加工程序庫和標準程序庫之間完成的,其中機床加工程序庫內部存儲結構如圖5所示,包括3層:根目錄、機床節點、程序節點。其中機床節點包含機床名稱信息,該節點與實際機床一一對應;程序節點存放的是機床當前加工程序。

圖5 機床加工程序庫內部存儲結構
標準程序庫內部存儲結構如圖6所示,包括4層:根目錄、機床節點、零件、程序節點。其中機床節點包含機床名稱信息,該節點與實際機床也是一一對應關系;零件節點包含歷史加工的零件編號,此節點下的程序節點是歷史加工的程序文件。

圖6 標準程序庫存儲結構
文本對比時,將機床加工程序庫中MachineN下ProgramN節點的程序文件,與標準程序庫中MachineN下Program1~N節點的所有程序文件進行遍歷對比,最終將文本相似度最高的標準程序庫中Program的父節點PartN的零件編號信息返回,其內容就是零件編號。
正則表達式可匹配一組滿足要求的精確字符串,而不僅是單條精確字符串。因此運用正則表達式對數控機床NC程序進行識別,可以實現準確判斷。
數控機床NC程序是運用G代碼編寫的,其語法特點是每個指令都是由字母和數字組成,根據G代碼程序特點,將NC程序主程序部分按照行號分成n行,將每一行按照指令(代碼+數字)分成u個單元。將標準程序的n行與機床加工程序的n行的u個指令單元進行逐一對比,每行中有d個不匹配單元,從第一行開始,到最后一行結束,得到最終的相似度S,具體算法如下

按照標準程序庫索引完成比對計算后,得到若干個相似度S,取最大值SMAX,此時SMAX所對應的程序并不能完全確定與機床加工程序是同一零件的加工程序,只能表明是標準程序庫所有程序中最接近機床加工程序的。假設標準程序庫中沒有與機床加工程序一致的程序,SMAX對應的程序雖然是最接近機床加工程序的,但不應被認定為是機床在加工零件所用的程序,更不能將標準程序庫中此程序對應的零件編號作為比對結果進行反饋。為了避免此類錯誤情況,系統設計增加驗證機制,經過大量實驗,對于完全不同零件的程序比對結果,其相似度S總會低于50%,因此當相似度值S<50%時,系統將判定為無效值,并擴大比對范圍或終止比對計算。
正則表達式對程序行號識別:程序行號標準寫法為大寫N與數字序號組合,使用正則表達式識別方案時,首先判斷每行首字符是否是N,其正則表達式為^N,如果結果為真,則繼續判斷N后字符是否為數字,如果結果仍為真,則繼續判斷下一字符是否為數字,直到判斷字符不是數字為止,q2為接受狀態。行號識別用有窮自動機表達,如圖7所示。

圖7 行號識別
正則表達式對指令單元的識別:NC程序是由G代碼、M代碼、F代碼、D代碼、I代碼、J代碼、K代碼、L代碼、S代碼、Y代碼、X代碼、Y代碼及Z代碼等編寫,基本規則都是指令代碼與數字組合,運用正則表達式先判斷指令代碼再判斷數字。指令單元識別用自動機表達,如圖8所示。

圖8 指令單元識別
由于C語言與Windows系統兼容性好,而且具有更豐富的.net類庫,因此選擇C語言進行系統開發。開發工具選擇Microsoft Visual Studio 2010版本,.net框架選擇Framework4.5版本,運行環境要求Windows7以上版本,數據庫使用ORACLE10G版本。
系統頁面主要包括登錄頁面和系統主頁面,分別如圖9、圖10所示。

圖9 系統登錄頁面

圖10 系統主頁面
通過測試零件在線識別系統,證明其可以實現對物聯網機床當前加工零件的在線識別。對于標準程序庫和機床加工程序庫中記錄的程序,零件識別率可以實現100%。分析系統運行性能,由于系統主要采用的是異步多線程結構,對每臺機床單獨建立線程,線程間相互獨立,互不影響,所以可以確保系統的整體性能。單臺機床程序識別響應時間受實際程序行數影響,平均在5s左右,由于機床更換數控程序周期取決于零件加工周期,而零件加工周期最少在30min以上,所以5s響應時間對系統不造成影響。
針對傳統的零件識別方法存在的零件識別率低、系統成本高等缺陷,本文創新性地提出了基于物聯網的數控機床零件在線識別系統,可以實現機床加工零件的在線識別判斷,實時獲得機床加工零件編號等功能。其優點在于通過機床實際運行的程序識別零件,準確性更高、受人為干擾更小,大大提高了識別效率,降低了投入成本和維護成本。