
銑床刀具長度補正與半徑補正:換刀、重磨後尺寸跑掉怎麼辦,G43 與 G41/G42 怎麼設
在綜合加工機、CNC 銑床上換刀或重磨之後尺寸跑掉,先分方向:Z 深度不對,看刀具長度補正(補償),即 G43/G44 與 H 碼;輪廓尺寸差一點,看刀具半徑補正,即 G41/G42 與 D 碼。兩者都把刀長、刀徑交給補正表管,程式不必因為換刀重寫,刀具重磨、直徑變小也只改補正表裡的半徑。半徑補正另有三條使用規則,在圓弧段建立補正是最常見的報警來源之一。

一、先分方向:Z 深度跑掉看長度補正,輪廓差一點看半徑補正
兩種補正各管一個方向,補正值放在補正表,用不同的碼呼叫:
| 補正 | 補什麼 | 指令 | 呼叫補正值 |
|---|---|---|---|
| 刀具長度補正 | 每支刀長度不同造成的 Z 向差異 | G43/G44,G49 取消 | H 碼 |
| 刀具半徑補正 | 刀具半徑造成的刀具中心與輪廓偏差(XY 平面內) | G41/G42,G40 取消 | D 碼 |
工件在工作台上的位置另由 G54~G59 管,那是找工件座標原點的事,見〈尋邊器怎麼選、怎麼用:機械式、光電式與 3D 式對邊找中心〉。CNC 為什麼能在機上做補正運算,見〈CNC 是什麼:從手動工具機到數值控制〉。
二、長度補正:每支刀的 Z 都不一樣
工件原點設定好之後,X、Y 不隨換刀改變(刀具由主軸錐孔定位),Z 向卻每支刀都不一樣。
例:先用長 250 mm 的鑽頭鑽深 50 mm 的孔,再用長 350 mm 的絲攻攻深 45 mm 的螺紋。兩支刀若都從同一個 Z 零點開始加工,絲攻比鑽頭長,會攻得過深,損壞刀具與工件。
設了長度補正,換上絲攻時控制器會自動把它的長度補進 Z 零點,加工深度才對。
| 指令 | 意義 |
|---|---|
| G43 | 被補正那一軸的終點座標加上補正值 |
| G44 | 被補正那一軸的終點座標減去補正值 |
| G49 | 取消長度補正(也可用 H00) |
H 碼(H00~H99)指定補正號,對應補正表裡的長度補正值。補哪一軸由平面指令決定:G17 補 Z 軸、G18 補 Y 軸、G19 補 X 軸。G43、G44、G49 下達後持續有效,直到被同組的另一個指令取代。
⚠ G49 不是非用不可:每支刀有自己的長度補正值,換刀時以 G43(或 G44)H__ 呼叫新刀的補正號,前一支刀的補正就自動取消。刀庫怎麼換刀見〈自動換刀系統與刀庫 ATC:型式怎麼分、規格怎麼看〉。
三、長度補正怎麼算:兩個例子
例一:G43 Z56 H05,H05 存的值是 16 → 終點 Z=56+16=72 mm
例二:H01 存 5.0、H02 存 10.0
G90 G43 Z100.0 H01 → Z 到達 105.0
G90 G43 Z100.0 H02 → Z 到達 110.0
例二的 Z 值都寫 100.0,只換 H 碼,到達位置就跟著換(G90 是絕對座標指令)。所以換刀之後,程式只要呼叫那支刀自己的 H 碼。
四、長度補正值怎麼定:實際刀長,還是刀尖到工件原點的距離
補正值有兩種定法,選哪一種,決定刀具怎麼管:
| 項目 | 用刀具實際長度 | 用刀尖到工件座標原點的 Z 向距離 |
|---|---|---|
| 補正值填什麼 | 用對刀儀量出的刀長 | 主軸從機台 Z 零點移到工件座標原點時,刀尖移動的距離 |
| 數值 | 刀具本身的長度 | 恆為負值,而且數值很大 |
| 換一個工件 | 同一支刀不必改 | 必須重新設定 |
| 量刀 | 在機外對刀儀上量,不佔機台時間 | 不用對刀儀量刀長 |
| 適合 | 刀具要跨工件重複使用 | 只有一個人操作、沒時間量刀長 |
許多大型加工廠的刀具管理採用實際刀長:替每支刀建檔、掛標籤寫明刀長與半徑,刀具因刀庫容量不夠被卸下,裝回時照標籤輸入即可,不必重量。
另一種做法以基準刀為準:先指定一支基準刀,其餘刀具存的是與基準刀的長短差。補正值都相對於那支基準刀,所以基準刀一換,各刀的值就要重新算。
五、半徑補正:程式照輪廓寫,補正表填實際刀徑
輪廓加工時,控制器控制的是刀具中心的軌跡,圖面要的是工件輪廓,兩者差一個刀具半徑。不用半徑補正,只有兩條路:
| 做法 | 結果 |
|---|---|
| 直接照輪廓寫程式 | 刀具中心沿輪廓走,做出來的零件必然比圖面要求的尺寸小 |
| 自己算好刀具中心軌跡再寫 | 換刀、重磨、換材料、換餘量,都要重算、重寫程式 |
用了半徑補正,程式只照圖面輪廓寫,用 G41/G42 指定刀走在輪廓哪一側,偏移量由控制器算。程式即使由 CAD/CAM(電腦輔助設計/製造)軟體產生,刀具微量磨損或各工步餘量不同時,也只改補正值。
| 狀況 | 怎麼做 |
|---|---|
| 刀具磨損、重磨、換新刀,直徑變了 | 程式不改,只把補正表裡的半徑改成新值 |
| 同一支刀跑粗、半精、精加工 | 先刻意加大補正值留餘量,再逐次縮小到實際刀具半徑 |
📌 補正表要依實際刀徑填,不是標稱刀徑。粗精怎麼用補正值切換,見〈加工工序怎麼排:粗加工、半精加工到精加工〉。
六、G41 還是 G42:順著刀具前進方向看
判斷基準:順著刀具前進的方向看(假想工件不動),刀具中心落在工件輪廓的哪一側。
| 指令 | 意義 |
|---|---|
| G41 | 左補正:刀具中心在輪廓左側 |
| G42 | 右補正:刀具中心在輪廓右側 |
| G40 | 取消半徑補正,G41、G42 隨即失效 |

刀在工件同一側,前進方向一反過來,G41 就變 G42,所以先看刀往哪走,再判左右。補正值放在補正表,以 D 碼(D00~D99)指定;G40、G41、G42 下達後持續有效,彼此取代。
七、半徑補正的四個步驟
| 步驟 | 做什麼 | 可用指令 |
|---|---|---|
| 1 設定補正值 | 程式啟動前,把刀具半徑輸入補正表 | — |
| 2 建立補正 | 刀具接近工件,終點落在輪廓起點外側、沿與輪廓垂直的方向偏開一個補正值處 | 只能 G00、G01 |
| 3 補正進行中 | 刀具中心一直偏離程式軌跡一個補正值 | G00、G01、G02、G03 |
| 4 取消補正 | 退刀時取消 | 只能 G00、G01 |
對到程式裡,骨架長這樣(__ 是依工件而定的值,不是固定數字):
(步驟 1:補正表 D__ 先填好刀具半徑)
G41(或 G42) G00/G01 X__ Y__ D__ ← 步驟 2 建立
G01/G02/G03 X__ Y__ ……(至少兩段) ← 步驟 3 進行中
G40 G00/G01 X__ Y__ ← 步驟 4 取消
各廠控制器寫法不同,實際格式以所用控制器的原廠手冊為準。另有其他補正相關指令,用法同樣依原廠手冊。
八、半徑補正的三條使用規則
| 規則 | 說明 |
|---|---|
| 不在圓弧段建立或取消 | 建立與取消只能用 G00、G01,不可用 G02、G03 |
| 建立後至少接兩段平面移動 | 少於兩段帶平面移動的程式段,補正建立不起來 |
| 切換平面前先取消 | G17(XY)、G18(ZX)、G19(YZ)要在取消補正的狀態下切換 |
在圓弧段建立補正,是最常見的報警來源之一。第二條的原因是控制器要先讀下一段,才算得出兩段之間怎麼接;現在的 CNC 工具機幾乎都採用這種補正方式,所以可以完全照工件輪廓寫程式。
車床也用同一組 G41/G42,但補的東西不同(刀尖圓弧、刀尖方位號);車床補正表的寫法,見〈車床刀尖圓弧半徑補正:車錐面、圓弧為什麼差一點,G41/G42 與刀具補正怎麼設〉。
九、常見問題 FAQ
Q:換了一支刀,加工深度不對,要改哪裡?
改那支刀的長度補正值,也就是它的 H 碼對應的那一格,程式不必改。換刀時以 G43(或 G44)H__ 呼叫新刀自己的補正號。
Q:G41 和 G42 怎麼分?
順著刀具前進方向看(假想工件不動),刀具中心在輪廓左側用 G41、右側用 G42;用完以 G40 取消。
Q:刀具重磨後直徑變小,程式要重寫嗎?
不用,把補正表裡的半徑改成重磨後實際的值即可。補正只修得了尺寸,重磨後還有哪些補不回來,見〈刀具重磨與再塗層值不值得?何時該磨、何時該換新〉。
Q:半徑補正為什麼建立不起來或報警?
在圓弧段建立補正是最常見的報警來源之一,建立與取消只能用 G00 或 G01。另外,建立補正後至少要接兩段帶平面移動的程式段,切換 G17/G18/G19 前也要先取消補正。
本篇屬〈銑削刀路完整導讀:開粗怎麼走、下刀從哪進、精加工怎麼選軌跡〉這條線,整條線該從哪讀到哪見該篇。
發布日期:2026-10-28|最後更新:2026-10-28









