开源改变世界

螺旋运动与 Gcode 规范或预览工具不匹配 #236

推推 grbl 3年前 (2022-10-30) 359次浏览 0个评论
关闭
ruswerner 打开了这个问题 2013 年 6 月 5 日 · 19 条评论
关闭

螺旋运动与 Gcode 规范或预览工具不匹配#236

ruswerner 打开了这个问题 on 5 Jun 2013 · 19 条评论

注释

螺旋运动与 Gcode 规范或预览工具不匹配 #236

我正在玩这样的螺旋运动切割通孔:

G0 X0 Y100
G2 X0 Y100 Z-50 I0 J-100 P10 F100
M30

这应该通过 50 毫米的材料向下切割一个螺旋孔,每转 5 毫米(总共 10 圈)。

这是使用 LinuxCNC 的预览:

螺旋运动与 Gcode 规范或预览工具不匹配 #236

我在我的 ShapeOko 上通过 grbl 运行它,它试图在单圈内完成 50 毫米的全切,这并没有让我的主轴高兴。然后我扫描了 grbl 源代码中是否提到了 G2“P”参数,但找不到它。这让我相信这不被支持?我可以解决它,但应该提到它是否支持,因为如果你不知道它会导致严重的问题。谷歌搜索“grbl helical”出现“完全支持螺旋运动”。

谢谢!

螺旋运动与 Gcode 规范或预览工具不匹配 #236

关于我所说的更多背景:

“要对给出多于一整圈的弧进行编程,请使用 P 字指定弧的整圈或部分圈数。如果未指定 P,则行为就像给定 P1:即,只有一个整圈或部分圈将产生转弯,给出小于或等于一整圆的圆弧。例如,如果用 P2 编程圆弧,则产生的运动将大于一整圆,最多两整圆(取决于编程的终点。 ) 支持多圈螺旋弧,并为铣削孔或螺纹提供有用的运动。”

取自:http ://linuxcnc.org/docs/html/gcode/gcode.html#sec:G2-G3-Arc

螺旋运动与 Gcode 规范或预览工具不匹配 #236

@ruswerner: 很遗憾听到螺旋运动没有达到您的预期。您可能知道也可能不知道,g 代码不是标准化的。不同的制造商、EMC2 等软件和其他软件都实现了略有不同的 g 代码。有些是完全一样的,有些不是。听到 G2 和 G3 不同,我感到很惊讶,因为它通常是更“标准化”的 g 代码之一。

这里的不同之处在于我们使用 NIST v3 g-code 标准。它使用不在选定平面中的轴来定义螺旋轴向距离,而不是“P”。例如,如果选择了 XY 平面,则“K”偏移变量将用作“P”。试试这个。这应该可以解决您的问题。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

哎呀,来晚了。我的意思是“Z”应该定义距离,而不是“K”。无论如何,NIST 标准并没有像您所说的那样定义“P”值。因此,您可能需要让您的 CAM 为您需要的每个螺旋圆发布多个 G2 命令。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

我很幸运使用圆弧进行螺旋钻孔并添加 Z 变量。

代码片段:

G01 F60.00 X0.9250
G02 X0.7500 Y0.5440 Z-0.0150 I-0.1750 J0.0000
G02 X0.5750 Y0.7190 Z-0.0300 I0.0000 J0.1750
G02 X0.7500 Y0.8940 Z-0.0450 I0.1750 J0.0000
G02 X0.9250 Y0.7190 Z-0.0600 I0.0000 J-0.1750

我编写了一个 perl 脚本来生成孔阵列并使用 4 个 90 度弧创建孔。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

@ruswerner: 我想问题是:你想看到安装到 Grbl 中的“P”值选项吗?我们确实遵循了一些在 NIST v3 标准中未定义或未“很好”定义的 linuxcnc.org g 代码描述。我认为这样做并不难,但如果有足够多的人认为这是必要的,我可以在不久的将来添加它。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

@chamnit感谢您的澄清!有 P 参数会很好,但是如果你知道它应该做什么,它就很容易解决。我只是添加了一个循环来生成一系列弧;每一步增量一个。所以,在这个阶段,我会说继续专注于更重要的事情,稍后再回到 P 支持。

我对此的跟进是关于 gcode 准确预览的问题。我使用的是 LinuxCNC,因为 3D 预览是迄今为止我发现的最好的(我使用的是 OSX/Linux VM)。您对尽可能接近 grbl 的更好(免费)gcode 预览器有什么建议吗?如果找不到好的 JavaScript,我正在认真考虑用 JavaScript 编写一个。我发现一些用于 3D 打印机 (makerbot) 的打印机不适用于路由器 gcode。

此外,我编写的 JavaScript DSL 的 beta 版本几乎完成了,它生成了特定于 grbl 的 gcode。这是一个示例:


var jscam = require('./jscam');
var shapeoko = new jscam.Router();
var tool3mm = new jscam.Tool({ diameter:3 });
shapeoko.begin();
shapeoko
    .use(MILLIMETERS)
    .use(ABSOLUTE_COORDINATES)
    .use(XY)
    .use(tool3mm);
shapeoko.setSafetyHeight(5);
shapeoko.setFeedRate(300);
shapeoko.startSpindle();
shapeoko.circlePocketAt(0,0)
    .down(10)
    .step(1)
    .overlap(50..percent())
    .inside(10..diameter())
    .then()
    .stopSpindle();
shapeoko.travelTo(0,0).safely();
shapeoko.startSpindle();
shapeoko.drillAt(0,0)
    .down(18)
    .step(1)
    .outside(60..diameter())
    .then()
    .stopSpindle();
shapeoko.travelTo(0,0).safely();
shapeoko.end();

我将很快在 github 上发布,供任何感兴趣的人使用。

螺旋运动与 Gcode 规范或预览工具不匹配 #236
贡献者

tmpvar 评论 2013 年 6 月 6 日

@ruswerner前段时间我写了这个东西,它是一个基本的gcode 模拟器。它需要一些认真的爱;代码在这里:https ://github.com/tmpvar/gcode-simulator

我有一个正在进行的事情(需要更多时间!),它使用 grbl 的模拟部分作为 webgl 显示的后端。它基本上是 grbl 的包装,可以在这里找到。

我有非常相似的目标,但接下来几周我的时间非常有限,但我们绝对应该一起战斗!

螺旋运动与 Gcode 规范或预览工具不匹配 #236

@tmpvar我会看看那些项目。我认为社区需要一些特定于 grbl 的东西,因为它非常流行并且与其他工具/平台不太兼容。我一直在努力寻找好的软件工具和工作流程。


我还在编写一个基于 Web 的前端来控制 shapeoko/grbl 机器。它是为 nodejs 编写的,旨在在直接连接到 arduino 的无头树莓派上运行。它在功能上与 Universalgcodesender 非常相似,但在浏览器中运行。这使您可以在您的设置中添加一个便宜的附加组件(树莓派 35 美元),并能够从任何触摸屏/笔记本电脑控制您的机器。我最终希望将其扩展为包括对 makercam 的重写,其中包含准确的 grbl 3D 预览。我到了那里,但很慢。

以下是原型的一些截图:

螺旋运动与 Gcode 规范或预览工具不匹配 #236

螺旋运动与 Gcode 规范或预览工具不匹配 #236

螺旋运动与 Gcode 规范或预览工具不匹配 #236

螺旋运动与 Gcode 规范或预览工具不匹配 #236

关闭这个问题,因为我们现在离话题很远…… :-)

螺旋运动与 Gcode 规范或预览工具不匹配 #236
贡献者

Protoneer 评论 2013 年 6 月 6 日

@ruswerner我正在研究类似的想法,rPi 通过浏览器发送信号。您是否会分享您的代码,因为我很想看看它…… :)

我一直在研究 Raspberry Pi 到 Arduino Bridge 屏蔽。几周前我组装了我的第一个,它们就像一个魅力。http://blog.protoneer.co.nz/arduino-to-raspberry-pi-bridge-shield-pcbs-finally-arrived/

如果您有兴趣成为 Beta 测试人员,我可以给您发送一份。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

@Protoneer一旦我有工作,我将分享我的代码;希望不会太久。我确实想测试你的盾牌。我一直在使用 USB 电缆与 btwn rPi 和 Arduino 进行通信,效果很好,但是堆叠设置会给我一个 USB 端口,并且更紧凑。

我会直接给你发邮件交换细节。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

@ruswerner:那里有一些 Grbl 可视化工具。我认为通用 Gcode 发件人@winder至少在开发层面上已经这样做了。好久没查了 他们中的大多数使用我们的 Grbl 模拟器代码,该代码允许将 Grbl 代码库编译为标准输入/粗体格式,该格式可以与可视化器之类的任何东西连接。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

@chamnit谢谢!实际上,我只是在我的 Mac 上编译了 grbl_sim(在 Mac 上运行 ./grbl_sim.exe 很奇怪)并且正在消耗输出流。真的很酷的东西!

螺旋运动与 Gcode 规范或预览工具不匹配 #236

@twforeman给你的问题……使用 4 个 90 度圆弧与单个 360 度圆弧(圆)相比有什么优势?看来,无论哪种情况, grbl 无论如何都会将其全部转换为非常小的线段。我想我要问的是这是否是我不知道的“最佳实践”..谢谢。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

@ruswerner我在某处读到过这种方式“效果更好”。有些控制器不喜欢在同一点开始和结束的弧线。我不确定这是否是 GRBL 的问题(可能不是),但是以这种方式对它们进行编程非常容易,所以我做到了。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

仅供参考,G2/3 的编写和定义方式使得整圆很容易受到数值错误的影响,特别是在“半径”模式下以及绘制整圆或 > 180 度的圆弧时。一些 CNC 控制器只允许四分之一圆弧,一些半圆。在大多数情况下,如果您使用“IJK 偏移”模式,数值误差应该不是问题。无论如何,打破你的弧线是一个好习惯,以防你在一些有这个问题或执行不善的机器上运行你的程序,以至于这个错误真的很糟糕。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

惊人的。感谢您的提示。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

我还读到一些(非常旧的)机器不喜欢跨越象限边界(0、90、180 和 270 度)的弧,如果你需要跨越边界,你必须把它写成两个弧。

螺旋运动与 Gcode 规范或预览工具不匹配 #236

仅供参考,几个月前我在大修规范层的一部分时修复了解释 P 词的问题,因此带有 P 词的 G2/3 现在应该在 linuxcnc 的 master 分支上按预期工作。精确的 180 度仍然存在数值问题。/ 360 度弧,如 chamnit 所述,但多圈不再是问题。

螺旋运动与 Gcode 规范或预览工具不匹配 #236
喜欢 (0)

您必须 登录 才能发表评论!