• 3D 打印机 G 代码命令:完整列表和教程


    3D 打印机 G 代码命令:完整列表和教程

    查看原文
    了解 G 代码命令将开启 3D 打印的下一个层次。继续阅读以快速了解此代码的基础知识!

    内容

    简单地说,G-code是一种计算机数控(CNC)的编程语言。换句话说,它是控制机器的计算机所使用的语言,它传达运动和其他动作所需的所有命令。

    虽然 G 代码是不同桌面和工业机器的标准语言,但我们可能通过 3D 打印机最熟悉它。到目前为止,您可能还没有处理过它,这实际上是正常的,因为3D 切片器“自动”生成代码。

    然而,如果您想更深入地了解 3D 打印,则必须学习 G 代码的基础知识。这些知识将使您能够更好地排除故障和控制打印过程,同时还可以定制RepRapMarlin3D 打印机固件

    在本文中,我们将介绍 G 代码的基础知识,包括如何阅读、理解和编写几行命令,为即使是绝对的编码初学者提供扎实的背景知识。事不宜迟,那么,让我们从头开始吧!

    G-Code的特色图片对于我们所有的文章G代码

    它是什么?

    在这里插入图片描述

    G 代码命令用于指示机器执行特定操作(来源:All3DP)

    对于那些不熟悉编程的人来说,将 G 代码视为连续的指令行,每行指令都告诉 3D 打印机执行特定任务。这些行被称为命令,打印机将它们一一执行,直到到达代码的末尾。

    虽然术语“G 代码”用于指代整个编程语言,但它也是 3D 打印中使用的两种命令之一:“通用”和“杂项”命令。

    通用命令行负责 3D 打印机中的运动类型。此类命令由字母“G”标识,如在 G 命令中。除了控制打印头执行的三个加轴运动外,它们还负责灯丝挤出。

    另一方面,杂项命令指示机器执行非几何任务。在 3D 打印中,这些任务包括喷嘴和床的加热命令以及风扇控制等,我们将看到。杂项命令用字母“M”标识。
    在这里插入图片描述

    潜得更深G 代码和 M 代码:差异

    语法

    在这里插入图片描述

    命令行由标识和参数组成(来源:Lucas Carolo via All3DP)

    每个 G 代码命令行都遵循一定的语法。每一行只对应一个命令,这可能导致代码非常冗长。

    任何给定行的第一个参数是命令代码本身。正如我们所见,它可以是“G”或“M”代码类型,后跟一个标识命令的数字。例如,“G0”对应于直线移动指令。

    接下来是更准确地定义命令的参数。对于 G0 线性移动,这些参数包括最终位置和移动速度,也由大写字母标识。我们很快就会看到,每个命令都有自己的一组参数。

    关于 G 代码注释的说明

    在我们开始之前,当我们查看各种命令时,您会在字母和数字后面看到分号,用于解释代码的作用。这是具有代码注释的行的示例:

    G1 X25 Y5 ; I am a code comment!
    
    • 1

    程序员通常需要用简单的英语进行解释,以便其他程序员能够理解某些代码行或部分代码。也可能会发生您忘记了为什么以某种方式编码的情况,从而导致很难再次弄清楚。

    解决这个问题的方法是代码注释。注释包括分号后的任何内容(在同一行),并且在机器执行 G 代码时完全被机器忽略。这样,它们纯粹是为了程序员的眼睛。

    3D 打印的重要命令

    由于实际上有数百个 G 代码命令,我们将在以下部分中介绍最基本和最重要的命令。一旦掌握了它的窍门,您就可以自己探索参考表中的其他命令。

    G0 & G1:直线运动

    在这里插入图片描述

    G0 和 G1 命令负责直线运动和挤压(来源:Lucas Carolo via All3DP)

    G0 和 G1 命令都执行直线运动。按照惯例,G0 用于非挤压运动,如初始移动和移动移动,而 G1 包含所有挤压线性运动。

    不过,这两个命令的功能相同。G0 或 G1 的参数包括所有 X 轴、Y 轴和 Z 轴的最终位置、移动过程中要执行的挤压量以及速度,由设置单位中的进给率指定。

    例子

    G1 X90 Y50 Z0.5 F3000 E1告诉打印机沿直线 (G1) 向最终坐标 X = 90 mm、Y = 50 mm、Z = 0.5 mm 移动,进给速度 (F) 为 3,000 mm/min,同时挤出 (E) 1 mm挤出机中的材料。

    大多数线性移动在单层内执行,这意味着 Z 坐标通常从命令行中省略。

    G90 & G91:绝对和相对定位

    在这里插入图片描述

    相对定位由前面的坐标定义,而绝对不是(来源:Lucas Carolo via All3DP)

    G90 和 G91 命令告诉机器如何解释用于运动的坐标。G90 建立“绝对定位”,通常为默认,而 G91 为“相对定位”。

    这两个命令都不需要任何参数,并且设置一个会自动取消另一个。定位的工作方式非常简单,所以让我们直接进入。

    例子

    假设我们要将打印头移动到 X=30 一行。在绝对定位模式下,它看起来像这样:

    G90 ; sets absolute positioning` `G0 X30 ; moves to the X = 30 coordinate
    
    • 1

    这个简单的移动将告诉打印机移动打印头,使其定位在 X = 30。现在,对于相对定位移动,我们需要知道打印头当前的位置。假设它在 X = 10:

    G91 ; sets relative positioning` `G0 X20 ; moves +20 mm along the X-axis
    
    • 1

    G91 首先告诉机器将坐标解释为相对于当前位置 (X = 10)。知道了,机器只需要在 X 轴正方向移动 20 毫米,从而达到我们想要的 X = 30。
    在这里插入图片描述

    更深入的潜水G91 / G90 G 代码:绝对和增量定位

    G28 和 G29:汽车家庭和床调平

    在这里插入图片描述

    G28 和 G29 在初始化阶段很有用(来源:Lucas Carolo via All3DP)

    我们称“归位”为设置所有运动轴的物理限制的过程。G28 命令将通过移动打印头直到触发终止以确认限制来执行此任务。

    归位不仅对于机器自我定位很重要,而且对于防止打印头移动到边界之外也很重要。G28 命令通常在每个打印过程之前执行。

    另一个命令 G29 启动自动床调平序列。在打印前调平床有许多不同的方法,因为这通常由固件设置,而不是由最终用户设置。出于这个原因,我们不会详细介绍方法和命令参数。只知道G29通常在自动归位(G28)之后发送,并且应该执行由固件确定的自动床调平。

    例子

    G28 X Y ; home the X and Y axes only
    G28 ; home all axes
    
    • 1
    • 2

    通过包含 X、Y 或 Z 作为参数,可以单独归位特定轴。否则,仅 G28 就将三个人全部归巢。

    G29 ; perform automatic bed leveling sequence
    
    • 1

    如果要运行自动床调平序列,请记住在执行归位过程后发送 G29。
    在这里插入图片描述

    G28 G 代码:关于归位的所有信息

    返回目录

    M104、M109、M140 和 M190:设定温度

    在这里插入图片描述

    这些 M 代码命令负责控制热端和床温(来源:Lucas Carolo via All3DP)

    这些是必不可少的杂项命令,同样不涉及任何动作。

    首先,M104 命令设置热端达到的目标温度并保持该温度,直到另有指示。

    一些参数包括实际温度值 (S) 和要加热的打印头 (T)(对于多个挤出设置)。

    例子

    M104 S210 ; set target temperature for hot end to 210 degrees
    
    • 1

    此命令行指示机器将其热端加热到 210 °C,并假设在此挤出设置中只有一个热端。设置目标温度后,打印机将在加热热端的同时继续执行下一个命令行。

    或者,如果我们想等到达到该目标后再继续下一行,我们可以使用 M109 命令。

    M109 S210 ; set target temperature for hot end to 210 degrees and do nothing until reached 
    
    • 1

    设置床温与热端非常相似,但使用 M140 和 M190 命令:

    M140 S110 ; set target temperature for bed to 110 degrees`
    `M190 S110 ; set target temperature for bed to 110 degrees and do nothing until reached
    
    • 1
    • 2

    M106 & M107:风扇控制

    在这里插入图片描述

    M106 和 M107 命令都控制 3D 打印机中的所有风扇(来源:Lucas Carolo via All3DP)

    3D 打印机的另一项基本任务是杂项 M106 和 M107 命令提供风扇控制。

    M106 打开风扇并设置其速度。这对于零件冷却风扇特别有用,因为在第一层桥接期间的打印过程中需要不同的速度。

    速度参数必须是介于 0 和 255 之间的值。255 值提供 100% 的功率,并且此范围内的任何数字都将相应地指定百分比。

    例子

    M106 ; turn on a fan at maximum (100%) speed`
    `M106 S128 ; turn on a fan and set it to 50% power
    
    • 1
    • 2

    多个速度控制的风扇可以由索引 § 参数定义,因为每个风扇都由固件分配一个索引。

    最后,M107 命令将关闭指定风扇的电源。如果没有提供指标参数,通常是零件冷却风扇被关闭。

    程序结构

    我们现在可以很好地查看用于 3D 打印的实际代码。G 代码程序可以分为三个不同的部分,我们将在下面看到。

    值得注意的是,如果您使用文本编辑器打开由 3D 切片器生成的 G 代码文件,它可能不会立即以 G 或 M 命令开始。例如,像CuraSimplify3D这样的切片器通过在注释中包含之前定义的一些打印过程参数来启动代码。这些线条不会影响打印,而是为层高等参数提供快速参考。

    阶段 1:初始化

    在这里插入图片描述

    “初始化阶段”包括准备打印机打印所需的所有命令(来源:Lucas Carolo via All3DP)

    任何程序的第一部分都包括开始打印模型之前所需的准备任务。以下是来自实际 3D 打印作业的前六行初始化 G 代码命令。

    G90
    M82
    M140 S80
    M104 S200
    G28
    G29
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    正如我们现在所知,第一行说运动应该使用绝对定位,而第二行告诉挤出机也用绝对术语解释挤出。

    第三条和第四条生产线开始将床和喷嘴加热到它们的目标温度。请注意,它不会等待目标温度,这意味着打印机将在加热时自动归位并平整床。

    一些初始化程序(例如PrusaSlicer使用的程序)包括一个喷嘴清洗过程,例如在进入打印过程之前打印一条直线。

    第 2 阶段:印刷

    在这里插入图片描述

    打印过程主要由一系列动作和挤压组成(来源:Lucas Carolo via All3DP)

    这就是魔法发生的地方。如果您查看切片的 G 代码文件,您会发现我们不可能弄清楚喷嘴实际在做什么。

    3D 打印是一个逐层的过程,因此您会发现此阶段在打印单层时包括 XY 平面内的许多运动。完成后,Z 方向上的一个微小移动将定义下一层的开始。

    以下是 G 代码命令在打印阶段的外观示例:

    G1 X103.505 Y153.291 E4.5648 ; movement and extrusion in XY plane
    G1 X103.291 Y153.505 E4.5804 ; movement and extrusion in XY plane
    G1 Z0.600 F3000 ; change layer
    G1 X104.025 Y154.025 F9000 ; movement in XY plane
    G1 X95.975 Y154.025 E0.4133 F1397 ; movement and extrusion in XY plane
    
    • 1
    • 2
    • 3
    • 4
    • 5

    阶段 3:重置打印机

    在这里插入图片描述

    G-code 的最终命令通常是重置位置和状态(来源:Lucas Carolo via All3DP)

    最后,打印完成后,最后几行 G 代码命令将打印机带入合理的默认状态。

    例如,喷嘴可能会转到预定义的位置,热端和床加热器被关闭,电机被禁用,以及其他动作。

    M107 ; turn fan off
    G1 Z10 ; move nozzle away from print
    M104 S0 ; turn hot end heating off
    M140 S0 ; turn bed heating off
    M84 ; turn motors off
    
    • 1
    • 2
    • 3
    • 4
    • 5

    终端输入和输出

    在这里插入图片描述

    OctoPrint 有一个终端窗口,用于直接发送和接收 G 代码(来源:Lucas Carolo via All3DP)

    到目前为止,我们只讨论了计算机向打印机发送 G 代码命令(通常通过 SD 卡传输)。然而,这并不是唯一的沟通方式。

    一些控制软件,如PronterfaceOctoPrint,允许与 3D 打印机直接通信,在这种情况下,您可以手动输入命令。

    出于显而易见的原因,通过单独发送代码行来打印任何内容是不切实际的。但有时这种通信方法需要用于其他目的,例如检索有价值的信息以进行校准,甚至当 3D 打印机缺少显示屏时。

    例如,M105“报告温度”命令将检索当前喷嘴和床层温度(然后可能由 OctoPrint 之类的东西显示)。

    这种通信对于查看和更改固件级别硬编码的 EEPROM 设置也非常有用。电机步数/mm、最大进给率或 PID 等参数可以通过 M503(“报告设置”)可视化,手动更改,然后通过 M500 保存(“保存设置”)。

    编写 G 代码

    在这里插入图片描述

    一些 G 代码可视化工具对于学习如何编写代码非常有用(来源:Lucas Carolo via All3DP)

    到目前为止,您应该能够更好地阅读和理解 G 代码。不过,您也可以从编写它中受益。

    这个G 代码在线可视化是测试您的技能的好工具,因为您可以编写 G 代码命令并相应地模拟它们。这真的很有趣!

    查看从切片机导出的 G 代码文件还应该为您提供一些关于 G 代码如何用于 3D 打印的见解。确保您身边有一个命令参考表并探索代码!

    兼容性

    在这里插入图片描述

    学习 G 代码是一项持续且有益的任务(来源:Repetier

    我们希望通过对 G 代码命令的理解,您成为一个知识渊博、功能更强大的 3D 打印用户。虽然 G 代码不是最复杂的计算机语言,但它仍然需要大量的练习和学习。

    在结束本文之前,有必要谈谈 G 代码兼容性。

    3D 打印固件有很多种,每种可能都有不同的 G 代码“风味”。这可能会导致严重的兼容性问题,因为适用于一台机器的命令可能不适用于另一台机器。

    切片器软件通过将代码传递给特定于机器的后处理驱动程序来处理这个问题。后处理器检测传入代码的风格并将代码转换为固件可以理解的内容。

  • 相关阅读:
    彩票-股票-外汇-加密货币-概率游戏交易思维训练1
    BEVCar:用于BEV地图和目标分割的相机-雷达融合
    vue2知识点:箭头函数和普通函数的this指向问题
    进阶版JavaScript学习【第二期】
    破除“数据孤岛”新策略:Data Fabric(数据编织)和逻辑数据平台
    (LdAiChat、Ai Loading、不墨AI助手、360AI搜索、TIG AI)分析好用的ChatGPT
    Vue组件化编程(模块与组件、模块化与组件化,非单文件组件,单文件组件)
    MySQL索引
    Debian安装redis
    2.1数据的表示和运算--进位制
  • 原文地址:https://blog.csdn.net/acktomas/article/details/125552309