金星,喬興華
航空工業(yè)沈陽飛機工業(yè)(集團)有限公司 遼寧沈陽 110000
隨著以數(shù)控機床為主體的物聯(lián)網(wǎng)在航空制造領域的普遍應用,車間已經(jīng)基本具備數(shù)控程序的在線下發(fā)、數(shù)控機床運行狀態(tài)的在線監(jiān)控以及設備運行效率的分析等能力。然而,工業(yè)物聯(lián)網(wǎng)對在制品的識別仍缺乏高效且實用的方法,無法準確獲取機床正在加工什么零件這一重要信息,而在制品信息對于生產(chǎn)線生產(chǎn)能力的計算、現(xiàn)場在制品的統(tǒng)計、作業(yè)時間的分析、零件質量過程的追溯等十分必要。
目前,對于機床在線零件識別技術,國內外主要是通過圖像識別或RFID射頻技術來實現(xiàn),通過在機床上安裝視頻設備或RFID讀取設備,對零件進行識別。但兩種方法都需要安裝硬件設備,安裝維護成本較高;而且當零件外形相似或加工原材料時,會無法準確識別;另外,RFID標簽在零件加工過程中會脫落,需要在加工完成后重新粘貼。為能夠快速準確地獲取機床加工零件信息,需要研究設計一套機床加工零件的識別系統(tǒng),可以實現(xiàn)機床加工零件的在線高效識別判斷,同時能夠實時獲得機床加工零件信息。
(1)系統(tǒng)結構設計 數(shù)控機床零件識別系統(tǒng)按功能劃分,分為7個子模塊,即系統(tǒng)登錄管理、機床綜合信息管理、機床網(wǎng)絡管理、機床程序庫、標準程序庫、程序對比分析和數(shù)據(jù)存儲。系統(tǒng)登錄管理包括登錄驗證和登錄系統(tǒng),機床綜合信息管理包括機床信息顯示和機床信息更新,機床網(wǎng)絡管理包括機床網(wǎng)絡開關和機床網(wǎng)絡異常處理,機床程序庫包括機床程序獲取激活和機床程序傳輸與保存,標準程序庫包括標準程序讀取激活和標準程序同步,程序對比分析包括程序對比分析和程序遍歷,數(shù)據(jù)存儲包括分析結果存儲和分析結果查詢。系統(tǒng)總體結構如圖1所示。
圖1 系統(tǒng)總體結構
(2)系統(tǒng)數(shù)據(jù)流程分析 系統(tǒng)總體數(shù)據(jù)輸入輸出如圖2頂層數(shù)據(jù)流所示。系統(tǒng)總體數(shù)據(jù)輸入包括數(shù)控機床信息、數(shù)控機床當前加工程序、MDC系統(tǒng)標準NC程序、MDC系統(tǒng)服務器信息以及對比分析參數(shù);系統(tǒng)輸出的是對比分析結果。
圖2 頂層數(shù)據(jù)流
系統(tǒng)內部數(shù)據(jù)流程分析如圖3一層數(shù)據(jù)流所示,由4部分組成,包括機床程序讀取模塊向機床程序庫提供機床程序,標準程序讀取模塊向標準程序庫提供標準程序數(shù)據(jù),程序對比分析模塊從機床程序庫和標準程序庫獲取機床加工程序數(shù)據(jù)和標準程序數(shù)據(jù),以及對比分析模塊向數(shù)據(jù)存儲模塊提供分析結果。
圖3 一層數(shù)據(jù)流
對比分析模塊是系統(tǒng)核心模塊,其內部核心數(shù)據(jù)流如圖4二層數(shù)據(jù)流所示,對比分析模塊分為4個進程,包括機床加工程序分解、標準程序庫程序遍歷與程序選取、標準程序分解和指令單元對比分析。主要數(shù)據(jù)流包括機床加工程序分解后向程序分析模塊提供分解后的指令單元,標準程序庫遍歷程序后向分解程序提供標準程序文件,標準程序分解后向程序對比分析模塊提供指令單元數(shù)據(jù),對比分析模塊技術結果并輸出。
圖4 二層數(shù)據(jù)流
運用標準程序庫和機床的在加工程序進行比對和識別,判斷機床當前加工程序對應的標準程序庫中的程序以及這個程序對應的零件編號,主要對比方法是文件的遍歷查找和正則表達式對比運算。
表1是常用的數(shù)控機床NC程序結構,主要由三部分組成,即程序頭、主程序和程序結尾。其中程序頭中包含了程序名稱、路徑和機床等信息,這些信息大部分為注釋信息,對機床實際加工沒有具體作用,并且可以隨意更改,不能作為零件識別的依據(jù),因此在程序對比識別中不包含程序頭部分。
表1 NC程序結構
主程序部分是機床加工零件的指令部分,包括對機床主軸轉速、刀具的運動、主軸的進給和床身的各軸向運動的指令。目前,數(shù)控加工程序編制都是通過CAD/CAM自動編制的,每行程序都帶有行號,如N1、N2、N3……Nn,通過行號建立程序內容索引,根據(jù)索引進行逐行比對。
程序對比是在機床加工程序庫和標準程序庫之間完成的,其中機床加工程序庫內部存儲結構如圖5所示,包括3層:根目錄、機床節(jié)點、程序節(jié)點。其中機床節(jié)點包含機床名稱信息,該節(jié)點與實際機床一一對應;程序節(jié)點存放的是機床當前加工程序。
圖5 機床加工程序庫內部存儲結構
標準程序庫內部存儲結構如圖6所示,包括4層:根目錄、機床節(jié)點、零件、程序節(jié)點。其中機床節(jié)點包含機床名稱信息,該節(jié)點與實際機床也是一一對應關系;零件節(jié)點包含歷史加工的零件編號,此節(jié)點下的程序節(jié)點是歷史加工的程序文件。
圖6 標準程序庫存儲結構
文本對比時,將機床加工程序庫中MachineN下ProgramN節(jié)點的程序文件,與標準程序庫中MachineN下Program1~N節(jié)點的所有程序文件進行遍歷對比,最終將文本相似度最高的標準程序庫中Program的父節(jié)點PartN的零件編號信息返回,其內容就是零件編號。
正則表達式可匹配一組滿足要求的精確字符串,而不僅是單條精確字符串。因此運用正則表達式對數(shù)控機床NC程序進行識別,可以實現(xiàn)準確判斷。
數(shù)控機床NC程序是運用G代碼編寫的,其語法特點是每個指令都是由字母和數(shù)字組成,根據(jù)G代碼程序特點,將NC程序主程序部分按照行號分成n行,將每一行按照指令(代碼+數(shù)字)分成u個單元。將標準程序的n行與機床加工程序的n行的u個指令單元進行逐一對比,每行中有d個不匹配單元,從第一行開始,到最后一行結束,得到最終的相似度S,具體算法如下
按照標準程序庫索引完成比對計算后,得到若干個相似度S,取最大值SMAX,此時SMAX所對應的程序并不能完全確定與機床加工程序是同一零件的加工程序,只能表明是標準程序庫所有程序中最接近機床加工程序的。假設標準程序庫中沒有與機床加工程序一致的程序,SMAX對應的程序雖然是最接近機床加工程序的,但不應被認定為是機床在加工零件所用的程序,更不能將標準程序庫中此程序對應的零件編號作為比對結果進行反饋。為了避免此類錯誤情況,系統(tǒng)設計增加驗證機制,經(jīng)過大量實驗,對于完全不同零件的程序比對結果,其相似度S總會低于50%,因此當相似度值S<50%時,系統(tǒng)將判定為無效值,并擴大比對范圍或終止比對計算。
正則表達式對程序行號識別:程序行號標準寫法為大寫N與數(shù)字序號組合,使用正則表達式識別方案時,首先判斷每行首字符是否是N,其正則表達式為^N,如果結果為真,則繼續(xù)判斷N后字符是否為數(shù)字,如果結果仍為真,則繼續(xù)判斷下一字符是否為數(shù)字,直到判斷字符不是數(shù)字為止,q2為接受狀態(tài)。行號識別用有窮自動機表達,如圖7所示。
圖7 行號識別
正則表達式對指令單元的識別:NC程序是由G代碼、M代碼、F代碼、D代碼、I代碼、J代碼、K代碼、L代碼、S代碼、Y代碼、X代碼、Y代碼及Z代碼等編寫,基本規(guī)則都是指令代碼與數(shù)字組合,運用正則表達式先判斷指令代碼再判斷數(shù)字。指令單元識別用自動機表達,如圖8所示。
圖8 指令單元識別
由于C語言與Windows系統(tǒng)兼容性好,而且具有更豐富的.net類庫,因此選擇C語言進行系統(tǒng)開發(fā)。開發(fā)工具選擇Microsoft Visual Studio 2010版本,.net框架選擇Framework4.5版本,運行環(huán)境要求Windows7以上版本,數(shù)據(jù)庫使用ORACLE10G版本。
系統(tǒng)頁面主要包括登錄頁面和系統(tǒng)主頁面,分別如圖9、圖10所示。
圖9 系統(tǒng)登錄頁面
圖10 系統(tǒng)主頁面
通過測試零件在線識別系統(tǒng),證明其可以實現(xiàn)對物聯(lián)網(wǎng)機床當前加工零件的在線識別。對于標準程序庫和機床加工程序庫中記錄的程序,零件識別率可以實現(xiàn)100%。分析系統(tǒng)運行性能,由于系統(tǒng)主要采用的是異步多線程結構,對每臺機床單獨建立線程,線程間相互獨立,互不影響,所以可以確保系統(tǒng)的整體性能。單臺機床程序識別響應時間受實際程序行數(shù)影響,平均在5s左右,由于機床更換數(shù)控程序周期取決于零件加工周期,而零件加工周期最少在30min以上,所以5s響應時間對系統(tǒng)不造成影響。
針對傳統(tǒng)的零件識別方法存在的零件識別率低、系統(tǒng)成本高等缺陷,本文創(chuàng)新性地提出了基于物聯(lián)網(wǎng)的數(shù)控機床零件在線識別系統(tǒng),可以實現(xiàn)機床加工零件的在線識別判斷,實時獲得機床加工零件編號等功能。其優(yōu)點在于通過機床實際運行的程序識別零件,準確性更高、受人為干擾更小,大大提高了識別效率,降低了投入成本和維護成本。