对话
很好!代码看起来很可靠,我喜欢在管道中更早地丢弃多余的字符。我会尽快去的。你能提供一些你使用过的测试文件的例子吗?我对 ‘)’ 的支持特别感兴趣。我一直认为评论必须跟在命令之后。我们真的需要支持行内注释后跟命令词吗?我从来没有预料到 – 但话又说回来,我从未见过很多真实世界的 G 代码文件。 |
我刚给你发了一个我一直在使用的测试 gcode 文件。它有一些 grbl 不支持的东西,但主要是机器特定的(Haas 5 轴,’O’ 命令)。你可能需要在这里和那里修剪一些东西才能让它为你工作,但我给了你完整的版本。它遵循一个圆的内周和外周,然后是一个正方形,每个周长顺时针和逆时针旋转。我的朋友对这个项目很感兴趣,如果你愿意,愿意为你提供一些其他的 g 代码校对程序。 此外,他还使用 Nxx 行号作为程序中单独操作开始的可搜索位置,随后是描述它是什么的注释。他说,如果您有很长的程序并且需要快速定位和编辑块以解决 CAM 系统可能有问题或手动更快完成的事情,这将非常方便。他显然不再对所有内容进行行编号,因为它会占用控制器上的存储空间。 至于’)’,所有的注释都应该用’)’结束,你应该能够在之后立即编写g代码命令。据我的机械师朋友说,这在实践中并不经常使用,但每个人在使程序可读性方面都有不同的风格。 |
Simen:不确定您是否关注过您在“论坛”中与 Alden、Jens 和我的对话。我相信我们已经提出了一个强大的解决方案来处理计划程序中的混蛋。Jens 说他发现 max_jerk 参数给出了很好的结果,但如果运行弧太大或太小就会遇到问题。这是由于 max_jerk 参数是结点向心加速度的线性近似值。我想出了一种无需任何正弦/余弦计算的有效方法来稳健地计算它。请尝试代码,让我知道它是怎么回事。 如果您在运行时遇到任何“颠簸”,只需增加 settings.junction_deviation 参数即可。它在 0.1mm 和 25mm/sec^2 加速度下对我来说效果很好。 |
Planner 已经过优化并且运行得更好。(在大多数情况下,它会很好地运行你的弧线实现。当进入两个弧线之间的连接点时它会停止,因为它会在计算下一个弧线运动的所有初始弧线计算时数据不足。)所以,我重新-编写的弧形运动功能也明显更快。它使用变换矩阵方法并准确校正数值漂移。它在我的机器上运行没有任何问题。如果您有机会查看它,请告诉我。 |
泗门。修复了减速结束时的长坡,以及许多其他问题。我加工了菱形圆形方形试块来验证我的 CNC。公差低于 0.001″,表面光洁度非常好,这意味着 grbl 运行顺利且没有任何障碍。Alden Hart 一直在他的机器上测试代码,并报告说代码在高速下也能很好地工作,尤其是在编织 gcode。不确定你在 grbl 的开发中的位置或这些天你有多少时间,但请告诉我。我计划继续你离开的地方并帮助将 grbl 开发到 v1.0 状态。 |
泗门、
对提交次数感到抱歉。仍在学习 github 的工作原理。
应该只更改了两个文件。这个 pull request 应该可以解决我遇到的一些问题,这些问题是我在工作时遇到的一些 gcode 测试文件,这是主管机械师给我的。他通常在初始化块末尾附近使用块删除,在测试他的 gcode 时打开和关闭主轴。他还倾向于将 Nxx 行号放在所有内容的前面,甚至是注释。最后,当发送空行时,grbl 不会发回“ok”让流式脚本识别命令已收到,并且会无限期地挂起等待。这应该修复我遇到的错误并释放一些内存,因为评论不再被保留并传递给 gcode 解析器。
但是,我不确定如何告诉流式脚本如何在仅返回“ok”时辨别空命令或 g 代码块。这意味着流式脚本无法判断使用有效命令预缓冲多少,直到串行端口在满时关闭。有几种可行的方法:在“ok”语句后附加缓冲区大小(即“ok:12”或“ok:01”),或者用不同的命令回复空块(即“ok empty”、“ n/a’,或’跳过’)。
桑尼。