CNC 机床 Gcode 代码行如何构建
Gcode 程序由程序段组成,一个程序段就是一行文本。大多数控制器遵循 ISO 6983 字地址格式:字母指定寄存器,数字给出数值。N10 G01 X45.0 Y12.5 F250 是一个程序段中的四个字。N 号是顺序标号,在程序中途重启时有用。G 告诉控制器操作模式。X、Y、Z 携带坐标。F 设定进给率,S 设定主轴转速,T 选择刀具。
模态行为比初学者预想的更重要。一旦调用 G01,后续每个程序段都保持进给运动,直到另一个 G 运动字替换它。G90 和 G91 决定坐标是相对零件零点的绝对坐标,还是相对上一点的增量坐标。混用两者且没有明确切换的程序会在错误位置切削。在我们 27 台三轴机床和 12 台四轴铣床上,加载后的第一项检查始终是文件顶部的模态状态。
坐标通常根据 G21 或 G20 以毫米或英寸书写。铣削进给为 mm/min,车削常为 mm/rev,因此相同的 F 值在铣床和车床上含义不同。单位、用 G17 至 G19 选择平面、用 G41 和 G42 进行刀具补偿都是模态的。后处理器处理这些切换,但操作员在循环启动前仍会阅读文件头确认。
从 CAD 模型到机床指令
流程从 CAD 模型和定义的毛坯开始。CAM 软件比较两者,然后计算刀路,去除材料而不伤及零件或撞到工装夹具。输出还不是 Gcode,而是 CAM 系统内部格式的刀路。随后后处理器将该刀路转换为控制器期望的方言。
后处理器是大多数问题的源头。Fanuc、Siemens、Heidenhain 和 Haas 控制器共享核心 G 代码,但在固定循环、换刀语法和旋转轴命名上不同。为三轴 Haas 编写的后处理器无法正确驱动五轴 Hermle。对于五轴联动加工,后处理器还必须处理 RTCP 或 TCPM,使控制器在转台倾斜时保持刀尖在路径上。
在钜亮五金(GreatLight),我们运行 16 台五轴联动加工中心、16 台车铣复合中心和 27 台三轴机床。每个机床系列都有经过验证的后处理器。当工件从三轴铣床转移到五轴加工中心时,后处理器改变,代码也随之改变。零件模型不变,但切削它的程序变了。这就是我们将后处理器验证视为独立于刀路审查的步骤的原因。
多轴加工为何风险更高
在三轴铣床上,刀具轴线保持垂直。程序主要是阶梯 Z 深度上的 2D 轮廓,错误通常表现为深度错误或侧壁过切。在五轴加工中心上,刀具矢量倾斜而零件旋转。A 和 B 或 C 轴运动在同一程序段内与 X、Y、Z 同步。如果同步偏差零点几度,刀尖就会偏离预期表面。
这种偏移不一定在第一次走刀时可见。它后来表现为表面粗糙度不均、侧壁与模型不符,或加强筋上无法返修的过切。具有深腔、倒扣和复合角度的航空航天和汽车零件是典型情况。它们通常无法在三轴机床上通过三次装夹到达,因此程序必须承载完整的旋转运动。
RTCP(在其他控制系统上有时称为 TCPM)无论旋转轴如何运动,都将编程点保持在刀尖处。没有它,CAM 系统必须自行计算偏移,而后处理器的微小误差在长刀具长度下会变成大的表面误差。在我们配备 Ø400 mm 转台的五轴加工中心上,我们始终在第一次切削移动前确认 RTCP 已激活。如果未激活,程序暂停并修正后处理器。
工程师如何阅读和验证程序
即使有仿真工具,人工阅读 Gcode 仍然有用。从文件头开始:单位、工件偏置、平面和模态状态。然后跟踪换刀,确认每个 H 和 T 号与刀具清单匹配。错误的 H 号是撞机最常见的原因之一,因为机床完全信任它。
接下来检查接近和退刀移动。零件附近的 G00 程序段是碰撞发生的地方。确认安全平面高于毛坯和工装夹具。在深腔中,注意刀具沿底面走刀时退刀高度下降。开始时能避开零件的程序,中途仍可能撞到压板。
仿真能发现大部分问题,但它用的是你给它的毛坯和工装模型。模型错了,仿真就错了。新程序的首件我们会做空运行或单段运行,尤其是五轴加工和尺寸大于 1,000 mm 的零件。在我们 4,000 mm 行程的机床上,空运行只花几分钟,撞机则要赔一根主轴。
Gcode 无法覆盖的部分
Gcode 描述运动,不描述意图。它不知道材料硬度、刀具磨损状态,也不知道毛坯是否大了 1 mm。同一段程序切 6061 很干净,切 17-4PH 不锈钢可能振刀,除非调整进给和转速。代码一样,结果不一样。
控制器的预读能力也有差异。有的能缓冲数百个程序段并平滑运动,在拐角处保持进给;有的每段都停,精加工留下接刀痕。高速加工选项和 NURBS 插补不改一个坐标,却能改变表面结果。表面达不到 Ra 1.6 μm 时,先查控制模式,再查 Gcode。
另外,Gcode 不携带检测数据,无法确认零件是否在 ±0.005 mm 以内。这要靠过程测量和终检。程序干净只是起点,不是好零件的证明。我们出货前 100% 检验,可按要求提供报告。
核心 G 代码、M 代码及作用
以下是几乎每个铣削程序都会出现的代码简表。车削程序大多沿用这些,并增加 G71、G76 等循环。
| 字 | 含义 | 典型用途 | 注意事项 |
|---|---|---|---|
| G00 | 快速定位 | 退离零件 | 无切削进给;会撞工装夹具 |
| G01 | 直线插补 | 按设定进给直线切削 | 模态有效,直到被替换 |
| G02 / G03 | 顺时针/逆时针圆弧 | 圆弧与圆角 | I、J、K 或 R 必须与圆弧一致 |
| G17 / G18 / G19 | 平面选择 | 设定圆弧平面 XY、XZ 或 YZ | 平面选错,圆弧会变形 |
| G20 / G21 | 英寸 / 毫米单位 | 每个程序的开头 | 单位混用会报废零件 |
| G41 / G42 | 刀具补偿左 / 右 | 刀具磨损补偿 | 补偿必须用 G40 取消 |
| G43 | 刀具长度偏置 | 换刀后应用 H 补偿 | H 号写错会切得过深 |
| M03 / M05 | 主轴开 / 停 | 切削开始与结束 | 方向取决于刀具旋向 |
| M08 / M09 | 切削液开 / 关 | 浇注或喷雾冷却 | 切削液不关会浪费并生锈 |
| M30 | 程序结束并回卷 | 文件的最后一个程序段 | 部分控制器上使各轴回参考点 |
工程师常问的 Gcode 问题
每台 CNC 机床的 Gcode 都一样吗?
不一样。G00、G01、G02 等核心运动代码通用,但固定循环、换刀语法和旋转轴命名在 Fanuc、Siemens、Heidenhain 和 Haas 控制器之间不同。
为某一控制器系列写的程序,不改后处理器可能无法在另一系列上运行。首次切削前务必确认后处理与机床匹配。
CAM 输出后可以手工修改 Gcode 吗?
可以,用于进给率、安全高度或退刀动作等小改动。某处材料硬、需要降低进给时,手工修改很常见。
几何变更要回到 CAM。手工改坐标或圆弧难以追溯,容易出错。
RTCP 在五轴程序中起什么作用?
旋转轴摆动时,RTCP 让编程点保持在刀尖。没有它,CAM 系统必须计算偏置,后处理的微小误差会随刀具长度放大。
在五轴加工中心上,首次切削前确认 RTCP 已激活。若未开启,表面将与模型不符。
Gcode 程序应该多长?
没有标准长度。简单型腔可能几百段,复杂五轴曲面可达数十万段。
程序大小影响控制器内存和传输时间,不影响质量。长程序按刀具或装夹拆分是常规做法。
Gcode 能控制公差和表面处理吗?
它控制刀路,不控制结果。公差来自机床、刀具、装夹和检测闭环;表面取决于进给、转速、刀具状态和控制模式。
程序干净有帮助,但无法让磨损的刀具切到 ±0.005 mm 或保持 Ra 0.8 μm。
程序有错误会怎样?
多数控制器会在语法错误的程序段停下并报警。不报警的运动错误才危险,比如 H 补偿写错或漏掉 G40。
所以首件要对照图纸检查,而不是对照仿真。
