《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于微機(jī)的激光雕刻機(jī)控制系統(tǒng)設(shè)計(jì)

基于微機(jī)的激光雕刻機(jī)控制系統(tǒng)設(shè)計(jì)

2008-12-08
作者:于政濤 林喜榮 周云龍

  摘 要: 敘述了基于PC機(jī)的激光雕刻機(jī)運(yùn)動(dòng)軌跡插補(bǔ)" title="插補(bǔ)">插補(bǔ)控制軟件的設(shè)計(jì)與實(shí)現(xiàn)和其外圍接口特性。
  關(guān)鍵詞: 控制 CNC 插補(bǔ)原理 計(jì)算機(jī)并口


  激光是20世紀(jì)60年代初期興起的一項(xiàng)新技術(shù),由于其具有單色性好,高亮度和方向性好的特點(diǎn),對(duì)各個(gè)技術(shù)領(lǐng)域產(chǎn)生了巨大的影響。而近年來(lái)的基于CNC(Computer Numerical Control)的激光雕刻機(jī)作為一種機(jī)、光、電、算相結(jié)合的高科技產(chǎn)品也在市場(chǎng)上出現(xiàn),其應(yīng)用相當(dāng)廣泛,市場(chǎng)需求量很大。由于該產(chǎn)品大部分是由國(guó)外進(jìn)口,其價(jià)格之高,令一般的國(guó)內(nèi)消費(fèi)者難以接受。主要同類產(chǎn)品有日本的MIMAKI PRO的專業(yè)刻字機(jī),上海長(zhǎng)江匯眾企業(yè)發(fā)展有限公司的長(zhǎng)江激光雕刻機(jī)和北京開(kāi)天科技公司的FC-15型激光雕刻機(jī)等。本文主要介紹激光雕刻機(jī)的控制系統(tǒng)" title="控制系統(tǒng)">控制系統(tǒng)的軟件設(shè)計(jì)以及主要端口的接口特性。在該激光雕刻機(jī)控制系統(tǒng)中,主要采用基于PC機(jī)的數(shù)字控制系統(tǒng),通過(guò)并口和步進(jìn)" title="步進(jìn)">步進(jìn)電機(jī)驅(qū)動(dòng)器來(lái)控制步進(jìn)電機(jī)" title="步進(jìn)電機(jī)">步進(jìn)電機(jī),從而達(dá)到控制工作臺(tái)(或激光束)的走向和速度的目的。
1 控制軟件的設(shè)計(jì)
1.1插補(bǔ)原理

  在激光雕刻機(jī)中為了實(shí)現(xiàn)對(duì)激光雕刻機(jī)的控制,主要采用矢量化的方法將控制分成不同種類的基本矢量,其中包括直線、圓弧、橢圓三個(gè)基本矢量。再利用插補(bǔ)原理來(lái)實(shí)現(xiàn)對(duì)這三個(gè)基本矢量的數(shù)字逼近。在激光雕刻機(jī)的控制系統(tǒng)中要求能夠達(dá)到較高的速度和精確度,因此控制軟件的計(jì)算不能太復(fù)雜,花費(fèi)的時(shí)間不能太多,這就是使用插補(bǔ)原理的原因所在。在本系統(tǒng)中所采用的為逐點(diǎn)比較插補(bǔ)算法。所謂逐點(diǎn)比較插補(bǔ)算法,即每走一步都要和給定軌跡上的坐標(biāo)值進(jìn)行一次比較,使該點(diǎn)在給定軌跡的上方或下方,或在給定軌跡的里面或外面,從而決定下一步的進(jìn)給方向,使之趨近加工軌跡。如此走一步,比較一次,決定下一步走向,逐步逼近給定的軌跡。逐點(diǎn)比較法是以折線來(lái)逼近直線或圓弧曲線的,它與規(guī)定的直線或圓弧之間的最大" title="最大">最大誤差不超過(guò)一個(gè)脈沖當(dāng)量,只要將脈沖當(dāng)量(即每走一步的距離)取得足夠小,就可以達(dá)到加工的精度要求。下面以直線為例來(lái)說(shuō)明插補(bǔ)原理。如圖1所示。


  偏差計(jì)算公式假定加工第一象限的直線OA,取直線起點(diǎn)為坐標(biāo)原點(diǎn)O,直線終點(diǎn)坐標(biāo)A(Xe、Ye)是已知的。M(Xm、Ym)為加工點(diǎn)(動(dòng)點(diǎn))。若M在OA直線上,則根據(jù)相似三角形的關(guān)系有:
  
  取Fm=Y(jié)mXe-XmYe作為直線插補(bǔ)的偏差判別式。
  若Fm=0,表明M點(diǎn)在直線OA上。
  若Fm>0,表明M點(diǎn)在直線OA上方的M′處。
  若Fm<0,表明M點(diǎn)在直線OA下方的M″處。
  對(duì)于第一象限直線從起點(diǎn)(即坐標(biāo)原點(diǎn))出發(fā)、
  若Fm>=0,沿+X軸方向走一步。
  若Fm<=0,沿-X軸方向走一步。
  當(dāng)兩方向所走的步數(shù)與終點(diǎn)坐標(biāo)(Xe、Ye)相等時(shí),發(fā)出到達(dá)終點(diǎn)信號(hào),停止插補(bǔ)。設(shè)在某加工點(diǎn)出現(xiàn)有Fm>=0時(shí),應(yīng)沿+X方向進(jìn)給一步,走一步后的坐標(biāo)值為: Xm+1=Xm+1、 Ym+1=Y(jié)m
  新的偏差為: Fm+1=Y(jié)m+1Xe-Xm+1Ye=Fm-Ye
  若Fm<=0時(shí),應(yīng)沿+Y方向進(jìn)給一步,走一步后的坐標(biāo)值為: Xm+1=Xm、 Ym+1=Y(jié)m+1
  新的偏差為:Fm+1=Y(jié)m+1Xe-Xm+1Ye=Fm+Xe
  上式為簡(jiǎn)化后的偏差計(jì)算公式、在公式中只有加、減運(yùn)算,只要將前一點(diǎn)的偏差值等于上述的終點(diǎn)坐標(biāo)值。當(dāng)然對(duì)于不同的象限以及不同的矢量插補(bǔ)公式不同,但其基本原理相似,在這里不再贅述。
1.2 對(duì)電機(jī)運(yùn)行速度的控制
  由于國(guó)產(chǎn)步進(jìn)電機(jī)的最高啟動(dòng)頻率一般為1~2kHz,一般步進(jìn)電機(jī)不能一下突變到要求的最大頻率,而在電機(jī)的最大運(yùn)行頻率下也不能立即停止,否則就會(huì)造成電機(jī)的丟步,影響系統(tǒng)的精度。這就需要在程序中有對(duì)電機(jī)的加減速控制,其基本思路如下:
  設(shè)電機(jī)每次步進(jìn)的時(shí)間為t,t與電機(jī)的運(yùn)行速度成反比,當(dāng)電機(jī)處于加速階段時(shí),在電機(jī)的下一步應(yīng)使其時(shí)間為t-δt,其中δt是根據(jù)電機(jī)加速度計(jì)算出的時(shí)間減小量,其計(jì)算方式如下:
  
  其中l(wèi)為某段距離的長(zhǎng)度,δ為系統(tǒng)的分辨率即最小步進(jìn)距離,n為所走的總步數(shù),tsum為所需走的總時(shí)間,t0為初始速度時(shí)每走一步所花費(fèi)的時(shí)間,t1為到達(dá)所要求走的距離時(shí)(即達(dá)到最大速度時(shí))每走一步所花費(fèi)的時(shí)間,根據(jù)具體的要求我們可以計(jì)算出以上各式的值。
  在基于PC機(jī)的控制系統(tǒng)中,一個(gè)很重要的問(wèn)題就是如何獲得對(duì)時(shí)間的精確控制。在windows操作系統(tǒng)中、系統(tǒng)所提供的時(shí)間函數(shù)只能達(dá)到毫秒級(jí)的精度,很難達(dá)到微秒級(jí)的控制精度。對(duì)于不同配置的PC機(jī),執(zhí)行相同的語(yǔ)句其時(shí)間也不會(huì)相同。為此我們利用系統(tǒng)提供的GetTickCount()函數(shù),用包括_nop語(yǔ)句的循環(huán)來(lái)達(dá)到微秒級(jí)的控制精度。下面為具體的實(shí)現(xiàn)方法用法:
  構(gòu)造CMicroSecond類:
  在類初始化函數(shù)中實(shí)現(xiàn)每微秒包含_nop語(yǔ)句循環(huán)數(shù)。
  void CMicroSecond::Initialize()
  {
   DWORD dwStart = 0;
   DWORD dwStop = 0;
   int nLoopSeed = 100000;
   do{
    m_dwLoopCounter1 = 0;
    dwStart = GetTickCount();
    for(int i=0; i< nLoopSeed; i++)
    {
     m_dwLoopCounter1++;
    ?。遖sm{nop}
    }
    dwStop = GetTickCount();
    nLoopSeed += 100000;
   }while ( dwStop - dwStart < 50 );
   m_dwLoopCounter1 = 0;
   dwStart=GetTickCount();
   for(int i=0; i<nLoopSeed;i++)
   {
    m_dwLoopCounter1++;
   ?。遖sm{nop}
   }
   dwStop = GetTickCount();
  ?。亢撩氲难h(huán)數(shù)
   m_dwLoopCounter1=m_dwLoopCounter1/(dwStop-dwStart);
  ?。课⒚氲难h(huán)數(shù)
   m_nLoopCountPerMicroSecond=(int)m_dwLoop
   Counter 1/1000;
  }
  實(shí)現(xiàn)固定時(shí)間的延時(shí):
  void CMicroSecond::MicroDelay( int uSec )
  {
   n=0;
   for(int i=0;i<uSec*m_nLoopCountPerMicroSecond;i++)
   {
    n++;
    _asm{nop}
   }
  }
  由于賦值語(yǔ)句、for語(yǔ)句、函數(shù)的調(diào)用等要消耗時(shí)間,因此所得到的時(shí)間也并不是非常精確的時(shí)間。但對(duì)于一般的PC機(jī)來(lái)說(shuō)完全可以達(dá)到幾十微妙的精度,而對(duì)于一般的控制系統(tǒng)來(lái)說(shuō),這個(gè)精度是足以達(dá)到控制要求的。
2 外圍接口特性
  在本系統(tǒng)中我們通過(guò)計(jì)算機(jī)的并口來(lái)實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)驅(qū)動(dòng)器的控制。我們知道并行口適配器的具體形式是多種多樣的,但是在PC系列微機(jī)中分配給它的最多有四個(gè)口,常用的是三個(gè)口,其地址為:03BCH - 03BEH:并口一(LPT1),0378H - 037AH:并口二(LPT2),0278H - 027AH:并口三(LPT3)。這里可以看到每個(gè)并口包括了三個(gè)口地址(其中第一個(gè)為基地址),是因?yàn)橐粋€(gè)并口具有數(shù)據(jù)口狀態(tài)口和控制口的緣故。不過(guò)值得注意的是,最好不要直接用上述口的地址去讀寫(xiě)并口,因?yàn)樵趯?shí)際應(yīng)用中很少有三個(gè)并行口都同時(shí)有效的,而且多功能卡和單色顯示卡上的并行口地址是有差別的。單色顯示卡上的并口地址一般是03BCH,而多功能卡上的并口基地址一般可以在0378H和0278H之間進(jìn)行選擇。因此如果直接對(duì)某一并口地址進(jìn)行操作,萬(wàn)一PC機(jī)上的并口適配器用的不是這個(gè)口地址那就要出錯(cuò)了。
  熟悉PC機(jī)的讀者都知道,PC機(jī)內(nèi)存最低端BIOS數(shù)據(jù)區(qū)的40:08H,40:0AH,40:0CH三個(gè)字是被設(shè)計(jì)用來(lái)存放上述三個(gè)并行口的基地址的,40:08H - 09H LPT1基地址;40:0AH - 0BH LPT2基地址;40:0CH - 0DH LPT3基地址。這三個(gè)字中的基地址是在PC機(jī)啟動(dòng)過(guò)程中根據(jù)實(shí)際存在的并行口地址存放的,使用它們來(lái)讀寫(xiě)并行口就不會(huì)出錯(cuò),所以在使用時(shí)一定要通過(guò)檢查這三個(gè)字來(lái)得到并行口的基地址。在對(duì)并口的讀寫(xiě)操作用到的語(yǔ)句為_outp( 并口地址、數(shù)據(jù))和 _inp( 并口地址 )(_inp返回值為讀到的數(shù)據(jù))。
3 系統(tǒng)特點(diǎn)及結(jié)果分析
  在本文所述的激光雕刻機(jī)系統(tǒng)中,我們通過(guò)動(dòng)態(tài)連接庫(kù)的方式對(duì)系統(tǒng)進(jìn)行控制,我們將對(duì)基本矢量元素的控制都封裝在了一個(gè)動(dòng)態(tài)連接庫(kù)中,這樣使系統(tǒng)的控制軟件具有一定可移植性。而這種通過(guò)PC機(jī)并口實(shí)現(xiàn)對(duì)激光雕刻機(jī)控制的方法簡(jiǎn)單而且易于實(shí)現(xiàn),可以大大的縮短開(kāi)發(fā)周期。如果我們配上相應(yīng)的激光雕刻機(jī)作圖軟件,就可以成為一個(gè)商用化的產(chǎn)品了。

參考文獻(xiàn)
1 廖效果,朱啟述.數(shù)字控制機(jī)床.華中理工大學(xué)出版社, 1992
2 王全國(guó),任晨光.軟件狗加密技術(shù)透視.北京:清華大學(xué)出版社,1996
3 MSDN.VC6在線幫助手冊(cè).

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。