本帖最后由 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,在底部应选择“NL&CR”。) 这是不准确的,固件接受的单<NL>,以及单<CR>,或其组合。 主机应该接受所有四个组合 RepRapG代码字段 本节介绍了首字母的定义。 定义的数字nnn代表。 数字可以是整数,也可以包含一个小数点,根据上下文。 例如X坐标可以是整数(X175)或小数(X17.62),而试图选择挤出数2.76将毫无意义。 | | | | | | | 选择工具nnn。 在RepRap里,是选择几号挤出机 | | | | | | | | | | | | | | | | | | | | | | 挤出材料的长度(毫米)。 与X,Y和Z一样,但表示挤出丝拉伸长度,这基于系统更新的步进机来解释是一样的 :Skeinforge 40以上的版本就解释为输入长丝消耗的绝对长度,而不是挤压输出的长度。 | | | | |
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 |