跳到主要內容

四軸銑削(三)

文章日期:2008-03-26 09:35



四軸連動(X+Y+ Z+A)
想要在圓筒上的圓溝周邊稜線加以倒角,以去除毛邊,這就需四軸連動(X軸+Y+ Z+A),才能達成的加工,下圖的綠色線條是球銑刀倒角時的刀具路徑,由於CNC程式是控制球銑刀的中心最低點,所以倒角的刀具路徑看起來是在圓溝周邊稜線的上方內側。


四軸連動倒角刀具路徑的計算
如前所敘,圓筒上的這個圓溝最初是以直徑64mm銑刀所銑出,待這個圓溝銑好之後,要用直徑較小的球銑刀(以直徑12mm為例),銑出這個圓溝周邊的稜線的倒角,加工要訣也是要先找出圓溝的每一處稜線是以直徑64mm銑刀圓周邊的哪一個部位所銑出來的,然後透過移動X及Y軸及Z軸的方法,將直徑較小的球銑刀的刀球圓周邊移到該位置,並以過切的手法來達到倒角的目的,如下圖所示,至於A軸則如同前述之二軸連動那樣旋轉,即可用直徑較小的球銑刀銑出圓溝周邊的稜線的倒角。





球銑刀倒角的刀具路徑側視圖


球銑刀倒角的刀具路徑端視圖



四軸連動Autolisp程式
(defun c:kk() ;;chamfering by variable diameter of r1;; including the other groove
  (setq r0 32.0 r1 10.0 xc 0.0 yc 0.0 d 0.0)
  (setq r1 (/ (getreal "Enter the dia of the ball-endmilling: ") 2))
  (setq chm (getreal "Enter the size of chamfer: "))
  (setq delr (/ r1 1.414)   xp 99.0  yp 99.0   zp 99.0)
  (setq file01 (open "C://test.nc" "w"))
  (princ "%\n" file01)
  (princ "O0005\n" file01)
  (princ "G0X121.205 Y0. Z120. A0. F600\n" file01)
  (princ "S800 M03\n" file01)
  (setq r1 (- r1 (/ chm 1.414)))
  (setq x2 121.205  y2 (- r0 r1)  z2 (+ 105.0 r1) ctype 1)
  (princ "G1 " file01)
  (pp1)

  (princ "     F70\n" file01)

  (setq x2Pre x2  y2Pre r0   z2Pre (sqrt (-  (* 105 105) (* y2Pre y2Pre))) )
  (setq y2 (- y2Pre delr)  z2 (+ z2Pre delr))
  (princ "   " file01)
  (pp1)

  (setq x2 90.0 )
  (princ "G1 " file01)
  (pp1)

;;;;;;;;;setting variables////////////////////////////////
  (setq radChg (/ 180.0 3.1415926) angChg (/ 3.1415926 180.0))
  (setq cosCta (cos (* 2 angChg)) sinCta (sin (* 2 angChg)))
  (setq iniCta 0.0  cta0 0.0  cta1 0.0  ctaTatal 0.0  iniAxial 0.0 wkAxial 0.0)

;;;;;;;;;chamfering the half circle ;;;;;;;;;;;;;;;;;;;
  (setq i1 1  xp 90.0  yp r0   x2 90.0  y2 (* -1 r0) ppr r0)
  (scir)  ;obtain xc, yc, iniCta, cta0, cta1,
  (setq x2mem x2  y2mem y2  a2 0.0 x1wk (- xp xc)  y1wk (- yp yc) )
  (while (< i1 91)
    (setq x2wk (- (* x1wk cosCta) (* y1wk sinCta) ))
    (setq y2wk (+ (* y1wk cosCta) (* x1wk sinCta) ))
    (setq y2Pre (+ yc y2wk))
    (setq x2Pre (+ xc x2wk))
    (setq z2Pre (sqrt (- (* 105 105) (* y2Pre y2Pre))))
    (setq x2 (- x2Pre (* delr (/ (- x2Pre xc) ppr))))
    (setq y2 (- y2Pre (* delr (/ (- y2Pre yc) ppr))))
    (setq z2 (+ z2Pre delr))
    (princ "   " file01)
    (pp1)
    (setq i1 (+ i1 1)  x1wk x2wk y1wk y2wk xp x2 yp y2 zp z2) )

;;;;;;;;;chamfering a horizontal line;;;;;;;;;;;;;;;;;;;
  (setq x2 121.205 )
  (princ "   " file01)
  (pp1)

;;;;;;;;;;;chamfering arc 36 ;;;;;;;;;;;;;;;;;;;
  (setq x2mem 121.205 y2mem y2 z2mem z2 xp 121.2051 yp -32.0 zp z2  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 x2mem x2  y2mem y2  a2 0.0 )
  (setq i1 1   x1wk (- xp xc)  y1wk (- yp yc))
  (while (< i1 ctaTatal)
    (setq x2wk (+ (* x1wk cosCta) (* y1wk sinCta) ))
    (setq y2wk (- (* y1wk cosCta) (* x1wk sinCta) ))
    (setq ycc (+ yc (* (+ r0 ppr) (/ y2wk ppr))) )
    (setq xcc (+ xc (* (+ r0 ppr) (/ x2wk ppr))) )
    (setq a2 (* 360 (/  ycc pillarDia)))
    (setq y2Pre (- 0   (* r0  (/ y2wk ppr))))
    (setq x2pre (- xcc (* r0  (/ x2wk ppr))))
    (setq z2Pre (sqrt (- (* 105 105) (* y2Pre y2Pre))))
    (setq x2 (- x2Pre (* delr (/ (- x2Pre xcc) r0))))
    (setq y2 (- y2Pre (* delr (/ (- y2Pre   0) r0))))
    (setq z2 (+ z2Pre delr))
    (princ "   " file01)
    (ppAxial4)
    (setq i1 (+ i1 2)  x1wk x2wk y1wk y2wk xxmem x2  yymem yy   zzmem  zz) )

;;;;;;;;;chamfering the last endpoint of Arc 32;;;;;;;;;;;;;;;;;;;
    (setq ycc (+ yc (* (+ r0 ppr) (/ (- -46.2611 yc) ppr))) )
    (setq xcc (+ xc (* (+ r0 ppr) (/ (- 149.9004 xc) ppr))) )
    (setq a2 (* 360 (/  ycc pillarDia)))
    (setq y2Pre (- 0   (* r0  (/ (- -46.2611 yc) ppr))))
    (setq x2pre (- xcc (* r0  (/ (- 149.9004 xc) ppr))))
    (setq z2Pre (sqrt (- (* 105 105) (* y2Pre y2Pre))))
    (setq x2 (- x2Pre (* delr (/ (- x2Pre xcc) r0))))
    (setq y2 (- y2Pre (* delr (/ (- y2Pre   0) r0))))
    (setq z2 (+ z2Pre delr))
    (princ "   " file01)
    (ppAxial4)

;;;;;;;;;chamfering slant line ;;;;;;;;;;;;;;;;;;;
  (setq x2mem x2  y2mem y2)
  (setq xxmem x2  yymem yy   zzmem zz )
  (setq d12 (sqrt (+ (* (- 254.4931 149.9004)(- 254.4931 149.9004)) (* (- -184.3234 -46.2611)(- -184.3234 -46.2611)) )))
 (setq i1 2  xdel (/ (- 254.4931 149.9004) d12)   ydel (/ (- -184.3234  -46.2611) d12) )
  (setq x2 254.4931)
  (setq y2 -184.3234)
  (setq xcc (- x2 (* r0 ydel)))
  (setq ycc (+ y2 (* r0 xdel)))
  (setq a2 (* 360 (/  ycc pillarDia)))
  (setq x2pre (+ xcc (* ydel r0)))
  (setq y2Pre (- 0   (* xdel r0)))
    (setq z2Pre (sqrt (- (* 105 105) (* y2Pre y2Pre))))
    (setq x2 (- x2Pre (* delr (/ (- x2Pre xcc) r0))))
    (setq y2 (- y2Pre (* delr (/ (- y2Pre   0) r0))))
    (setq z2 (+ z2Pre delr))
    (princ "   " file01)
    (ppAxial4)

;;;;;;;;;;chamfering the lower circle;;;;;;;;;;;;;;;;;;;
  (setq x2mem x2  y2mem y2Pre  xp x2Pre   yp y2Pre    ctype 3   ppr  r0)
  (setq x2 (- x2Pre (* ydel 2 r0)))
  (setq y2 (abs y2Pre))
  (scir)  ;obtain xc, yc, iniCta, cta0, cta1,
  (setq i1 2   x1wk (- xp xc)  y1wk (- yp yc) ctype 1)
  (while (< i1 181)
    (setq x2wk (- (* x1wk cosCta) (* y1wk sinCta) ))
    (setq y2wk (+ (* y1wk cosCta) (* x1wk sinCta) ))
    (setq x2Pre (+ xc x2wk) )
    (setq y2Pre (+ yc y2wk) )
    (setq z2Pre (sqrt (- (* 105 105) (* y2Pre y2Pre)) ))
    (setq x2 (- x2Pre (* delr (/ (- x2Pre xc) r0))))
    (setq y2 (- y2Pre (* delr (/ (- y2Pre   0) r0))))
    (setq z2 (+ z2Pre delr))
    (princ "   " file01)
    (pp1)
    (setq i1 (+ i1 2) x1wk x2wk y1wk y2wk xxmem x2Pre  yymem yy   zzmem  zz) )

;;;;;;;;;;;;revering;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;chamfering the revering slant line ;;;;;;;;;;;;;;;;;;;
  (setq d12 (sqrt (+ (* (- 254.4931 149.9004)(- 254.4931 149.9004)) (* (- -184.3234 -46.2611)(- -184.3234 -46.2611)) )))
  (setq i1 2  xdel (/ (- 149.9004 254.4931) d12)   ydel (/ (-  -46.2611 -184.3234) d12) )
    (setq x2 299.8698)
    (setq y2  -110.2882)
    (setq xcc (- x2 (* r0 ydel)))
    (setq ycc (+ y2 (* r0 xdel)))
    (setq a2 (* 360 (/  ycc pillarDia)) )
    (setq x2Pre (+ xcc (* r0 ydel)))
    (setq y2Pre (- 0   (* r0 xdel)))
    (setq z2Pre (sqrt (- (* 105 105) (* y2Pre y2Pre)) ))
    (setq x2 (- x2Pre (* delr (/ (- x2Pre xcc) r0))))
    (setq y2 (- y2Pre (* delr (/ (- y2Pre   0) r0))))
    (setq z2 (+ z2Pre delr))
    (princ "   " file01)
    (ppAxial4)

;;;;;;;;;;;;obtain the data of the revering arc 100
  (setq x2 121.205  y2 r0 )
  (setq xp 200.9143   yp -7.6142  ctype 3  ppr (+ 36. (* 2 r0)) )
  (scir)  ;obtain xc, yc, iniCta, cta0, cta1,
  (setq x2mem x2  y2mem y2  a2 0.0)

;;;;;;;;;;chamfering the revering arc 100;;;;;;;;;;;;;;;;;;;
  (setq x2 121.205  y2 r0  xp 200.9143   yp -7.6142)
  (setq i1 1   x1wk (- xp xc)  y1wk (- yp yc))
  (setq cosCta (cos (* 1 angChg)) sinCta (sin (* 1 angChg)))
  (while (< i1 ctaTatal)
    (setq x2wk (- (* x1wk cosCta) (* y1wk sinCta) ))
    (setq y2wk (+ (* y1wk cosCta) (* x1wk sinCta) ))
    (setq xcc (+ xc (* (- ppr r0) (/ x2wk ppr))) )
    (setq ycc (+ yc (* (- ppr r0) (/ y2wk ppr))) )
    (setq a2 (* 360 (/  ycc pillarDia)))
    (setq y2Pre (+ 0   (* r0  (/ y2wk ppr))))
    (setq x2pre (+ xcc (* r0  (/ x2wk ppr))))
    (setq z2Pre (sqrt (- (* 105 105) (* y2Pre y2Pre))))
    (setq x2 (- x2Pre (* delr (/ (- x2Pre xcc) r0))))
    (setq y2 (- y2Pre (* delr (/ (- y2Pre   0) r0))))
    (setq z2 (+ z2Pre delr))
    (princ "   " file01)
    (ppAxial4)
    (setq i1 (+ i1 1) x1wk x2wk y1wk y2wk xxmem x2  yymem yy   zzmem  zz) )

  (setq xcc 121.205)
  (setq ycc 0)
  (setq a2 (* 360 (/  ycc pillarDia)))
  (setq y2Pre r0)
  (setq x2pre 121.205)
  (setq z2Pre (sqrt (- (* 105 105) (* y2Pre y2Pre))))
  (setq x2 (- x2Pre (* delr (/ (- x2Pre xcc) r0))))
  (setq y2 (- y2Pre (* delr (/ (- y2Pre   0) r0))))
  (setq z2 (+ z2Pre delr))
  (princ "   " file01)
  (ppAxial4)

  (princ "G0 Z150.\n" file01)           ;raising tool
  (princ "M99\n" file01)
  (princ "%\n" file01)
  (close file01)
  (setvar "osmode" 1)
)

;;;;;;;;;;;;;;;;;;;;;;;以下是AutoLisp之子程式;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
(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 ppAxial4()
  (setq pxs(rtos x2 2 3) pys(rtos y2 2 3) pzs(rtos z2 2 3) pas(rtos a2 2 3))
  (setq pxl(strlen pxs) pyl(strlen pys) pzl(strlen pzs) pal(strlen pas))
  (setq pxn(- 7 pxl) pyn(- 7 pyl) pzn(- 7 pzl) pan(- 7 pal))

  (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 " 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)) ))

  (princ " Z" file01)   (princ pzs file01) 
  (if ( or (< (abs (- (fix z2) z2)) 0.001) (< (- 1 (abs (- (fix z2) z2))) 0.001) ) (princ "." file01) )
  (repeat pyn (princ " " file01))

  (princ " A" file01)  (princ pas file01)
  (if ( or (< (abs (- (fix a2) a2)) 0.001) (< (- 1 (abs (- (fix a2) a2))) 0.001) ) (princ "." file01) )
  (princ "\n" file01)
  (setq yp y2)
)

(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)))  )))

  (if(< k1 0.001)
    (setq ctaTatal 90.0 )
    (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) )))))
)

留言

這個網誌中的熱門文章

管牙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

CNC的S及F

文章日期:2008-01-25 23:25 刀片的損耗與 S 碼及冷卻潤滑較有關,機台的負載則跟 F 碼與機台剛性及馬力較相關,講到 CNC 的 S 及 F 碼,就一定要先講切削刀具, CNC 切削用的刀具常分為整體型及捨棄式刀片型,整體型刀具材質大都是高速鋼類 (HSS) 或鎢鋼類,捨棄式刀片型刀具材質大都是碳化鎢類 (WC) ,這些刀具表面常鍍上耐磨材料在刀刃及刀面上,以增加刀具壽命;常用的整體型刀具以端銑刀為代表,常用的捨棄式刀片型刀具以面銑刀車刀搪刀或快速鑽為代表。  CNC車床的 S 碼有兩種使用方法  : 1. 切削米速 (m/min) ,與 G96 合用,在公式裡的代號是 V ,一般刀具商都會提供這個建議數據,但是在實際使用上通常要先打半折來當起始米速。 2. 主軸轉速 (RPM 或 rev/min) ,與 G97 合用,公式裡的代號是 N ,切削米速與主軸轉速兩者之間可以換算 (CNC 銑床的 S 碼則常內定為後者,不需要再用 G 碼切換 ) 。 CNC的 F 碼是指進給,也有兩種使用方法  : 1. 每分鐘車刀移動距離 mm/min( 或是銑床床台每分鐘移動距離 ) ,此法單純只指車刀或床台的移動,與主軸並沒有連動的關係,在公式裡的代號是 F 。 2. 車工工件每轉之下車刀移動距離 mm/rev ,此法之主軸刀塔有連動的關係,使用在 CNC 銑床的意義為  :  銑刀每轉之下銑床床台移動之距離 (mm/rev) ,銑刀與車刀不盡相同,銑刀通常是多刀刃,所以銑刀每轉之床台移動距離若再除以銑刀刃數,就可以得到每刃每轉之下的切削量,在本文中所使用的公式代號是 f 。 CNC的 S 碼跟刀具壽命有最直接的關係,而 CNC 的 F 碼則與銑刀及機台承受能力有最直接的關係,主軸轉速過高會耗損刀具壽命,進給過快則銑刀崩裂或斷掉,甚至機台耗損,尤其是近年來台灣製造的 CNC 車床搭配 Fanuc 的伺服馬達,若內無附減速齒輪機構,對於大直徑工件 (500mm 直徑 ) 在低轉速大進給之下車削,主軸的負載會飆升,長時間加工會加速機台耗損。 ★ CNC 銑床主軸轉速的計算  :  主軸轉速 N=1000*V / (3.14*D) D: 指銑刀的直徑 (mm)  , V: 刀片的