| 摘要:敘述了基于PC機的激光雕刻機運動軌跡插補控制軟件的設(shè)計與實現(xiàn)和其外圍接口特性。 關(guān)鍵詞:控制 CNC 插補原理 計算機并口 激光是20世紀60年代初期興起的一項新技術(shù),由于其具有單色性好,高亮度和方向性好的特點,對各個技術(shù)領(lǐng)域產(chǎn)生了巨大的影響。而近年來的基于CNC(Computer Numerical Control)的激光雕刻機作為一種機、光、電、算相結(jié)合的高科技產(chǎn)品也在市場上出現(xiàn),其應(yīng)用相當(dāng)廣泛,市場需求量很大。由于該產(chǎn)品大部分是由國外進口,其價格之高,令一般的國內(nèi)消費者難以接受。主要同類產(chǎn)品有日本的MIMAKI PRO的專業(yè)刻字機,上海長江匯眾企業(yè)發(fā)展有限公司的長江激光雕刻機和北京開天科技公司的FC-15型激光雕刻機等。本文主要介紹激光雕刻機的控制系統(tǒng)的軟件設(shè)計以及主要端口的接口特性。在該激光雕刻機控制系統(tǒng)中,主要采用基于PC機的數(shù)字控制系統(tǒng),通過并口和步進電機驅(qū)動器來控制步進電機,從而達到控制工作臺(或激光束)的走向和速度的目的。 1 控制軟件的設(shè)計 1.1 插補原理 在激光雕刻機中為了實現(xiàn)對激光雕刻機的控制,主要采用矢量化的方法將控制分成不同種類的基本矢量,其中包括直線、圓弧、橢圓三個基本矢量。再利用插補原理來實現(xiàn)對這三個基本矢量的數(shù)字逼近。在激光雕刻機的控制系統(tǒng)中要求能夠達到較高的速度和精確度,因此控制軟件的計算不能太復(fù)雜,花費的時間不能太多,這就是使用插補原理的原因所在。在本系統(tǒng)中所采用的為逐點比較插補算法。所謂逐點比較插補算法,即每走一步都要和給定軌跡上的坐標值進行一次比較,使該點在給定軌跡的上方或下方,或在給定軌跡的里面或外面,從而決定下一步的進給方向,使之趨近加工軌跡。如此走一步,比較一次,決定下一步走向,逐步逼近給定的軌跡。逐點比較法是以折線來逼近直線或圓弧曲線的,它與規(guī)定的直線或圓弧之間的最大誤差不超過一個脈沖當(dāng)量,只要將脈沖當(dāng)量(即每走一步的距離)取得足夠小,就可以達到加工的精度要求。下面以直線為例來說明插補原理。如圖1所示。 偏差計算公式假定加工第一象限的直線OA,取直線起點為坐標原點O,直線終點坐標A(Xe,Ye)是已知的。M(Xm,Ym)為加工點(動點)。若M在OA直線上,則根據(jù)相似三角形的關(guān)系有: Xm / Ym=Xe / Ye 。疲恚剑伲恚兀澹兀恚伲遄鳛橹本插補的偏差判別式。 若Fm=0,表明M點在直線OA上。 若Fm>0,表明M點在直線OA上方的M′處。 若Fm<0,表明M點在直線OA下方的M″處。 對于第一象限直線從起點(即坐標原點)出發(fā), 若Fm>=0,沿+X軸方向走一步。 若Fm<=0,沿-X軸方向走一步。 當(dāng)兩方向所走的步數(shù)與終點坐標(Xe,Ye)相等時,發(fā)出到達終點信號,停止插補。設(shè)在某加工點出現(xiàn)有Fm>=0時,應(yīng)沿+X方向進給一步,走一步后的坐標值為: Xm+1=Xm+1, Ym+1=Ym 新的偏差為:Fm+1=Ym+1Xe-Xm+1Ye=Fm-Ye 若Fm<=0時,應(yīng)沿+Y方向進給一步,走一步后的坐標值為: Xm+1=Xm,Ym+1=Ym+1 新的偏差為:Fm+1=Ym+1Xe-Xm+1Ye=Fm+Xe 上式為簡化后的偏差計算公式在公式中只有加、減運算,只要將前一點的偏差值等于上述的終點坐標值。當(dāng)然對于不同的象限以及不同的矢量插補公式不同,但其基本原理相似,在這里不再贅述。 1.2 對電機運行速度的控制 由于國產(chǎn)步進電機的最高啟動頻率一般為1~2kHz,一般步進電機不能一下突變到要求的最大頻率,而在電機的最大運行頻率下也不能立即停止,否則就會造成電機的丟步,影響系統(tǒng)的精度。這就需要在程序中有對電機的加減速控制,其基本思路如下: 設(shè)電機每次步進的時間為t,t與電機的運行速度成反比,當(dāng)電機處于加速階段時,在電機的下一步應(yīng)使其時間為t-洌簦渲袖t是根據(jù)電機加速度計算出的時間減小量,其計算方式如下: n=l / δ,δt=t0-t1 / n-l,tsum=n(t0+t1) / 2 其中l為某段距離的長度,δ為系統(tǒng)的分辨率即最小步進距離,n為所走的總瞳數(shù),tsum為所需走的總時間,t0為初始速度時每走一瞳所花費的時間,t1為到達所要求走的距離時(即達到最大速度 時)每走一走所花費的時間,根據(jù)具體的要求我們可以計算出以各式的值。 在基于PC機的控制系統(tǒng)中,一個很重要的問題就是如何獲得對時間的精確控制。在windows操作系統(tǒng)中系統(tǒng)所提供的時間函數(shù)只能達到毫秒級的精度,很難達到微秒級的控制精度。對于不同配置的PC機,執(zhí)行相同的語句其時間也不會相同。為此我們利用系統(tǒng)提供的GetTickCount()函數(shù),用包括_nop語句的循環(huán)來達到微秒級的控制精度。下面為具體的實現(xiàn)方法用法: 構(gòu)造CMicroSecond類: 在類初始化函數(shù)中實現(xiàn)每微秒包含_nop語句循環(huán)數(shù)。 void CMicroSecond::Initialize { |