目录
3D打印Gcode文件命令详解
目前看了很多资料,感觉都解释得不够细节,很多还是直接复制粘贴的,所以特别写一篇关于3D打印Gcode文件中常用命令的详细解释。Gcode的命令很简单,但是前提是需要有清晰的说明。
Gcode文件作用
Gcode文件是用来命令3D打印工作的,你想要将电脑里的三维模型用3D打印机打印出来,首先需要将模型(常见.stl和.obj格式)输入到切片软件中(例如Cura)进行平面切片,再生成Gcode文件。将Gcode文件交给3D打印机读取,打印喷头才会按照规划好的路径来填充每一层,再逐层堆叠最后成型。
因此Gcode文件的内容就是控制3D打印机的命令,Gcode文件内是一行对应一条控制命令,按从上到下的顺序逐行执行命令。因此如果你是开发切片软件的开发人员,切片算法的研究人员或者3D打印机的制造商,了解Gcode的命令是非常重要的。但是关于Gcode命令又很少能找到很清晰的介绍,大多数还是停留在G1命令是做什么的,不说清楚各项数据,用什么单位。(Gcode文件可以使用记事本直接打开浏览)
常用命令
;命令-注释
; comment
如果在Gcode文件里看到一句话或者一行的开头有个“;"符号,代表是注释,注释后面随便写什么都行,打印机都不会讲其内容作为命令执行。
评价:注释通常可以用来写备注,写打印模型的信息介绍等。
G28命令-复位
G28
在Gcode文件开头或结尾常看到一行G28,这是复位命令,后面不带任何字段参数,用来告诉打印机将所有轴(通常是控制喷嘴移动的X、Y和Z轴)复位,也就是会控制轴往远端移动,直至碰到尽头的止动件为止。
也可以加上参数,表示仅控制指定的轴复位
G28 X Y ;只控制X轴和Y轴复位
G28 Z ;只控制Z轴复位
评价:G28命令通常用在Gcode文件开头(初始化喷嘴位置)和Gcode文件末尾(移走喷头方便取走打印件)。
G90和G91命令-设置定位模式
G90
G91
命令打印机当前使用绝对坐标系还是使用相对坐标系。G90命令打印机使用绝对坐标系,G91命令打印机使用相对坐标系,后面不带字段参数。
-
绝对坐标系:移动命令将告诉打印机移动到精确的XYZ坐标点。
-
相对坐标系:移动命令将告诉打印机从当前位置移动到多远(从当前位置出发的位置)
G90
G1 X10 Y10 ;移动到打印平台坐标为X=10 Y=10的坐标位置
G91
G1 X10 ;移动到当前位置的X方向10mm的位置
评价:Gcode文件通常使用G90绝对坐标系多一点,更方便定位。如果你只想喷嘴在当前位置进行已知距离的偏移,那可以设置使用G91相对位置。
M82和M83命令-设定挤丝模式
M82
M83
这个命令与G90和G91类似,不过是用来命令挤出丝材的模式。M82命令使用绝对挤出模式,M83命令相对挤出模式。
-
绝对挤出模式:计算一共挤出多少丝材,最开始为0,然后挤出多少都会累加。
-
相对挤出模式:从当前位置再挤出多少丝材,当前位置为0。
评价:绝对挤出模式更常用多一点。
G1命令-运动命令
G1 F200 X10 Y10 Z10 E20
G1命令是最重要的命令,占Gcode文件的绝大部分内容。G1是用来命令打印机运动的,包括喷嘴和挤丝。如上G1命令后跟着几个字段参数,分别是F喷嘴移动速度,XYZ是目标点坐标,E是挤丝量。下面详细介绍这个几个参数:
- F:用于命令喷嘴最大移动速度,此速度必须始终以mm/min(毫米每分钟)为单位指定,即使你再切片软件中使用mm/s(毫米每秒)作为单位,在发出G1命令时,仍然需要统一使用mm/min作为单位来指定。打印机本身的控制主板上会设置一个速度上限,如果F规定的速度小于上限,则喷嘴速度将以F值为准。打印时喷嘴会慢慢加速到F值后保持匀速打印。如果设置的F值超过速度上限,那么喷嘴的移动速度也只能到达速度上限。
- X、Y、Z:命令喷嘴移动到给定坐标值处,单位为毫米mm,因此要确保模型的尺寸是不是也以毫米为单位度量。XYZ值对应的是路径规划后生成路径上的一个个路径点(路径由许多个离散的点组成)。
- E:控制给丝量。实际上E值对应的是丝材线轴的位置,也就是输入丝材的长度,而不是喷嘴挤出丝的量(因为实际E轴实际控制进丝电机的运动)。E值单位为毫米mm,如果E轴移动10毫米,就会又10毫米的丝材被推向喷嘴,由于喷嘴的直接通常远小于丝材的直接(例如喷嘴直径是0.4mm,丝材直径是1.75mm),因此将10mm的丝材推入喷嘴可能会产生数百毫米长的挤出量。因此如果研究算法时要计算E值,需要从挤丝量反推丝材推入量,具体根据喷嘴直径和喷嘴在前后两个坐标点的移动距离来算圆柱体的体积(圆柱体时模拟挤丝形状),然后利用丝材直径反推出丝材推入喷嘴的距离。当然E值除了能给丝,也能控制回抽,判断回抽体现在绝对挤丝模式下当前点的E值比上一个点的E值小,相对挤丝模式下就是E值为负数。
G1 X10 Y10
G1 F600 Z100
G1 X10 E2
G1 F200 X2 E1 ;G1命令后面的字段参数可以自由组合,打印机读到哪个参数就会进行对应运动
评价:除了G1命令,还有一个G0命令,实际上在运动上两个命令的作用是相似的。但是3D打印机一般用G1命令来控制,不会用G0,所以认准G1吧。之前找的很多资料,都不谈F值和E值是什么单位,也不谈E值怎么计算,具体对应哪个量,所以这里加上详细补充。
G92命令-设置当前位置
G92 E0
G92是重新声明当前位置是什么数值。相当于偏移数值,常用来覆盖当前丝材E值位置,使得后续的值都与当前新设置的值相关。G92后面需要声明具体哪些轴以及位置参数,可以是单个轴也可以是多个轴。
评价:常在每一层的开始或在启动或撤回命令之前执行此操作。
M104和M109命令-加热喷嘴
M104 S150
或
M109 S150
熔融沉积型3D打印方法通常需要加热喷嘴对输入丝材的进行融化后才能挤丝。所以M104和M109要用在Gcode文件的开头,用在开始给E值之前。M104是不等待喷嘴加热到给定温度,读完命令后就可以开始运动,实现边运动边加热。而M109是需要等待喷嘴加热到给定温度后才开始执行下一条命令。命令后面需要设定温度参数S,单位是摄氏度,具体要设置多少温度是由打印的丝材决定的。另外如果是多喷头打印机,后面还可以设置参数T指定是对哪个喷嘴加热。如果是双喷头一般T0是指右边喷嘴,T1指左边喷嘴,这个由设备决定。
M104 S190 T0 ;开始将T0加热到190摄氏度
M109 S150 ;等待喷嘴加热到150摄氏度
评价:一般Gcode文件会用M109命令,即等待加热到给定温度,因为打印机的进丝机E轴会给设定一个温度阈值,只有喷嘴温度超过了这个阈值后进丝机才会工作。
M140和M190命令-平台热床加热
M140 S50
M190 S50
M140和M190命令与M104和M109命令是几乎相似的。如果打印平台有热床加热功能的话,M140是命令热床加热到给定温度,能够边加热边执行其他命令;M190是等待热床加热到给定温度,只有达到温度后才允许执行其他命令。命令后面只需要一个温度参数S,单位为摄氏度。
评价:因为平台面积较大,所以如果使用M190命令加热的话,可能需要等待几分钟,比喷嘴加热等待时间长很多。因此可以在Gcode文件开始时使用 M140 命令开始加热平台,这能够允许在平台静止时执行其他命令,例如复位或喷嘴加热。只需确保在打印开始前执行M190命令,因为平台温度是第一层粘合的重要因素。
M106命令-设置冷却风扇运行
M106是控制打印机的冷却风扇运作,风扇一般对着打印件吹,用来快速冷却成型防止塌陷等。命令后面需要设置参数S,代表风扇运行功率,范围为0~255,0为不运作,255为100%功率。
M106 S255 ;设置风扇速度拉满
M106 S127 ;设置风扇功率为50%
M106 S0 ;风扇完全不工作,相当于关闭风扇
参考资料:
[1]https://www.simplify3d.com/support/articles/3d-printing-gcode-tutorial/
帮助很大,难得介绍Gcode比较全面的文章