中华DIY论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11074|回复: 9

G、M代码详解

[复制链接]

该用户从未签到

3

主题

12

帖子

1046

积分

金牌会员

Rank: 6Rank: 6

积分
1046

medal1

发表于 2016-1-25 00:19:15 | 显示全部楼层 |阅读模式
本帖最后由 zdall911 于 2016-1-25 01:43 编辑

介绍
本页面描述了G代码在RepRap固件中的使用,以及它们如何工作。
G代码还是可扩展的。
一个典型的G代码发送到RepRap机器:
N3 T0*57
N4 G92 E0*67
N5 G28*22
N6 G1 F1500.0*82
N7 G1 X2.0 Y2.0 F3000.0*85
N8 G1 X3.0 Y3.0*33
(该行结束要标记<NL><CR>。如果你想使用Arduino的串行接口手动输入reprap GCodes,在底部应选择“NLCR”。)
这是不准确的,固件接受的单<NL>,以及单<CR>,或其组合。 主机应该接受所有四个组合
RepRapG代码字段
本节介绍了首字母的定义。 定义的数字nnn代表。 数字可以是整数,也可以包含一个小数点,根据上下文。 例如X坐标可以是整数(X175)或小数(X17.62),而试图选择挤出数2.76将毫无意义。
字母
定义
Gnnn
标准G代码指令,如移动到一个点
Mnnn
RepRap定义的命令,如启动散热风扇
Tnnn
选择工具nnn。 在RepRap里,是选择几号挤出机
Snnn
命令的参数,如发送到电机的电压,
Pnnn
命令参数,如多少毫秒的时间
Xnnn
X坐标,通常是移动到…
Ynnn
Y坐标,移动到。。
Znnn
Z坐标,移动到。。
Innn
参数 - 目前未使用
Jnnn
参数 - 目前未使用
Fnnn
每分钟进给…毫米。 (打印头移动的速度)
Rnnn
参数 - 目前未使用
Qnnn
参数 - 目前未使用
Ennn
挤出材料的长度(毫米)。 与X,Y和Z一样,但表示挤出丝拉伸长度,这基于系统更新的步进机来解释是一样的 :Skeinforge 40以上的版本就解释为输入长丝消耗的绝对长度,而不是挤压输出的长度。
Nnnn
行号。 用来在通信错误的情况下要求重复传输。
*nnn
校验码。 用来检查通信错误。
G代码的注释:
N3 T0*57 ;This is a comment
N4 G92 E0*67; So is this
N5 G28*22
将会被RepRap忽略,就如空白行。 最好它能在发送命令前与电脑主机剥离, 这可以节省带宽。
个别命令
检查
N*
例如:N123 [G代码...] * 71
这些行号和校验。 RepRap固件对本地计算值的校验和检查,如果它们不同,就要求一个给定的数字线的重复传输。
你可以不要这两个 - RepRap仍然可以工作,但它不会做检查。你必须两个都要或者都不要。
The checksum "cs" for a GCode string "cmd" (including its line number) is computed by exor-ing the bytes in the string up to and not including the * character as follows:

int cs = 0;
for(i = 0; cmd != '*' && cmd != NULL; i++)
   cs = cs ^ cmd;
cs &= 0xff;  // 防御性编程...
这个值作为一个十进制整数*字符命令后追加值。
RepRap固件期望行数每行增加1,如果不发生,它是标记为错误。但你可以使用的M110(见下文)重置计数。
缓冲G命令
该的RepRap固件存储这些命令在一个环形缓冲区内部执行。 这意味着虽然一个命令被确认了且下一个就会被发送但没有(明显)的延迟。 反过来,这意味着线段序列会被划分但两个之间没有延时。 当这些缓冲命令被收到,就被确认和在本地存储了。 如果本地缓冲区已满,这个确认就延迟,直到缓冲区空间可以存储。 就是如何实现流量控制。
G0:快速移动
例如:G0 X12
回复

使用道具 举报

该用户从未签到

3

主题

12

帖子

1046

积分

金牌会员

Rank: 6Rank: 6

积分
1046

medal1

 楼主| 发表于 2016-1-25 00:21:27 | 显示全部楼层
在这种情况下快速移动到X = 12毫米。 事实上, RepRap固件快速控制动作(见下面的G1)使用的是完全相同的代码。 (区别来自一些旧机床,如果不是在一条直线轴驱动时移动速度更快。他们G0允许任何空间中的运动,以尽可能快地到达目的地。)
G1的:控制移动
例如:G1 X90.6 Y13.8 E22.4
在一条直线上从目前的(X,Y)点移动到点(90.6,13.8),挤出材料现在开始移动到22.4毫米的长度。
RepRap与材料进给都做出了反应。 因此:
G1 F1500
G1 X90.6 Y13.8 E22.4
将设置为1500毫米/分钟的进给率,那么进给速度会根据上面的去移动。 但
G1 F1500
G1 X90.6 Y13.8 E22.4 F3000
将设置为1500毫米/分钟的进给速度,然后根据上述加速到进给3000毫米/分钟。 挤压将加速沿X,Y运动,所以一切都保持同步。
RepRap只是以另一个变量(如,X,Y,Z和E)进行线性插值去处理进给率。 这给了加速和减速的方式,以确保同时移动和大量材料是正确地挤在所有点上。
第一个例子显示了如何获得一个恒定的速度运动。 第二个是如何加速或减速。 从而
G1 F1500
G1 X90.6 Y13.8 E22.4 F3000
G1 X80 Y20 E36 F1500
会首先加速,然后从3000毫米/分钟减速至1500毫米/分钟。
挤出机倒退一个给定的数量(例如,以减少其内部的压力,同时空气在流动,以便它不会滴下),只需使用G1发送小于目前的挤压长度的E值。
G28:移动到原点
例如:G28
这将导致RepRap机器移动回其x,y和Z原点的限位开关,被称为“归位”的过程。 先加速很快到达那里, 但是,当它到达后会慢慢地(1毫米)在每个方向移动,然后向后移动缓慢停止。 这将确保更精确的定位。
如果添加坐标,则刚指定的坐标轴将被清零。 从而
指令G28 X0 Y72.3
将使X和Y轴都为零,但没有Z轴的,它的实际坐标值将被忽略。
无缓冲G命令
下面的命令没有缓冲。 当收到它存储的信息,但它未被主机确定,直到缓冲区耗尽,然后命令才被执行。 因此,主机在这个命令时将暂停,直到它执行。 这些命令和任何可能跟随他们 之间的的短暂停都不影响机器的性能。
Teacup Firmware缓冲G20,G21,G90和G91。(Teacup Firmware是FiveD RepRap固件的一个完整的重写。它适合ATmega168-based板,比如Arduino Diecimila,以及更大的控制器。)
G4的:暂停
例如:G4 P200
在这种状态下暂停200毫秒不工作。 在延时时的机器状态(例如其挤出机的温度)仍然会被保留和控制。
G20:设置单位为英寸
例如:G20
从现在开始单位是英寸。
G21:设置单位为毫米
例如:G21
从现在开始单位是毫米。 (这是的RepRap默认。)
G90:绝对定位
例如:G90
从现在起,所有的坐标是绝对的,相对的机器的原点。 (这是的RepRap默认。)
G91 :设置相对定位
例如:G91
从现在起,所有的坐标是相对最后一个位置的。
G92 :定义当前位置
例如:G92 X10 E90
允许编程的绝对零点,通过重置当前位置为指定的值。 这将设置机器的X坐标为10和挤出坐标为90。 没有物理运动发生。
若没有指定坐标的G92将重置所有轴为零。
缓冲的M和T命令
M0的:停止
例如:M0
RepRap机器完成其缓冲区中留下任何动作,然后关闭。 所有的电动机和加热器关闭。 它可以由主控制器上按下复位按钮重新启动。 也可看到M112。
M17的:使能/加速 全部步进电机
例如:M17
M18的:禁止所有的步进电机
例如:M18
禁用步进电机,允许轴的自由移动。
M20的:列出SD卡
例如:M20
SD卡的根文件夹中的所有文件列出了串口。 排成一行就像这样:
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

12

帖子

1046

积分

金牌会员

Rank: 6Rank: 6

积分
1046

medal1

 楼主| 发表于 2016-1-25 00:22:00 | 显示全部楼层
确定文件:{SQUARE.G,SQCOM.G,}
后面的逗号是可选的。 注意:文件名是返回大写的,但当发送到M23命令(下同),他们必须是小写。 
M21:初始化SD卡
例如:M21
SD卡初始化。 如果SD卡装入机接通时,默认情况下会出现这种情况。 SD卡必须初始化来对其他SD功能工作。
M22 :释放SD卡
例如:M22
SD卡被释放,并可以拿出来。
M23 :选择SD文件
例如:M23 filename.gco
filename.gco指定的文件(支持8.3命名约定,即主文件名只能是八个或以下英文字符而扩展名只能是三个英文字符的形式)被选择并准备打印。
M24:启动/恢复 SD打印
例如:M24
开始打印从M23命令选择的文件。
M25 :暂停SD打印
例如:M25
在M23命令选择的文件的当前位置暂停打印。
M26 :设置的SD位置
例如:M26
设置SD字节的位置(M26 S12345)。
M27:报告SD打印状态
例如:M27的
报告SD打印状态。
M28 :开始写入到SD卡
例如:M28 filename.gco
filename.gco指定的文件被创建(或覆盖,如果它存在)在SD卡上,发送到本机的所有后续命令被写入该文件。
M29 :停止向SD卡写入
例如:M29 filename.gco
M28命令打开的文件被关闭,发送到本机的所有后续命令正常执行。
M40 :弹出
如果您的RepRap机器可以退出部分已建成了床,此命令执行退出循环。 这通常涉及到冷却床,然后执行一系列动作,把打印的部分移开。 X,Y和Z的位置在这个周期结束时是不确定的(虽然他们可以发现使用的M114命令)。
还可以看下面的M240和M241。
M41 :循环
例如:M41
RepRap机器如果是从自己的储存器建立一个文件,如本地的SD卡文件(而不是从一台主机传输的文件),这又回到开头的文件,并重新运行它。 因此,举例来说,如果你的RepRap是 能够从构建的床弹出 的部分,你可以将它设置循环印刷,它将一直运行。 谨慎使用
遇下情况会停止:
1.按下复位按钮,
2.原料耗尽(如果您的RepRap设立检测),
3.当有一个错误(如加热器故障)。
M42 :用尽材料时停止
例如:M42
如果您的RepRap可以检测其材料用完,当这种情况发生时这会决定它的运行状况。 X和Y轴归零(但Z没有),然后会关闭所有电机和加热器。 你必须按复位来激活机器。 换句话说,遇到这情况它会自动执行M0的命令。
M43 :用尽材料时等待
例如:M43  
如果您的RepRap可以检测其材料用完,当这种情况发生时这会决定它的运行状况。X和Y轴归零(但Z没有),然后会关闭所有电机和加热器,除了热的床上仍保持温度。 机器在这种状态下仍然响应G和M代码的命令。
M80 :开启ATX 电源
例如:M80
从待机模式打开ATX电源到全面运作模式。 
注 :一些固件,如Teacup ,是自动处理电源开/关,所以这是多余的。
M81 :关闭ATX电源
例如:M81
关闭ATX电源。 对应M80的。
M82 :设置挤出绝对模式
例如:M82
使挤出机挤出为绝对位置。
在repetier这是默认的。
M83:设置挤出机相对模式
例如:M83
使挤出机挤出为相对位置。
M84:停止机器的空转
例如:M84
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

12

帖子

1046

积分

金牌会员

Rank: 6Rank: 6

积分
1046

medal1

 楼主| 发表于 2016-1-25 00:22:26 | 显示全部楼层
停止所有轴和挤出机上的空转。 在某些情况下导致空转产生的恼人噪音,可以通过禁用来停止。 请注意,在打印过程中禁用空转,会有质量问题。 
M92:设置轴的步进单位
例如:M92 X <newsteps> Sprinter and Marlin
允许轴的步进单位的编程,直到电子复位为指定轴。 非常有用的校准。
M101:正向启动挤出机1
过时的。  用在旧风格的DC挤出机上。 
M102:逆向启动挤出机1
旧的。  用在旧风格的DC挤出机上。 
M103:将所有挤出机关闭
已过时。 使用在旧风格的DC挤出机上。

M104:设置挤出机温度(快速)
例如:M104 S190
设置当前的挤出机的温度至190oC和立即返回给主机控制( 在此之前,挤出机温度已达到)。 也看到M109的。
M105:获得挤出机温度
例如:M105
请求到当前的挤出机摄氏温度并返回到主机。例如,发送到响应此命令的主机的数据行像
ok T:201 B:117
M106:开启风扇
例如:M106 S127
开启冷却风扇(半速)。 可选参数“S”声明的PWM值(0-255)
M107 :关闭风扇
例如:M107
关闭冷却风扇(如果有的话)。
M108:设置挤出机速度
设置挤出机马达的速度。 (当前的固件已过时,看到M113型)
M109:设置挤出机温度
例如:M109 S190
目前挤出机的温度设定到190oC并在向主机发送一个确认的值之前等待它到达。 事实上的RepRap固件等待一段时间后挤出机温度已达到稳定 - 通常大约40秒。 这可以在编译固件时通过配置文件中的参数去改变的。 看到M104和M116。
M110的:设置当前行号
例如:M110 N123
当前行号设置为123。 因此预期此命令后的下一行,将是124。
M111:设置调试级别
例如:M111 S6
设置调试信息传回主机的级别到6级的水平。 这级别是的三位的OR(比值比):
#define DEBUG_ECHO(1 << 0)
#define DEBUG_INFO(1 << 1)
#define DEBUG_ERRORS(1 << 2)
因此,6表示发送信息和错误,但不呼应(重复)命令。 (这是的RepRap默认。)
M112:紧急停止
例如:M112
正在进行的任何举动立即终止,然后RepRap停工。 所有的电动机和加热器关闭,清除缓冲区。 它可以由主控制器上按下复位按钮重新启动。 看到M0。
M113 :设置挤出机的PWM
例如:M113
设置当前选定的挤出机的PWM。 就其本身而言,该命令设置RepRap对挤出机的控制器板上的电位计设置为当前选定的挤出机的步进电机的PWM。 随着一个S字段:
M113 S0.7
它使PWM设置为S值(70%)。 M113 S0关闭挤出机,直到收到其它M113 S0以外的指令。
M114:获得当前位置
例如:M114
这使RepRap机器报告其当前的X,Y,Z和E坐标到主机。
例如,机器返回一个字符串,如:
ok C: X:0.00 Y:0.00 Z:0.00 E:0.00
M115:获取固件版本和功能
例如:M115
请求当前微控制器的固件版本和能力,作为关键的细节返回到主机:该值由空格分隔,换行符终止。
固件的样本数据:
ok PROTOCOL_VERSION:0.1 FIRMWARE_NAME:FiveD FIRMWARE_URL:http%3A//reprap.org MACHINE_TYPE:Mendel  EXTRUDER_COUNT:1

这个M115代码执行是不一致的,不期望在所有情况下都正确输出。 初步协议于2010年10月11日,致力于FiveD Reprap固件使用svn。 正式的定义协议版本,目前2010年(十月)正在讨论。 http://reprap.org/wiki/M115_Keywords
M116:等待
例如:M116
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

12

帖子

1046

积分

金牌会员

Rank: 6Rank: 6

积分
1046

medal1

 楼主| 发表于 2016-1-25 00:22:59 | 显示全部楼层
等待所有的温度和缓慢变化的其他变量都到达设定值。 看到M109的。
M117:获取原点
例如:M117
这将使RepRap机在这些轴最后碰到原点时同步报告X,Y,Z和E (不是mm)到主机。 这就是说,当你零X,X的坐标在碰到X轴的限位定档时会被记录, 这个值应该是0。 但是,如果机器已经偏离,那么就不会是。 这个命令允许你测量和诊断等问题。 (E被列入完整性,通常不会有限位定挡。)
M118:协商特点
例如:M118 P42
M代码是为未来的打样。目前无固件或hostware的支持,。 它结合M115的关键字特点一起使用。
http://reprap.org/wiki/Protocol_Feature_Negotiation
M119:获得限位定挡的状态
例如:M119
返回当前X,Y,Z轴限位开关配置的状态。 应注意任何“反向限位定挡”的设置,才可以确认本机已正确理解endstops。
M126:打开阀门
例如:M126 P500
打开挤出机的阀(如果有),并等待500毫秒。
M127:关闭阀门
例如:M127 P400,
关闭挤出机的阀门(如果有),并等待400毫秒。
M128:设置挤出压力的PWM
例如: M128 S255
通过PWM值(0~255)控制内部挤出压力。 S255是全压。
M129:关闭挤出机压力
例如:M129 P100
除了挤出机压力设置为0,你可以把压力完全关闭。 P100,等待100毫秒。
M140:床温(快速)
例如:M140 S55
床的温度设定到55℃和立即返回控制到主机上( 在此之前,床温度已达到)。
M141室(Chamber)温度(快速)
例如: M141 S30
室的温度设定到30°C 并立即返回控制到主机上(在此之前,温度已达到)。
M142:保持压力
例如:M142 S1
设置在床的保压至1 bar。
保持压力是在bar。 对于硬件的开关控制,保压为零时,关闭,当压力大于零,打开保压。
M143:最大的加热头温度
例如:M143 S275
设置加热头最高温度到2750C
当加热头温度超过此值,采取相应措施,例如紧急停止。 这是为了防止热伤害。
M160:混合材料的数量
例如:M160 S4
设置目前挤出机可以处理的指定的材料数目N。 默认值是1。
当N> = 2,那么控制挤出E就需要N +1的值,由空格分隔:
M160  S4

G1 X90.6  Y13.8  E22.4  0.1  0.1  0.1  0.7
G1 X70.6  E42.4  0.0  0.0  0.0  1.0
G1 E42.4  1.0  0.0  0.0  0.0
第二行,直接移动到点(90.6,13.8)挤出22.4毫米长丝。移动到最后的混合比例为0.1:0.1:0.1:0.7。
第三行在X轴移回20毫米挤出20毫米长丝。 移动后的混合比例由0.1:0.1:0.1:0.7 变到 0:0:0:1
第四行没有物理效果,但将开始下一步以1:0:0:0为配比的动作。
M203:记录Z的调整
例如:M203 Z-0.75
这记录了Z偏移RepRap的微控制器的永久性内存的调整,它一直有效直到下一次设置,即使关闭了电源。 如果第一层离床太近,你需要将床向下移动,所以Z值将是负数。 如果在第一层喷嘴离床太远要升高床,Z值是正的。 最大调整+ /-1.27毫米。
M226:G代码启动暂停
例如:M226
如果暂停按钮被按下,以同样的方式启动暂停。
M227:使能自动反向和做准备
例如:M227 P1600 S1600
P和S是步进数。
M228:禁用自动反向和准备
例如:M228
M229:使能自动反向和作准备
例如:M229 P1.0 S1.0
P和S是挤出机螺杆的旋转。
M230:禁用/启用等待温度变化
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

12

帖子

1046

积分

金牌会员

Rank: 6Rank: 6

积分
1046

medal1

 楼主| 发表于 2016-1-25 00:24:03 | 显示全部楼层
例如:M230 S1
S1禁用S0使能等待温度变化
M240:开始输送带马达
例如:M240
允许输送带开始reprap的一部分大规模生产
M241:停止输送带马达
例如:M241

M245:开始冷却器
例如:M245
用来冷却零件/加热床,便于打印后零件的取出
M246:停止冷却器
例如:M246
M300:开启蜂鸣器
用法:M300 S<频率 Hz> P<持续 ms>
例如:M300 S300 P1000

C:选择工具
例如:T1
选择挤出机1号。 挤出机的编号从0开始。
建议的EEPRO(电可擦只读存储器)M配置代码
简述:每个RepRap的物理参数有部分应该是可保存也很容易配置的,如挤压步进/毫米,各项最大值等,这些参数目前都固件的代码里,使用户调整时能修改,重新编译固件。 这些配置可以存储在单片机的EEPROM中,并通过一些M代码修改。  
RepRap机器到主机的回复
所有的通信都在可打印的ASCII字符。 消息发送回主计算机是通过换行符终止:
xx [line number to resend] [T:93.2 B:22.9] [C: X:9.2 Y:125.4 Z:3.7 E:1902.5]  [一些调试或其他信息可能在这里]
XX可以是:
ok
rs
!!
ok表示无检测到任何错误。
rs表示重发,随后被重新发送行号。
!!表示已检测到硬件故障。 RepRap机器发送此消息后会立即停机。
 T 和 B的值是当前选定的挤出机和床的温度,只在响应M105时才能发送。 如果不存在这样的温度(如挤出机,在室温下工作没有传感器),然后返回值低于绝对零度(-273℃)。
C:表示跟随的坐标。 这些都是X:Y:等的值。 这些仅响应M114和M117才发送。
RepRap也可以发送行:
/ /这行是 调试或其他的信息。 它可以在任何时间发送。
这样的行会在前面加上/ /。
最常见的回答很简单:
ok
当机器一旦启动起来主机会在发其它前发送字符串
start
 这不应该被替换或增加。 (见上文M115)。
除了RepRap发送到主机的起始行,其它每行都有两个字符的前缀(ok,rs,!!或/ /)。
发送多行G代码的建议
要解决的问题
从主机发送到控制器发送的每一行G代码 都在发送 无锁定通信的下一行 前返回ok。 这使操作很慢,通常的USB-TTL转换器和主机的操作系统驱动程序也可能有大量的延迟,通常为10毫秒。
固件功能
Features Supported Via Gcodes in Firmware
Code         Description         FiveD 20100806         FiveD 20110207         Tonokip         Teacup (Triffid)
G0         rapid move         No         No         No         Yes
G1         Synchronised move         No         No         No         Yes
G2         Arc         No         No         No         No
G3         Arc         No         No         No         No
G4         Dwell/pause         No         No         No         Yes
G20         Units are Inches         No         No         No         Yes
G21         Units are Millimeters         No         No         No         Yes
G22         Units are Steps         No         No         No         No
G28         Go to predefined position (0,0,0 if not specified)         No         No         No         Yes
G30         Go to position then go to 0,0,0         No         No         No         Yes
G90         Absolute coordinates         No         No         No         Yes
G91         Relative coordinates         No         No         No         Yes
G92         Set offset/set current position         No         No         No         Yes
G161         Find zero endstop (home)         No         No         No         Yes
G162         Find max endstop (home)         No         No         No         Yes
M2         Program End         No         No         No         Yes
M3         Spindle (extruder) on, forwards         No         No         No         Yes
M4         Spindle (extruder) on, reverse         No         No         No         No
M5         Spindle (extruder) stop         No         No         No         Yes
M6         Load tool specified by T word         No         No         No         Yes
M7         Coolant (fan) on         No         No         No         Yes
M9         Coolant (fan) off         No         No         No         Yes
M84         Stop idle hold                                 Yes
M101         Extruder on         No         No         No         Yes
M103         Extruder off         No         No         No         Yes
M104         Set target temperature         No         No         No         Yes
M105         Read temperature         No         No         No         Yes
M106         Fan on         No         No         No         Yes
M107         Fan off         No         No         No         Yes
M109         Set temperature and wait         No         No         No         Yes
M110         Set line number         No         No         No         Yes
M111         (f/w specific)         No         No         No         Yes (set debug flags)
M112         Immediate stop         No         No         No         Yes
M114         Read position         No         No         No         Yes
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

12

帖子

1046

积分

金牌会员

Rank: 6Rank: 6

积分
1046

medal1

 楼主| 发表于 2016-1-25 00:25:13 | 显示全部楼层
本帖最后由 zdall911 于 2016-1-25 01:42 编辑

M115         Read Firmware Identification         No         No         No         Yes
M116         Wait (see M109)                                 Yes
M130         (f/w specific)         No         No         No         Yes (set heater P factor)
M131         (f/w specific)         No         No         No         Yes (set heater I factor)
M132         (f/w specific)         No         No         No         Yes (set heater D factor)
M133         (f/w specific)         No         No         No         Yes (set heater I limit)
M134         (f/w specific)         No         No         No         Yes (save PID settings to EEPROM)
M135         (f/w specific)         No         No         No         Yes (set heater output)
M136         (f/w specific)         No         No         No         Yes (read PID parameters)
M140         Set Bed Temperature         No         No         No         Yes
M190         Power On         No         No         No         Yes
M191         Power Off         No         No         No         Yes
M200         Report endstop status                                 Yes
M240         (f/w specific)         No         No         No         Yes (Echo on)
M241         (f/w specific)         No         No         No         Yes (Echo off)
M250         (f/w specific)         No         No         No         Yes (read position, queue)
M253         (f/w specific)         No         No         No         Yes (read arbitrary memory)
M254         (f/w specific)         No         No         No         Yes (write arbitrary memory)


旧的G代码用法http://reprap.org/wiki/Arduino_GCode_Interpreter
固件配置
为了正常运行的固件,您必须适当的配置固件中的变量,然后上传固件到Arduino。该值存储在 _init.pde文件中。 例子版本在 _init.pde.dist中。
X_STEPS_PER_INCH
这个变量存储移动X轴1英寸需要步进多少。 如果你想你的机器是准确的,你需要尽可能设置准确。 有两种方法来设置它:
1.移动和测量 – 直接用笔或标记并绘制1000步的线。 测量出总长再计算出每步是多少英寸。
2.计算步长 - 这是首选方式。 它根据传动装置比较容易计算步长。
对于螺杆驱动系统:
找出TPI(每英寸螺纹)。 例如,1/4“-20螺纹杆是指每英寸有20个螺纹(即20圈= 1英寸),简单地采取这一数字乘以运行的步数。400步进电机(转1圈为400步?),它会是每英寸8000步。
对于皮带/滑轮系统:
1.找到驱动滑轮的周长。(例如:2.75“)
2.计算步长(即:每转一圈的周长/步数)(说:2.75“/ 400 = 0.00625”)
3.计出每英寸步数(1“/ 0.00625 = 160步/英寸)
X_STEPS_PER_MM
这个变量上移动X轴1毫米要转几步。 你可以独立计算出它,或用上述数量(英寸的)除以25.4。(1英寸=25.4毫米)
X_MAX_SPEED
这个变量存储在RPM(每分钟转速)步进的最高速度。 这是很重要的,因为它决定以最​​快的速度移动的步进。如果你不确定合适的速度,就 用低速启动工作。
X_MOTOR_STEPS
这个变量存储每一转的步数。 这参数在电机数据表会有说明
如果用半步进模式步进,则步数为两倍。 同样,如果使用microstepper来驱动,则要乘以对应的系数。
Y_ *,Z_ *
这些变量作为上述变量是相同的。
FAST_XY_FEEDRATE和FAST_Z_FEEDRATE
这些定义的G0命令使用的最大进给速度。 毫米/分钟的进给。
发送命令
Arduino固件等待串口命令,当遇到换行符或者没有读到更多的字符后开始处理命令。
通过G代码固件来控制机器有几种方式:
你可以编写自己定义的主机软件发送命令,
使用 Zach Smith的ReplicatorG 
使用的RepRap主机软件发送命令,
使用已经捆绑发送命令的处理程序。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

3

帖子

1027

积分

金牌会员

Rank: 6Rank: 6

积分
1027

medal1

发表于 2016-1-25 19:50:34 | 显示全部楼层
学习了~
回复

使用道具 举报

  • TA的每日心情
    开心
    2022-3-11 12:10
  • 签到天数: 41 天

    [LV.5]常住居民I

    14

    主题

    113

    帖子

    1869

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    1869

    medal1

    发表于 2016-1-26 13:36:06 | 显示全部楼层
    好资料,收藏慢慢看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-3-30 09:11
  • 签到天数: 1532 天

    [LV.Master]伴坛终老

    88

    主题

    1848

    帖子

    2万

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    23704

    medal1

    发表于 2016-5-18 01:11:20 | 显示全部楼层
    慢慢学习了。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    中华DIY论坛QQ官群:205778249

    Archiver|手机版|小黑屋|中华DIY论坛  

    GMT+8, 2024-3-29 09:16 , Processed in 0.226016 second(s), 35 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表