CNC和3D打印中的G代码和M代码简介

最后更新: 17/12/2025
作者: 艾萨克
  • G 代码定义了数控机床和 3D 打印机的几何形状和运动方式。
  • M 代码控制主轴、冷却液和刀具更换等辅助功能。
  • CAD/CAM 和切片软件会自动生成 G 代码和 M 代码,但理解这些代码才是关键。
  • 掌握这些代码可以防止错误,提高准确性,并优化生产。

G代码和M代码简介

如果您与 数控机床或3D打印机你迟早会遇到著名的G代码及其密不可分的伙伴——M代码。对许多人来说,它们听起来像是火星语言,但实际上,它们只是机器能够完美理解的高度结构化的指令。理解它们的含义以及它们如何组合,是摆脱“盲目”工作、真正掌控加工或打印过程的关键。

无论你的机器多么昂贵或先进,都把它看作是相当“简单”的:它只知道 移动到 X、Y、Z 坐标,旋转主轴,或挤出材料 当你发出指令时,其他一切都由G代码和M代码处理。在本文中,我们将深入浅出地讲解G代码和M代码是什么、它们的起源、它们之间的区别、它们在当今CAD/CAM和切片软件中的应用、它们会导致哪些典型错误,甚至还会介绍一些更复杂的程序示例,包括用于CNC车床和3D打印的程序。

什么是数控加工?为什么它如此依赖G代码和M代码?

数控加工本质上是利用 计算机数控机床 (车床、铣床、加工中心等)用于制造零件,其精度之高,是人工反复加工无法达到的。数控系统定义位置、速度和轨迹;机器则执行这些指令。

它的优势中,有一点尤为突出。 极高的精度和材料去除效率能够处理非常复杂的几何形状,并且具有极高的重复性:如果程序制作精良,可以生产 10 个或 10.000 个几乎完全相同的部件。

在如今我们所知的计算机出现之前,火车司机使用 穿孔卡片或纸带 为了对指令进行编码,需要按照正确的顺序打孔,这是一个缓慢而又脆弱的过程:如果卡片损坏或丢失,所有工作就都白费了,生产也会停止。

随着数控技术和第一台计算机的出现,操作员开始引入 手动输入代码行这虽然有所改进,但对于操作繁多的复杂零件来说,却变得极其繁琐,而且容易出现输入或计算错误。

如今情况大不相同:我们使用CAD软件进行设计,使用CAM程序自动生成刀具路径。CAM本身即可生成刀具路径。 G代码和M代码文件 机器已准备就绪,可以运行了。但这并不意味着了解其内部构造对于审查、优化、纠正以及必要时的手动编程不重要。

CNC和3D打印中的G代码和M代码

数控编程如何控制机器

在典型的工作流程中,程序员会在CAM系统中准备加工环境: 零件模型、夹具或刀具模型、刀具选择 以及每道工序(粗加工、精加工、钻孔、攻丝等)的刀具路径。软件根据所有这些信息生成由指令块组成的数控程序。

每个代码块通常是一行文本,内容如下: G 代码,可选 M 代码 以及各种参数:X、Y、Z 坐标、半径、进给量 (F)、主轴转速 (S)、刀具数量 (T) 等。控制系统按顺序解释这些指令,并根据指令移动机器或改变机器状态。

实际上,该程序通常会将运动指令(G代码)和辅助功能(M代码)以及其他一些内容结合起来。 comandos 数字线中会使用 F、S、T 或 N 等附加字符。其逻辑是: G代码决定了机器“如何”运动M 代码规定了机器在功能方面“做什么”。 硬件.

虽然 CAM 可以节省很多工作,但当零件比较复杂时,可能需要进行后处理。 人工审核周期、补偿和进度 或者安全序列。在复杂的项目中,代码的生成、调整和验证往往需要数天甚至数周的时间。

什么是数控机床和3D打印中的G代码

G代码,也称为RS-274代码或ISO代码,是 标准语言 编程 几何的 数控机床(机器码和字节码的区别“G”正是来源于“几何学”:它描述了机器应该如何在空间中运动以及具有哪些参数。

在传统的数控机床(车床、铣床、激光切割机等)中,G代码指示 轨迹、工作平面、进给率 以及其他与工具相对于工件的运动相关的信息。在3D打印中,它的作用完全相同,但应用于打印机的轴和挤出机。

典型的 G 代码命令以字母 G 开头,后跟一个数字,例如 G00、G01、G02、G03、G17等等。每种组合都有非常具体的含义。通常,该线路还会包含更多参数,例如 X、Y、Z、R、F、S 或 E(在 3D 打印中,E 代表挤出机)。

  诊断 PC 音频线中的干扰或噪音

尽管存在一些标准(例如 ISO 6983、DIN 66025、西门子标准、发那科标准、哈斯标准等),但每个控制器都可以 添加扩展或变体此外,不同制造商之间的一些格式细节也会有所不同:例如,一台机器可能接受 G3,而另一台机器可能要求 G03,或者允许省略某些零和空格。

在所有情况下,基本思路都相同:一系列代码块,当按顺序执行时, 它们构成了整个刀具路径。 因此,印刷品或物体的最终形状也由此而定。

G代码中的字母和常用参数

除了字母 G 之外,该语言还使用其他字母来表示 重要参数在传统的数控加工中,我们发现(但不限于):

  • X,Y,Z笛卡尔坐标系用于在三维空间中定位刀具或工件。X 轴和 Y 轴通常代表水平面,Z 轴代表深度或高度。
  • A:绕 X 轴旋转或自转(在多轴机床中)。
  • R:执行圆弧插值时圆弧的半径。
  • 我,J:圆弧插值中圆弧中心的增量分量。
  • N:程序行号或块号。
  • F:进给速度,即机械加工操作中的切削或位移速度。
  • S主轴转速,单位为每分钟转数。
  • T:与 M06 等指令配合使用的工具。

在 FFF/FDM 3D 打印中,该字母也经常出现。 E 表示挤出丝的量以及 X、Y 和 Z 轴上的 G0/G1 定位指令。

数控加工中的主要G代码

一些 最常用的G代码 以下是数控铣床和车床的规格:

  • G00 – 快速定位: 将工具以最快的速度移动到指定坐标,无需进行切割。这适用于接近和撤退操作,此时唯一重要的是快速到达且避免碰撞。
  • G01 – 线性插值: 它命令工件以指定的进给速度 F 在两点之间沿直线移动。它是直线切削和轮廓加工的经典命令。
  • G02 – 循环时间插值: 沿顺时针方向绘制弧线或圆,通常使用 X、Y(或 X、Z / Y、Z,取决于活动平面)和半径 R 或中心 I、J。
  • G03 – 逆时针圆弧插值: 与 G02 相同,但方向相反,非常适合加工圆形轮廓、圆形凹槽或弧形凹槽。
  • G04 – 暂停或停留: 它会强制机器停止运转一段时间。这样做是为了让主轴稳定下来、刀具冷却或冷却液发挥作用。
  • G17、G18、G19 – 平面选择: G17 激活 XY 平面,G18 激活 XZ 平面,G19 激活 YZ 平面,这在多轴模式下工作或在标准平面外插补圆弧时至关重要。
  • G21/G20: 它们定义了单位制,通常毫米用 G21 表示,英寸用 G20 表示。
  • G43 – 刀具长度补偿: 它考虑到每把刀具的长度都不同,并应用适当的校正器,使实际加工深度达到预期效果。

车床中也常见一些特定的代码,例如: G71 用于纵向粗加工循环G70 用于轮廓精加工,G76 用于循环螺纹加工,允许您定义轮廓并让控制器自动生成著名的“梯形”中间加工路径。

数控车床上 G 代码的高级示例

为了了解这些循环的真正潜力,请考虑以下典型场景:我们从一个圆柱形块开始,我们想要 粗略加工大量材料 用少量的线条勾勒,留出一些余料进行最后的精修,最后用线缝合收尾。

在车床程序中,我们可以先在模拟器中使用标准指令定义初始材料尺寸,然后用 O0001 等数字标识程序,用 G21 选择公制单位,用 G99 设置每转进给模式。

接下来,会发出类似这样的换刀指令: M06 T0101 (刀具 1 及其偏移量 1),主轴转速在 G97 模式(恒定 RPM)下定义,使用 S1800 M03 顺时针旋转,并使用 G00 快速将其定位到靠近工件的位置(例如 X26 Z2)。

然后,使用 G01 可以 面对砖块 穿过中心 (X-1 F.05),返回安全位置并进入著名的粗加工循环 G71。该循环由两行定义,分别指定切削深度 U、退刀量 R、轮廓的初始块 P 和最终块 Q、余量 U 和 W 以及进给量 F。

例如,N1 和 N2 之间的轮廓线描述如下:端面车削至 X0,Z 轴进给,具有特定半径的圆弧 G03,圆柱车削和圆锥车削。重要的是轮廓是 单调递增或递减 直径要合适,这样循环才能正常工作。

G71粗加工完成后,启动G70 P1 Q2,以便利用其精细的转速和进给量进行加工。 进行最后的润色 沿着相同的轮廓。然后,您可以使用 G28 U0 W0 将滑架送回参考位置,使用 M05 停止主轴,切换到螺纹刀具 T0303,并激活循环 G76,以生成具有深度、角度、螺距(例如 F1.5)和内径等参数的多道螺纹。

  现代显卡中的加速度计和陀螺仪有什么用途?

最后,将滑架送回安全位置(G28 U0 W0),并使用 M30(结束并倒带)或 M00(停止但不倒带)终止程序。整个过程可以用以下方式描述: 由于周期固定,程序行数非常少。这大大简化了日常工作。

什么是M代码?它扮演什么角色?

M 代码又被称为“杂项代码”或“机器功能代码”。G 代码处理几何形状和运动,而 M 代码则控制其他功能。 辅助操作:启动或停止主轴、打开冷却液、更换刀具停止或终止程序等。

正式来说,这些命令是以字母 M 开头,后跟一个数字,例如 M00,M03,M05,M06,M08,M30它们各自充当一个开关,可以打开或关闭某些东西,或者使控制状态改变。

一个重要的细节是,通常情况下,每个块中只使用一个块。 单个 M 代码将两个或多个功能放在同一条线上通常不是个好主意,因为很多功能是互斥的:主轴不能在同一指令中同时启动和停止,否则机器就会“卡住”。

与标准化程度更高的G代码不同,M代码 不同厂家生产的这些产品差异很大。M03 或 M05 的含义在几乎所有情况下通常都是相同的,但其他代码(托盘更换、夹具、特殊循环)可能会改变,甚至格式(M3 与 M03)如果控制严格,也可能导致错误。

数控机床中最常用的M代码

最常见的M代码 您将在CNC中看到的程序有:

  • M00 – 程序停止: 它会以可控的方式暂停执行,直到操作员按下继续按钮。它用于检查、手动更改或一次性干预。
  • M02 / M30 – 程序结束: 它们表示程序已结束。在许多控制器上,M30 除了停止程序外,还会倒回到程序开头以完成程序。
  • M03 – 主轴运动(顺时针): 主轴顺时针旋转,通常伴随着转速的 S 值。
  • M04 – 主轴运转(逆时针): 与 M03 相同,但旋转方向相反,适用于某些操作或特殊配置。
  • M05 – 主轴停止: 它可以减慢旋转速度,这是更换刀具或完成切割操作之前必不可少的步骤。
  • M06 – 工具更换: 指示机器自动更换刀具至 T 中指示的刀具。对于带有刀库的加工中心来说至关重要。
  • M08 – 制冷剂开启: 开启冷却系统(喷射、雨淋等)以保持温度并改善表面光洁度。
  • M09 – 制冷剂关闭: 它可以切断冷却液的流动,这在更换刀具之前或操作结束时非常有用。

尽管许多机器上的代码都很相似,但必须仔细检查。 具体控制手册 因为某些M系列车型的功能会因制造商的不同而完全不同。

FDM/FFF 3D打印中的G代码和M代码

3D打印中发生了一件非常奇特的事情:尽管我们讨论的是不同的技术,但其控制的核心却基于…… 与 G 代码和 M 代码的概念相同 与数控机床相比,打印机的固件(Marlin、Klipper、RepRap 等)会解释这些指令,并控制电机运转、加热热端、启动风扇或进行调平。

打印机无法识别 STL、OBJ 或 3D 网格文件;它只知道自己必须…… 将头部移动到某个坐标该工艺包括以特定速度和温度沉积材料(挤出)。切片软件将三维几何图形转换为数千行G代码。

一个简单的打印机指令示例是 G0 X15,它将 X 轴沿正方向移动 15 毫米。将 X、Y、Z 和 E 轴与 G0/G1 指令结合使用,可以实现以下功能: 画出这块布料的每一层。 在床上。

除了描述零件的 G 代码之外,切片机总是会生成一个 开始和结束代码 (开始 G 代码和结束 G 代码)会在每次打印作业前后运行。除非您进行更改,否则这些脚本会在所有作业中重复运行。

初始设置通常包括归位(G28)、床面和热端加热(M140、M104、M109)以及(如果有传感器)自动调平。 挤出吹扫线等等。完成后,加热器(M104 S0、M140 S0)、电机(M84)、风扇(M106 S0)都会关闭,有时还会移动 Z 轴,将零件从热端移开。

为什么要修改3D打印中的起始和结束G代码

虽然大多数切片机都带来了 相当通用的默认脚本 由于它们可与多种打印机兼容,因此通常值得对其进行定制,以充分发挥其性能。一些常见原因包括:

  • 添加一系列 自动调平 如果你的打印机有传感器。
  • 添加预清洗管线以清洁挤出机并提高第一层粘合力。
  • 配置打印完成后发出声音或警报。
  • 更好地控制 热端和床的冷却 避免翘曲或线材滴落。
  • 对于没有 EEPROM 的打印机,重置断电时丢失的 Z 轴偏移量、PID 参数或设置。
  修复 Zoom 中的错误代码 3113

在 Cura 等切片软件中,操作非常简单:进入打印机设置,打开机器设置,你会看到两个文本框,分别用于: 开始 G 代码和结束 G 代码您可以在那里编辑、粘贴代码片段,并将其调整以适应您的特定模型。

3D打印机脚本中常用的G代码命令

一些通常会出现的命令 这些脚本(并非完整程序)包括:

  • G92 E0: 将挤出机重置为零,以便从那时起,挤出命令都相对于该点。
  • G28: 它能将所有轴恢复到原点(归位),这是开始打印前必不可少的步骤。
  • G1 XYFE: 它结合了 X/Y 移动、F 进给和 E 挤出,通常用于绘制清洗线或移动到工作台上的特定位置。
  • G1 Z: 调整 Z 轴高度,防止热端撞到工作台或成品零件。
  • G1 FE: 最后发出耗材回抽指令,以防止滴落。
  • M106 S: 配置层风扇速度,从 0(关闭)到最大。
  • M104 S0 / M140 S0: 打印任务完成后,他们会关闭挤出机和打印床。
  • M84: 关闭所有电机,使轴可以自由转动。

除了这些指令之外,每个固件还会添加自己的代码,用于调平打印床、高级暂停、更换耗材等等。这就是它如此重要的原因。 了解您的打印机究竟能理解哪些内容。.

G代码和M代码的主要区别

尽管G代码和M代码总是同时出现并相互补充,但它们之间却存在一些差异。 不同的角色 在数控编程和3D打印领域,我们可以将它们的区别概括为以下几点:

  • 用途: G代码控制刀具路径、位置、方向和进给速度。M代码管理辅助功能,例如主轴、冷却液、换刀和程序终止。
  • 指令类型: G 代码本质上是几何的,它规定了机器如何运动;M 代码是操作性的,它侧重于不一定涉及运动的机器状态。
  • 标准化: G代码在行业内相对标准化,因此G00、G01、G02等在不同的机器上通常表示相同的含义。相比之下,许多M代码则不然。 更依赖于制造商 它们的含义可能会改变。
  • 重量精度: G代码直接影响零件的尺寸精度;参数设置错误的G01指令可能会破坏轮廓。M代码的影响则更为间接(例如,冷却液的开启或关闭会影响热稳定性和表面光洁度)。
  • 复杂: G 代码块往往更密集,包含许多坐标、半径和进给量,而 M 代码往往更简单,但对安全性和顺序控制至关重要。

最终,该项目可以被视为一个交响乐团,其中 G代码标记音符和旋律M 代码决定每种乐器何时进入、何时保持安静以及幕布何时关闭。

CNC编程中的其他补充命令

除了 G 和 M 之外,还有三个字母在 CNC 和 3D 打印中都至关重要:F、S 和 T。这些并非独立的代码,而是…… 伴随运动的参数 或函数:

  • F(饲料): 定义进给速度,例如以毫米/分钟或毫米/转为单位,具体取决于 G94 或 G95(或某些控制系统上的 G99)是否激活。F 值过高会导致刀具损坏;过低会延长加工周期并可能导致加工表面光洁度差。
  • S(主轴转速): 与 M03 或 M04 组合使用时,表示主轴转速(单位:RPM)。在某些情况下,它也可以表示其他速度。
  • T(工具): 在 M06 换刀操作中选择要使用的工具,因此务必确保所选工具与仓库中该工具的实际位置相符。

一个数控运动指令的例子可以是 G01 X-100 Y-50 Z-35 F10,它指示一个线性位移,进给速度为每分钟 10 个单位(取决于系统)。如果我们添加 M03 S3000,则表示在该位置,我们希望主轴以该速度旋转。 顺时针旋转 3000 转/分.