导读:就像学习一门新的外语一样,如果您经常使用3D打印机或其他CNC机器,了解G-Code的构建方式以及某些说明的含义不仅可以解决打印问题,还可以根据需求自定义打印。
G-CODE是我们告诉机器它们需要做什么的方式。自1950年代后期以来一直流行至今,是使用最广泛的计算机数控编程语言。不过,请不用担心,因为它是您能想到的最简单的语言之一:在大多数3D打印机上使用的形式中,没有循环、没有if语句、没有括号或任何其他花哨的东西。如果您在切片器中准备一个模型并在文本编辑器中打开生成的G-CODE,您会看到它只是3D打印机固件读取然后执行的命令列表(按行执行)。
△PrusaSlicer中的G-CODE可视化
本文中,南极熊将介绍3D打印机最常见的G-CODE(与Marlin固件兼容),使您能够理解95%的3D打印G-CODE。如果你运行带有RepRap固件的打印机或带有Mach 3的CNC系统,文件的整体外观将是相同的,尽管某些命令的执行操作可能略有不同。
△Marlin G-CODE示例
那么让我们来看看Marlin-G-code。正如之前所说,代码从文件的开头到结尾按行处理,这些文件通常由一个包含一些基础信息的标题组成。接下来是您可以在切片器中自定义的开始G-CODE,然后是带有结束G-CODE打印命令。通常还有一个包含所有切片器设置的文本块。如果您忘记保存配置文件或从其他人那里收到打印非常好的G-CODE文件,这部分或许非常有用。某些切片器将允许您导入G-CODE文件并根据设置生成配置文件,但这通常是仅当G-CODE也使用相同的切片器创建才能够实现。
注释
如果我们查看标题或设置块,我们已经可以看到一些重要的东西。这些行通常以分号开头。在一行的开头有一个分号意味着这是一个注释,所以它会被固件忽略。注释不能占用整行,而是在常规命令后添加,提高代码的可读性。切片器还会经常添加注释,以便您更轻松地找到某个图层或某个功能。为了完整性,根据CNCG-CODE标准,一些固件支持括号中的注释,尽管这种风格很少使用。
△G-CODE中的注释
句法
再来看看G-CODE的命令语法。每个命令都以字母开头。G代表准备命令,通常用于与运动相关的任务。M命令(Miscellaneous commands)通常用于更改设置或执行操作。后面的数字代表了一个特定的命令。接下来是G-CODE的命令参数,用一个描述性字母,然后是参数值。
△G-CODE句法
G0 & G1 - 直线运动
让我们从最常见的G0和G1命令开始,它们用于轴的运动。XYZ参数定义了它需要移动的位置,E定义了挤出的材料量,F定义了进给量,通常以毫米/分钟为单位。G0和G1不需要所有轴的值,而且只需设置一次,状态会一直存在,直到被更改。在过去,G0用于不需要精度的快速移动,而G1是从一个位置到另一个位置的协调线性移动。然而在目前的3D打印机上,G0和G1几乎相同,约定俗成的是G0用于行进运动,G1用于材料挤出的运动。
△G0 & G1 - 直线运动
G90 & G91 - 定位模式
与G0和G1相关的一个非常重要的命令对是G90和G91。这些将定位模式设置为绝对或相对。如果设置了G90,则所有运动都是到打印机坐标系中的绝对位置。所以G0X50 Y50将打印头移动到X50 Y50,而G0 X100Y100将打印头移动到X100 Y100。
△绝对定位
如果设置了G91,则所有运动都相对于最后一个位置。因此,如果我们从原点X0Y0开始并发送G0 X50 Y50,打印头将移动到X50Y50。但是如果在这之后发送G0 X100 Y100,打印头将执行增量移动并在停留在X150Y150。
△相对/增量定位
G-Code文件中的大部分移动都将使用绝对定位来实现。相对定位可能有用的地方是,例如,在G-CODE最后,您希望将喷嘴从打印件上抬起并移开。因此,无论您的型号高度如何,G91和G0Z10始终都将打印头提升10毫米。紧接着,用G90切换回绝对定位,可以将喷嘴移动到打印床的边缘。
△结束脚本示例以抬起喷嘴并将其移开
M82 & M83 - 挤出机定位模式
与打印移动相关的还有命令对M82和M83。尽管看起来有点奇怪,但耗材挤出机是3D打印机的第4轴,并且可以从绝对定位到相对定位分别切换,就像运动轴一样。M82设置轴为绝对模式,M83设置为相对模式。此设置主要是您使用的切片器的偏好。CURA主要以绝对坐标进行挤压,因此是M82命令,而PrusaSlicer默认使用M83进行相对挤压。在这两种命令中,累积相对误差或哪一种命令更好这种讨论并不是非常重要,更多的是您更喜欢哪种风格。
△不同切片器的示例G-CODE
G28 - 归位
大多数3D打印机为轴使用简单步进电机,没有任何位置反馈。这意味着当你打开你的机器时,它不知道它的位置。这就是为什么我们在打印机上运行的每个G-CODE文件基本上一开始就包含G28。G28启动归位程序,机器移动到已知位置的终点,所有轴一个接一个地归位。通过添加X、Y或Z参数或它们的组合,我们可以告诉固件仅归位一个或两个轴。
△轴归位的不同方法
G29 - 床面平整
越来越多的3D打印机开始配备床面调平探头,其中G29用于开始调平过程。G28和G29通常按连续顺序出现,因为在开始床身探测之前需要将轴归位。
G92 - 设置当前位置
与归位类似,使用命令G92可以让我们将当前位置设置为特定值。因此,无论打印头在何处,发送G92 X0 Y0 Z0都会告诉打印机当前位置是坐标系的新原点。在3D打印中,G-CODEG92在使用绝对挤压时最常见,并且挤压机轴被重置以获得更好的可读性。
△G92示例
M104 & M109 + M140 & M190 - 温度
现在让我们看看温度,特别是喷嘴和床的温度。使用M104和M109加上参数S,即可设置喷嘴温度。但是这对命令有什么区别呢?M104只是简单地设置喷嘴温度,然后G-CODE的执行将照常继续。另一方面,M109设置温度,然后暂停G-CODE执行,直到达到温度。
△设置喷嘴温度
这在设置床温时完全相同。M140将简单地设置预期温度,M190设置温度并暂停直到达到温度。
△设置热床温度
顺便说一下,这两对命令容易混淆,因为数字4和9只相差了一位。
△相似的命令
基本上,您可以在任何脚本中找到它们。设置之后,打印机要等到达到适当的温度,然后才开始打印。如果您的打印机需要同时开始加热床和喷嘴,您会发现这些命令:M104、M140、M109、M190。
△同时加热喷嘴和床
有些机器先加热床,然后加热喷嘴,以避免材料渗出。在这种情况下,您通常会在脚本中找到这样的顺序:M140、M190、M104和M109。
△先加热床,然后加热喷嘴
因此,如果您不想等待床和喷嘴一个接一个地加热,现在知道要在脚本中更改什么了吧!另外,有些人会在特定高度手动将M104命令添加到G-CODE中,自定义温度塔。这种情况下,不建议使用M109,因为新温度通常会在一层内达到,因此暂停打印会导致更多问题。
M106 - 设置风扇速度
另一个重要的命令是M106,用于控制冷却风扇。参数S的范围可以从0到255,可让您调整其速度。例如,全功率为255,半功率为128。如果要完全关闭,则使用M106 S0或专用命令M107。
△风扇设置示例
M84 - 禁用步进器
最后一个命令是M84。使用打印机控制移动轴后,步进电机将保持通电状态,以避免丢失其位置。如果您想禁用电机以便手动移动轴,您可以对所有轴使用M84,或者使用带有X、Y、Z和E参数的M84来关闭单个轴。
△禁用步进电机
如果您记住这10个命令或命令对,就会理解切片机生成的大部分G-CODE并根据自己的喜好自定义打印例程。当然,3D打印机的执行过程还涉及了更多的命令,你还知道哪些命令和意义呢?欢迎在评论中告诉南极熊,您认为还有哪个命令最重要、最实用?
参考阅读:
1. Learn G-Code for 3D Printing
2. G-CODE BASICS FOR 3D PRINTING