G 代码方言支持
Rayforge 支持多种 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+ | 深度感知激光雕刻 |
| LinuxCNC | LinuxCNC | 原生 Bézier (G5) 支持 |
| Mach4(M67 模拟) | Mach4 | 高速光栅雕刻 |
| Smoothieware | Smoothieware | 激光切割机、CNC |
| Marlin | Marlin 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 代码方言:
- 打开 机器设置 → G 代码方言
- 在内置方言上点击 复制 图标以创建新的自定义方言
- 根据需要编辑方言设置
- 保存您的自定义方言
每个自定义方言都是独立的副本。更改一个方言不会影响其他方言,因此您可以自由尝试,不必担心破坏现有配置。自定义方言存储在您的配置目录中,可以共享。
方言设置
编辑自定义方言时,设置页面提供以下选项:
连续激光模式 使激光在整个作业过程中保持动态功率模式(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_cmd | X 轴命令字符串,例如 " X100.0"。未更改时省略(如果启用了"省略未更改的坐标") |
y_cmd | Y 轴命令字符串,例如 " Y200.0"。未更改时省略 |
z_cmd | Z 轴命令字符串,例如 " 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_num | WCS P 编号(例如 1 代表 G54) |
max_travel | 最大探测行程距离(仅探测循环) |
feed_rate | 探测进给速率(仅探测循环) |
暂停
| 占位符 | 描述 |
|---|---|
seconds | 暂停持续时间(秒),浮点数(例如 1.5) |
milliseconds | 暂停持续时间(毫秒),整数(例如 1500) |
提示
- 支持格式规范:
{power:.0f}将功率格式化为整数,{power:.2f}为两位小数。 - **"省略未更改的坐标"**设置控制当轴位置自上次命令以来未更改时,
x_cmd、y_cmd和z_cmd是否留空。这会减小 G 代码的大小。 - **"模态进给速率"**设置控制当进给速率未更改时是否省略
f_command。 - 将模板字段留空可完全跳过该命令(例如,将
bezier_cubic设为""可禁用原生贝塞尔输出,改用线性化)。