技術頻道

      數控加工虛擬仿真系統代碼編譯器的研究

      摘要:分析了數控系統加工代碼譯碼方法的優缺點,在此基礎上,提出了一種新的數控加工虛擬仿真系統NC代碼編譯器的實現算法——解釋—編譯方法,并對如何在VisualC++環境中運用計算機編譯原理和面向對象技術來開發數控加工虛擬仿真系統NC代碼編譯器進行了探討。

      1 引言
      隨著數控技術在機械制造業中的廣泛應用,數控加工虛擬仿真系統也得到迅速發展,廣泛應用于數控編程操作的教學和培訓,對減少高等院校和培訓機構的資金投資,縮短企業的生產準備周期、減少生產成本、提高企業生產效率具有重要意義。而作為數控加工虛擬仿真系統的前置處理部分——NC代碼編譯器,是溝通和傳遞數控加工虛擬仿真系統與CAD/CAM系統其它部分之間信息的橋梁,也得到了迅速發展。 在數控加工虛擬仿真過程中,正確且快速有效地從所輸入的加工程序中提取加工信息以及將它們有效地組織仿真系統內部默認的表示形式,是進行動態仿真的前提和仿真過程得以順利進行的保證。綜觀國內外數控加工虛擬仿真系統NC代碼編譯技術的發展情況,國外在這方面的研究比較成熟,而國內盡管已有很大發展并達到相當水平,但存在一些不足之處:
      (1)通用性不夠,如某些數控系統的NC代碼編譯器只適用于某一系統的代碼編譯;
      (2)在如何處理計算機內存資源利用率和運行速度兩者的關系上有待于進一步研究;
      (3)所處理的NC代碼有限,尤其是國內大多數NC代碼編譯器只能實現對部分常用C代碼(如GOO—G04等)、M代碼等基本代碼進行翻譯處理,而對一些重要的代碼(如刀具補償代碼)、固定循環和子程序的處理卻很少;
      (4)對NC代碼程序的語言錯誤檢查力度不夠,多數NC代碼編譯器只是顯示錯誤出現的行號而已。
      在NC代碼翻譯器的研究與實現過程中,如果能改善上述缺陷,即提高通用性、完善代碼處理功能,真正實現數控加工虛擬仿真對加工信息的優化,則能進一步提高虛擬仿真的真實性,并為提高數控加工的生產效率、縮短生產準備周期、減少生產成本、企業實現以生產時間、加工成本、資源最優化配置利用來生產出高質量的產品奠定堅實的基礎。因此,本文作者將致力于實現具有一定通用性的NC代碼翻譯器的關鍵技術的研究,使數控加工虛擬仿真系統能夠滿足CAD/CAM系統向集成化、智能化、網絡化發展的需要。

      2 編譯系統采用的譯碼方法
      傳統的數控系統代碼編譯方法有解釋、編譯和目標碼編譯等三種方法。這三種編譯方法各有其優缺點,前兩種的缺點是浪費計算機內存資源,執行程序時程序段與程序段之間可能存在停頓,影響零件加工精度;而且這兩種譯碼方式都存在一個缺點,即在加工同一種類的不同零件時,程序每運行一次都需要重新對程序進行編譯,都要占用一定的加工時間。而采用目標碼進行編譯時,雖然加工同類零件時只需運行一次譯碼程序,提高了數控加工程序運行速度,且目標碼形式單一,讀取速度快,可大大提高加工程序反復運行的效率;但是當數控加工程序較長時,編譯產生的目標碼所占據的內存是比較大的,而且用戶如果要在此基礎上擴展其功能,則必須完全了解其代碼的設計原則;所以這種譯碼方法的通用性和移植性較差。筆者在此基礎上,根據時間重疊流水處理原理,提出了采用解釋—編譯方式對數控加工代碼進行譯碼的方法,其工作流程如圖1所示。


      圖1 解釋-編譯的譯碼方法的流程圖

      該解釋-編譯的譯碼方法的運行過程是編譯程序要進行兩次掃描,且掃描的對象不同,第一次掃描的對象是數控加工程序中的各種地址符,此過程進行詞法、語法和簡單的語義分析,并累計程序的程序段個數;掃描的同時提取數控加工程序中主要加工信息,如G00、G01、G02、G03等,并按先后順序將加工信息存放到編譯結果緩沖區m_CurveList尺寸鏈表,且設置插補類型標志位:enum locustype{point,line,cwarc,anticwarc} locustp,以供第二次掃描時使用。若存在錯誤則退出編譯系統并提示出錯信息,同時清空緩沖區m_Cu~eHst尺寸鏈表。若第一次掃描檢查無錯則進行第二次掃描。此時,第二次掃描的對象是編譯結果緩沖區中各插補標志位,通過識別各個插補標志位從編譯結果緩沖區m_CurveList尺寸鏈表中讀取刀位數據信息,并由此刀位數據信息來驅動相應插補模塊完成數控加工過程的動態仿真;很顯然,第二次掃描的時間會比第一次掃描時間短,且需要的存儲空間比第一次掃描時需要的存儲空間少。
      這種分次對不同對象進行掃描的解釋—編譯的譯碼方法,一方面克服了解釋方式和編譯方式浪費計算機內存資源的缺點;另一方面又克服了時間順序處理方式由于在兩個程序段的輸出之間存在的時間間隔,導致電機的時轉時停,而造成工件的加工質量下降的缺點。同時該解釋—編譯方式由于兩次掃描的對象不同,且第二次掃描的內容沒有第一次掃描的復雜。很顯然,這種方法一方面提高了計算機內存資源的利用率,另一方面縮短了編譯的時間,大大提高了編譯軟件的工作效率。

      3 數控加工程序譯碼算法的實現
      數控加工虛擬仿真系統承擔著兩大任務:一是對數控加工程序進行掃描并作出詞法、語法和語義識別,并將識別結果輸出告知用戶;二是經過掃描識別確定加工程序無誤后,提取驅動機床移動部件的加工信息進行加工仿真。而數控加工虛擬仿真系統編譯器主要用于數控加工程序正確性的檢驗和提取驅動加工的刀位信息。因此,在Visual C++環境下開發數控加工程序編譯器,其主要任務是完成對零件程序的掃描,并對詞法、語法進行識別,將識別結果以鏈表的形式存人緩存區。圖2所示為筆者所采用的譯碼方法對NC代碼程序進行詞法、語法識別的流程圖。


      圖2 NC代碼詞法、語法識別算法流程圖

      3.1 數控加工程序的讀取
      數控加工虛擬仿真系統讀取軟盤或硬盤中以*.txt格式存放的數控加工程序。為此,仿真系統首先調用open函數打開一個文本格式的加工程序文件,由Read函數按照先后順序將NC程序逐段讀人CString類的m_strFileAll對象中;再將相應的地址存人CStringList類的m_FileLineList鏈表中。循環進行這個過程,直到文件結束。這樣,CStringList類型的m_FileLineList鏈表中將按先后順序逐行記錄整個NC程序的信息。
      3.2 NC代碼詞法檢查
      詞法檢查所要完成的主要任務是對零件的加工程序中的各地址符進行檢查,尤其是G功能字和M功能字的檢查;鑒別它們是否符合數控系統的G、M功能庫。若發現不合詞法規則時,則指出錯誤所在;若詞法檢查無誤,則進入下一步語法分析檢查。否則,退出編譯系統。為此,該編譯器主要按照下面步驟進行:
      (1)建立G、M功能庫。在CSkDoc類中定義G、M功能宇規則鏈表CStringListm_WrodRuleList;//存放數控系統G、M功能規則庫。
      (2)建立BOOL CSkDoc::IsThereChar(CStringstrLine,TCHAR c)函數,用于識別N、G、M、X、Y、Z、I、J、K、R、U、V、W、S、T、F等地址符。
      (3)建立LexicalParser(const CStringList & LineWdLs,int nlinenumber)函數用于進行詞法檢查。
      3.3 NC代碼語法檢查
      數控加工程序經過編譯系統詞法檢查無誤后,接下來就是要對其進行語法格式檢查,以判斷NC程序是否符合數控系統的語法規則;如:G90和G91兩個功能字在同一文件中不能同時存在;同一模態組的功能字不能在同一程序段中同時出現;G00功能字和F功能字不能在同一程序段中同時出現;G00、G01、G02/G03等G功能字是否缺少正確匹配的尺寸字等等。為此,編譯系統建立以下函數:
      首先,在SkDoc類中定義獲得程序段中各字順序的處理函數GetWordOrder(const CStringList & 1wlist)。
      然后,在SkDoc類中定義語法檢查函數SyntaxParser()。
      若零件的數控加工程序語法檢查無誤,則編譯系統同時從NC代碼程序段鏈表m_FileLineList緩沖區及時提取主功能信息如G00、G01、G02、G03等的刀位信息并存人驅動仿真系統的軌跡鏈表m_CurveList緩沖區;若存在語法錯誤時,則退出編譯系統同時清空軌跡鏈表m_CurveList緩沖區。

      4 結論
      數控加工虛擬仿真系統主要用于高等院校和培訓機構進行數控編程與機床操作的教學環節。其目的一方面是為了加深加固學員對數控編程知識的理解,另一方面是為了減少昂貴設備的投資。因此,數控加工虛擬仿真系統除了能真實地模擬數控加工過程,一方面要考慮識別盡可能多的數控系統代碼,另一方面還必須考慮仿真系統編譯代碼的速度,提高計算機內存資源的利用率,這對于提高數控加工仿真系統的真實性和計算機資源利用率具有非常重要意義。本文作者通過對目前數控仿真系統編譯器技術的發展現狀和各種譯碼方法的優缺點進行分析,提出了一種新的數控加工虛擬仿真系統NC代碼譯碼方法——解釋—編譯方法。這種方法不但減少了系統資源的浪費,而且縮短了編譯的時間,提高了整個編譯系統的運行效率。在本文中,只解決了數控加工虛擬仿真系統的一個基礎問題——編譯問題,為數控加工虛擬仿真系統的進一步研制奠定堅實基礎。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 91秒拍国产福利一区| 中文字幕无线码一区2020青青 | 亚洲AV综合色一区二区三区| 2021国产精品视频一区| 一区二区三区影院| 中文字幕av日韩精品一区二区 | 欧美日本精品一区二区三区| 亚洲爆乳无码一区二区三区| 国产午夜精品一区二区三区嫩草 | 日本在线观看一区二区三区| 亚洲综合激情五月色一区| 无码人妻精品一区二区三区66| 国产日韩高清一区二区三区| 无码AV一区二区三区无码| 成人免费一区二区三区在线观看| 亚洲视频一区二区三区四区| 久久青草精品一区二区三区| 国产成人无码一区二区三区在线 | 少妇特黄A一区二区三区| 99国产精品一区二区| 成人国产一区二区三区| 波多野结衣的AV一区二区三区| 国产激情一区二区三区 | 无码毛片一区二区三区中文字幕| 精品一区二区三区中文| 成人一区二区三区视频在线观看| 亚洲av无码一区二区三区人妖| 伊人久久精品一区二区三区 | 国产亚洲一区区二区在线| 亚洲国产精品一区二区第四页| 日韩经典精品无码一区| 一区二区三区在线免费| 国产一区二区不卡在线播放| 东京热人妻无码一区二区av| 国产激情无码一区二区app| 精品国产一区二区三区久久| 欧洲无码一区二区三区在线观看 | 91久久精品午夜一区二区| 精品国产鲁一鲁一区二区| 亚洲av永久无码一区二区三区 | 一区二区在线观看视频|