GreatLight CNC 加工工厂 logo
CNC 加工
快速原型打样
材料
行业
新闻
关于 GL

获取即时报价

CNC 编程基础

CNC 机床控制中的 G 代码与 M 代码是什么?

G 代码告诉机床往哪里移动,M 代码告诉机床开启或关闭什么。两者共同组成程序,把 CAD 模型变成金属零件。本页解释这两类指令、各自的局限,以及如何通过一家工厂所运行的代码来判断其水平。

G 代码 = 运动M 代码 = 机床功能基于 ISO 6983±0.005 mm 公差
CNC 机床中的 G 代码与 M 代码是什么
快速摘要

要点速览

两个指令族,一个程序G 代码指令轴运动和坐标;M 代码指令主轴、切削液、换刀和程序流程。
G 代码具有模态性大多数 G 代码在被替换前一直有效,漏写 G01 会让下一行以快速移动方式切削。
M 代码控制车间现场切削液、主轴转向和托盘交换属于 M 功能,不是运动。
CAM 输出只是草稿原始 CAM 代码安全但很少高效;程序员在发布前会修改进给、退刀和顺序。
方言很重要Fanuc、Siemens 和 Haas 共享核心,但在固定循环和宏语法上存在差异。
定义

G 代码与 M 代码实际做什么

CNC 程序是一行行指令的列表。每行包含一个字母地址和一个数字。字母表示指令类型,数字表示数值大小。G 地址涉及运动和几何。M 地址涉及机床状态。F 设定进给率,S 设定主轴转速,T 选择刀位,X、Y、Z 则对应各轴本身。

之所以分成两类,是因为必须协调两件不同的事。机床要移动到空间中的某一点,并且在到达时处于正确状态。G 代码负责第一件事,M 代码负责第二件事。对 6061 铝进行粗加工走刀可能写成 G01 X50.0 Y20.0 F1200 M08,意思是开启切削液并进给到该点。

程序段从上到下读取。控制系统执行每一行,然后继续下一行。有些行改变状态并保持改变,这就是模态的含义。G01 一直有效,直到被 G00 或 G02 替换。进给率一直有效,直到出现新的 F。程序员依靠这一点来缩短代码,但一个错误也会因此传播到数百行中。

该语言在 ISO 6983 下标准化,但只限于核心部分。每家机床制造商都会加入自己的固定循环、宏变量和测头程序。这就是为什么同一零件为 Fanuc 控制系统和 Siemens 控制系统后处理出的代码看起来并不相同,即使两者都加工到 ±0.005 mm。

  • 1
    G = 几何位置、插补、补偿、坐标系、固定循环。
  • 2
    M = 机床主轴、切削液、换刀、托盘、程序暂停、程序结束。
  • 3
    F、S、T进给率、主轴转速、刀具选择。不属于 G 或 M,但始终存在。
G 代码

决定切削形状的 G 代码

G00 以快速移动方式运动。它不是切削移动,绝不应接触材料。G01 按编程的 F 值直线进给。G02 和 G03 分别顺时针和逆时针切削圆弧,由终点加上半径 R 或圆心偏移 I、J 定义。在长圆弧上,选择 R 还是 I/J 很重要,因为单个 R 值可能产生弓形轮廓。

接下来是坐标系。G54 到 G59 定义工件偏置,使一个程序能在多个台钳或工装夹具上运行。G90 设定绝对定位,G91 设定增量定位。在程序中途混用是合法的,也有用,但前提是程序员能跟踪清楚。在钻孔循环中使用 G91 很常见;在轮廓走刀中使用 G91 通常意味着零件报废。

补偿才是真正体现技术的地方。G41 和 G42 将路径偏移到编程轮廓的左侧或右侧,以补偿刀具直径。G40 取消补偿。使用正确时,可以在不重新后处理的情况下,根据实际刀具磨损调整名义刀路。使用不当时,控制系统会在小于半径的内角处报警,更糟的是过切侧壁。

固定循环压缩重复性工作。G81 钻孔,G83 啄钻并退刀,G84 攻丝,G76 镗孔。每个循环接受一组参数,并在每个列出的位置重复。在一个有 60 个孔的零件上,这能把 60 行代码变成三行。它也隐藏了细节,因此错误的 R 平面或安全高度值可能在任何人都没读到该行之前就让钻头撞上工装夹具。

  • 1
    G00 / G01快速定位与受控进给。绝不要用 G00 切削。
  • 2
    G02 / G03圆弧插补。对于大于四分之一圆的圆弧,优先使用 I/J 而不是 R。
  • 3
    G41 / G42 / G40刀具补偿左、右及取消。
  • 4
    G54–G59用于多工装夹具装夹的工件偏置。
M 代码

驱动机床运行的 M 代码

M03 启动主轴顺时针旋转,M04 逆时针旋转。M05 停止主轴。在铣床上,使用右旋刀具时 M03 是正常方向;在车床上,同一代码相对于操作员可能意味着相反方向,这就是装夹单重要的原因。主轴转速不是 M 功能。它是 S 值,在主轴启动时生效。

切削液方面,M07 为雾状,M08 为 flood。M09 关闭切削液。在干式精加工走刀中保持 flood 切削液开启是常见的 CAM 默认设置,在铝件上它可能把切屑冲回切削区。程序员通常会在精加工轮廓前插入 M09,改用吹气或主轴内冷。

换刀通过 M06 加 T 地址执行。系统先退刀、旋转刀库,确认位置后再执行下一步动作。带预选刀功能的机床会提前备好下一把刀,每次换刀可省几秒。20 把刀的活,每件累计下来就是几分钟。

程序流程用 M00 无条件停止,M01 为操作员可启用的可选停止,M30 结束并回卷,M02 结束但不回卷。子程序调用用 M98,返回用 M99。这四条指令决定无人值守加工是继续运行还是停下来等人,所以在任何无人班次前都值得审核。

  • 1
    M03 / M04 / M05主轴正转、反转、停止。
  • 2
    M07 / M08 / M09雾状切削液开、大流量切削液开、切削液关。
  • 3
    M06换刀,与 T 地址配合使用。
  • 4
    M00 / M01 / M30强制停止、可选停止、结束并回卷。
边界

代码止步、工艺开始之处

程序正确不等于工艺好。代码能把刀具定位到 ±0.005 mm,仍可能加工出检验不合格的零件,因为让刀、热变形和工件夹持不在指令集范围内。4,000 mm 的铝型材无论刀路多干净,都会在自重下弯曲。程序员只能管理机床能控制的部分。

刀具接触是最明显的例子。同一个 G01 程序段,径向接触 5% 和 50% 时切削效果不同。CAM 软件会估算切屑变薄并调整进给,但估算依赖实际刀具几何和材料状态。在冷车间放置过的 7075 铝块,与刚下锯的铝块表现不同。

表面处理由代码只部分指定的参数决定。每齿进给、步距、刀具跳动和切削液供给最终都体现在同一个 Ra 数值上。把侧壁做到 Ra 0.8–1.6 μm 是系统结果,不是 G 代码结果。车间报表面处理时,报的是整套装夹,不是程序里的一行。

这就是为什么代码审查是生产中的实际步骤。程序员在程序下发到机床前读一遍后处理输出,能发现退刀平面错误、缺少 M09 或进给率停留在 CAM 默认值。这只需几分钟,却能避免耗费数小时的失效模式。

  • 1
    代码设定位置,不设定刚性让刀和振动取决于装夹。
  • 2
    接触状态改变一切进给必须匹配径向和轴向切深。
  • 3
    表面处理是系统数值刀具、刀柄、切削液和参数共同决定。
流程

CAM 后处理如何变成受控程序

程序获准切金属前我们执行的顺序。

  • 1
    后处理并检查从 CAM 生成代码,然后读前 40 行和后 40 行。检查 G54、单位和安全 Z 值。
  • 2
    核对偏置对照装夹表确认工件偏置和刀长值。这里 0.1 mm 的误差会处处显现。
  • 3
    在工件上方空运行将 Z 偏移 +50 mm 运行,或使用系统仿真。注意穿过毛坯的快速移动。
  • 4
    切首件加工一件,测量关键特征,调整刀具补偿而不是重新后处理。
  • 5
    调整进给和切削液提高进给直到切屑负载稳定。把 M09 移到精加工前能清屑的位置。
  • 6
    带版本控制发布把验证过的程序按零件号和装夹存档。复用而不是重新后处理。
并排对比

G 代码与 M 代码对照

两类代码出现在同一程序段中,从左到右读取。

项目G 代码M 代码
控制对象轴运动和几何机床状态和附件
典型地址G00、G01、G02、G41、G54M03、M06、M08、M30
影响的单位毫米或英寸、度无,它是开关量
模态行为多为模态,保持有效多为非模态,执行一次
由 CAM 设定始终,每次切削部分,常手工编辑
常见失误偏置或圆弧半径错误切削液或主轴未关
读取方伺服和插补器PLC 和机床逻辑

判断取舍

如果零件是一次性原型,让 CAM 写代码,把时间花在工装夹具和首件测量上。如果是重复生产件,值得投入手工阅读和编辑程序:进给、退刀和切削液修改通常比升级机床更能缩短加工节拍。

常见问题

工程师关于 G 代码和 M 代码的常见问题

同一程序能在 Fanuc、Haas 和 Siemens 系统上运行吗?

核心指令集 G00、G01、G02、G03、G54 和常用 M 代码足够接近,简单程序通常能运行。

固定循环、宏语法、测头和高速前瞻功能不同。为一个系统写的程序通常重新后处理,而不是手工修补。

G 代码越多,零件越精确吗?

不是。精度来自机床几何、热稳定性、刀柄和测量,不来自行数。

如果前瞻未调好,段长很小的密集代码反而会拖慢系统,表现为拐角振纹。

为什么我的 CAM 输出开头有这么多安全程序段?

这些行设定单位、取消补偿、选择工件偏置并把机床定位到安全高度。

它们是廉价的保险。删掉省不了什么,却可能让快速移动撞上工装夹具。

M00 和 M01 有什么区别?

M00 总是停止程序。操作员必须按循环启动才能继续。

M01 仅在可选停止开关打开时停止。车间用 M01 做中途检查,无人运行时保持开关关闭。

换刀后能用刀具补偿代替重新后处理吗?

可以,但有局限。G41 和 G42 让操作员针对重磨或略有不同的刀具做调整。

补偿无法修正形状本身已错的路径,且在内角小于刀具半径时会报警。

切金属前如何检查程序?

用 Z 偏移仿真或空运行,对照装夹表核对工件偏置和刀长,并对第一条刀路单段执行。

大多数撞机来自偏置错误或退刀平面低于毛坯,这两点在空运行的第一分钟就能看出来。

把零件发给我们,而不是你的代码

上传 STEP 文件,我们在 12 小时内返回报价并附免费 DFM 分析。我们的编程员负责 G 代码和 M 代码、装夹和首件。

12 小时报价100% 全检无最小起订量

关注

更多车间内容

我们发布来自工厂车间的装夹记录、刀具试验和检测数据。

FacebookTikTokYouTubeLinkedInInstagramThreadsPinterest

深受全球工程师和制造商信赖

Tesla Ford Motor Company 比亚迪汽车 电装 麦格纳国际 波音 空客 美敦力 库卡 发那科