G 代码到底是什么,不是什么
G 代码是按 ISO 6983 标准化的文本指令集。每一行称为一个程序段,包含一个或多个字:字母地址加数字。G01 X25.4 Y0 F200 告诉控制器以 200 mm/min 直线移动到该坐标。控制器按顺序读取程序段,执行完一段再读下一段。
它不是设计文件。几何形状存在于 CAM 输出或图纸中。G 代码只描述运动、进给、转速、换刀和机床状态。零件加工出错时,原因往往在上游的 CAM 策略或工件夹持,而不在 G 代码本身。
不同控制器共享核心字集,但在边缘功能上有差异。Fanuc、Siemens、Haas 和 Mitsubishi 控制器都接受 G00、G01、G02 和 G03,但固定循环、宏语法和高速前瞻功能不同。在一个控制器上运行正常的程序,换到另一个上可能需要修改。
对审阅程序的工程师来说,有用的问题不是代码是否优雅,而是装夹是否安全、坐标是否与工装夹具匹配、刀路是否与图纸一致。大多数报废零件正源于此。
模态状态:为什么一行代码能改变后面的一切
大多数 G 代码是模态的。调用 G01 后,后续每个带坐标的程序段都保持 G01,直到出现另一个运动代码。这很高效,也是最常见的撞机来源。快速移动前漏掉一个 G00,或上一工序残留的 G41,都会延续到下面所有内容。
几乎每个程序中都会看到的三个运动代码是:G00 快速定位、G01 直线进给、G02 或 G03 顺时针和逆时针圆弧。G00 以机床最大快移速度移动,从不用于切削。G01 以编程进给率 F 移动。圆弧需要 I、J、K 偏置或 R 值,取决于控制器。
模态状态也适用于单位、平面选择和进给模式。G20 选择英寸,G21 选择毫米。G17、G18 和 G19 设置圆弧和刀具补偿的活动平面。G94 设置每分钟进给,G95 设置每转进给。混用这些而不复位,会产生屏幕上看似正确但尺寸错误的程序。
实用规则:每把刀开始时,复位你依赖的状态。不要假设上一把刀把控制器留在了已知状态。每个工序顶部加一个简短的安全程序段不花成本,能防止大多数到达主轴的错误。
工件偏置以及机床坐标与零件坐标的区别
机床坐标固定在机床上。零件坐标由工件偏置设定,通常是 G54 到 G59。控制器将偏置加到编程坐标上以找到物理位置。如果偏置错了,每个尺寸都会偏移相同的量,错误很容易发现,因为它是均匀的。
设置 G54 意味着对零件或工装夹具进行对刀,并将该位置存入偏置表。在虎钳装夹中,X 和 Y 零点通常是毛坯的角,Z 零点通常是顶面。在墓碑夹具或五轴转台上,偏置可能参考旋转中心点。这个选择会改变 CAM 后处理程序的方式。
常见故障是 CAM 设置与物理偏置不匹配。程序员假设 Z 零点是毛坯顶面;操作员却设成了虎钳钳口顶面。刀具扎进钳口或切空气。装夹单和程序头都应明确说明零点参考。
对于软爪或定制工装夹具夹持的零件,在装夹文档中记录偏置值。六个月后再次运行时,第二次装夹更快,零点错误的风险大幅下降。这是文档习惯,不是加工技能,但回报更频繁。
刀具补偿、刀长以及让尺寸保持在公差内的偏置
刀具补偿,G41 为左、G42 为右,将刀路按刀具半径偏移,使编程路径描述成品零件边缘,而不是刀具中心。控制器从偏置表读取半径。如果操作员在磨损测量后更新半径,零件尺寸会改变而无需编辑程序。
这就是刀具补偿对公差控制重要的原因。对于公差 ±0.005 mm 的特征,操作员可以小增量调整偏置并重新切削。改为编辑程序坐标会更慢、风险更高。大多数生产车间对所有轮廓切削都开启补偿,正是这个原因。
刀具长度补偿的原理相同。每把刀都有存储的长度,控制器在调用刀具时应用该值。长度补偿错误意味着刀具要么撞上工件,要么在工件上方空切。换刀或更换刀片后,应重新测量或通过对刀验证长度。
G43 应用长度补偿,通常配合与刀具对应的 H 号。G49 取消补偿。任何切削移动前的安全程序段是 G43 H01 Z50.0,它应用补偿并将 Z 定位到安全高度。跳过安全高度是少数会同时损坏工件和机床的错误之一。
安全行、空运行,以及 G 代码不适合该任务的情况
安全起始行重置关键状态:G21 毫米、G17 XY 平面、G90 绝对定位、G94 每分钟进给、G40 取消任何活动的刀具补偿。它还用 G80 取消任何活动的固定循环。在运行多个程序员工作的机床上,这个程序段不是可选项。
退刀空运行,或降低进给的单段运行,能在大多数碰撞发生前发现它们。新程序上,用降低的快速倍率运行第一把刀,并观察剩余距离显示。如果剩余行程看起来不对,就停下。显示比屏幕预览告诉你更多。
当几何形状复杂且批量小时,G 代码并不合适。带有数百个小移动的五轴轮廓曲面,最好从 CAM 后处理并启用前瞻。手工编辑该刀路有产生过切的风险,且在仿真中难以发现。把代码当作审查产物,而不是写作练习。
对于手动铣床十分钟就能钻完的一次性孔位,它也不是合适的工具。编程、装夹和验证 CNC 程序有固定成本。低于一定的零件数量或复杂度,该成本无法收回。知道何时停止是技能的一部分。
常用 G 代码及其改变的内容
字地址和模态行为因控制器略有差异。运行前请对照机床手册核实。
| 代码 | 功能 | 模态? | 典型用途 |
|---|---|---|---|
| G00 | 快速定位 | 是 | 在特征之间移动,不切削 |
| G01 | 直线进给移动 | 是 | 按编程进给率直线切削 |
| G02 / G03 | 圆弧,顺时针 / 逆时针 | 是 | 圆角、半径、圆形型腔 |
| G17 / G18 / G19 | 平面选择 XY / XZ / YZ | 是 | 在圆弧和刀具补偿前设置 |
| G20 / G21 | 英寸 / 公制单位 | 是 | 在每个程序开头重置 |
| G40 | 取消刀具补偿 | 是 | 安全起始行,轮廓切削结束 |
| G41 / G42 | 刀具补偿左 / 右 | 是 | 轮廓切削保持严格公差 |
| G43 / G49 | 应用/取消刀具长度偏置 | 是 | 每次换刀前后 |
| G54–G59 | 工件坐标系偏置 | 是 | 设置相对于机床的零件零点 |
| G80 | 取消固定循环 | 是 | 钻孔或攻丝循环之后 |
| G90 / G91 | 绝对 / 增量定位 | 是 | 大多数生产工作用绝对 |
| G94 / G95 | 每分钟进给 / 每转进给 | 是 | 攻丝和车削用每转进给 |
工程师常问的 G 代码问题
审查加工报价需要读 G 代码吗?
不需要。报价取决于几何、材料、公差和数量,而不是代码。但读装夹单能告诉你工厂是否考虑了工件夹持、刀具可达性和零点参考。
如果工厂说不出哪个面是 Z 零点以及零件如何夹持,这说明工艺计划薄弱。要装夹单,不要程序。
为什么同一程序在两台机床上产生不同尺寸?
工件坐标系、刀具长度补偿和刀具补偿值存在于机床上,而不是程序中。如果补偿不同,零件就不同。热膨胀和机床磨损也会在长时间运行中使尺寸漂移。
解决办法是标准化装夹单,并在每次运行开始时验证补偿。严格公差下,量产前做首件检验能及早发现漂移。
G41 对最终尺寸实际做了什么?
G41 按补偿表中存储的刀具半径,将刀路向编程方向的左侧偏移。编程路径随后描述成品边缘。增大存储半径会把特征切小;减小则切大。
这就是操作员调整补偿而不是程序的原因。0.01 mm 的补偿变化使壁面移动 0.01 mm,±0.005 mm 的特征就是这样调出来的。
手写 G 代码在生产中还在用吗?
对于端面、钻孔阵列和基本型腔等简单特征,是的。它快速且可预测。对于轮廓 3D 曲面,CAM 输出是标准做法,因为移动数量太多,无法手写。
大多数工厂混合使用。程序员从 CAM 后处理,然后手工编辑程序头、安全起始行和换刀程序段。
如何知道程序可以安全运行?
首次切削前检查安全起始行、工件坐标系和刀具长度补偿。用降低的快速倍率和单段模式运行第一把刀。观察剩余距离显示,而不只是仿真。
在同一机床、工装夹具和材料上验证过的程序风险低。在机床之间转移的程序则不是,即使代码未变。
G 代码会影响我能达到的表面处理吗?
间接影响。代码中的进给率、步距和刀具半径决定理论表面处理。机床刚性、刀具状态和材料决定实际结果。用合适的参数,铝件上 Ra 0.8–1.6 μm 的表面处理可以实现,但仅靠代码不能保证。
如果表面处理重要,在图纸上注明,让工厂选择参数。然后按该数值检验首件。
