G 代码解释

G 代码解释本文已参与「新人创作礼」活动,一起开启掘金创作之路 G 代码解释|最重要的 G 代码命令列表 Gcode详解 教程 如果您的工作或爱好与CNC机器或3D打印机相关,那么了解G代码是什么以及它是如何工作

本文已参与「新人创作礼」活动,一起开启掘金创作之路

G 代码解释|最重要的 G 代码命令列表

Gcode详解

教程

如果您的工作或爱好与CNC机器或3D打印机相关,那么了解G代码是什么以及它是如何工作的对您来说至关重要。因此,在本教程中,我们将学习G代码语言的基础知识,什么是最重要或最常见的G代码命令,我们将解释它们的工作原理。

什么是 G 代码?

G代码是CNC(计算机数控)机床的编程语言。G代码代表“几何代码”。我们使用这种语言来告诉机器该做什么或如何做某事。G代码命令指示机器移动到哪里,移动的速度以及遵循的路径。

在车床或铣床等机床的情况下,切削刀具由这些命令驱动,以遵循特定的刀具路径,切割材料以获得所需的形状。

同样,在3D打印机的情况下,G代码命令指示机器逐层沉积材料,形成精确的几何形状。

如何阅读G代码命令?

乍一看,当您看到G代码文件时,它可能看起来很复杂,但实际上并不难理解。

写字板文本编辑器中的 G 代码示例

如果我们仔细查看代码,我们可以注意到大多数行具有相同的结构。似乎G代码的“复杂”部分是我们看到的所有那些数字,它们只是笛卡尔坐标。

让我们看一下一行并解释它是如何工作的。

G01 X247.951560 Y11.817060 Z-1.000000 F400.000000

该行具有以下结构:

G## X## Y## Z## F##

  • 首先是G代码命令,在本例中是G01,意思是“直线移动到特定位置”。
  • 我们使用 XYZ 值声明位置或坐标。
  • 最后,使用F值,我们设置进给速率,或执行移动的速度。

总而言之,G01 X247.951560 Y11.817060 Z-1.000000 F400 告诉数控机床以直线从其当前位置移动到坐标 X247.951560Y11.817060 Z-1.000000,速度为 400 mm/min。单位是mm/min,因为如果我们回顾一下G代码示例图像,我们可以看到我们使用了命令G21,它将单位设置为毫微米。如果我们想要以英寸为单位的单位,我们改用 G20 命令。

最重要/常见的 G 代码命令

因此,现在我们知道了如何读取一行G代码,我们可以看看最重要或最常用的G代码命令。我们将通过几个示例了解它们中的每一个是如何工作的,在本教程结束时,我们将能够完全了解G代码的工作原理,如何阅读,如何修改甚至如何编写我们自己的G代码。

G00 – 快速定位

G00 命令以最大行驶速度将机器从当前位置移动到指定点或命令指定的坐标。机器将同时移动所有轴,以便它们同时完成行程。这会导致直线移动到新的位置点。

G00 G代码命令 - 线性快速定位 G00是一种非切割运动,其目的是将机器快速移动到所需位置以开始某种工作,例如切割或打印。

G01 – 线性插值

G01 G 代码命令指示机器以设定的进给速率或速度直线移动。我们使用 XYZ 值指定结束位置,并使用 F 值指定速度。机器控制器计算(插值)要通过的中间点以获得该直线。虽然这些G代码命令很简单,理解起来非常直观,但在它们背后,机器控制器每秒执行数千次计算,以便进行这些运动。

G01 - 线性插值 - 最常见的 G 代码命令

与仅用于定位的 G00 命令不同,G01 命令在机器执行其主要作业时使用。在车床或铣床的情况下,直线切割材料,在3D打印机的情况下,以直线挤出材料。 虽然从名字上看,G0叫做“快速直线移动”,而G1叫做“直线移动”,但实际上在Repetier-firmware里面,G0和G1指令是完全等价的,没有任何区别。移动是否快速,完全是靠参数F来决定的。这条指令的作用也很简单,就是将挤出头线性移动到一个特定的位置。这条指令带有不少参数,完整的形式是这样的: G0 Xnnn Ynnn Znnn Ennn Fnnn Snnn 或者

G1 Xnnn Ynnn Znnn Ennn Fnnn Snnn 使用时,不需要所有的参数全部存在,但至少要有一个参数。其中,

  • Xnnn表示X轴的移动位置;
  • Ynnn表示Y轴的移动位置;
  • Znnn表示Z轴的移动位置;
  • Ennn表示E轴(挤出头步进电机)的移动位置;
  • Fnnn表示速度,单位是毫米/每分钟;
  • Snnn表示是否检查限位开关,S0不检查,S1检查,缺省值是S0;

举例来说,

G1 F1500
G1 X50 Y25.3 E22.4

这样两行G-code,表示了首先将速度设置为1500mm/min,也就是25mm/s,然后将挤出头移动至x=50mm, y=25.3mm的位置上,z轴高度不变,并且将挤出头步进电机移动至22.4mm的位置上。这里,速度、xyz位置都比较好理解,但挤出头步进电机的位置怎么理解呢?移动至22.4mm处,代表着挤出了多少耗材呢?实际上,这里挤出头的具体动作,要根据之前挤出头步进电机所在的状态(也就是位置)而定。比如在这两条语句之前,挤出头步进电机已经处于20mm的位置处,那么这里挤出头步进电机只要再前进2.4mm就可以了。

仔细想想,其实挤出头步进电机的工作方式,与xyz轴完全一样。xyz轴之所以比较好理解,是因为我们清楚的知道原点(0, 0, 0)的位置在哪里。而对于e轴来说原点的位置也会在打印开始处被初始化到0的位置。知道了原点的位置,就可以正确理解挤出头步进电机的工作方式了。实际上,挤出头步进电机仍然是以原点为基础,只不过是在整个打印过程中持续增加的。(思考:切片器的挤出头回抽动作,对应了什么样的G-code代码?)

再举一例,

G1 F1500
G1 X50 Y25.3 E22.4 F3000

这个例子与上面的例子非常类似,唯一的区别,就是F参数了。而这两条语句的意义,除了对XYZE的移动之外,还会将打印速度,从语句执行开始时的1500mm/min,提高到语句执行结束时的3000mm/min。这里有两点需要注意。

第一点,F参数与XYZE参数一样,在语句执行的过程中线性插值;

第二点,在预先知道第一点的前提下,F参数使得计算机对3D打印机的控制更加深入和精准了。计算得当的情况下,切片器可以精确控制3D打印机的加速和减速过程,使得整个3D打印过程更加顺滑。

G02 – 顺时针圆形插值

G02 命令指示机器以圆形模式顺时针移动。它与 G01 命令的概念相同,在执行适当的加工过程时使用。除了终点参数外,这里我们还需要定义旋转中心,或者圆弧起点与圆弧中心点的距离。起点实际上是上一个命令或当前点的终点。

为了更好地理解,我们将在上一示例中的 G01 命令之后添加 G02 命令。

G02 - 顺时针循环插值 - 最重要的 G 代码命令之一

因此,在示例中,首先我们有G01命令,它将机器移动到X5,Y12点。现在,这将是G02命令的起点。使用 G02 命令的 X 和 Y 参数,我们设置终点。现在,为了使用圆周运动或使用圆弧到达此终点,我们需要定义其中心点。我们使用 I 和 J 参数来执行此操作。I 和 J 的值相对于上一个命令的起点或终点。因此,要使中心点到达 X5 和 Y7,我们需要沿 X 轴的偏移量为 0,沿 Y 轴的偏移量为 -5

当然,我们可以在其他任何地方设置中心点,因此我们将得到一个不同的弧,该弧线以相同的终点结束。下面是一个示例:

G02 G 代码命令 - 顺时针循环插值 - 示例 02

因此,在这里,我们仍然具有与上一个示例相同的终点(X10,Y7),但中心点现在位于不同的位置(X0,Y2)。与上一个相比,我们有了这个更宽的弧线。

另请参阅: 如何使用Arduino设置GRBL和控制CNC机床

G00、 G01、 G02 示例 – 手动 G 代码编程

让我们看一个简单的CNC铣削示例,使用这三个主要的G代码命令G00,G01和G02。

G 代码 G00 G01 和 G02 命令示例

要获取上图所示形状的刀具路径,我们需要遵循 G 代码命令:

G00 X5 Y5                ; point B
G01 X0 Y20 F200          ; point C
G01 X20 Y0               ; point D
G02 X10 Y-10 I0 J-10     ; point E
G02 X-4 Y-8 I-10 J0      ; point F
G01 X-26 Y-2             ; point BCode language: Arduino (arduino)

使用第一个 G00 命令,我们快速将机器从其家或初始位置带到点 B(5,5)。从这里开始,我们使用 G01 命令以 200 的进给速率“切割”。我们可以在这里注意到,为了从点B(5,5)到点C(5,25),我们使用相对于起始B点的X和Y的值。因此,在Y方向上+20个单位将使我们到达C点(5,25)。实际上,这取决于我们是否选择了机器将坐标解释为绝对坐标或相对坐标。我们将在后面的部分中对此进行解释。

一旦我们到达点C(5,25),我们就有另一个G01命令到达点D(25,25)。然后,我们使用 G02 命令(圆周运动)到达点 E(35,15),中心点 (25,15)。我们实际上为下一个G02命令有相同的中心点(25,15),以到达点F(31,7)。但是,我们应该注意 I 和 J 参数与前面的命令不同,因为我们将中心从最后一个端点或点 E 偏移。我们用另一个 G01 命令完成刀具路径,该命令将我们从 F(31,7) 点返回到点 B(5,5)。

所以,这就是我们如何手动编程G代码来制作这个形状。但是,我们需要注意,这不是一个完整的G代码,因为我们缺少一些更基本的命令。我们将在后面的示例中制作完整的 G 代码,因为我们首先需要解释这些 G 代码命令。

G03 – 逆时针圆形插值

就像 G02 一样,G03 G 代码命令将机器定义为以圆形模式移动。这里唯一的区别是运动是逆时针方向的。所有其他功能和规则都与 G02 命令相同。

G03 - 逆时针圆形插值 顺时针

因此,使用这三个主要的 G 代码命令 G01G02G03,我们可以为我们想要的任何形状生成刀具路径。您现在可能想知道这怎么可能,但这对于计算机和CAM软件来说实际上是一项简单的任务。是的,我们有时可以手动制作G代码程序,但大多数时候我们使用适当的软件来做到这一点,这些软件更容易,更安全。

尽管如此,现在解释一些更重要和常用的命令,最后做一个真正的G代码示例。

G20/ G21 – 单位选择

G20 和 G21 命令定义 G 代码单位,即英寸或毫米。

  • G20 = 英寸
  • G21 = 毫米

我们需要注意的是,必须在程序开始时设置单位。如果我们不指定单位,机器将考虑由上一个程序设置的默认单位。

G17/ G18/ G18 – G 代码平面选择

使用这些G代码命令,我们选择机器的工作平面。

  • G17 – XY 平面

  • G18 – XZ 平面

  • G19 – YZ 平面

G 代码平面选择命令 - G17 XY G18 XZ G19 YZ

G17是大多数CNC机床的默认设置,但其他两个也可用于实现特定的运动。

G28 – 返回家园

G28 命令指示机床将刀具移动到其参考点或原点位置。为了避免冲突,我们可以包含一个具有X,Y和Z参数的中间点。该工具将在到达参考点之前通过该点。 G28 X## Y## Z##

G28 - 返回家园可能相撞

可以使用命令 G28.1 X## Y## Z## 定义起始位置。

G90/ G91 – 定位 G 代码命令

使用G90和G91命令,我们告诉机器如何解释坐标。G90 表示绝对模式G91 表示相对模式

在绝对模式下,刀具的定位始终从绝对点或零点开始。因此,命令 G01 X10 Y5 会将工具带到该确切点 (10,5),无论之前的位置如何。

另一方面,在相对模式下,工具的定位相对于最后一个点。因此,如果机器当前位于点 (10,10),则命令 G01 X10 Y5 会将工具带到点 (20,15)。此模式也称为“增量模式”。

Arduino数控泡沫切割机

另见 Arduino数控泡沫切割机

更多命令和规则

因此,我们上面解释的G代码命令是最常见的命令,但还有更多。有诸如刀具补偿,缩放,工作坐标系,停留等命令。

除了G代码之外,还有M代码命令,用于生成真正成熟的G代码程序。以下是一些常见的 M 代码命令:

  • M00 – 程序停止

  • M02 – 程序结束

  • M03 – 主轴开启 – 顺时针

  • M04 – 主轴开启 – 逆时针方向

  • M05 – 主轴停止

  • M06 – 换刀

  • M08 – 启用Flood Colant

  • M09 – 禁用Flood Colant

  • M30 – 程序结束

对于3D打印机:

  • M104 – 开始挤出机加热
  • M109 – 等到挤出机达到T0
  • M140 – 启动床加热
  • M190 – 等到床到达T0
  • M106 – 设置风扇速度

其中一些命令需要适当的参数。例如,当使用 M03 打开主轴时,我们可以使用 S 参数设置主轴转速。因此,M30 S1000 生产线将以 1000 RPM 的速度打开主轴。

我们还可以注意到,许多代码是模态的,这意味着它们在被取消或被另一个代码替换之前一直有效。例如,假设我们有一个线性切削运动**的代码 G01 X5 Y7 F200**。如果下一个运动再次是线性切割,我们可以只键入X和Y坐标,而不在前面写G01。

G01 X5 Y7 F200
X10 Y15
X12 Y20
G02 X5 Y5 I0 J-5
X3 Y6 I-2 J0Code language: Arduino (arduino)

这同样适用于进给率参数 F。我们不必在每行中都包含它,除非我们想要更改其值。

在某些G代码文件中,您还可以在命令前面看到“N##”。N字很容易对代码行或代码块进行编号。这对于在大型程序中发生错误时识别特定行很有帮助。

简单的 G 代码程序示例

然而,在阅读了所有这些之后,现在我们能够手动制作一个真实的,实际的代码。下面是一个示例:

简单的数控铣削程序示例 - G 代码基础知识

%
G21 G17 G90 F100
M03 S1000
G00 X5 Y5                 ; point B
G01 X5 Y5 Z-1             ; point B
G01 X5 Y15 Z-1            ; point C
G02 X9 Y19 Z-1 I4 J0      ; point D
G01 X23 Y19 Z-1           ; point E
G01 X32 Y5 Z-1            ; point F
G01 X21 Y5 Z-1            ; point G
G01 X21 Y8 Z-1            ; point H
G03 X19 Y10 Z-1 I-2 J0    ; point I
G01 X13 Y10 Z-1           ; point J
G03 X11 Y8 Z-1 I0 J-2     ; point K
G01 X11 Y5 Z-1            ; point L
G01 X5 Y5 Z-1             ; point B
G01 X5 Y5 Z0
G28  X0 Y0
M05
M30
%Code language: Arduino (arduino)

G代码程序的描述:

  1. 代码初始化。此字符 (%)始终出现在程序的开头和结尾。
  2. 安全线:以公制系统(所有尺寸以毫米为单位),XY平面,绝对定位和100英寸/分钟的进给率设置编程。
  3. 主轴顺时针方向,转速为 1000 RPM。
  4. 快速定位到B(5,5)。
  5. 控制相同位置的运动,但将刀具降低到 -1。
  6. 线性切削运动至位置 C(5,15)。
  7. 顺时针圆周运动到点 D(9,19),中心点在 (9,15)。
  8. 线性切割至E点(23,19)。
  9. 线性切割至F(32,5)点。
  10. 与G(21,5)点相同的直线切割。
  11. 再直接切割一次到 H(21,8) 点。
  12. 逆时针圆形插值到位置 I(19,10),中心点位于 (19,8)。
  13. 线性切割至J(13,10)点。
  14. 逆时针圆形切割到位置 K(11,8),中心点位于 (13,8)。
  15. 线性切割至L位置(11,5)。
  16. 最终线性切削运动到位置 B(5,5)。
  17. 提升工具。
  18. 转到主页位置。
  19. 主轴关闭。
  20. 主程序结束。

以下是通过通用G代码发送器软件将此代码发送到我们的CNC机床的样子:

UGS 中手动编写的 G 代码示例

因此,使用上面解释的这些主要G代码命令,我们设法编写了自己成熟的G代码。当然,这个例子非常简单,对于更复杂的形状,我们肯定需要使用CAM软件。下面是马形状的复杂 G 代码的示例:

复杂的 G 代码示例 - 马的形状

相比之下,此代码大约有 700 行,但全部都是自动生成的。G代码是使用Inkscape作为我的DIY Arduino CNC泡沫切割机的一个例子。以下是形状的出现方式:

马形由Arduino基数控泡沫切割机制成

您可以查看我的特定教程以获取有关此计算机的更多详细信息。

结论

因此,我们介绍了G代码的基础知识,解释了最重要和最常见的G代码命令,并手动制作了我们自己的实际G代码。毕竟,我认为理解G代码并不难。当然,在CNC加工或3D打印中使用了许多其他命令和功能。

今天的文章G 代码解释分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/21748.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注