G-code 描述什麼
G-code 是一種逐行執行的指令語言,3D 印表機、CNC 和其他運動系統都會使用。一行可以要求機器移動、改變持續生效的模式、設定溫度,或調整某個控制器特有的功能。
單獨拿出一條指令往往不能確定結果。單位、座標模式、擠出模式、機器配置和實際韌體都會改變它的含義,因此本參考既說明常見含義,也說明哪些上下文會讓結果不同。
G-code 更像一組有共同祖先的方言,而不是所有印表機完全一致的檔案標準。核心移動寫法相似,但可用指令、參數、預設狀態和擴充套件功能要以目標韌體及其配置為準。
讀懂一行指令
G1 X120 Y40 E1.6 F1800G1要求機器沿直線協調移動。
X / Y根據 G90/G91,表示目標位置或相對移動距離。
E根據 M82/M83,表示擠出機位置或本次送出距離。
F設定進給速度。印表機檔案通常按毫米/分鐘書寫,而且該值往往會被後續移動繼續使用。
; ...分號後的內容通常是給人或軟體看的註釋。切片軟體會用它標記層和路徑型別,但註釋命名並不統一。
字母本身沒有脫離上下文的固定單位:X 可以是座標,F 可以是進給速度,S 在溫度、風扇或其他指令中又會表示不同的設定值。閱讀時要先看指令,再解釋它後面的參數。
一份列印檔案通常分成三段
準備階段
設定單位和座標模式,啟動加熱,回零,選擇工具,並執行調平、清潔或起始宏。這裡決定後續數字應怎樣解釋。
逐層列印
大量移動、擠出、回抽、風扇和溫度變化構成模型。層和路徑型別常由切片軟體註釋標記,不一定對應單獨指令。
結束階段
停止加熱和風扇,抬起或停放噴頭,釋放電機,並可能執行機器自己的結束宏。缺少結束段會改變列印完成後的機器狀態。
; 準備:先建立狀態
G21
G90
M83
G28
; 主體:先空走,再列印
G0 X40 Y20 Z0.20 F9000
G1 X80 Y20 E1.40 F1800
; 結束:關閉輸出
M104 S0
M140 S0
M107這只是結構示意,不是可直接用於任何機器的完整檔案。回零方向、加熱順序、停放位置和宏名稱都必須匹配具體印表機。
前面的狀態會改變後面數字的含義
| 狀態 | 指令 | 為什麼重要 |
|---|---|---|
| 軸座標 | G90 / G91 | 後續 X、Y、Z 會表示絕對位置或相對距離。 |
| 擠出座標 | M82 / M83 | E 軸可以使用一套獨立於運動軸的模式。 |
| 單位 | G20 / G21 | 座標和速度可能按英寸或毫米解釋。 |
| 進給速度 | F | 很多直譯器會保留最近一次 F 值,直到後面的移動再次改變它。 |
| 當前工具 | T0 / T1... | 多工具機器上,同一條溫度或擠出指令可能作用於不同工具。 |
| 座標重置 | G92 | 機器不用移動,也能給當前位置指定新的邏輯座標。 |
“持續狀態”是讀錯檔案最常見的原因之一。比如只看到 E1.6,不能馬上斷定送出了 1.6 mm:在 M83 下是本次增加量,在 M82 下則是新的累計位置。
韌體不同,含義也可能不同
Marlin、Klipper、RepRapFirmware 和 CNC 控制器在核心移動指令上有重疊,但它們並不是完全可以互換的同一種語言。為了實現同一個機器目標,不同系統可能使用不同指令名、參數或數值尺度。
| 系統 | 擴充套件方式 | 閱讀時注意 |
|---|---|---|
| Marlin | RepRap 風格指令 | 大量功能由編譯配置決定;同一版本也可能因為功能開關而支援不同指令。 |
| Klipper | 標準子集 + 可讀擴充套件指令 | 它有意只支援常用標準指令,並使用 SET_PRESSURE_ADVANCE 這類長名稱;宏還可能新增或覆蓋行為。 |
| RepRapFirmware | G-code everywhere + 宏和表示式 | 配置、控制和狀態查詢大量使用 G-code;新版本還支援元命令和表示式。 |
| LinuxCNC / RS274NGC | CNC 模態組和座標系統 | 主軸、刀具補償、工件座標和固定迴圈等 CNC 語義,不能直接套用 3D 印表機的 E 軸與加熱假設。 |
因此“韌體名稱 + 版本 + 配置”才是判斷相容性的最低上下文。只看副檔名,或只在別人的機器上驗證過,都不能證明自己的機器會以同樣方式執行。
怎樣閱讀一份陌生 G-code
- 先確認檔案來自哪種切片軟體、為哪臺機器和哪種韌體生成;找不到時,把相容性當作未知。
- 先讀開頭的單位、軸座標、擠出座標、回零、工具和加熱設定,再解釋後面的移動。
- 把 X/Y/Z 的位置變化與 E 的變化分開跟蹤,才能區分空走、列印、回抽和補回。
- 把分號註釋當作切片軟體給出的線索,而不是機器一定執行的命令;不要假設所有切片軟體都使用同一套標籤。
- 遇到宏、長名稱指令或不熟悉的 M-code,回到該韌體版本的官方文件核對,不要僅憑編號猜含義。
- 最後檢查結束段是否關閉加熱、風扇或其他輸出,並確認停放動作不會越界或撞到成品。
每個指令頁包含什麼
- 先用一句話說明用途,再解釋正確理解它所需的前置狀態。
- 給出寫法、參數含義和可以直接閱讀的 G-code 示例。
- 說明會改變機器行為的韌體差異和常見錯誤。
- 明確寫出本地檢視器能確認什麼、不能確認什麼。
檢視器能顯示什麼
檢視器能顯示支援的路徑和部分檔案詳情,但無法還原印表機的實際設定,也不能準確預測真實機器最後會怎樣執行。
從這些關鍵指令開始
本頁依據的官方資料
內容於 2026 年 8 月 5 日按以下一手資料核對。它們解釋共同的行結構,也展示了不同控制器為什麼會形成不同方言。