跳转到主要内容

G 代码方言支持

Rayforge 支持多种 G 代码方言以配合不同的控制器固件。

自动方言选择​

当发现 GRBL 设备时(通过设置向导或设备发现),Rayforge 读取固件的 $I 编译标志并自动选择最佳匹配的 G 代码方言——您通常不需要手动选择。之后您仍可在机器的 G 代码方言设置中覆盖此选择。

支持的方言​

Rayforge 目前支持这些 G 代码方言:

方言固件常见用途
Grbl(兼容)GRBL 1.1+二极管激光、业余 CNC
Grbl(兼容,无 Z 轴)GRBL 1.1+无 Z 的 2D 激光切割机
Grbl 光栅GRBL 1.1+针对光栅工作优化
GRBL 动态(深度感知)GRBL 1.1+深度感知激光雕刻
GRBL 动态(无 Z 轴)GRBL 1.1+深度感知激光雕刻
LinuxCNCLinuxCNC原生 Bézier (G5) 支持
Mach4(M67 模拟)Mach4高速光栅雕刻
SmoothiewareSmoothieware激光切割机、CNC
MarlinMarlin 2.0+带激光的 3D 打印机
推荐方言

Grbl(兼容) 是经过最充分测试和推荐的标准激光应用方言。

Grbl 光栅 针对 GRBL 控制器上的光栅雕刻进行了优化。它使激光保持动态功率模式(M4)连续工作,并省略冗余的进给速率命令,从而产生更平滑、更紧凑的 G 代码输出。

GRBL 动态(深度感知) 推荐用于深度感知激光雕刻,即在切割过程中功率会变化(例如可变深度雕刻)。

LinuxCNC 通过 G5 命令支持原生三次 Bézier 曲线,可生成非常平滑且紧凑的曲线路径 G 代码。使用此方言时,请在高级机器设置中启用"支持 Bézier 曲线"选项以利用 G5 输出。


Mach4(M67 模拟)​

Mach4(M67 模拟) 方言专为 Mach4 控制器的高速光栅雕刻而设计。它使用带有模拟输出的 M67 命令进行精确的激光功率控制。

主要特性​

  • M67 模拟输出:使用 M67 E0 Q<0-255> 控制激光功率,而不是内联 S 命令
  • 减少缓冲压力:通过将功率命令与运动命令分离,控制器缓存在高速操作期间压力更小
  • 高速光栅:针对快速光栅雕刻操作进行了优化

何时使用​

在以下情况下使用此方言:

  • 您拥有具有模拟输出功能的 Mach4 控制器
  • 您需要高速光栅雕刻
  • 您的控制器在使用标准内联 S 命令时遇到缓冲区溢出

命令格式​

该方言生成如下 G 代码:

M67 E0 Q127 ; 将激光功率设置为 50%(127/255)
G1 X100 Y200 F1000 ; 移动到位置
M67 E0 Q0 ; 关闭激光

创建自定义方言​

要基于内置方言创建自定义 G 代码方言:

  1. 打开 机器设置 → G 代码方言
  2. 在内置方言上点击 复制 图标以创建新的自定义方言
  3. 根据需要编辑方言设置
  4. 保存您的自定义方言

每个自定义方言都是独立的副本:更改一个方言不会影响其他方言或其他机器,因此您可以自由尝试,不必担心破坏现有配置。基于内置方言创建的副本会保留与该内置方言的链接:您未显式修改的模板字段会继续跟随内置方言,因此对内置方言的改进会自动应用到您的机器上,而您自己的修改会被保留,绝不会被覆盖。自定义方言存储在您的配置目录中,可以共享。

方言设置​

编辑自定义方言时,设置页面提供以下选项:

连续激光模式 使激光在整个作业过程中保持动态功率模式(M4)激活,而不是在段之间切换 M4/M5。这对于光栅雕刻很有用,因为激光需要在扫描线期间持续保持开启。

模态进给速率 当进给速率自上次命令以来未更改时,从运动命令中省略进给速率参数(F)。这会产生更紧凑的 G 代码并减少发送到控制器的数据量。

独立的激光开启命令用于对焦​

某些方言支持配置单独的低功率激光开启命令,这对于对焦模式非常有用。这允许您使用与实际切割或雕刻时不同的命令来实现视觉"激光笔"行为。请查看您的方言设置页面以了解此选项。


模板占位符​

创建或编辑自定义方言时,每个命令模板使用 Python 格式化字符串 占位符来注入动态值。使用 {name} 或 {name:.0f} 语法(例如 {power:.0f} 格式化为无小数的整数)。

按模板可用的占位符​

模板占位符
激光开启power
对焦激光power
激光关闭(无)
换刀tool_number
设置速度speed
快速移动x, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command
直线移动x, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command, i, j, power
圆弧(顺时针)x, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command, i, j, power
圆弧(逆时针)x, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command, i, j, power
贝塞尔三次x, y, z, x_cmd, y_cmd, z_cmd, extra_cmd, f_command, s_command, i, j, p, q, power
气泵开关(无)
全部归零(无)
轴归零axis_letter
移动到speed, x, y, z
点动speed
清除报警(无)
设置 WCS 偏移p_num, x, y, z
探测循环axis_letter, max_travel, feed_rate
暂停seconds, milliseconds

占位符参考​

坐标​

占位符描述
x目标 X 坐标,浮点数(例如 100.0)
y目标 Y 坐标,浮点数(例如 200.0)
z目标 Z 坐标,浮点数(例如 5.0)
x_cmdX 轴命令字符串,例如 " X100.0"。未更改时省略(如果启用了"省略未更改的坐标")
y_cmdY 轴命令字符串,例如 " Y200.0"。未更改时省略
z_cmdZ 轴命令字符串,例如 " Z5.0"。未更改时省略
extra_cmd附加轴命令字符串(A、B、C 轴),例如 " A90.0"。未配置附加轴时为空

运动​

占位符描述
f_command进给速率命令字符串,例如 " F3000"。模态且未更改时省略
s_command主轴/功率命令字符串,例如 " S500"。用于动态/光栅模式和连续激光模式
i圆弧或贝塞尔控制点相对于起点的 X 偏移
j圆弧或贝塞尔控制点相对于起点的 Y 偏移
p第二个贝塞尔控制点相对于终点的 X 偏移(仅贝塞尔三次)
q第二个贝塞尔控制点相对于终点的 Y 偏移(仅贝塞尔三次)

功率和速度​

占位符描述
power激光绝对功率值,浮点数。支持格式化,例如 {power:.0f} 为整数
speed速度值(用于移动到和点动命令)
tool_number刀具/激光头编号

机器和探测​

占位符描述
axis_letter单个轴字母,例如 "X"、"Y"、"Z"(用于轴归零和探测)
p_numWCS P 编号(例如 1 代表 G54)
max_travel最大探测行程距离(仅探测循环)
feed_rate探测进给速率(仅探测循环)

暂停​

占位符描述
seconds暂停持续时间(秒),浮点数(例如 1.5)
milliseconds暂停持续时间(毫秒),整数(例如 1500)

前导和后导​

前导和后导脚本支持一组单独的占位符,用于描述机器和当前作业:

占位符描述
machine.name机器名称
machine.active_wcs当前活动的工作坐标系(例如 G54)
machine.axis_extents[0]工作区域宽度(毫米)
machine.axis_extents[1]工作区域高度(毫米)
wcs_offset[0] … wcs_offset[2]活动工作坐标系的 X/Y/Z 偏移
doc.name正在导出的文档名称
job.extents[0] … job.extents[3]作业边界框:最小 X、最小 Y、最大 X、最大 Y

例如,有些机器会自行框定作业——即使离线运行 G-code 文件——通过从前导注释中读取作业边界:

; Bounds: X{job.extents[0]} Y{job.extents[1]} to X{job.extents[2]} Y{job.extents[3]}

提示​

  • 支持格式规范:{power:.0f} 将功率格式化为整数,{power:.2f} 为两位小数。
  • **"省略未更改的坐标"**设置控制当轴位置自上次命令以来未更改时,x_cmd、y_cmd 和 z_cmd 是否留空。这会减小 G 代码的大小。
  • **"模态进给速率"**设置控制当进给速率未更改时是否省略 f_command。
  • 将模板字段留空可完全跳过该命令(例如,将 bezier_cubic 设为 "" 可禁用原生贝塞尔输出,改用线性化)。

相关页面​