注释
这是我能做到的。用户可以为 grbl 抱怨的内容动态创建命令和用户自定义操作的数据库。……我把它留到我回家的时候:) |
@vlachoudis: 一些 ShapeOko 用户今天一直在评论这个,并提出了类似的解决方案。一些 g 代码是惰性的,如 G40,但其他的则不是,如 G41/42。他们每个人都需要特殊处理。( http://www.shapeoko.com/forum/viewtopic.php?p=47086#p47086 ) |
@chamnit我对根据 gcode 行的内容记录操作的方法有点怀疑。我的意思是,我很难理解 grbl 不喜欢的违规行中的哪个命令。它将在很大程度上取决于 grbl 版本。 根据 grbl 将返回的错误代码记录用户操作 [stop,ignore,feed-hold,wait-user] 会更正确 |
@vlachoudis:也许你是对的,但 Grbl 的错误并不能告诉你整个故事。Grbl 将在它检测到的第一个错误时做出响应,而不是所有错误都在一个块中。我仍然赞成让用户通过继续忽略、中止或重新发送修改来确定遇到错误时要做什么。 我也赞成使用 Grbl 的检查模式来预扫描错误并在运行作业之前将它们显示给用户。然而,Grbl 的检查模式并不是一个干净的实现,因为它在完成后软重置 Grbl。我正在研究一种沙盒检查模式的方法。也许,这应该是将来我可以解决它的标准协议。 |
@chamnit也许我不太清楚,bCNC 和 Grbl 报告的错误会提示用户(继续,忽略,…),如果用户选择它,将来会记录类似消息的操作。然而,动作的记录将基于错误代码,grbl 返回而不是行内的违规命令。 检测一行中有问题的命令是什么,gui 需要知道 grbl 接受什么,这取决于 grbl 的版本。 一种选择可能是 grbl 返回以及返回字符串中的违规命令。 我也赞成在发送之前“预检查”gcode |
@vlachoudis: 不幸的是,许多错误代码在命令和输入词之间共享,例如某些词的负值或当一行中的两个命令使用轴词时。对于 Grbl 来说,提供导致错误的确切命令或命令集同样困难,尤其是对于输入词(P、L、R 等),因为它们对于不同的命令意味着不同的东西。 另一个问题是某些错误代码可能具有与其他错误代码不同的含义。例如,错误代码 20 for unsupported g-code command 未定义哪个 gcode 不受支持。假设它是一个您想忽略的惰性命令。问题是错误码20也是用来报M6换刀指令不支持的,所以不能随便忽略这个错误码。 您还必须重新发送一个“固定的”gcode 块,因为 Grbl 在响应错误时丢弃了该块:。 IMO,由于错误代码的定义方式以及多方面的 g 代码定义方式,因此没有很好的灵丹妙药解决方案。正典中的所有内容都有大量非常特殊的压倒一切的意义,这在很大程度上取决于以前的状态。实际上,最好将这种解释留给用户来决定。但是,允许用户定义忽略或特殊处理哪些。对于 bCNC,您可能只需要预定义少数几个自动忽略的典型命令,例如 M6。 |
@chamnit我明白了,它变得比我最初想象的更棘手。另一个“gui”做什么。默默地忽略错误? 在这种情况下,我更倾向于编写一个 gcode-checker 并在加载期间报告所有这些违规命令。因此用户必须在开始运行之前更正它们。你怎么认为? |
@vlachoudis: 是的。默认情况下,几乎所有这些都只是忽略错误。我认为有些人可以选择在出错时停止。Chilipeppr 在遇到 M6 换刀时为您提供一些控制。 使用解析器编写完整的 g 代码检查器将非常艰巨,但这是 Grbl 检查模式的预期功能。这减轻了 GUI 维护兼容代码列表的负担。在 Grbl 的检查模式下流式传输与波特率一样快,非常快。遇到 M0/2/30 时会出现错误。Grbl 在不该暂停的时候暂停。这很快就会得到解决。 如果您确实安装了检查器,我会说您需要做的就是根据不兼容代码列表扫描文档,例如 实际上,大多数用户只需要检查他们的程序几次。一旦他们弄清楚了他们的工作流程,他们就可以改变他们的 CAM 后处理器以自动删除有问题的命令或手动执行。在 bCNC 中拥有一个自动过滤器可能会成为以后问题的根源,因为它会对新用户不期望的程序进行操作。 所以,回来了。我认为 bCNC 只需要在程序运行期间更好地处理错误。
|
@chamnit好的,我会往这个方向走。 |
我赞成告诉用户 g 代码有问题并让他们重新处理 g 代码并重新开始。我认为这就是 grbl 的“检查 G 代码”功能的全部思想。 我认为“忽略”或“重试”选项可能存在安全隐患。我知道在小型机器上,错误/错误的 g 代码命令最多是破坏工具和/或工件,但通常只会使步进电机失速。这在大型机器上可能完全不同。并且没有理由认为更大的机器不会用 grbl 进行改装。我可以很容易地看到旧的 Bridgeport BOSS CNC 或大型 Mill/Drill 型机器正在改装 grbl。对于这种尺寸的机器,错误的 g 代码命令可能会导致不好的事情…… 只是我的观点。 布鲁斯 |
@1bigpig: 我完全赞成你。但是,这些小型机器的用户并不关心忽略 g 代码所涉及的安全隐患。大多数情况下,这些主要是 M6 换刀命令。或者,他们不知道如何更改他们的 CAM 后期,或者他们的 CAM 软件没有后处理器。通过启用或禁用它的选项并具有检查 g 代码功能,它应该涵盖所有基础。 |
我发现阅读这个问题真的很有趣,我喜欢你通过深入分析找到的解决方案。我相信它还涵盖了一些特殊情况,例如带有添加命令的自定义 grbl 版本。 |
@chamnit我已经开始研究了。现在有一个配置(目前仅在 .ini 中)命令跳过/剥离和阻止的位置。默认设置现在会跳过 M6 命令,但将来我会对其进行更适当的操作。 |
第一次运行后 |
@effer这是一项新功能。该程序现在从配置中删除与默认行相同的行。原因是要有一个更干净的 ini 文件,最重要的是,如果我更改默认配置文件中的某些内容,如果他们没有接触该功能,它将更新给每个人。 |
我会尽快在 wiki 上报告。 |
@vlachoudis: 仅供参考,刚刚发布了一个新的 Grbl 版本。有几个小方法会影响 bCNC。
|
谢谢@chamnit, 一旦我回来,我会在我的 CNC 上测试它。因此,如果我在进入 HOLD 状态时理解正确,我应该切换内部状态以与 grbl 匹配,然后单击一次就足够了。 |
@vlachoudis: 是的先生。这样就足够了。 |
@chamnit现在我正在更正状态以反映 grbl 状态代码 |
你好 我们在圣诞节尝试了 bCNC,但无法让它在我们的 RPi 上运行,当我发现你有多忙并且今天下午我们让它运行我们的 eShapeoko 时,我很高兴。有点小问题,但这可能是我们(我们也是新来的,老公是数控机械和电子,我被拖进了“软件”,因为我的 LED 灯闪烁了一次!) 你激励我变得勇敢,并提供了一些我一直在努力做的事情。(但不要指望你的水平) 重新检查 gCode 是否有错误。基于“pre-grbl”python 代码的东西会有帮助吗(抱歉,我不知道如何添加链接)我有一些你可能认为非常“学前”的东西,但欢迎你使用它。我使用了 pre-grbl 算法并将“输出”放入一个“ok/error”代码数组中,这些代码使用 tkinter treeview 在 gcode 行旁边显示。我们可以直观地扫描哪些行有效,哪些行无效(对于它相关的 grbl 版本 – 到目前为止,使用 9g 是可以的)。 |
@daisyfox这可能很有趣,尤其是在编辑器中突出显示所有有 g 代码错误的行/路径。然而,正如我们在上面讨论的那样,对 grbl 接受内容的 gcode 检查应该留在 grbl 上。 |
没问题,我会把它留给我自己的。只是觉得有总比没有好(尤其是在短期内),还有我们使用 grbl 的方式,我们真的不想在我们用来编译 gcode 的计算机和 cnc 机器之间传输文件,只是为了查明是否存在是错误(通常由 cam 生成但 grbl 不支持)然后必须返回非 cnc 机器重写 gcode。 @daisyfox这可能很有趣,尤其是在编辑器中突出显示所有有 g 代码错误的行/路径。然而,正如我们在上面讨论的那样,对 grbl 接受内容的 gcode 检查应该留在 grbl 上。 — |
最后一个问题。但我首先要重申,我知道我对编码知之甚少,所以这是一个关于可行性的问题,而不是“什么时候做某事”。 如果我对 9g 发送的响应的理解是模糊正确的(我调整它们以提供 4 个不同的“ok”消息,所以我从“实时执行 ok”中知道“gcode 执行 ok”)提供报告的 grbl 模块反馈给report.c的有system.c、protocol.c、gcode.c和setting.c。 问:是否有可能复制这些模块以提供/支持 python 库,以便重新使用 grbl 代码/模块(然后可以在更新 grbl 时刷新库) 再次感谢您所做的一切,这太棒了,我通过阅读代码(RPi 上的 bCNC 和 Arduino 上的 grbl)学到了很多东西 |
帮助你自己,我意识到如果我有 RPi sd 故障和/或意外 usb 删除我将无法重现多少,我还是上传了。 提到的内容在 PyGrbl-WiP-/PyGrbl_gCodeChecker_Treeview.py 中(请原谅存储库名称,由于不再支持我的浏览器而无法编辑的新手拼写错误,或其他一些问题) 认为最好也警告你,我也一直在 RPi 上的 python 2.7 和 3.2 之间徘徊,因为我玩过各种库试图让 wiimote 工作以慢跑机器。 感谢您对我的问题的回答。我希望有一天能够理解到足以尝试制作 Python 库。我们坚定地坚持使用 RPi for Grbl(尺寸和成本),所以对我来说只有一个平台 再次感谢并祝你的项目的其余部分好运。 |
@vlachoudis @daisyfox:我想我们在这篇文章的前面讨论了进行 in-bCNC g 代码检查的问题。问题是各种 Grbl 版本支持不同的 g 代码,在 v0.9 中,g 代码解析器被完全重写以完全符合标准。它的行为有很大不同。检查 gcode 的最好和最可靠的方法仍然是使用 Grbl 的检查模式。虽然这是一个额外的步骤,但这使版本控制独立于 bCNC 必须支持的内容。 |
你好,我们又见面了 我已经能够使用 bCNC.py 的调整版本获得 gcode-checker 工作。它很简单,只保留两个列表(已发送的块和 grbl 回复),然后将它们作为匹配对显示在文本屏幕(如“终端”)上。 如果 grbl 发出多行回复,它就会失调!它看起来不像“编辑器”那么漂亮,它确实添加了重复(在“终端”/“检查器”上发送/记录,当然在“终端”上不同步,在“编辑器”/上也有 gcode 列表’检查员’) 我需要做笔记,以便我可以在 bCNC 的未来版本中重现,因为我们需要一些东西来让老公的儿子证明他的 gcode(他将在访问期间使用机器,他住在其他地方) 我想知道您是否也可以使用注释(添加的代码)。 |
@daisyfox我有一些关于如何实施的想法,但我暂时没有做任何事情。等待完成函数评估,这可以在运行时更改 gcode。 |
这个也用新界面修复了。单击机器状态以获取错误信息。 |
@vlachoudis: 我一直在想g代码错误的问题。我认为处理错误的最好方法是提示用户遇到错误时该怎么做。
例如,一个弹出窗口报告有问题的 g 代码行并询问用户是继续并忽略它还是取消作业。
在工具更改的情况下,此窗口还可以用作查询和控制 GUI 工具更改的方式。假设该行中有 M6 命令,弹出窗口可以添加一个新按钮来执行工具更改宏,这可以像向上移动 z 轴一样简单,也可以像移动触摸一样复杂关闭板和停车区域进行换刀。
我将对 Grbl 接口 wiki 进行编辑,使其成为标准协议。