跳到主要內容

四軸銑削(一)

文章日期: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 表示要車的牙角是 60 度 , G76 所 適應的刀角範圍不但很大, Fanu

錐度值

文章日期:2008-02-01 08:40 做傳統車床的人通常會遇到車錐度時要調複式刀座,而複式刀座所調的角度為工件錐度部位之半錐角,為甚麼要調的是半錐角,而不是全錐角呢?為甚麼工件的錐度值乘以 28.65 就是所要調的是半錐角呢? 如下圖所示,將工件錐度部位的稜線延伸至交接,就可看出工件完整的錐度,將這工件全錐度的一半定為 a ,則可得半錐角,由於複式刀座的前進方向是水平的,所以只要將複式刀座依逆時針方向調動半錐角,就可車削工件的錐度。 工件錐度部位之錐度值的計算公式: T=(D-d)/L D 為錐度部位之大徑, d 為錐度部位之小徑, L 為錐度部位之軸向長度。 工件錐度部位之半錐角計算公式: tan(a) = 0.5*(D-d)/L tan 是指正切函數,意思就是 : "對邊除以鄰邊",三角函數裡所指的三角形一定要用直角三角形,直角三角形最長的邊稱為斜邊,鄰邊與斜邊所包的角度就是三角函數角,如下圖的角 a ,三角函數角 a 對面的那個邊就是對邊,三角形會因擺放的位置不同而顯得有點昏頭轉向,不過只要依照上述的原則,就不會認錯邊名了。 從上述說明來看下圖就可以瞭解半錐角計算公式 tan(a) = 0.5*(D-d)/L ,從下圖放大的三角形中可以看出鄰邊長度是 L ,對邊長度是 0.5*(D-d) ,所以 tan(a) =  對邊 / 鄰邊 =0.5*(D-d)/L ,如果已算出 0.5*(D-d)/L 的值要反推角 a 的角度,就必需要這樣做 a=tan -1 (0.5*(D-d)/L) ,也就是用反三角來得角 a 大的小,反三角的值在三十年前常用查表方式求得,近年來只要按一按計算機就可顯示出,不過這對於在工作現場的人來說太麻煩了,所以就有一個半錐角速算公式  : a=28.65*( 錐度值 )=28.65*(D-d)/L) ,那麼這 28.65 到底是怎麼來的呢 ? 其實只要用計算機按按看就可以得到答案,將計算機輸入 1/tan(1 0 ) ,就可得到 57.2899616307594246... ,但由於我們要求的是半錐角,所以再將此值除以 2 就可得到 28.6449808153797... ,簡以 28.65 代之即可,不過這個半錐角速算公式是近似值,只能用來大概調動複式刀座,真正的校正還得