技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 數(shù)控加工虛擬仿真系統(tǒng)代碼編譯器的研究

數(shù)控加工虛擬仿真系統(tǒng)代碼編譯器的研究

時(shí)間:2009-09-14 09:15:30來(lái)源:ronggang

導(dǎo)語(yǔ):?分析了數(shù)控系統(tǒng)加工代碼譯碼方法的優(yōu)缺點(diǎn),在此基礎(chǔ)上,提出了一種新的數(shù)控加工虛擬仿真系統(tǒng)NC代碼編譯器的實(shí)現(xiàn)算法——解釋—編譯方法。
摘要:分析了數(shù)控系統(tǒng)加工代碼譯碼方法的優(yōu)缺點(diǎn),在此基礎(chǔ)上,提出了一種新的數(shù)控加工虛擬仿真系統(tǒng)NC代碼編譯器的實(shí)現(xiàn)算法——解釋—編譯方法,并對(duì)如何在VisualC++環(huán)境中運(yùn)用計(jì)算機(jī)編譯原理和面向?qū)ο蠹夹g(shù)來(lái)開(kāi)發(fā)數(shù)控加工虛擬仿真系統(tǒng)NC代碼編譯器進(jìn)行了探討。 1 引言 隨著數(shù)控技術(shù)在機(jī)械制造業(yè)中的廣泛應(yīng)用,數(shù)控加工虛擬仿真系統(tǒng)也得到迅速發(fā)展,廣泛應(yīng)用于數(shù)控編程操作的教學(xué)和培訓(xùn),對(duì)減少高等院校和培訓(xùn)機(jī)構(gòu)的資金投資,縮短企業(yè)的生產(chǎn)準(zhǔn)備周期、減少生產(chǎn)成本、提高企業(yè)生產(chǎn)效率具有重要意義。而作為數(shù)控加工虛擬仿真系統(tǒng)的前置處理部分——NC代碼編譯器,是溝通和傳遞數(shù)控加工虛擬仿真系統(tǒng)與CAD/CAM系統(tǒng)其它部分之間信息的橋梁,也得到了迅速發(fā)展。 在數(shù)控加工虛擬仿真過(guò)程中,正確且快速有效地從所輸入的加工程序中提取加工信息以及將它們有效地組織仿真系統(tǒng)內(nèi)部默認(rèn)的表示形式,是進(jìn)行動(dòng)態(tài)仿真的前提和仿真過(guò)程得以順利進(jìn)行的保證。綜觀國(guó)內(nèi)外數(shù)控加工虛擬仿真系統(tǒng)NC代碼編譯技術(shù)的發(fā)展情況,國(guó)外在這方面的研究比較成熟,而國(guó)內(nèi)盡管已有很大發(fā)展并達(dá)到相當(dāng)水平,但存在一些不足之處: (1)通用性不夠,如某些數(shù)控系統(tǒng)的NC代碼編譯器只適用于某一系統(tǒng)的代碼編譯; (2)在如何處理計(jì)算機(jī)內(nèi)存資源利用率和運(yùn)行速度兩者的關(guān)系上有待于進(jìn)一步研究; (3)所處理的NC代碼有限,尤其是國(guó)內(nèi)大多數(shù)NC代碼編譯器只能實(shí)現(xiàn)對(duì)部分常用C代碼(如GOO—G04等)、M代碼等基本代碼進(jìn)行翻譯處理,而對(duì)一些重要的代碼(如刀具補(bǔ)償代碼)、固定循環(huán)和子程序的處理卻很少; (4)對(duì)NC代碼程序的語(yǔ)言錯(cuò)誤檢查力度不夠,多數(shù)NC代碼編譯器只是顯示錯(cuò)誤出現(xiàn)的行號(hào)而已。 在NC代碼翻譯器的研究與實(shí)現(xiàn)過(guò)程中,如果能改善上述缺陷,即提高通用性、完善代碼處理功能,真正實(shí)現(xiàn)數(shù)控加工虛擬仿真對(duì)加工信息的優(yōu)化,則能進(jìn)一步提高虛擬仿真的真實(shí)性,并為提高數(shù)控加工的生產(chǎn)效率、縮短生產(chǎn)準(zhǔn)備周期、減少生產(chǎn)成本、企業(yè)實(shí)現(xiàn)以生產(chǎn)時(shí)間、加工成本、資源最優(yōu)化配置利用來(lái)生產(chǎn)出高質(zhì)量的產(chǎn)品奠定堅(jiān)實(shí)的基礎(chǔ)。因此,本文作者將致力于實(shí)現(xiàn)具有一定通用性的NC代碼翻譯器的關(guān)鍵技術(shù)的研究,使數(shù)控加工虛擬仿真系統(tǒng)能夠滿足CAD/CAM系統(tǒng)向集成化、智能化、網(wǎng)絡(luò)化發(fā)展的需要。 2 編譯系統(tǒng)采用的譯碼方法 傳統(tǒng)的數(shù)控系統(tǒng)代碼編譯方法有解釋、編譯和目標(biāo)碼編譯等三種方法。這三種編譯方法各有其優(yōu)缺點(diǎn),前兩種的缺點(diǎn)是浪費(fèi)計(jì)算機(jī)內(nèi)存資源,執(zhí)行程序時(shí)程序段與程序段之間可能存在停頓,影響零件加工精度;而且這兩種譯碼方式都存在一個(gè)缺點(diǎn),即在加工同一種類的不同零件時(shí),程序每運(yùn)行一次都需要重新對(duì)程序進(jìn)行編譯,都要占用一定的加工時(shí)間。而采用目標(biāo)碼進(jìn)行編譯時(shí),雖然加工同類零件時(shí)只需運(yùn)行一次譯碼程序,提高了數(shù)控加工程序運(yùn)行速度,且目標(biāo)碼形式單一,讀取速度快,可大大提高加工程序反復(fù)運(yùn)行的效率;但是當(dāng)數(shù)控加工程序較長(zhǎng)時(shí),編譯產(chǎn)生的目標(biāo)碼所占據(jù)的內(nèi)存是比較大的,而且用戶如果要在此基礎(chǔ)上擴(kuò)展其功能,則必須完全了解其代碼的設(shè)計(jì)原則;所以這種譯碼方法的通用性和移植性較差。筆者在此基礎(chǔ)上,根據(jù)時(shí)間重疊流水處理原理,提出了采用解釋—編譯方式對(duì)數(shù)控加工代碼進(jìn)行譯碼的方法,其工作流程如圖1所示。
圖1 解釋-編譯的譯碼方法的流程圖
該解釋-編譯的譯碼方法的運(yùn)行過(guò)程是編譯程序要進(jìn)行兩次掃描,且掃描的對(duì)象不同,第一次掃描的對(duì)象是數(shù)控加工程序中的各種地址符,此過(guò)程進(jìn)行詞法、語(yǔ)法和簡(jiǎn)單的語(yǔ)義分析,并累計(jì)程序的程序段個(gè)數(shù);掃描的同時(shí)提取數(shù)控加工程序中主要加工信息,如G00、G01、G02、G03等,并按先后順序?qū)⒓庸ば畔⒋娣诺骄幾g結(jié)果緩沖區(qū)m_CurveList尺寸鏈表,且設(shè)置插補(bǔ)類型標(biāo)志位:enum locustype{point,line,cwarc,anticwarc} locustp,以供第二次掃描時(shí)使用。若存在錯(cuò)誤則退出編譯系統(tǒng)并提示出錯(cuò)信息,同時(shí)清空緩沖區(qū)m_Cu~eHst尺寸鏈表。若第一次掃描檢查無(wú)錯(cuò)則進(jìn)行第二次掃描。此時(shí),第二次掃描的對(duì)象是編譯結(jié)果緩沖區(qū)中各插補(bǔ)標(biāo)志位,通過(guò)識(shí)別各個(gè)插補(bǔ)標(biāo)志位從編譯結(jié)果緩沖區(qū)m_CurveList尺寸鏈表中讀取刀位數(shù)據(jù)信息,并由此刀位數(shù)據(jù)信息來(lái)驅(qū)動(dòng)相應(yīng)插補(bǔ)模塊完成數(shù)控加工過(guò)程的動(dòng)態(tài)仿真;很顯然,第二次掃描的時(shí)間會(huì)比第一次掃描時(shí)間短,且需要的存儲(chǔ)空間比第一次掃描時(shí)需要的存儲(chǔ)空間少。 這種分次對(duì)不同對(duì)象進(jìn)行掃描的解釋—編譯的譯碼方法,一方面克服了解釋方式和編譯方式浪費(fèi)計(jì)算機(jī)內(nèi)存資源的缺點(diǎn);另一方面又克服了時(shí)間順序處理方式由于在兩個(gè)程序段的輸出之間存在的時(shí)間間隔,導(dǎo)致電機(jī)的時(shí)轉(zhuǎn)時(shí)停,而造成工件的加工質(zhì)量下降的缺點(diǎn)。同時(shí)該解釋—編譯方式由于兩次掃描的對(duì)象不同,且第二次掃描的內(nèi)容沒(méi)有第一次掃描的復(fù)雜。很顯然,這種方法一方面提高了計(jì)算機(jī)內(nèi)存資源的利用率,另一方面縮短了編譯的時(shí)間,大大提高了編譯軟件的工作效率。 3 數(shù)控加工程序譯碼算法的實(shí)現(xiàn) 數(shù)控加工虛擬仿真系統(tǒng)承擔(dān)著兩大任務(wù):一是對(duì)數(shù)控加工程序進(jìn)行掃描并作出詞法、語(yǔ)法和語(yǔ)義識(shí)別,并將識(shí)別結(jié)果輸出告知用戶;二是經(jīng)過(guò)掃描識(shí)別確定加工程序無(wú)誤后,提取驅(qū)動(dòng)機(jī)床移動(dòng)部件的加工信息進(jìn)行加工仿真。而數(shù)控加工虛擬仿真系統(tǒng)編譯器主要用于數(shù)控加工程序正確性的檢驗(yàn)和提取驅(qū)動(dòng)加工的刀位信息。因此,在Visual C++環(huán)境下開(kāi)發(fā)數(shù)控加工程序編譯器,其主要任務(wù)是完成對(duì)零件程序的掃描,并對(duì)詞法、語(yǔ)法進(jìn)行識(shí)別,將識(shí)別結(jié)果以鏈表的形式存人緩存區(qū)。圖2所示為筆者所采用的譯碼方法對(duì)NC代碼程序進(jìn)行詞法、語(yǔ)法識(shí)別的流程圖。
圖2 NC代碼詞法、語(yǔ)法識(shí)別算法流程圖
3.1 數(shù)控加工程序的讀取 數(shù)控加工虛擬仿真系統(tǒng)讀取軟盤或硬盤中以*.txt格式存放的數(shù)控加工程序。為此,仿真系統(tǒng)首先調(diào)用open函數(shù)打開(kāi)一個(gè)文本格式的加工程序文件,由Read函數(shù)按照先后順序?qū)C程序逐段讀人CString類的m_strFileAll對(duì)象中;再將相應(yīng)的地址存人CStringList類的m_FileLineList鏈表中。循環(huán)進(jìn)行這個(gè)過(guò)程,直到文件結(jié)束。這樣,CStringList類型的m_FileLineList鏈表中將按先后順序逐行記錄整個(gè)NC程序的信息。 3.2 NC代碼詞法檢查 詞法檢查所要完成的主要任務(wù)是對(duì)零件的加工程序中的各地址符進(jìn)行檢查,尤其是G功能字和M功能字的檢查;鑒別它們是否符合數(shù)控系統(tǒng)的G、M功能庫(kù)。若發(fā)現(xiàn)不合詞法規(guī)則時(shí),則指出錯(cuò)誤所在;若詞法檢查無(wú)誤,則進(jìn)入下一步語(yǔ)法分析檢查。否則,退出編譯系統(tǒng)。為此,該編譯器主要按照下面步驟進(jìn)行: (1)建立G、M功能庫(kù)。在CSkDoc類中定義G、M功能宇規(guī)則鏈表CStringListm_WrodRuleList;//存放數(shù)控系統(tǒng)G、M功能規(guī)則庫(kù)。 (2)建立BOOL CSkDoc::IsThereChar(CStringstrLine,TCHAR c)函數(shù),用于識(shí)別N、G、M、X、Y、Z、I、J、K、R、U、V、W、S、T、F等地址符。 (3)建立LexicalParser(const CStringList & LineWdLs,int nlinenumber)函數(shù)用于進(jìn)行詞法檢查。 3.3 NC代碼語(yǔ)法檢查 數(shù)控加工程序經(jīng)過(guò)編譯系統(tǒng)詞法檢查無(wú)誤后,接下來(lái)就是要對(duì)其進(jìn)行語(yǔ)法格式檢查,以判斷NC程序是否符合數(shù)控系統(tǒng)的語(yǔ)法規(guī)則;如:G90和G91兩個(gè)功能字在同一文件中不能同時(shí)存在;同一模態(tài)組的功能字不能在同一程序段中同時(shí)出現(xiàn);G00功能字和F功能字不能在同一程序段中同時(shí)出現(xiàn);G00、G01、G02/G03等G功能字是否缺少正確匹配的尺寸字等等。為此,編譯系統(tǒng)建立以下函數(shù): 首先,在SkDoc類中定義獲得程序段中各字順序的處理函數(shù)GetWordOrder(const CStringList & 1wlist)。 然后,在SkDoc類中定義語(yǔ)法檢查函數(shù)SyntaxParser()。 若零件的數(shù)控加工程序語(yǔ)法檢查無(wú)誤,則編譯系統(tǒng)同時(shí)從NC代碼程序段鏈表m_FileLineList緩沖區(qū)及時(shí)提取主功能信息如G00、G01、G02、G03等的刀位信息并存人驅(qū)動(dòng)仿真系統(tǒng)的軌跡鏈表m_CurveList緩沖區(qū);若存在語(yǔ)法錯(cuò)誤時(shí),則退出編譯系統(tǒng)同時(shí)清空軌跡鏈表m_CurveList緩沖區(qū)。 4 結(jié)論 數(shù)控加工虛擬仿真系統(tǒng)主要用于高等院校和培訓(xùn)機(jī)構(gòu)進(jìn)行數(shù)控編程與機(jī)床操作的教學(xué)環(huán)節(jié)。其目的一方面是為了加深加固學(xué)員對(duì)數(shù)控編程知識(shí)的理解,另一方面是為了減少昂貴設(shè)備的投資。因此,數(shù)控加工虛擬仿真系統(tǒng)除了能真實(shí)地模擬數(shù)控加工過(guò)程,一方面要考慮識(shí)別盡可能多的數(shù)控系統(tǒng)代碼,另一方面還必須考慮仿真系統(tǒng)編譯代碼的速度,提高計(jì)算機(jī)內(nèi)存資源的利用率,這對(duì)于提高數(shù)控加工仿真系統(tǒng)的真實(shí)性和計(jì)算機(jī)資源利用率具有非常重要意義。本文作者通過(guò)對(duì)目前數(shù)控仿真系統(tǒng)編譯器技術(shù)的發(fā)展現(xiàn)狀和各種譯碼方法的優(yōu)缺點(diǎn)進(jìn)行分析,提出了一種新的數(shù)控加工虛擬仿真系統(tǒng)NC代碼譯碼方法——解釋—編譯方法。這種方法不但減少了系統(tǒng)資源的浪費(fèi),而且縮短了編譯的時(shí)間,提高了整個(gè)編譯系統(tǒng)的運(yùn)行效率。在本文中,只解決了數(shù)控加工虛擬仿真系統(tǒng)的一個(gè)基礎(chǔ)問(wèn)題——編譯問(wèn)題,為數(shù)控加工虛擬仿真系統(tǒng)的進(jìn)一步研制奠定堅(jiān)實(shí)基礎(chǔ)。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:基于PC機(jī)的DNC傳輸軟件的開(kāi)發(fā)

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)