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 日按以下一手资料核对。它们解释共同的行结构,也展示了不同控制器为什么会形成不同方言。