G-M指令详解
概述
众所周知,3D打印机执行的是一堆指令,这一堆指令都来源于一个指令集,即G-M指令集。而固件就负责解释这些指令,并将命令指派给电子原件,从而完成打印任务。因此,固件和指令集必须相互配合,否则打印机不会正常工作。开源的3D打印机使用的固件多种多样,但和这些固件匹配的指令集绝大多数指令都相同,即RepRap G-M指令集。由于Marlin固件使用的最为广泛,笔者就以Marlin固件的指令集为例作叙述。
了解G-M指令有什么用?这用处可大了。帮助使用者更方便地调试打印机,检测打印机的问题,扩展打印机菜单功能…反正好处多多,不管你信不信,反正我是信了。
废话不多说,进入正题。G-M指令集就是一些以G或M开头的代码,有时候还会掺杂一些以其其他字母以标示参数意义,比如T、S、F、P等。具体意义见下表,表中nnn表示数字。
字母
意义
Gnnn
标准 GCode 命令, 例如移动到一个坐标点。
Mnnn
RepRap定义的命令,例如打开一个冷却风扇
Tnnn
选择工具代码。 在 RepRap中,工具通常是挤出头(extruder)。
Snnn
命令参数, 例如马达的电压。
Pnnn
命令参数, 频率:1次每毫秒。
Xnnn
X坐标, 通常用于移动命令。
Ynnn
offset指令是什么意思Y坐标, 通常用于移动命令。
Znnn
Z坐标, 通常用于移动命令。
Ennn
挤出长度,用于控制挤出线材的长度.
Innn
参数 - 现在仍未使用(定义)。
Jnnn
参数 - 现在仍未使用(定义)。
Fnnn
打印头移动速度 单位: 毫米每分钟
Rnnn
参数 - 温度相关。
Qnnn
参数- 现在仍未使用(定义)。
Nnnn
行码,在发送错误情况后,用来重复输入某行代码(命令)。
*nnn
校验码(Checksum). 用于检测通信错误
因此,能够被Marlin固件识别的代码应该是像下面的样子:
详解
注释
G-Code一行中分号“;”后面的内容为解释性语句,即注释。固件会忽略其内容。为了减少通信量,可以把注释信息都去掉。
标记代码
N 和 *,比如 N123 [...G Code 写在这里...] *71。这是行码和标记码。RepRap的固件会以一个本地计算的值来对比标记码,如果两者值不同,就会要求重复输入该条指令。行码和检查码都可以去掉,RepRap仍会工作, 但它不会做检查。你必须同时使用,或同时放弃使用。检查码cs 是通过对对应的指令(包括它的的行码)的原始字节数据进行异或位运算得出的。
检查码cs的值即是其*符号右边的十进制数字,RepRap固件希望每次命令的行代码都是逐次增加1的大小,不然的话,它会返回一个错误。当然你也可以发送一个M110命令(详情请看下面)强行重置机器。行码和检查码是为了减少信号干扰。
延时G 命令
    RepRap固件接收到这些指令后,会先存储在一个循环队列缓存里再执行。这意味着固件在接收到一条指令后马上可以传输下一条。这也意味着一组线段可以没有间断的情况下连续打印。为了实现指令流的控制,当接受到可缓存的指令时,如果固件把它成功放到本地缓存
里,就立即给出应答,如果本地缓存已满,则会延时等到缓存有空出的位置时,才给出应答,然后才可以传输指令。
G0: Rapid move 快速移动
比如G0 X10 Y20如果使用绝对定位的话,命令打印机喷头快速移动到X=10,Y=20的位置。G0指令不能包含挤丝参数,只能包含X、Y、Z参数,即所谓的空驶动作。
G1: Controlled move 可控移动
    比如G1 X10 Y20 E2.4,G1指令中可以包含挤丝动作。Marlin尝试从每一行指令中读取速度值,然后再移动开始之前加速或减速到这个速度值,然后执行移动指令,不会在移动过程中改变速度。下面的几句指令告诉打印机速度先从当前的1500加速到3000,执行第二句的移动动作,然后再减速到1500,执行第三句的移动动作。
    如果E坐标采用绝对定位的话,而当前行中的E坐标值小于上一个E坐标值那么打印机就会回抽,这可以有效防止毛刺现象。
G2: Controlled Move Arc Clockwise可控顺时针圆弧移动
    比如 G2 X100 Y100 I50 J60 E30表示从当前点通过一个顺时针圆弧线移动到(100 ,100位置,该圆弧的圆心的位置是当前点坐标平移(50,60得到的位置,在此过程中还可以控制挤丝动作。
G3: Controlled Move Arc Counter-Clockwise 可控逆时针圆弧移动
比如 G2 X100 Y100 I50 J60 E30表示从当前点通过一个逆时针圆弧线移动到(100 ,100位置,该圆弧的圆心的位置是当前点坐标平移(50,60得到的位置,在此过程中还可以控制挤丝动作。
G28: Move to Origin 移动到原点
    该命令会是机器的挤出机回归到原点。准确的说每个轴上移动到初始位置。需要注意,为了快速归位,移动过程不断加速,当碰到限位开关之后,它会做一次大约1mm的往返移动,来保证归位位置的精确度。
如果在G28后面加上坐标轴参数,只有在涉及到的坐标轴方向上才会归位,比如G28 X10G28 X0都会只让打印机在X上归位。而不会对Y方向和Z方向归位。(X后面的数字会被忽。而单纯的G28指令则会在三个轴上同时归位,顺序是XY轴Z轴
G29-G30: Bed probing 加热床探测(需要使用自动调平功能
G29会让打印机在加热床的3个点或者4个点(根据固件配置是三角探测还是四角探测,该指令必须在归位之后才生效。
G30让打印机在当前的XY处进行Z探测
即时G 指
以下令也可以被缓存, 但是直到所有之前缓存的令被执行完,并且该令执行后,才会给出应答。 因此主机会等待令执行完毕(才收到的应答). 这些令导致的短暂停顿不会影响机器的正常性能。
G4: Dwell 停顿
    G4 P1000会让打印机停顿1000毫秒,停顿过程中打印机仍然可以被控制,比如设置挤出头温度。G4 S10会让打印机停顿10秒。
G10: 根据M207的配置进行回抽
    M207包含回抽距离,回抽速度,回抽时Z提升等信息。
G11: 根据M208的配置进行回抽后恢复
    M208包含回抽后挤出距离和挤出速度等信息。
G20: Set Units to Inches 使用英寸作为单位
    从现在开始,使用英寸作单位。
G21: Set Units to Millimeters 使用毫米作为单位
    从现在开始,使用毫米作单位。
G90: Set to Absolute Positioning 设置成绝对定位
    从现在开始,使用绝对坐标定位方式。即所有的坐标值都是基于一个统一的参考点给出的。
G91: Set to Relative Positioning 设置成对定位
    从现在开始,使用相对坐标定位方式。即所有当前指令的坐标值都是以上一个坐标位置为
参考的。
G92: Set Position 设置位置
设置各轴当前的坐标值,比如G92 E15指定当前耗材的位置在15毫米处。G92 X100指定打印机喷头当前的X坐标值为100。这个指令可以用来指定绝对零点,特别是针对E
即时M指令
M0/M 1: Unconditional Stop 停止
    无条件停止打印机的一切动作,等待用户按LCD控制器上的按钮。
M17: Enable/Power all stepper motors 启动所有步进电机
M18: Disable all stepper motors 关闭所有步进电机
    给所有的步进电机断电,从而可以手动移动滑块。M84指令也是这个功能。
M20: List SD card 读取SD卡
    将SD根目录下的所有内容的名称做出列表,发送到串口,可以使用串口监视器看到。
M21: Initialize SD card 初始化SD卡
初始化SD如果在打印机通电时插入SD默认初始化SD。使用SD其他指令时,SD一定要初始化。
M22: Release SD card 弹出SD卡

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。