Title: Date: 2014-10-05 15:52:00 Tag: 3dp, Kossel, GCode Status: public

以下我来简单总结一下我需要用到的 G-Code,本文涉及的内容大部分来自 RepRap:G-Code 以及 tontome.wordpress

概览

字母 意义
Gnnn 标准 G-Code 指令
Mnnn Reprap 定义的指令
Tnnn 通常是挤出头的代码
Xnnn X 坐标移动,Y,Z 同理
Fnnn 进料速度,以 mm/min 为单位
Ennn 控制进入挤出机的线材的长度
Nnnn 行码

延时发出的 G 指令

这些指令是逐条进入固件并执行的。固件中一般都设有一个缓存,用来存放未执行的代码。

命令 解释 例子
G0 快速移动 G0 X12 : 快速在 X 方向移动 12mm
G1 可控移动 G1 X10 Y5 E20 : 从当前点移动到 X=10, Y=5 的点,并挤出 20mm 的料丝; G1 F600 可以设置挤出速度为 600mm/min
G28 移动至原点 向着限位开关的方向移动,知道碰触限位开关时停止;G28 X0 Y70 会忽略 Z 方向的复位,X, Y 的数值不起作用
G29 细致的Z探测 G29 : 每个检查点的 Z 高度都测量 3 次
G30 当前位置的 Z 探测 G30 : 只探测当前 X-Y 位置的 Z 高度
G31 通报Z限位器是否已被触发 G31
G32 用于 FPU 的Z探测

即时执行的 G 指令

命令 解释 例子
G4 停顿 G4 P200 停顿 200ms, 停顿过程中很多量仍可以被控制,如挤出头温度等
G21 设置以mm 为单位
G90 设置成绝对位置
G91 设置成相对位置
G92 设置当前点为指定坐标
M0 执行完缓冲区指令后立即停止并关机
M1 执行完缓冲区指令后进入睡眠状态
M17 步进电机加电
M18 步进电机断电
M20 列出 SD 卡 根目录的文件
M21 初始化 SD 卡
M22 推出 SD 卡
M23 选定 SD 卡上的文件
M24 开始、继续 SD 打印
M25 暂停 SD 打印
M27 报告 SD 卡状态

设定/读取

命令 解释 例子
M92 设置 axis_steps_per_units M92 X
M104 设置挤出机温度, 然后立即将控制权转交给host M104 S190 : 设置挤出机到 190°C
M105 读取挤出头和热床温度
M106 风扇开 M106 S190 : 将风扇转速设定在 0-255 之间
M107 风扇关
M109 设置挤出头温度,并等待升温到此温度
M114 得到当前的位置 X Y Z 和挤出头 E 的位置
M119 返回限位开关状态
M134 将 PID 值写入到 EEPROM
M135 设置 PID 采样间隔 M135 S300 (设置采样间隔为 300ms)
M136 打印 PID 设置到 host
M140 设置热床温度,并立即交回控制权
M190 等待热床到设定的温度 M190 S60
M201 设定打印最大加速度 M201 X1000 Y1000 Z100 E2000 (设置 X,Y, Z 和 E 的加速度 unit/second^2
M203 设定最大 Feedrate (mm/minute) M203 X6000 Y6000 Z300 E10000
M207 通过测量 Z 轴的最大活动范围来校准 Z 轴 M207 (当把打印头移动到你认为的 Z=0 处时用这个命令,打印机会自动回位并记录 Z 轴移动的距离作为 Z_MAX)
M208 设置 X Y Z 轴的最大行程 M208 X250 Y210 Z180 (Marlin 中可以通过 M500 命令把设置结果保存到 EEPROM 中)
M240 照相
M301 手动设置 PID 的值 M301 P1 I2 D3
M303 自动PID调节 设置加热头:M303 S C 设置热床: M303 E-1 C S
M304 设置热床 PID 的值 M304 P1 I2 D3
M500 保存设置到 EEPROM 中 M500
M501 从 EEPROM 中读取设置 M501
M502 重置为出厂设置 M502 (还需要用 M500 保存)
M503 获取设置 M503
M565 设置探针和加热头之间的偏移量 M565 X3 Y4.5 Z-2.37
M660 设置 delta 的参数 M660 L250 R160 S200 (L = diagonal rod length, R = delta radius, S = segments per second.)
M906 设置各步进电机的电流(毫安) M906 X300 Y500 Z200 E350

Marlin-RichCattell 的特殊设定

因为我用的是 RichCattell 版本的 Marlin (此版本对于自动标定有了加强),这里有几个命令需要强调下:

命令 解释 例子
G30 可以 G30 X?? Y??,这是标定特定的点,或者 G30 A 代表自动调平 G30 A 之后,探头将会标定圆周上的六个点以及圆心,得出各个 Tower 的限位开关的修正值,以及各个杆长的修正值等等。
G29 传统的 7x7 网格调平,但是我不清楚其中的机理,调平后得到的数值是 Z 轴的高度,这些数值会直接被利用来补偿打印时的误差吗? G29 Z+0.3 让 Z 轴抬升 0.3mm