跳到主要內容

四軸銑削(一)

文章日期:2008-03-21 09:53





甚麼叫做四軸( 4-axis),或是五軸( 5-axis)工具機呢?
https://www.youtube.com/watch?v=jVUMk71IZsU  
通常在工具機講幾軸機的軸是指axis,也就是直線進給軸或旋囀進給軸,至於廣意的軸,則有兩種含意:spindle及axis

1. 主軸(spindle),也稱加工軸或工作軸,主軸通常做快速旋轉用,在機台上常定為Z軸,以銑床來講Z軸用來夾持刀具,以車床來講Z軸是用來夾持工件

2. 進給軸(axis),進給有兩種方式,即直線進給、旋轉進給,分述如下:
2-1 直線進給軸 : 用來做直線移動的,命名上一般有X、Y、Z三軸,並習慣以刀軸所在之軸命名為Z軸。
2-2 旋轉進給之軸  : 通常用來做分度用,命名上稱之為A軸、B軸、或C軸,此三旋轉軸通常分別平行於X、Y、Z三直線軸,它們可能的存在方式有 :
2-2-1 兩個旋轉軸皆裝在床台上 : 這種五軸銑床就是俗稱的"搖屁銑床",它的床台會搖擺,理論上說來在床台的兩個旋轉軸有三種可能情況,即 : A、B軸,B、C軸,或A、C軸,但實際上,以B、C軸為最常見
2-2-2 兩個旋轉軸皆裝在刀頭上: 這種五軸銑床就是俗稱的"搖頭銑床",亦即它的銑刀頭會搖擺,銑刀頭的兩個旋轉軸以A、B軸為最常見
2-2-3 一個旋轉軸(B軸)裝在刀頭,另一個旋轉軸(C軸)裝在床台上,
2-2-4 複合機http://www.youtube.com/watch?v=E1Fj1j8Sg1g&feature=related(這機器是雙主軸,故算起來有六軸)。

X、Y、Z直線進給軸再加上A、B、C三軸旋轉進給軸,依理應該有六軸,為甚麼銑床大半只用到五軸就停止了呢?那是因為5個軸即已滿足求解條件,可讓銑刀到達任意之銑削位置。

至於車床,尤其是車銑複合機,常有耳聞九軸之多,那是因為車銑複合機為了增快加工速度,所以在工件的徑向多加了幾個平移進給軸所致。

軸除了數量的問題之外,還有連動與否的問題,早期工具機的很多軸都是只有單動或雙動而已,近20年大多數的數控工具機都已能多軸同動,以FANUC控制器11S30i—MODEL A系統為例,其最多軸數和最大主軸配置數為40軸,其中進給軸32軸,主軸為8軸,最大同時控制軸數為24軸。

 多軸銑削加工
以在圓筒上銑一個圓溝為例,如下圖所示,來說明各種不同加工
1. 兩軸加工 : 若以端銑刀直徑等於圓溝寬度來銑這個圓溝,這個工件只需兩軸連動(X軸+A軸)就可加工,以銑床言,工件夾在X軸方向,銑床床台X軸向移動並旋轉A軸即可銑出圓溝,又或者也可採車銑複合機台來加工,工件夾在Z軸,動力刀塔夾持直徑等於圓溝寬度的端銑刀,加工時端銑刀Z軸方向移動,工件由C軸旋轉進給。

2. 三軸加工 : 如果要用直徑較小的端銑刀銑出這個大圓溝,而且要求圓溝的兩壁要與直徑等於圓溝寬度的端銑刀銑出來的效果一模一樣,那就得成三軸連動(X軸+Y軸+A軸)的加工,(如果不要求圓溝兩壁,那用兩軸加工即可),加工時,以銑床言,工件夾在X軸方向,銑床床台X軸及Y軸皆需移動並旋轉A軸,又或者也可採車銑複合機台來加工,工件夾在Z軸,動力刀塔夾持直徑較小的端銑刀,加工時端銑刀Z軸及Y軸方向移動,工件由C軸旋轉進給,不過,有很多簡易型的車銑複合機台沒有Y軸,就無法銑了。

3. 四軸加工 : 當圓溝加工完之後,如果想要在這個圓溝的周邊稜線加以倒角以去除毛邊,基本上至少需要三軸連動(X軸+ Z軸+A軸),不過這需要精確地重新計算展開圖上各點的位置,又或者如果沿用前述二軸連動的A軸資料,那就可不用重新計算Y軸的值,但要以四軸連動(X軸+Y軸+ Z軸+A軸)的方式來加工,加工時,以銑床言,工件夾在X軸方向,銑床床台X軸及Y軸皆需移動並旋轉A軸,而球銑刀則夾在在Z軸方向做上下移動並旋轉銑削,又或者也可採車銑複合機台來加工,工件夾在Z軸,動力刀塔夾持球銑刀,加工時球銑刀Z軸Y軸及Y軸方向移動並旋轉銑削,工件由C軸旋轉進給,不過,這還是得要有Y軸的車銑複合機台才行。


本文將逐次說明這三種加工。

    



                                                              圓溝立體圖




                                                              圓溝側視圖


兩軸連動銑削加工(X+A)
如下圖所示,圓溝寬度64mm,將直徑64mm之端銑刀裝在Z軸,床台X軸向移動並旋轉A軸即可銑出下圖之圓溝。


換一個角度來看,如果A軸沒轉動,端銑刀除了X軸移動之外,Y軸也需移動才能銑削溝槽的轉折處,如下圖所示




為了不讓Y軸移動,替代方案就是讓A軸旋轉,將端銑刀中心旋轉至X軸上,俾使Y軸的位移量為零,如下圖所示,這A軸旋轉的角度寫入CNC程式裡,就可銑出工件,A軸旋轉的角度計算方法如下:360*(旋轉弧長/圓筒直徑)
 


Autolisp寫法
1.開檔寫出CNC子程式片頭及關檔
 .........
  (setq file01 (open "C://test.nc" "w"))
  (princ "%\n" file01)
  (princ "O0005\n" file01)
  (princ "G0X121.205 Y0. Z110. A0. F600\n" file01)
  (princ "S800 M03\n" file01)
  (princ "M08  F70\n" file01)
.........
  (close file01)
第一行 :(setq file01 (open "C://test.nc" "w")) " , 這意思就是說 :  Autolisp會寫(write)出一個檔, 檔名為"test.nc",  而這個test.nc是放在C碟的根目錄下, 所以在AutoCAD環境裡執行完lsp之後, 只要打開檔案總管,  找C碟的根目錄, 就可以發現這個test.nc檔

2.以AutoLisp計算A軸旋轉角度並寫出CNC程式

(defun c:kk()
  (setq r1 10.0 xc 0.0 yc 0.0 d 0.0)
  (setq r0 32.0  x1 0.0 y1 0.0  x2 0.0 y2 0.0  z2 0.0  xp 0.0 yp 0.0 zp 0.0 )
  (setq xp 121.205 yp 0  zp 110.)
  (setq file01 (open "C://test.nc" "w"))
  (princ "%\n" file01)
  (princ "O0005\n" file01)
  (princ "G0X121.205 Y0. Z110. A0. F600\n" file01)
  (princ "S800 M03\n" file01)
  (princ "M08  F100\n" file01)
  (setq x2 90. y1 0.0  y2 0.0  z2 75.0 ctype 1)
  (princ "G1 " file01)
  (pp1)
  (princ "     F30\n" file01)
  (setq x2 121.205  ctype 1)
  (princ "G1 " file01)
  (pp1)

  (setq radChg (/ 180.0 3.1415926) angChg (/ 3.1415926 180.0))
  (setq cosCta (cos angChg) sinCta (sin angChg))
  (setq iniCta 0.0  cta0 0.0  cta1 0.0  ctaTatal 0.0  iniAxial 0.0 wkAxial 0.0)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (setq xp 121.205 yp -32  x2 149.9004 y2 -46.2611)
  (setq ctype 2 ppr 36.0)
  (scir)  ;obtain xc, yc, iniCta, cta0, cta1,
  (setq pillarDia (* 3.1415926 210) )
  (setq i1 1   x1wk (- xp xc)  y1wk (- yp yc))
  (setq x2mem x2  y2mem y2  a2 0.0)
  (while (< i1 ctaTatal)
    (setq x2wk (+ (* x1wk cosCta) (* y1wk sinCta) ))
    (setq y2wk (- (* y1wk cosCta) (* x1wk sinCta) ))
    (setq x2 (+ xc (* (+ r0 ppr) (/ x2wk ppr))) )
    (setq y2 (+ yc (* (+ r0 ppr) (/ y2wk ppr))) )
    (if (= i1 1)
       (princ "G1 " file01)
       (princ "   " file01) )
    (setq a2 (* 360 (/  y2 pillarDia)) )
    (pp2Axial)
    (setq i1 (+ i1 1) x1wk x2wk y1wk y2wk) )

;;;;;;;;;the last endpoint of Arc
  (setq y2 (+ yc (* (+ r0 ppr) (/ (- y2mem yc) ppr))) )
  (setq x2 (+ xc (* (+ r0 ppr) (/ (- x2mem xc) ppr))) )
  (setq a2  (* 360 (/  y2 pillarDia)) )
  (pp2Axial)

;;;;;;;;; ;for slant line
  (setq x2 254.4931  y2 -184.3234)
  (setq d12 (sqrt (+ (* (- x2 x2mem)(- x2 x2mem)) (* (- y2 y2mem)(- y2 y2mem)) )))
  (setq x3 (- x2 (* r0 (/ (- y2 y2mem) d12) )))
  (setq y3 (+ y2 (* r0 (/ (- x2 x2mem) d12) )))
  (setq x2 x3 a2 (* 360 (/ y3 pillarDia)))
  (pp2Axial)
  (princ "G0 Z150.\n" file01)     ;raising tool
  (princ "M99\n" file01)
  (princ "%\n" file01)
  (close file01)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;以下是子程式;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun pp1()
  (setq pxs(rtos x2 2 3) pys(rtos y2 2 3) pzs(rtos z2 2 3))
  (setq pxl(strlen pxs) pyl(strlen pys) pzl(strlen pzs))
  (setq pxn(- 7 pxl) pyn(- 7 pyl) pzn(- 7 pzl))
  (if (> (abs (- xp x2))  0.001)
    (progn
      (princ " X" file01)   (princ pxs file01)
      (if ( or (< (abs (- (fix x2) x2)) 0.001) (< (- 1 (abs (- (fix x2) x2))) 0.001) ) (princ "." file01) )
      (repeat pxn (princ " " file01))  ))
  (if (> (abs (- yp y2))  0.001)
    (progn
      (princ " " file01)  (princ "Y" file01)  (princ pys file01)
      (if ( or (< (abs (- (fix y2) y2)) 0.001) (< (- 1 (abs (- (fix y2) y2))) 0.001) ) (princ "." file01) )
      (repeat pyn (princ " " file01)) ))
  (if (> (abs (- zp z2)) 0.001)
    (progn
      (princ " " file01)  (princ "Z" file01)  (princ pzs file01)
      (if ( or (< (abs (- (fix z2) z2)) 0.001) (< (- 1 (abs (- (fix z2) z2))) 0.001) ) (princ "." file01) )))
  (if (> ctype 1 )
       (progn
          (float ppr)
          (princ " " file01)  (princ "R" file01)  (princ ppr file01)  ))
  (princ "\n" file01)
  (setq xp x2 yp y2  zp z2)
)

(defun pp2Axial()
  (setq pxs(rtos x2 2 3) pzs(rtos a2 2 3))
  (setq pxl(strlen pxs)  pzl(strlen pzs))
  (setq pxn(- 7 pxl)  pzn(- 7 pzl))
  (princ " X" file01)   (princ pxs file01)
  (if ( or (< (abs (- (fix x2) x2)) 0.001) (< (- 1 (abs (- (fix x2) x2))) 0.001) )  (princ "." file01) )
  (repeat pxn (princ " " file01))
  (princ " A" file01)  (princ pzs file01)
  (if ( or (< (abs (- (fix z2) z2)) 0.001) (< (- 1 (abs (- (fix z2) z2))) 0.001) ) (princ "." file01) )
  (princ "\n" file01)
)

(defun scir ()
  (setq d (/ (distance (list xp yp) (list x2 y2)) 2))
  (if (> d 0)
    (progn
      (setq k1 (sqrt (- (* ppr ppr) (* d d))) )
      (if (< ctype 2.5)
           (setq xc (+ (/ (+ xp x2) 2) (/ (* k1 (- y2 yp)) d 2))
                 yc (- (/ (+ yp y2) 2) (/ (* k1 (- x2 xp)) d 2)))
           (setq xc (- (/ (+ xp x2) 2) (/ (* k1 (- y2 yp)) d 2))
                 yc (+ (/ (+ yp y2) 2) (/ (* k1 (- x2 xp)) d 2)))  )))
  (setq ctaTatal (* radChg (atan (/ d k1)) 2))
  (setq x0 xp iniCta 0.0 cta0 0.0)
  (if (< (abs (- xc xp )) 0.01)
      (if (> yp yc)
           (setq iniCta 90.0)
           (setq iniCta 270.0) )
      (if (< (abs (- yc yp )) 0.01)
         (if (> xp xc)
           (setq iniCta 0.0)
           (setq iniCta 180.0) )
         (progn
           (setq cta0 (* radChg (atan (abs (/ (- yp yc) (- xp xc))))))
           (if (> xp xc )
              (if (> yp yc )
                 (setq iniCta cta0)
                 (setq iniCta (- 360.0 cta0)  cta0 iniCta) )
              (if (> yp yc )
                 (setq iniCta (- 180.0 cta0)  cta0 iniCta)
                 (setq iniCta (+ 180.0 cta0)  cta0 iniCta) )))))
)


限於篇幅請再看續文
http://fgcamtaiwan.blogspot.tw/2013/09/blog-post.html
 

留言

  1. 你好
    我對你的CNC有興趣可是有文章沒有圖片
    有的網址也失效
    請問有其他方式解決嗎?
    我有興趣CNC想在學的更好
    看你的一些文章我覺得對我有幫助

    回覆刪除
  2. 在同時做動a軸與x軸 a軸的角度計算 可以靠手寫 寫出圓溝螺旋溝槽嗎

    回覆刪除
    回覆
    1. 因為文章關鍵部分的圖看不到 程式部分好像不是cnc的

      刪除

張貼留言

這個網誌中的熱門文章

管牙PT

文章日期:2009-07-12 23:08 本文旨在講解 PT錐度管牙 常見的標準的管牙規範計有:  NPT , NPTF ,NPS , PS ,PF , PT.. ,前3者有N開頭的是美國標準的管牙 ,牙角(又稱螺紋角)60度 ,後面這3者則是英國標準的管牙 ,牙角55度 ,這些代號裡面的T意指Taper ,也就是錐度牙 。 不論是PT還是NPT,他們的錐度值都是1/16, 換算成角度值是 2*tan-1(0.5/16)=3.57982度 = 3度34分47.356秒, 3.57982度為什麼等於3度34分47.356分呢? 這是因為角度的單位換算是六十進位,3.5798212度後面的小數點0.5798212"度"要換算成""分"時,0.5798212度 = 0.57982*60分 = 34.789273分 ,而34.789273分後面的小數點0.789273分要換算成秒, 則0.789273*60秒 = 47.356秒。 此外,切記在車削錐牙時得採半錐角,也就是1度47分23.7秒。 NPT (美制管用推拔螺紋) 制定在 ANSI 規格中,稱為美國標準管用推拔螺紋,有外螺紋與內螺紋。 NPT 外螺紋不但對 NPT 內螺紋配合,有時也配合 NPSC ,這點類似 PT 。螺紋峰與根切成同形,又因公差大,餘隙、緊密兩種配合都可用。如用潤滑劑,則變成耐密用,耐密用者另有稱為乾封閉之如 NPTF,NPSF 等付有 F 之一群。 NPTF (美制管用耐密推拔螺紋) NPTF 外螺紋,像 PT.NPT 有時也配合 NPSF.NPSI (都是內螺紋)。因這種螺紋都是峯尖、根淺,峯不是密接於根就是食進,可防止在此部分變成螺旋狀間隙,這是前述耐密性之理由。 PT( 英制管用推拔螺紋 ) 以前是使用面直角的螺紋峯,現在將規格統一為軸直角者。 JIS 定為耐密用而組合外螺紋和內螺紋。 PT 外螺紋除了配合 PT 內螺紋,有時也配合 PS 。 PS ( 英制管用推拔螺紋用平行內螺紋   ─   耐密用 )     屬於 JIS 內 PT 的規格,舊 JIS 裏 PS 牙的外螺紋已被取消,配合的外螺紋現規定要用 PT 。 PF( 英制管用平行螺紋 ...

G76車牙

文章日期:2008-10-10 00:02 工具機若使用 Fanuc 控制器,車牙轉速有一個先天上的限制: S × P < 4000 請參考 車牙的 NC 碼計有 G32 、 G92 、 G76 三種 ( 使用方法 這三個指令中,手寫 G92 一般是直進式切削,牙刀的兩刃皆受力,直進式切削 ,每刀吃深不多,以免造成牙面粗糙,反觀 G76 則是斜進式單邊車削 ,可以有較大的進刀深度 , 寫法也簡短方便廣受採用,不論多大的牙, G76 只要兩個單節就可解決了。 由於 G76 有單邊切削的效果,廣受學校或職訓單位的喜愛,如下圖所示。         Fanuc0T系列控制器之G76 格式如下 : 指令說明 (m) : 精車次數。 (r) : 車牙末端 拔刀時留下的不完全牙長度(倍率)。 (a) :牙刀之角度,可選擇 80 °、 60 °、 55 °、 30 °、 29 °、 0 °等角度。 Q( △ dmin) :最小進刀深度。 R(d) :精車預留量。 X(u) :螺紋程式終點的 X 軸方向座標。 Z(w) :螺紋程式終點的 Z 軸方向座標。 R(i) :螺紋部份的半徑差,如果 I=0 可作一般直線螺紋車削。 P(k) :螺紋高度即牙深度, K 為正值在 X 軸方向用半徑值指定。 Q( △ d) :第一次螺紋的切削深度,用半徑值指定。 F(l) :螺紋的導程,與 G32 相同。 以M20X2.5外螺紋為例 , 常見的寫法如下 : G76 P01 00 60 Q40 R0.02 G76 X16.933 Z-10.0  P1533    Q500   F2.5 1. G76第一行的 P01 00 60 ,這01表示最後精車時只車一刀精車, 00 表示車牙最後拔刀時不留倒角 ,此所謂之倒角是 不完全牙之意 ,亦即因拔刀而在工件上留下牙深較淺的牙 ,Fanuc的拔刀精度是0.1倍的導程 , 若是此值改成10,則表示拔刀時在軸向會留下一倍導程長度的不完全牙,這一倍就是指導程2.5的一倍,也就是不完全牙會有2.5mm那麼長, 60 ...

G70-G76

文章日期:2008-10-12 23:01   G71的使用法及優點 G71名稱為 : Z軸向粗車削循環,它可說是Fanuc最強大的形狀車削指令,幾乎所有手寫走刀式CNC車床程式的人都會用到它,使用時只要在指定的前後某兩個Nxxxx單節之間,輸入工件的車削範圍,就可將此車削範圍內的材料全部粗車去除,並且合併著G70使用,僅僅一行單節就完成精車部位    以Fanuc0T系列為例,它的寫法如下: G71 U2.5 R0.5 G71 P10 Q20 U0.3 W0.1 F0.3 N10 …… …(車削範圍)….…… N20 ………………. 第一行的G71的U2.5是指每次進刀(單邊)2.5mm,R0.5是指退刀高度,第二行的G71的P10是指車削範圍的起始單節編號為10,所以在G71之後可以看到N10….,而Q20是指車削範圍的終止單節編號為20,所以在N10及車削範圍單節之後,就可以看到N20,至於第二行的U0.3 W0.1,是指粗車指定的車削範圍之後,工件表面餘留的精車量,U0.3是指X軸向精車的預留量(雙邊)為0.3mm,如果車內徑,此值就設為負值,W0.1是指Z軸向精車的預留量為0.1mm。 第二行的F0.3,即車床會以F0.3為粗車之進給速率,若車削範圍內出現F,則會改以此新出現之F當進給速率。 如果G71包含之車削範圍就是精車範圍,則可使用G70, 其做法是將精車刀定位到與G71同樣的出發點之後,再呼叫G70即可, 只要一個單節就可以完成精車,不用再把精車路徑重寫一遍,相當好用, G70寫法如下 : G70 P10 Q20 F0.1( 要記得G70的P...Q..要與G71的P...Q..一樣才行。) G70後面若加寫F0.1,則便以F0.1為精車之進給速率,否則便以存留之F(譬如說上一刀所使用之F)當進給速率,車削範圍內若出現F,則以此新出現之F當進給速率。 G71的缺點 1.對於Fanuc0T的控制器來說,外徑工件,其直徑只能越來越大,不能有大的凹槽(直徑變小)的情況,否則會過切,而對於於內徑來說,其直徑只能越來越小,且不能有大的凹槽(直徑變大)的情況,否則會過切,以下圖為例,需將工件G71區拆解出來。 ...