5类3D打印机G代码命令快速教程
    发布时间: 2024-03-27 22:07    

24-3-27

转载自3D打印科技,原文链接如下:

5类——3D打印机G代码命令快速教程 (qq.com)


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

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

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

在本文中,小D将介绍G代码的基础知识,包括如何阅读、理解和编写几行命令,为即使是绝对的编码初学者提供坚实的背景知识。





图片




G代码是什么?

对于那些不熟悉编程的人来说,可以把g代码想象成连续的指令行,每个指令行告诉3D打印机执行一个特定的任务。这些指令行被称为命令,打印机一个接一个地执行它们,直到到达代码的末尾。

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

一般命令行负责3D打印机中的运动类型。这样的命令用字母“G”来标识,就像在G命令中一样。除了控制打印头的三轴运动外,它们还负责挤出长丝。

另一方面,杂项命令指示机器执行非几何任务。在3D打印中,这些任务包括喷嘴和床的加热命令,风扇控制,以及许多其他任务。其他命令用字母“M”标识。


图片

语法

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

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

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

关于G代码注释的说明

当我们浏览各种命令时,您将看到字母和数字后面的分号,这些分号解释了代码的功能。下面是一个带有代码注释的行示例:

  • G1 x25y5 是一个代码注释

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

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



0
1
 G0 & G1

G0 & G1:线性运动

G0和G1命令都执行线性移动。按照惯例,G0用于初始和移动等非挤压运动,而G1包含所有挤压线性运动。不过,这两个命令的功能是相同的。G0或G1的参数包括所有X、Y和z轴的最终位置,移动过程中要执行的挤压量,以及由设定单位中的进给速率指定的速度。

例:

G1 X90 Y50 Z0.5 F3000 E1告诉打印机以3,000 mm/min的进料速度(F)向最终坐标X = 90 mm, Y = 50 mm, Z = 0.5 mm直线移动(G1),同时在挤出机中挤出(E) 1mm的材料。大多数线性移动都是在单个图层中执行的,这意味着Z坐标通常从命令行中省略。



图片



0
2
 G90 & G91

G90 & G91:绝对和相对定位

G90和G91命令告诉机器如何解释用于运动的坐标。G90建立的是“绝对定位”,这通常是默认的,而G91建立的是“相对定位”。这两个命令都不需要任何参数,设置一个会自动取消另一个。定位的工作方式非常简单,所以让我们直接进入。

例:

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

G90;设置绝对定位

G0 x30;移动到X = 30坐标

例如,这行代码是:

  •      G90 g0 x30

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

G91;设置相对定位

G0 x20;沿x轴移动+ 20mm

在这个例子中,这行代码是:

  •      G91 g0 x20

G91首先告诉机器将坐标解释为相对于当前位置(X = 10)。知道了这一点,机器只需要在X轴正方向上移动20mm,从而达到我们想要的X = 30。



图片



0
3
 G28 & G29

G28 & G29:自动家居和床调平

我们将设定所有运动轴的物理极限的过程称为“归巢”。G28命令将通过移动打印头来执行此任务,直到它触发终止以确认限制。归巢不仅对机器自身定位很重要,而且对防止打印头移动到边界之外也很重要。

G28命令通常在每个打印进程之前执行。另一个命令G29,启动自动床层调平程序。在打印之前,有许多不同的调平床的方法,因为这通常是由固件而不是由最终用户设置的。

由于这个原因,我们不会详细讨论方法和命令参数。只需知道G29通常在自动回家(G28)之后发送,并且应该执行由固件决定的自动调平床。

例:

G28 x y;只返回X和Y轴

G28;返回所有轴

特定轴可以通过包含X、Y或Z作为参数来单独定位。否则,G28将独自拥有这三个国家。

G29;执行自动床层找平顺序

如果要运行自动调平序列,请记得在执行归向过程后发送G29。



图片



0
4
 M104, M109, M140, & M190

M104, M109, M140, & M190:设定温度

这些是基本的杂项命令,同样,不涉及任何动作。

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

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

例:

M104 s210;将热端目标温度设置为210度

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

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

M109 s210;将热端目标温度设置为210度,在达到目标温度之前不做任何事情

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

M140 s110;将床的目标温度设置为110度

M190 s110;将床上的目标温度设定为110华氏度,在达到目标温度之前不要做任何事情



图片



0
5
 M106 & M107

M106 & M107:风扇控制

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

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

speed取值范围为0 ~ 255。255表示100%的功率,在此范围内的任何数字都将指定相应的百分比。

例:

M106;打开风扇,最大转速为100%

M106 s128;打开风扇,将其设置为50%的功率

多个调速风扇可以通过索引(P)参数定义,因为每个风扇由固件分配一个索引。

最后,M107命令将指定风扇下电。如果没有提供指标参数,通常关闭部分冷却风扇。



图片



G-code

PROGRAM STRUCTURE

程序结构


现在我们可以看一段用于3D打印的代码了。下面我们将看到,G代码程序可以分为三个不同的部分。

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



0
1
 Initialization

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

  •      G90 m82 m140 s80 m104 s200 g28 g29

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

第三和第四线开始加热床和喷嘴到目标温度。请注意,它不会等待目标温度,这意味着打印机将自动回家,并在加热时调平床。

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



图片



0
2
 Printing

这里就是奇迹发生的地方。如果你看一下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



图片



0
3
 Reset the Printer

最后,当打印完成后,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



图片



0
4
 Terminal Inputs & Outputs

到目前为止,我们只讨论过计算机向打印机发送G代码命令(通常通过SD卡传输)。然而,这并不是唯一的交流方式。一些控制软件,如Pronterface和OctoPrint,允许与3D打印机直接通信,在这种情况下,你可以手动输入命令。

由于显而易见的原因,通过单独发送代码行来打印任何东西是不实际的。但有时这种通信方式也需要用于其他目的,比如检索有价值的信息进行校准,或者甚至在3D打印机没有显示屏的情况下。

例如,M105“报告温度”命令将检索当前喷嘴和床的温度(然后可能由类似OctoPrint的东西显示)。这种通信对于查看和更改硬编码在固件级别的EEPROM设置也非常有用。电机的步长/毫米、最大进给速率或PID等参数可以通过M503(“报告设置”)可视化,手动更改,然后通过M500(“保存设置”)保存。



图片



0
5
 Writing G-code

到目前为止,您应该能够更好地阅读和理解G代码。不过,您也可以从编写它中获益。这个G代码在线可视化是测试您的技能的一个很好的工具,因为您可以编写G代码命令并相应地模拟它们。

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



图片



0
6
 Compatibility

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

在结束本文之前,有必要讨论一下G代码的兼容性。有许多类型的3D打印固件,每一种都可能有不同的“口味”的G代码。这可能导致主要的兼容性问题,因为适用于一台机器的命令可能不适用于另一台机器。

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



图片






END