<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 數(shù)控制碼系統(tǒng)中的數(shù)據(jù)處理新方法

          數(shù)控制碼系統(tǒng)中的數(shù)據(jù)處理新方法

          作者: 時(shí)間:2012-05-23 來(lái)源:網(wǎng)絡(luò) 收藏

          摘要:分析了數(shù)的特點(diǎn),討論了數(shù)控中兩種傳統(tǒng)的及三種改進(jìn)。綜合分析各種的優(yōu)缺點(diǎn),結(jié)合制碼的特點(diǎn),提出了一種更適用的數(shù)據(jù)處理新方法。該方法即節(jié)約了系統(tǒng)資源,又提高了制碼速度和工作效率。

          本文引用地址:http://www.ex-cimer.com/article/149012.htm

          關(guān)鍵詞:數(shù)據(jù)處理數(shù)控譯碼制碼系統(tǒng)

          數(shù)控系統(tǒng)的數(shù)據(jù)處理是指NC程序送入零件緩沖區(qū)之后、插補(bǔ)之前的準(zhǔn)備工作,主要包括譯碼、運(yùn)動(dòng)軌跡計(jì)算、進(jìn)給速度計(jì)算三部分。選用合理的數(shù)據(jù)處理方法將大幅提高編程的正確性和工作效率,且便于數(shù)據(jù)校對(duì),尤其適合批量零件和有規(guī)律零件程序加工。數(shù)據(jù)處理方法是否合理主要取決于其連續(xù)性、時(shí)間效率和資源占用情況。目前,對(duì)傳統(tǒng)數(shù)據(jù)處理方法改進(jìn)的數(shù)據(jù)處理方法主要有:資源重疊流水處理的解釋方法、目標(biāo)碼編譯方法、解釋一編譯方法。它們各有優(yōu)點(diǎn)和不足,如在不同的環(huán)節(jié)加快了處理速度,減少了等待時(shí)間,但就整體的連續(xù)性和時(shí)間效率而言,還不夠完善。為了進(jìn)一步提高加工連續(xù)性和加工效率,本文針對(duì)各算法的優(yōu)缺點(diǎn)提出了一種新的數(shù)據(jù)處理方法,更加適用于制碼系統(tǒng)的加工處理。

          1數(shù)碼系統(tǒng)

          制碼系統(tǒng)由三個(gè)步進(jìn)電機(jī)驅(qū)動(dòng),在圓形小零件上制碼。零件圓面上需以環(huán)形刻兩組對(duì)稱的、由字母和數(shù)字組成的標(biāo)記碼。規(guī)定每個(gè)零件上的標(biāo)記碼字符個(gè)數(shù)相同(取6位字符為例),即每個(gè)零件加工時(shí)編譯的目標(biāo)碼大小一樣,所占內(nèi)存空間相同。標(biāo)記碼主要有兩部分:整批零件的代號(hào)(相同)和每個(gè)零件單獨(dú)的標(biāo)記碼(不同)。刀具上固定需要用到的字母刀和數(shù)字刀,根據(jù)轉(zhuǎn)動(dòng)刀架和轉(zhuǎn)動(dòng)零件對(duì)準(zhǔn)零件上需要刻碼的位置。所以這三個(gè)步進(jìn)電機(jī)分別用來(lái)刀架的轉(zhuǎn)動(dòng)、零件的位置和刀架的深淺。其數(shù)據(jù)處理就是對(duì)固定位數(shù)的標(biāo)記碼進(jìn)行譯碼,主要特點(diǎn)是:每個(gè)零件的標(biāo)記碼可作為一個(gè)代碼段來(lái)處理;可以針對(duì)標(biāo)記碼中整批零件代號(hào)相同和各零件代碼不同的特點(diǎn)進(jìn)行相應(yīng)的處理;零件上刻的是兩組完全相同的標(biāo)記碼,即處理的數(shù)據(jù)相同,只是改變了位置;每個(gè)零件加工的銜接速度很快,數(shù)據(jù)處理需要有很好的連續(xù)性。針對(duì)制碼系統(tǒng)中數(shù)據(jù)處理的特點(diǎn),結(jié)合各數(shù)據(jù)處理方法,研究出一種建立在已有數(shù)據(jù)處理方法基礎(chǔ)之上、更適用于制碼系統(tǒng)數(shù)據(jù)處理的方法。

          2傳統(tǒng)的數(shù)據(jù)處理方法

          傳統(tǒng)的數(shù)據(jù)處理方法有解釋方法和編譯方法兩種。

          (1)解釋方法

          解釋方法是將加工程序整理成某種形式,在加工時(shí)由主控程序順序取出,分析判斷后,進(jìn)行譯碼處理,并對(duì)零件加工程序逐條進(jìn)行解釋、插補(bǔ)和控制。這種方法占用內(nèi)存少、操作簡(jiǎn)單,但存在難以克服的缺點(diǎn):各模塊問的控制是順序的,如果對(duì)一個(gè)程序的解釋過(guò)程較慢而使機(jī)床具有一定的等待時(shí)間,則加工出來(lái)的工件就會(huì)出現(xiàn)明顯的粗糙度;不易處理各程序間的轉(zhuǎn)接,易形成停頓與過(guò)切。

          (2)編譯方法

          編譯方法是先對(duì)加工程序全部編譯,將結(jié)果放到緩沖區(qū)中,當(dāng)開始加工時(shí),直接啟動(dòng)插補(bǔ)中斷程序。從緩沖區(qū)中取出編譯好的數(shù)據(jù),進(jìn)行計(jì)算并控制加工。這種加工方法的優(yōu)點(diǎn)是加工速度快、效率高;缺點(diǎn)是編譯與加工之間存在時(shí)間間隔。

          3改進(jìn)的數(shù)據(jù)處理方法

          3。1資源重疊漉水處理的解釋方法

          針對(duì)傳統(tǒng)方法的缺點(diǎn),對(duì)傳統(tǒng)的解釋控制進(jìn)行改進(jìn),即資源重疊流水處理的解釋控制方法。時(shí)間重疊是流水處理的關(guān)鍵。它不僅是CNC裝置處在NC工作方式時(shí),程序輸入、譯碼、插補(bǔ)和位控加工四個(gè)處理過(guò)程的時(shí)間資源重疊,而且譯碼過(guò)程所包含的各子過(guò)程,即程序裝入、語(yǔ)法檢查、解釋和刀具補(bǔ)償四個(gè)子過(guò)程之間也運(yùn)用了時(shí)間資源重疊。

          在NC工作方式下。若用t1、t2、t3、t4分別表示程序輸入、譯碼、插補(bǔ)和位控加工四個(gè)子過(guò)程的處理時(shí)間,則加工一個(gè)零件程序段的數(shù)據(jù)轉(zhuǎn)換時(shí)間將是t=tl+t2+t3+t4;在數(shù)據(jù)處理的譯碼過(guò)程中,tl、t2、t3、t4分別表示程序裝入、語(yǔ)法檢查、解釋和刀具補(bǔ)償四個(gè)子過(guò)程的處理時(shí)間,則數(shù)據(jù)處理的總時(shí)間將是t=t1+t2+t3+t4。如果以傳統(tǒng)的解釋方式順序處理,即第一個(gè)數(shù)據(jù)處理完后再處理第二個(gè)數(shù)據(jù),則在兩個(gè)程序段的輸出之間將有一個(gè)時(shí)間長(zhǎng)度t的時(shí)間間隔,其時(shí)空關(guān)系如圖1(a)所示。這種時(shí)間間隔反映在電機(jī)上就是電機(jī)時(shí)轉(zhuǎn)時(shí)停,反映在刀具上就是刀具時(shí)走時(shí)停。不管這種時(shí)間間隔多么小,時(shí)走時(shí)停在數(shù)控加工中都是不允許的。

          采用重疊流水處理技術(shù)可以消除這種間隔,重疊流水處理后的時(shí)間空間關(guān)系如圖1(b)所示。其關(guān)鍵是時(shí)間重疊,即在一段時(shí)間間隔內(nèi)不是處理一個(gè)過(guò)程,而是處理兩個(gè)或更多的子過(guò)程。經(jīng)過(guò)時(shí)間重疊流水處理后,每個(gè)零件程序段的輸出之間、每個(gè)數(shù)據(jù)處理之間不再有間隔,從而保證電機(jī)轉(zhuǎn)動(dòng)和刀具移動(dòng)的連續(xù)性,加快數(shù)控加工的速度。

          該方法節(jié)約了系統(tǒng)資源,有效防止了內(nèi)存碎片的形成,適應(yīng)大程序譯碼和復(fù)雜數(shù)據(jù)處理。

          3。2目標(biāo)碼編譯方法

          目標(biāo)碼編譯是執(zhí)行一個(gè)零件的加工程序,只需在開機(jī)后首次運(yùn)行時(shí)進(jìn)行編譯,然后將得到的目標(biāo)碼存放在RAM中,下次加工同樣的零件時(shí),無(wú)需再次對(duì)原零件程序進(jìn)行編譯,直接執(zhí)行目標(biāo)碼即可,從而減少了每次重新編譯所占用的時(shí)間。

          3。3解釋一編譯方法

          單純使用傳統(tǒng)的解釋方法或編譯方法都有不可避免的缺點(diǎn),解釋一編譯方法是將兩種方法相結(jié)合進(jìn)行數(shù)據(jù)處理的方法。在開始加工前先開辟一段內(nèi)存作為緩沖區(qū)(根據(jù)具體情況分配),接著一次性編譯若干程序段,直到緩沖區(qū)滿。然后,從緩沖區(qū)中取出已編譯好的程序段進(jìn)行加工處理。這里必須給加工處理完的程序置一標(biāo)志,例如,定義一標(biāo)志位bufflag,初始為False,程序加工處理完后置為True,則當(dāng)所有程序的標(biāo)志位都為True時(shí)清空緩沖區(qū),繼續(xù)裝入下一批編譯的程序段。譯碼緩沖區(qū)在譯碼進(jìn)程初始化時(shí)被開辟,在譯碼進(jìn)程被殺死時(shí)釋放。在譯碼緩沖區(qū)的生命期間,數(shù)據(jù)被不斷地寫入、修改、讀出與清除。對(duì)于某一個(gè)緩沖區(qū),它不斷地接收新的零件程序段,不斷地被各子進(jìn)程輪流處理。這種將大量加工程序分成若干程序段進(jìn)行編譯加工的方法,可有效減少編譯等待時(shí)間,增加加工效率。

          4適用于制碼系統(tǒng)數(shù)據(jù)處理的新方法

          上述幾種數(shù)據(jù)處理方法都有其不足,如資源重疊流水處理解釋方法只是縮短了進(jìn)程間的等待時(shí)間,其解釋階段不如目標(biāo)碼編譯方法效率高,整個(gè)譯碼處理效率不如解釋一編譯方法;目標(biāo)碼編譯方法只是優(yōu)化了編譯階段的數(shù)據(jù)處理;解釋一編譯方法結(jié)合解釋方法和編譯方法,提高了整體數(shù)據(jù)處理效率,但數(shù)據(jù)解釋送緩沖區(qū)階段不如資源重疊流水處理解釋方法效率高,緩沖區(qū)編譯階段又不如目標(biāo)碼編譯方法效率高。

          綜合分析上述各方法的優(yōu)缺點(diǎn),為制碼系統(tǒng)研究出一種更優(yōu)的數(shù)據(jù)處理方法。主要思想是:總體運(yùn)用解釋一編譯方法,開辟一段內(nèi)存作為緩沖區(qū),先一次性編譯若干代碼段存入緩沖區(qū),直到緩沖區(qū)滿。然后,從緩沖區(qū)中取出已編譯好的代碼段進(jìn)行加工處理。而在一次性編譯若干代碼段中各條代碼時(shí),采用資源重疊流水處理的解釋方法進(jìn)行編譯處理。并且在編譯處理時(shí)綜合采用目標(biāo)碼編譯方法,先判斷各標(biāo)志位,如具有相同代碼段,就將該段相同代碼編譯后的目標(biāo)碼存入RAM中,下次處理相同數(shù)據(jù)時(shí)直接調(diào)用RAM中的目標(biāo)碼即可。其數(shù)據(jù)處理過(guò)程如下:

          (1)定義緩沖區(qū)數(shù)據(jù)格式

          根據(jù)零件標(biāo)記碼的固定長(zhǎng)度分配一定內(nèi)存空間作為緩沖區(qū),需兩個(gè)一樣大小的緩沖區(qū),一個(gè)用來(lái)存放若干程序殷(一個(gè)零件的6個(gè)標(biāo)記碼);另一個(gè)用來(lái)存放譯碼結(jié)果。緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)定義如下:

          每個(gè)緩沖區(qū)設(shè)置6小塊緩沖區(qū)BUF0~BUF5,用來(lái)存放每個(gè)零件的6位標(biāo)記碼,并置相應(yīng)的bufflag為1;6塊緩沖區(qū)滿后,再依次進(jìn)行數(shù)據(jù)譯碼處理,處理結(jié)果放入另一緩沖區(qū),同時(shí)置相應(yīng)的bufflag為2;當(dāng)6塊緩沖區(qū)全部準(zhǔn)備好(bufflag為2),則進(jìn)行加工,加工完的標(biāo)記碼所對(duì)應(yīng)的緩沖區(qū)就置bufflag為O,繼續(xù)存放下一個(gè)零件標(biāo)記碼。

          (2)采用資源重疊流水處理的解釋方法進(jìn)行譯碼

          ①?gòu)牡谝粋€(gè)緩沖區(qū)取出第一個(gè)零件標(biāo)記碼進(jìn)行編譯并將結(jié)果放入第二個(gè)緩沖區(qū)中,同時(shí)輸入第二個(gè)零件的標(biāo)記碼。

          ②從第二個(gè)緩沖區(qū)中取出第一個(gè)零件的編譯結(jié)果對(duì)第一個(gè)零件進(jìn)行加工,這時(shí)編譯第二個(gè)零件的標(biāo)記碼放入已空的第二個(gè)緩沖區(qū)中,同時(shí)輸入第三個(gè)零件的標(biāo)記碼。

          ③第一個(gè)零件加工完畢,繼續(xù)加工第二個(gè)零件,并編譯第三個(gè)零件的標(biāo)記碼,同時(shí)輸入第四個(gè)零件的標(biāo)記碼。

          采用重疊流水?dāng)?shù)據(jù)譯碼處理,直到加工完成整批零件。數(shù)據(jù)譯碼處理過(guò)程如圖2。

          (3)編譯緩沖區(qū)的數(shù)據(jù)

          數(shù)據(jù)編譯階段,即從第一個(gè)緩沖區(qū)取出數(shù)據(jù)進(jìn)行編譯的階段,編譯結(jié)果存入第二個(gè)緩沖區(qū),采用目標(biāo)碼編譯方法對(duì)數(shù)據(jù)進(jìn)行編譯。由于零件上標(biāo)記碼是兩組對(duì)稱的相同代碼且整批零件的代號(hào)相同,為了避免重復(fù)編譯相同代碼,在緩沖區(qū)格式中定義了兩個(gè)標(biāo)志位accessorynuml和accessorynum2。accessorynuml是某個(gè)零件單獨(dú)標(biāo)記碼編譯后的目標(biāo)碼標(biāo)志位,為0表示該碼還未編譯或已重復(fù)使用一次;為1表示已編譯存儲(chǔ),且還未重復(fù)使用。accessorynum2是整批零件代號(hào)編譯后的目標(biāo)碼標(biāo)志位,為0表示還未編譯或已重復(fù)使用n次;為n表示第一次編譯存儲(chǔ),且未重復(fù)使用;為i表示已重復(fù)使用了n-i次(n為整批零件數(shù),i為1~n間的整數(shù))。當(dāng)acccssorynum1為1時(shí)說(shuō)明該零件單獨(dú)標(biāo)記碼還要被使用,應(yīng)先保存,下次使用時(shí)可以直接加工而無(wú)需再去編譯;由于加工零件是對(duì)稱的。所以第二次加工就無(wú)需重新編譯而直接加工即可。當(dāng)accessorynum2的值大于O小于n時(shí),說(shuō)明該代碼需保存。由于整批零件的代號(hào)相同,因此加工每個(gè)零件時(shí)都可以直接調(diào)用第一次編譯好的代號(hào)數(shù)據(jù)直接加工。通過(guò)accessorynum1和accessorynum2兩個(gè)標(biāo)志位,可以加快數(shù)據(jù)編譯處理速度,有效提高數(shù)據(jù)處理的效率。

          當(dāng)一個(gè)零件加工完換下一個(gè)零件時(shí),繼續(xù)進(jìn)行下一個(gè)零件標(biāo)記碼的數(shù)據(jù)處理,直到加工完整批零件。只有在輸入或編譯下一個(gè)零件,即需要占用兩緩沖區(qū)之一、而上一零件的編譯或加工還沒有處理完時(shí)需要等待,但這種等待是極其短暫的。

          經(jīng)實(shí)驗(yàn)可知,數(shù)控制碼系統(tǒng)中運(yùn)用資源重疊流水解釋方法實(shí)現(xiàn)數(shù)據(jù)處理時(shí),一個(gè)零件的制碼時(shí)問需要2。4s;運(yùn)用解釋一編譯方法實(shí)現(xiàn)數(shù)據(jù)處理時(shí),需要2。3s;而運(yùn)用這種新數(shù)據(jù)處理方法實(shí)現(xiàn)數(shù)據(jù)處理時(shí),只需要2。0s,比運(yùn)用前兩種方法的教率分別提高了16。7%和13。04%,有效地提高了數(shù)控制碼的速度和效率,且使用至今一直很穩(wěn)定。

          這種新的數(shù)據(jù)處理方法適合大量有規(guī)律或程序段較短的數(shù)控程序的譯碼。它能節(jié)約系統(tǒng)資源,加快數(shù)據(jù)處理速度,且譯碼緩沖區(qū)是靜態(tài)分配的,可有效防止內(nèi)存碎片的形成。該方法還能很好地利用Windows系統(tǒng)本身提供的基于線程的搶先式多任務(wù)機(jī)制。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();