【最重要的 G 代码命令列表】

news2024/11/18 3:39:47

【最重要的 G 代码命令列表】

  • 1. 什么是G代码?
  • 2. 如何阅读G代码命令?
  • 3. 最重要/最常见的 G 代码命令
    • 3.1 G00 – 快速定位
    • 3.2 G01 – 线性插值
    • 3.3 G02 – 顺时针圆形插值
    • 3.4 G00、G01、G02 示例 – 手动 G 代码编程
    • 3.4 G03 – 逆时针圆形插补
    • 3.5 G20/ G21 – 单位选择
    • 3.6 G17/ G18/ G18 – G 代码平面选择
    • 3.7 G28 – 返回家园
    • 3.8 G90/ G91 – 定位 G 代码命令
  • 4. 更多命令和规则
  • 5. 简单的G代码程序示例
  • 6. 结论

在这里插入图片描述

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

1. 什么是G代码?

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

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

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

2. 如何阅读G代码命令?

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

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

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

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

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

该行具有以下结构:

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

  • 首先是G代码命令,在这种情况下是G01,意思是“直线移动到特定位置”。
  • 我们用 X、Y 和 Z 值声明位置或坐标。
  • 最后,使用 F 值,我们设置进给速率或执行移动的速度。

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

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

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

3.1 G00 – 快速定位

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

G00 G 代码命令 - 线性快速定位

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

3.2 G01 – 线性插值

G01 G 代码命令指示机器以设定的进给速率或速度直线移动。我们使用 X、Y 和 Z 值指定结束位置,并使用 F 值指定速度。机器控制器计算(插值)要通过的中间点以获得该直线。尽管这些G代码命令简单易懂,但在它们背后,机器控制器每秒执行数千次计算以进行这些运动。

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

与仅用于定位的 G00 命令不同,G01 命令在机器执行其主要工作时使用。在车床或铣床的情况下,直线切割材料,在3D打印机的情况下,直线挤出材料。

3.3 G02 – 顺时针圆形插值

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

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

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机床

3.4 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 B

Code language: Arduino (arduino)
使用第一个 G00 命令,我们可以快速将机器从其初始位置或初始位置带到 B(5,5) 点。从这里开始,我们使用 G200 命令以 01 的进给率“切割”。我们可以在这里注意到,为了从点 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)。对于下一个 G25 命令,我们实际上有相同的中心点 (15,02),以到达点 F(31,7)。但是,我们应该注意,I 和 J 参数与前面的命令不同,因为我们从最后一个端点或点 E 偏移中心。我们使用另一个 G01 命令完成刀具路径,该命令将我们从点 F(31,7) 返回到点 B(5,5)。

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

3.4 G03 – 逆时针圆形插补

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

G03 - 逆时针圆插值 顺时针

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

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

3.5 G20/ G21 – 单位选择

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

  • G20 = 英寸
  • G21 = 米

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

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

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

  • G17 – XY飞机
  • G18 – XZ 飞机
  • G19 – YZ 飞机

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

G17 是大多数 CNC 机床的默认型号,但另外两个也可用于实现特定运动。

3.7 G28 – 返回家园

G28 命令告诉机床将刀具移动到其参考点或起始位置。为了避免碰撞,我们可以包含一个带有 X、Y 和 Z 参数的中间点。该工具将在转到参考点之前通过该点。 G28 X## Y## Z##

G28 - 返航可能碰撞

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

3.8 G90/ G91 – 定位 G 代码命令

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

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

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

阿杜诺数控泡沫切割机

另 见Arduino
CNC泡沫切割机

4. 更多命令和规则

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

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

  • M00 – 程序停止
  • M02 – 程序结束
  • M03 – 主轴开启 – 顺时针
  • M04 – 主轴开启 – 逆时针
  • M05 – 主轴挡块
  • M06 – 换刀
  • M08 – 防洪喷垛剂开启
  • M09 – 防洪灯关闭
  • 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 J0

Code language: Arduino (arduino)
这同样适用于进给速率参数 F。我们不必在每一行都包含它,除非我们想改变它的值。

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

5. 简单的G代码程序示例

尽管如此,在阅读了所有这些之后,现在我们能够手动制作真实的实际代码。下面是一个示例:
在这里插入图片描述

简单的CNC铣削程序示例 - 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的CNC泡沫切割机制成的马形

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

6. 结论

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

如果您发现本文有用,请与其他CNC和3D打印爱好者分享。也请随时在下面的评论部分提出任何问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/398488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity游戏破解】外挂原理分析

文章目录认识unity打包目录结构游戏逆向流程Unity游戏攻击面可被攻击原因mono的打包建议方案锁血飞天无限金币攻击力翻倍以上统称内存挂透视自瞄压枪瞬移内购破解Unity游戏防御开发时注意数据安全接入第三方反作弊系统外挂检测思路狠人自爆实战查看目录结构用il2cpp dumper例子…

yolov5双目检测车辆识别(2023年+单目+双目+python源码+毕业设计)

行人识别yolov5和v7对比yolo车距源码:yolov5双目检测车辆识别(2023年单目双目python源码毕业设计)上盒岛APP,开线上盲盒商店http://www.hedaoapp.com/yunPC/goodsDetails?pid4132 为了提高传统遗传算法(genetic algorithm, GA)IGA优化BP网络迭代时间过长以及精度偏…

ArrayList与LinkedList的区别 以及 链表理解

list接口中ArrayList、LinkedList都不是线程安全,Vector是线程安全 1、数据结构不同 ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)双向链表的数据结构。 2、空间灵活性 ArrayList最好指定初始容量 LinkedList是比ArrayList灵活的&a…

Noah-MP陆面过程模型建模

【方式】:直播永久回放长期答疑群辅助全套资料【目标】:了解陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用;熟悉模型的发展历程,常见模型及各自特点;理解Noah-MP模型的原理,掌握Noah-MP…

用Python优雅地求解阿基米德分牛问题

文章目录题目大意sympy求解结果题目大意 问 太阳神有一牛群,由白、黑、花、棕四种颜色的公、母牛组成,其间关系如下,求每种牛的个数。 公牛中,白牛多于棕牛,二者之差为黑牛的1213\frac{1}{2}\frac{1}{3}21​31​&…

【Redis】搭建分片集群

目录 集群结构 准备实例和配置 启动 创建集群 测试 集群结构 分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个 master包含一个slave节点,结构如下: 这里我们会在同一台虚…

超详细CentOS7 NAT模式(无图形化界面即最小安装)网络配置

在此附上CentOS7(无图形化界面最小安装)安装教程 超详细VMware CentOS7(无图形化界面最小安装)安装教程 打开VMware—>点击编辑---->选择虚拟网络编辑器 打开虚拟网络编辑器后如下图所示: 从下图中我们看到标…

由Deep InfoMax开始对比学习

作者:KON 来源:投稿 编辑:学姐 作者介绍:Kon 擅长是自然语言处理、推荐系统,爱好是cv;著有cv相关专利一篇,西安交通大学软件专业本硕。 1.前言 本次给大家带来的是发表在「ICLR2019」上的一篇…

10Wqps评论中台,如何架构?B站是这么做的!!!

说在前面 在尼恩的(50)读者社群中,经常遇到一个 非常、非常高频的一个面试题,但是很不好回答,类似如下: 千万级数据,如何做系统架构?亿级数据,如何做系统架构&#xff1…

阿里云服务器使用教程:使用xshell、xFtp工具连接阿里云服务器(Centos7)并修改Centos7的yum源为阿里镜像源

目录 1、下载并安装xshell、xFtp 2、远程连接阿里云服务器 3、 修改Centos7的yum源为阿里镜像源 1、下载并安装xshell、xFtp XShell可以在Windows界面下来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。它支持 RLOGIN、SFTP、SERIAL、TELNET、…

STM32中断分组配置NVIC_PriorityGroup,移植操作系统需需注意NVIC_PriorityGroup_4

一、先说明中断分组的由来中断优先级分组表:优先级分组抢占优先级响应优先级bit[7:4] 分配情况备注NVIC_PriorityGroup_0取值:0取值:0~150:40bit抢占优先级、4bit响应优先级NVIC_PriorityGroup_1取值:0~1取值:0~71:31b…

关于热力图展示大量数据点耗时导致浏览器崩溃问题及解决方案

目录 问题描述 问题分析 解决方案 问题描述: Web前端在地图上加载空间数据库里存储的地块中心点时因为数据点太多从而导致页面崩溃。Mybatis查询大量数据时,耗时时间更长是主要原因。8万多条数据,数据库查询最慢0.6s, Mybatis查询结果需要…

【可信平台】开证问题汇总--1.无采购入库记录,2.箱码无产出记录

这里面的问题主要有两类, 批号无采购入库记录箱码无产出记录批号无采购入库记录 第一个问题,以批号 W200263242022100600018 为例。 MES里入库明细里能查到可信平台集成报错: 入库数量>采购数量 再看下入库明细里的情况: 可信平台集成提示物料库存不存在。(没有入库记…

【LeetCode】剑指 Offer(19)

目录 题目:剑指 Offer 36. 二叉搜索树与双向链表 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 36. …

JUC并发编程共享模型之管程(三)(上)

三 共享模型之管程&#xff08;上&#xff09; 4.1 共享问题 问题发现 Slf4j public class ShareTest01 {static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() -> {for(int i 0; i < 5000; i){count…

jvm理解

1.堆栈 JVM运行字节码时&#xff0c;所有的操作基本都是围绕两种数据结构&#xff0c;一种是堆栈&#xff08;本质是栈结构&#xff09;&#xff0c;还有一种是队列&#xff0c;如果JVM执行某条指令时&#xff0c;该指令需要对数据进行操作&#xff0c;那么被操作的数据在指令…

macos ncnn 安装踩坑记录···

安装真麻烦踩了无数坑&#xff0c;官方给的安装教程&#xff1a;macos安装ncnn, 安装过程老是报错&#xff0c;记录一下卡的比较久的&#xff0c;网上也不好找资料的错. 我的电脑&#xff1a; 1. 使用homebrew 的时候失败fatal: not in a git directory Error: Command failed…

用Python帮老叔选出好基金,大赚一笔,老叔专门提着茅台登门道谢

我有个老叔很喜欢买基金&#xff0c;因为不想被割韭菜&#xff0c;所以啥群都没进&#xff0c;全部自己精挑细选。 看着他的一个本子密密麻麻地写了一大堆东西&#xff0c;全是基金的数据分析&#xff0c;一大把年纪了挺不容易的&#xff0c;于是就决定帮他一把。 在跟他详谈…

合作伙伴确定过程

下销售单的时候&#xff0c;会由Sold—to Party&#xff08;售达方&#xff09;来下单。定单会有不同的Ship—to Party&#xff08;送达方&#xff09;。发票会走到被称为Bill—to Party&#xff08;收票方&#xff09;的一方&#xff0c;还有一方Payer&#xff08;付款方&…

GDAL python教程基础篇(1)——用OGR写入矢量数据

上一篇博客介绍了如何使用OGR读取矢量数据&#xff0c;那么怎么用OGR写入呢&#xff0c;下面就让我们一起学习怎么写入数据吧。 1.创建新文件 在写入数据之前我们首先需要确定写入对象&#xff0c;也就是先创建一个可供写入数据的对象。 创建对象使用driver.CreateDataSource…