GM指令详解
概述
众所周知,3D打印机执行的是一堆指令,这一堆指令都来源于一个指令集,即GM指
令集。而固件就负责解释这些指令,并将命令指派给电子原件,从而完成打印任务。因此,
固件和指令集必须相互配合,否则打印机不会正常工作。开源的3D打印机使用的固件多种
多样,但和这些固件匹配的指令集绝大多数指令都相同,即RepRapGM指令集。由于Marli
固件使用的最为广泛,笔者就以Marli
固件的指令集为例作叙述。
了解GM指令有什么用?这用处可大了。帮助使用者更方便地调试打印机,检测打印
机的问题,扩展打印机菜单功能…反正好处多多,不管你信不信,反正我是信了。
废话不多说,进入正题。GM指令集就是一些以G或M开头的代码,有时候还会掺杂
一些以其其他字母以标示参数意义,比如T、S、F、P等。具体意义见下表,表中
表示
数字。
字母
意义
G
标准GCode命令例如移动到一个坐标点。
M
RepRap定义的命令,例如打开一个冷却风扇
T
选择工具代码。在RepRap中,工具通常是挤出头(extruder)。
S
命令参数例如马达的电压。
P
命令参数频率:1次每毫秒。
X
X坐标通常用于移动命令。
Y
Y坐标通常用于移动命令。
Z
Z坐标通常用于移动命令。
E
挤出长度,用于控制挤出线材的长度
I
参数现在仍未使用(定义)。
J
参数现在仍未使用(定义)。
F
打印头移动速度单位:毫米每分钟
R
参数温度相关。
Q
参数现在仍未使用(定义)。
N
行码,在发送错误情况后,用来重复输入某行代码(命令)。
校验码(Checksum)用于检测通信错误
因此,能够被Marli
固件识别的代码应该是像下面的样子:
N3T057N4G92E067N5G2822N6G1F1500082N7G1X20Y20F3000085N8G1X30Y3033
1
f详解
注释
GCode一行中分号“”后面的内容为解释性语句,即注释。固件会忽略其内容。为了减少通信量,可以把注释信息都去掉。
N3T057这是一条注释N4G92E067这也是N5G2822
标记代码
N和,比如N123GCode写在这里71。这是行码和标记码。RepRap的固件会以一个本地计算的值来对比标记码,如果两者值不同,就会要求重复输入该条指令。行码和检查码都可以去掉,RepRap仍会工作但它不会做检查。你必须同时使用,或同时放弃使用。检查码cs是通过对对应的指令包括它的的行码的原始字节数据进行异或位运算得出的。
i
tcs0fori0cmdicmdiNULLi
cscscmdics0xffDefe
siveprogrammi
g
检查码cs的值即是其符号右边r