编者按:G代码是一种计算机数控(CNC)编程语言,用于控制机器执行各种运动和动作所需的指令。它同样适用于3D打印机,我们往往需要借助切片软件进行代码的转换。然而,如果你想更深入地了解3D打印,就必须学习G代码的基础知识。这些知识将使你能够更好地排除故障并控制打印过程,同时还可以自定义Marlin、Klipper和RepRap等3D打印机固件。
在本文中,我们将介绍G代码的基础知识,包括如何查看、理解和编写命令,这将为3D打印初学者提供有力的帮助。话不多说,那么,让我们从头开始吧!
什么是G代码?
对于那些不熟悉一般编程的人来说,可以将G代码视为连续的指令行,每行指令都告诉3D打印机执行特定任务。这些行被称为命令,打印机将逐行执行它们,直到到达代码末尾。
G代码命令用于指示机器执行特定操作
术语“G代码”用于指代整个编程语言,在3D打印的使用中主要包括两种命令:“通用”命令和“辅助”命令。通用命令行负责3D打印机中的运动类型。此类命令由字母“G”标识,除了控制打印头在三个轴上的运动外,它们还负责耗材挤出。
另一方面,辅助命令指示机器执行非几何任务。在3D打印中,此类任务包括喷嘴和床的加热命令以及风扇控制等,用字母“M”标识。
语法
每个G代码命令行都遵循一定的语法,任何给定行的第一个参数是命令代码本身。它可以是"G"或"M"代码类型,后跟一个标识命令的数字。例如,"G0"对应于直线移动指令。
命令行由标识和参数组成
接下来是更准确地定义命令的参数。对于G0线性移动,这些参数包括最终位置及其移动速度,也由大写字母标识,其中每个命令都有自己的一组参数。
关于G代码的注释
在开始之前,当我们查看各种命令时,你会在字母和数字后面看到分号,它们解释了代码的作用。以下是包含代码注释的行的示例:
G1 X25 Y5 ; 这是一个代码注释!
程序员通常需要用简单的英语进行解释,以便其他程序员可以理解代码的某些行或部分。注释包括分号后面的任何内容(在同一行),并且在执行G代码时会被机器完全忽略。
重要命令
由于G代码命令实际上有数百个,因此我们将在以下部分中介绍最基本和最重要的命令。一旦掌握了这些关键内容,你就可以自行探索其他命令。
G0 & G1:直线运动
G0和G1指令均执行直线运动。G0是快速移动指令,一般是空行程。而G1则涵盖所有挤压线性运动。
G0和G1命令负责线性运动和挤出 不过,这两个命令的功能相同。G0或G1的参数包括所有X、Y和Z轴的最终位置、移动过程中要执行的挤压量,以及由进给速率(以设定单位表示)指定的速度。
例子:
G1 X90 Y50 Z0.5 F3000 E1
告诉打印机以3000毫米/分钟的进给速率(F)向最终坐标X = 90毫米、Y = 50毫米、Z = 0.5毫米沿直线(G1)移动,同时挤出(E)1毫米的材料。这里需要记住,大多数线性移动都是在单个层内执行的,这意味着命令行中通常省略Z坐标。
G90 和 G91:绝对和相对定位
G90和G91命令告诉机器如何解释用于运动的坐标。G90建立“绝对定位”,通常是默认设置,而G91则建立“相对定位”。
相对定位由先前的坐标定义,而绝对定位则不然 这两个命令都不需要任何参数,设置其中一个命令会自动取消另一个命令。
例子:假设我们要将打印头移动到一条线上的X = 30。在绝对定位模式下,代码如下:
G90 ; 设置绝对定位
G0 X30 ; 移动到 X = 30 的坐标
因此,例如,这一行代码将是:
G90 G0 X30
这个简单的移动将告诉打印机移动打印头,使其位于X = 30处。现在,对于相对定位移动,我们需要知道打印头当前所在的位置。假设X = 10:
G91 ; 设置相对定位
G0 X20 ; 沿着X轴移动 +20毫米
在这种情况下,代码行将是:
G91 G0 X20
G91首先告诉机器将坐标解释为相对于当前位置(X = 10)。知道了这一点,机器只需在X轴正方向上移动20毫米,从而达到我们想要的X = 30。
G28 和 G29:自动归位和床调平
我们将设置所有运动轴的物理极限的过程称为“归位”。G28命令将通过移动打印头执行此任务,直到触发限位器以确认限位位置停止下来。
G28和G29对于初始化阶段很有用 归位不仅对于机器自行定位很重要,而且对于防止打印头移动到边界之外也很重要。G28命令通常在每次打印过程之前执行。
另一个命令G29启动自动床调平序列。在打印之前调平床有许多不同的方法,因为这通常由固件设置,而不是由最终用户设置。因此,我们不会详细介绍方法和命令参数。只需知道G29通常在自动归位(G28)之后发送,并且应执行由固件确定的自动床调平。
例子:
G28 X Y ; 归位X和Y轴
G28 ; 归位所有轴
如果指定X、Y或Z作为参数,可以单独归位特定轴。否则,仅G28将这三个轴全部归位。
G29 ; 执行自动床调平序列
如果要运行自动床调平序列,请记住在执行归位过程后发送G29。
M104、M109、M140 和 M190:设定温度
这些是重要的辅助命令,同样不涉及任何运动动作。
这些M代码命令负责控制热端和床温度 首先,M104命令用于设置喷头要达到的目标温度并保持该温度,直到另有指示为止。一些参数包括实际温度值(S)和要加热的打印头(对于多个挤出头而言)。
例子:
M104 S210 ; 设置喷头目标温度为210°C
此命令行指示机器将其喷头加热到210°C,并假设此挤出设置中只有一个喷头。设置目标温度后,打印机将在加热喷头的同时继续执行下一条指令。
或者,如果我们想等到达到目标温度后再继续下一行,我们可以使用M109命令。
M109 S210 ; 设置喷头目标温度为210°C,并等待直到达到目标温度
设置热床温度与喷头非常相似,但是使用M140和M190命令:
M140 S110 ; 设置热床的目标温度为110°C
M190 S110 ; 设置热床的目标温度为110°C,并等待直到达到目标温度。
M106 & M107:风扇控制
3D打印机的另一项重要任务是通过各种M106和M107命令来实现供风扇地控制。
M106 和 M107 命令均可控制 3D 打印机中的所有风扇 M106命令用于打开风扇并设置其速度。在需要对零件进行冷却的时候特别有用,因为在打印第一层和桥接时可能需要不同的风扇速度。速度参数必须是0到255之间的值。值为255时,风扇达到100%功率,而此范围内的其他数字将对应于相应的百分比功率。
例子:
M106 ; 打开一个风扇并设置最大速度(100%)
M106 S128 ; 打开一个风扇并将其设置为50%的功率
如果有多个速度可控制的风扇,可以通过索引(P)参数来定义,因为每个风扇由固件分配一个索引。最后,M107命令用于关闭指定风扇的电源。如果没有提供索引参数,通常会关闭零件冷却风扇。
请注意,风扇控制可以根据不同的3D打印机和固件而有所不同,因此建议查阅相关文档或手册以了解你的打印机支持的具体指令和参数。
程序结构
现在我们来查看用于3D打印的实际代码,G代码程序可以分为三个不同的部分。
需要注意的是,如果你使用文本编辑器打开切片软件生成的G代码文件,它可能不会立即以G或M命令作为开头。例如,像Cura或Simplify3D这样的切片软件通过在注释中包含一些软件定义,诸如层高等参数,这些行不会影响打印。
第一阶段:初始化
初始化阶段包括准备打印机打印所需的所有命令 任何程序的第一部分都包括开始打印模型之前所需的准备任务。以下是实际3D打印作业中的前六行初始化G代码命令。
第一行表示运动应使用绝对定位,而第二行告诉挤出机也以绝对术语解释挤出。第三行和第四行的代码开始将热床和喷头加热到目标温度。请注意,它不会等待目标温度,这意味着打印机将在加热时自动返回并调平热床。
一些初始化例程(例如PrusaSlicer)包括喷嘴清洁过程,例如在开始打印之前打印一条直线。
第二阶段:打印
打印过程主要由一系列运动和挤出组成 这是正式开始的G代码文件,3D打印是一个逐层的过程,因此我们可以发现此阶段在打印单层时包括XY平面内的移动和材料的挤出。一旦完成,Z方向上的一个微小移动将意味着下一层的开始。以下是G代码命令在打印阶段的示例:
第三阶段:重置
G代码的最终命令通常是重置位置和状态 最后,当打印完成时,最后几行G代码命令会使打印机进入正常的默认状态。例如,喷嘴可能会移动到预定位置,喷头和热床加热器被关闭,并且电机被禁用,等等。
在这个阶段,G代码会执行一些清理和收尾工作,以确保打印顺利结束,并将打印机准备好进行下一次打印任务。
终端输入和输出
到目前为止,我们只讨论了计算机向打印机发送G代码命令(通常通过SD卡传输)。然而,这并不是唯一的通信方法。一些控制软件,例如Pronterface和OctoPrint,允许直接与3D打印机通信,因此你可以手动输入命令。
OctoPrint有一个终端窗口,用于直接发送和接收G代码 显然,通过逐行发送代码来打印任何内容是不切实际的。但有时这种通信方法也需要用于其他目的,例如检索有价值的信息以进行校准,甚至在3D打印机缺少显示屏时也是如此。例如,M105“报告温度”命令将检索当前喷头和热床温度。
这种通信对于查看和更改在固件级别硬编码的EEPROM设置也非常有用。例如,电机步进/毫米、最大进给速率或PID等参数可以通过M503(“报告设置”)可视化,手动更改,然后通过M500保存设置。
编写G代码
一些G代码可视化工具对于学习如何编写代码非常有用 到现在为止,你应该能够更好地查看和理解G代码了。现在也可以通过手动开始尝试编写代码,无论是通过在线的G代码可视化工具,还是查看修改从切片软件导出的G代码文件。通过实际操作和学习,你将逐渐掌握G代码的使用,这将使你在3D打印领域更加熟练和自信。
在结束本文之前,还需要提醒一下G代码的兼容性。3D打印固件有很多种(目前还是以Marlin最常见),每种都有不同的G代码“风格”。这可能会导致兼容性问题,因为适用于一台机器的命令可能不适用于另一台机器。
学习G代码是一项持续且有益的任务 虽然G代码不是最复杂的计算机语言,但它仍然需要大量的练习和学习。总之,希望这篇文章对你有所帮助,以后看到G代码,至少能知道它代表什么。
注:本文由资源库编译,原文来自All3DP,作者:Lucas Carolo ,原标题为“3D Printer G-code Commands: Main List & Quick Tutorial”。
|
你可能喜欢
开源3D建模软件FreeCAD 1.0正式发布,支持W
人工智能与3D打印技术结合,实现小型核反应
最新《Nature》:动态界面3D打印
石墨烯增强混凝土能否推动可持续建筑? UVA
推荐课程
神奇的3D打印
SLA3D打印工艺全套培训课程 - 软件篇
3D打印月球灯视频教程 包括完整贴图建模流
【原创发布】Cura软件修改二次开发定制视频