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