亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)控加工程序段的前瞻預(yù)取方法與流程

文檔序號:11916023閱讀:1161來源:國知局
一種數(shù)控加工程序段的前瞻預(yù)取方法與流程

本發(fā)明涉及數(shù)控系統(tǒng)中加工程序語言(G代碼)的解釋翻譯領(lǐng)域,具體是一種加工程序段的前瞻預(yù)取方法。



背景技術(shù):

在數(shù)控系統(tǒng)中,加工程序的解釋通常是以程序段為單位的,讀入一段加工程序,然后對這個程序段逐個關(guān)鍵字的進(jìn)行語法和語義分析,從而生成相應(yīng)的實(shí)際機(jī)床動作命令,如直線進(jìn)給、圓弧進(jìn)給、打開冷卻、主軸正轉(zhuǎn)或反轉(zhuǎn)等。但是,有時確定當(dāng)前程序段的某些參數(shù),往往需要對后續(xù)若干個加工程序段進(jìn)行聯(lián)合分析,如刀具半徑補(bǔ)償時,當(dāng)前運(yùn)動段的終點(diǎn)坐標(biāo)的確定及干涉檢查,需要對后面的一個或多個運(yùn)動段的共同解析;可是此時后面的加工程序段還沒有讀入,更未分析過,造成當(dāng)前程序段的解釋分析困難。常規(guī)的處理方法是延遲當(dāng)前程序段的解析,將相關(guān)命令參數(shù)存儲,然后進(jìn)行下面程序段的解析處理,直到相關(guān)條件滿足,才將以上存儲的命令參數(shù)進(jìn)行再處理形成實(shí)際的機(jī)床動作命令;此種方法的缺點(diǎn)是給解釋器軟件數(shù)據(jù)流的處理帶來了復(fù)雜的編碼實(shí)現(xiàn)。



技術(shù)實(shí)現(xiàn)要素:

為了解決當(dāng)前程序段的解釋分析依賴后續(xù)程序段的情況,本發(fā)明提出了一種主解釋器和輔解釋器相互配合,并行工作的前瞻預(yù)取方法,由輔解釋器超前主解釋器若干個程序段,完成這些前瞻程序段的預(yù)取和對這些前瞻程序段的預(yù)分析工作,將預(yù)分析后得到的參數(shù)傳送給主解釋器,使得主解釋器在分析當(dāng)前程序段時,能夠得到完整的依賴參數(shù)。

本發(fā)明采用的技術(shù)方案如下:一種數(shù)控加工程序段的前瞻預(yù)取方法,包括以下步驟:

當(dāng)前數(shù)控加工程序段的解釋依賴后續(xù)程序段時,輔解釋器超前主解釋器若干個程序段生成預(yù)分析參數(shù),主解釋器參考預(yù)分析參數(shù)完成當(dāng)前加工程序段的解釋分析,得到機(jī)床動作指令用于控制數(shù)控機(jī)床。

所述輔解釋器超前主解釋器若干個程序段生成預(yù)分析參數(shù),主解釋器參考預(yù)分析參數(shù)完成當(dāng)前加工程序段的解釋分析,得到機(jī)床動作指令包括以下步驟:

進(jìn)入雙解釋器工作方式:主解釋器初始化輔解釋器,輔解釋器從當(dāng)前程序段開始,預(yù)取后續(xù)若干個程序段,預(yù)分析后得到的預(yù)分析參數(shù)寫往內(nèi)存緩沖區(qū),主解釋器參考這些后續(xù)程序段的預(yù)分析參數(shù)后,對當(dāng)前程序段解釋分析,生成機(jī)床動作指令;

雙解釋器并行工作:主解釋器讀入下一個程序段,輔解釋器也往前讀入下一個程序段,輔解釋器總是超前主解釋器固定的若干個程序段;輔解釋器先分析自己讀入的程序段,預(yù)分析后將得到的預(yù)分析參數(shù)寫往兩者之間交互的內(nèi)存緩沖區(qū);主解釋器參考內(nèi)存緩沖區(qū)中的預(yù)分析參數(shù),完成對當(dāng)前程序段的解釋分析;

當(dāng)前加工程序段的解釋分析不依賴后續(xù)程序段時,主解釋器關(guān)閉輔解釋器,主解釋器獨(dú)立工作,不再參考預(yù)分析參數(shù)解釋分析當(dāng)前加工程序段。

所述主解釋器和輔解釋器的共有數(shù)據(jù)和方法封裝在一個解釋器基類中,主解釋器和輔解釋器從這個基類派生。

本發(fā)明的有益效果及優(yōu)點(diǎn):

1.本發(fā)明能夠完全繼承以前的解釋器軟件成果,且在解釋器計(jì)算量增加不大的情況下實(shí)現(xiàn)加工程序段的前瞻預(yù)取,前瞻程序段的個數(shù)可配置,比較靈活。

2.本發(fā)明軟件結(jié)構(gòu)簡單、數(shù)據(jù)流向清晰,易于編碼實(shí)現(xiàn)。

附圖說明

圖1為解釋器軟件的類層次結(jié)構(gòu)圖;

圖2為前瞻預(yù)取程序段時雙解釋器的工作結(jié)構(gòu)圖;

圖3為輔助解釋器啟動時的工作流程圖;

圖4為雙解釋器并行工作時的語法分析控制流圖;

圖5為雙解釋器并行工作時的語義分析控制流圖。

具體實(shí)施方式

下面結(jié)合附圖及實(shí)施例對本發(fā)明做進(jìn)一步的詳細(xì)說明。

由單解釋器工作方式到前瞻預(yù)取程序段的雙解釋器工作方式的轉(zhuǎn)換過程如下:

1)初始化輔解釋器,輔解釋器前瞻預(yù)取若干程序段。

初始化輔解釋器,復(fù)制主解釋器的全局工作狀態(tài)到輔助解釋器,然后輔解釋器從主解釋器的工作狀態(tài)出發(fā),預(yù)取指定個數(shù)的程序段,預(yù)分析后將得到的預(yù)分析參數(shù)通過內(nèi)存緩沖區(qū)傳遞給主解釋器,主解釋器得到這些預(yù)分析參數(shù)后,才能對當(dāng)前指令繼續(xù)進(jìn)行解釋分析,生成機(jī)床動作指令,完成當(dāng)前加工程序段的處理。

2)主輔兩個解釋器并行工作。

當(dāng)輔解釋器前瞻預(yù)取完指定個數(shù)的程序段后,主解釋器根據(jù)預(yù)分析的參數(shù)數(shù)據(jù),也完成當(dāng)前程序段的解釋分析,生成機(jī)床動作指令后,主輔兩個解釋器就進(jìn)入了同步并行工作階段。主解釋器移動文件指針讀入一個程序段,輔解釋器也往前讀入一個程序段,輔解釋器總是超前主解釋器固定的幾個程序段;輔解釋器先分析自己讀入的程序段,預(yù)分析(語法分析和語義分析)后將得到的參數(shù)數(shù)據(jù)寫往兩者之間交互的內(nèi)存緩沖區(qū),此時輔解釋器對程序段的分析結(jié)束;此后主解釋器才能展開對自己讀入的當(dāng)前程序段的解析工作,生成實(shí)際的機(jī)床動作指令。值得注意的是,主解釋器當(dāng)前程序段的分析結(jié)束后,還要把內(nèi)存緩沖中對應(yīng)當(dāng)前段的預(yù)分析數(shù)據(jù)刪除;否則,可能會導(dǎo)致主解釋器在解釋分析下個程序段時對預(yù)分析得到的參數(shù)的理解出現(xiàn)錯誤,或者緩沖區(qū)溢出。

3)關(guān)閉輔解釋器。

當(dāng)主解釋器不需要前瞻預(yù)讀指令,就可以關(guān)閉輔解釋器。

需要注意的是輔解釋器只是對前瞻預(yù)取的程序段進(jìn)行解釋分析,并沒有生成實(shí)際的機(jī)床動作指令,這些預(yù)取的程序段,主解釋器還要再次進(jìn)行解釋分析,這時才會形成實(shí)際的機(jī)床動作指令。

如圖2所示,由于主輔兩個解釋器的并行工作,使得數(shù)控系統(tǒng)中的解釋程 序模塊相對于單解釋器工作時計(jì)算量增大,再考慮到需要前瞻預(yù)取后續(xù)程序段的加工程序段有限,所以在解釋加工程序的整個過程中并不都是主輔解釋器并行工作的情況,而是當(dāng)主解釋器發(fā)現(xiàn)當(dāng)前解析處理的G代碼指令需要后續(xù)程序段時,這時才會初始化并打開輔解釋器,此后主輔兩個解釋器并行工作,當(dāng)主解釋器不再需要前瞻預(yù)取后續(xù)的程序段時,就會關(guān)閉輔解釋器,重新進(jìn)入單解釋器工作方式。

解釋加工程序的軟件模塊分為單解釋器和雙解釋器兩種工作模式,當(dāng)前程序段的解釋不依賴后續(xù)程序段時,只有主解釋器工作;當(dāng)前程序段的解釋依賴后續(xù)程序段時,主輔兩個解釋器同時工作。

以開源的RS274/NGC解釋器為藍(lán)本,較為詳細(xì)地說明如何在這個解釋器基礎(chǔ)上構(gòu)造一個能夠前瞻預(yù)取程序段的解釋器軟件模塊。

采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,將主輔解釋器共有且相同的數(shù)據(jù)和方法封裝成一個基類basic_interpreter,如描述解釋器全局狀態(tài)的_setup結(jié)構(gòu),描述加工程序段各字段參數(shù)的block結(jié)構(gòu),打開文件open(),進(jìn)行語法分析的read()、read_a()、……、read_z(),及其它;語義分析的相關(guān)方法,如convert_...()函數(shù)可聲明為純虛函數(shù),由派生類來補(bǔ)充。將主解釋器和輔解釋器分別封裝成兩個類main_interpreter和assistant_interpreter,二者均從basic_interpreter類派生得到(參考附圖1);但是二者的語義分析模塊有很大的不同,可把原RS274/NGC解釋器的語義分析convert_...()等方法照搬到主解釋器,需要預(yù)取程序段的指令處理部分稍作修改,而輔解釋器的語義分析convert_...()方法和主解釋器有很大不同,它不生成實(shí)際的機(jī)床動作指令,根據(jù)需要重寫;但是要注意到,并不是所有的convert_...()方法都需要的,如刀具半徑補(bǔ)償時,預(yù)讀程序段中我們只需要處理運(yùn)動指令,其它的輔解釋器不需要,所以輔處理器的編碼量非常有限。

上面概括性的介紹了解釋軟件模塊的實(shí)現(xiàn)架構(gòu),下面以一個具體地例子介紹解釋軟件模塊由單解釋器工作方式到前瞻預(yù)取程序段的雙解釋器工作方式的 轉(zhuǎn)換過程和實(shí)現(xiàn)方法,包括輔解釋器的啟動,雙解釋器并行工作,和輔解釋器的關(guān)閉。

在進(jìn)行刀具半徑補(bǔ)償時,需要后續(xù)一個或多個運(yùn)動段來進(jìn)行終點(diǎn)坐標(biāo)的計(jì)算及干涉檢查,那么打開半徑補(bǔ)償后的遇到的第一條運(yùn)動指令處,由主解釋器分別調(diào)用輔解釋器(assistant_interpreter)的init()和open()方法,初始化輔解釋器并打開加工程序文件,然后將主解釋器的全局狀態(tài)_set_up結(jié)構(gòu)體變量復(fù)制一份到輔解釋器的_set_up變量,接著調(diào)用輔解釋器(assistant_interpreter)的read()和execute()方法若干次,前瞻預(yù)讀若干段加工程序,由輔解釋器將預(yù)處理好的參數(shù)(主要是坐標(biāo))寫到內(nèi)存緩沖區(qū)(參考附圖3);此后控制流才能重新回到主解釋器,主解釋器根據(jù)輔解釋器的預(yù)分析數(shù)據(jù),完成打開半徑補(bǔ)償后的第一條運(yùn)動段的處理。

此后進(jìn)入雙解釋器工作狀態(tài),當(dāng)主解釋器(main_interpreter)的read()方法被調(diào)用時,在主解釋器的read()中調(diào)用輔解釋器的read()方法,輔解釋器先于主解釋器往前取出一個加工程序段,進(jìn)行程序段的語法分析,然后控制流回到主解釋器的read()方法,完成主解釋器的當(dāng)前程序段的語法分析(參考附圖4)。當(dāng)main_interpreter的execute()方法被調(diào)用時,在主解釋器的execute()中調(diào)用輔解釋器的execute()方法,輔解釋器也先于主解釋器完成對程序段的語義分析,輔解釋器預(yù)分析后的到的參數(shù)(主要是坐標(biāo))寫往內(nèi)存緩沖,此后控制流回到主解釋器的execute(),完成主解釋器的當(dāng)前程序段的語義分析(參考附圖5)。

當(dāng)退出半徑補(bǔ)償(G40)時,由主解釋器去關(guān)閉輔解釋器,此時整個模塊工作在單解釋器狀態(tài)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1