最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

3D打印机G-M代码详解

IT圈 admin 42浏览 0评论

2024年4月2日发(作者:凌听安)

G-M

指令详解

概述

众所周知,3D打印机执行的是一堆指令,这一堆指令都来源于一个指令集,即G-M指

令集。而固件就负责解释这些指令,并将命令指派给电子原件,从而完成打印任务。因此,

固件和指令集必须相互配合,否则打印机不会正常工作。开源的3D打印机使用的固件多种

多样,但和这些固件匹配的指令集绝大多数指令都相同,即RepRapG-M指令集。由于Marlin

固件使用的最为广泛,笔者就以Marlin固件的指令集为例作叙述。

了解G-M指令有什么用?这用处可大了。帮助使用者更方便地调试打印机,检测打印

机的问题,扩展打印机菜单功能…反正好处多多,不管你信不信,反正我是信了。

废话不多说,进入正题。G-M指令集就是一些以G或M开头的代码,有时候还会掺杂

一些以其其他字母以标示参数意义,比如T、S、F、P等。具体意义见下表,表中nnn表

示数字。

字母

Gnnn

Mnnn

Tnnn

Snnn

Pnnn

Xnnn

Ynnn

Znnn

Ennn

Innn

Jnnn

Fnnn

Rnnn

Qnnn

Nnnn

意义

标准GCode命令

例如移动到一个坐标点。

RepRap定义的命令,例如打开一个冷却风扇

选择工具代码。在RepRap中,工具通常是挤出头

(extruder

)。

命令参数例如马达的电压。

命令参数

频率:1次每毫秒。

X坐标

通常用于移动命令。

Y坐标

通常用于移动命令。

Z坐标

通常用于移动命令。

挤出长度,用于控制挤出线材的长度.

参数-现在仍未使用(定义)。

参数-现在仍未使用(定义)。

打印头移动速度单位:毫米每分钟

参数-温度相关。

参数-现在仍未使用(定义)。

行码,在发送错误情况后,用来重复输入某行代码(命令)。

校验码(Checksum).用于检测通信错误

*nnn

因此,能够被Marlin固件识别的代码应该是像下面的样子:

N3T0*57

N4G92E0*67

N5G28*22

N6G1F1500.0*82

N7G1X2.0Y2.0F3000.0*85

N8G1X3.0Y3.0*33

1

详解

注释

G-Code一行中分号”;”后面的内容为解释性语句,即注释。固件会忽略其内容。为了减

少通信量,可以把注释信息都去掉。

N3T0*57;这是一条注释

N4G92E0*67

这也是

N5G28*22

标记代码

N和*,比如N123[...GCode写在这里...]*71。这是行码和标记码。RepRap的固件会以一

个本地计算的值来对比标记码,如果两者值不同,就会要求重复输入该条指令。行码和检查

码都可以去掉,RepRap仍会工作

但它不会做检查。你必须同时使用,或同时放弃使用。检

查码cs是通过对对应的指令(包括它的的行码)的原始字节数据进行异或位运算得出的。

intcs=0;

for(i=0;cmd[i]!='*'&&cmd[i]!=NULL;i++)cs=cs

cmd[i];

cs&=0xff;//

检查码cs的值即是其*符号右边的十进制数字,RepRap固件希望每次命令的行代码都是逐

次增加1的大小,不然的话,它会返回一个错误。当然你也可以发送一个M110命令(详情

请看下面)强行重置机器。行码和检查码是为了减少信号干扰。

延时

G

命令

RepRap固件接收到这些指令后,会先存储在一个循环队列缓存里再执行。这意味着固件

在接收到一条指令后马上可以传输下一条。这也意味着一组线段可以没有间断的情况下连续

打印。为了实现指令流的控制,当接受到可缓存的指令时,如果固件把它成功放到本地缓存

里,就立即给出应答,如果本地缓存已满,则会延时等到缓存有空出的位置时,才给出应答,

然后才可以传输指令。

G0:Rapidmove快速移动

比如G0X10Y20,如果使用绝对定位的话,就命令打印机喷头快速移动到X=10,Y=20的位

置。G0指令不能包含挤丝参数,只能包含X、Y、Z参数,即所谓的空驶动作。

2

2024年4月2日发(作者:凌听安)

G-M

指令详解

概述

众所周知,3D打印机执行的是一堆指令,这一堆指令都来源于一个指令集,即G-M指

令集。而固件就负责解释这些指令,并将命令指派给电子原件,从而完成打印任务。因此,

固件和指令集必须相互配合,否则打印机不会正常工作。开源的3D打印机使用的固件多种

多样,但和这些固件匹配的指令集绝大多数指令都相同,即RepRapG-M指令集。由于Marlin

固件使用的最为广泛,笔者就以Marlin固件的指令集为例作叙述。

了解G-M指令有什么用?这用处可大了。帮助使用者更方便地调试打印机,检测打印

机的问题,扩展打印机菜单功能…反正好处多多,不管你信不信,反正我是信了。

废话不多说,进入正题。G-M指令集就是一些以G或M开头的代码,有时候还会掺杂

一些以其其他字母以标示参数意义,比如T、S、F、P等。具体意义见下表,表中nnn表

示数字。

字母

Gnnn

Mnnn

Tnnn

Snnn

Pnnn

Xnnn

Ynnn

Znnn

Ennn

Innn

Jnnn

Fnnn

Rnnn

Qnnn

Nnnn

意义

标准GCode命令

例如移动到一个坐标点。

RepRap定义的命令,例如打开一个冷却风扇

选择工具代码。在RepRap中,工具通常是挤出头

(extruder

)。

命令参数例如马达的电压。

命令参数

频率:1次每毫秒。

X坐标

通常用于移动命令。

Y坐标

通常用于移动命令。

Z坐标

通常用于移动命令。

挤出长度,用于控制挤出线材的长度.

参数-现在仍未使用(定义)。

参数-现在仍未使用(定义)。

打印头移动速度单位:毫米每分钟

参数-温度相关。

参数-现在仍未使用(定义)。

行码,在发送错误情况后,用来重复输入某行代码(命令)。

校验码(Checksum).用于检测通信错误

*nnn

因此,能够被Marlin固件识别的代码应该是像下面的样子:

N3T0*57

N4G92E0*67

N5G28*22

N6G1F1500.0*82

N7G1X2.0Y2.0F3000.0*85

N8G1X3.0Y3.0*33

1

详解

注释

G-Code一行中分号”;”后面的内容为解释性语句,即注释。固件会忽略其内容。为了减

少通信量,可以把注释信息都去掉。

N3T0*57;这是一条注释

N4G92E0*67

这也是

N5G28*22

标记代码

N和*,比如N123[...GCode写在这里...]*71。这是行码和标记码。RepRap的固件会以一

个本地计算的值来对比标记码,如果两者值不同,就会要求重复输入该条指令。行码和检查

码都可以去掉,RepRap仍会工作

但它不会做检查。你必须同时使用,或同时放弃使用。检

查码cs是通过对对应的指令(包括它的的行码)的原始字节数据进行异或位运算得出的。

intcs=0;

for(i=0;cmd[i]!='*'&&cmd[i]!=NULL;i++)cs=cs

cmd[i];

cs&=0xff;//

检查码cs的值即是其*符号右边的十进制数字,RepRap固件希望每次命令的行代码都是逐

次增加1的大小,不然的话,它会返回一个错误。当然你也可以发送一个M110命令(详情

请看下面)强行重置机器。行码和检查码是为了减少信号干扰。

延时

G

命令

RepRap固件接收到这些指令后,会先存储在一个循环队列缓存里再执行。这意味着固件

在接收到一条指令后马上可以传输下一条。这也意味着一组线段可以没有间断的情况下连续

打印。为了实现指令流的控制,当接受到可缓存的指令时,如果固件把它成功放到本地缓存

里,就立即给出应答,如果本地缓存已满,则会延时等到缓存有空出的位置时,才给出应答,

然后才可以传输指令。

G0:Rapidmove快速移动

比如G0X10Y20,如果使用绝对定位的话,就命令打印机喷头快速移动到X=10,Y=20的位

置。G0指令不能包含挤丝参数,只能包含X、Y、Z参数,即所谓的空驶动作。

2

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论