Contact me: hankecnc@gmail.com

$G 命令被视为未确认 #1100

推推 grbl 3年前 (2023-02-02) 261次浏览
关闭
vatral 打开了这个问题 2018 年 12 月 16 日 · 6条评论
关闭

$G 命令被视为未确认#1100

vatral 打开了这个问题 2018 年 12 月 16 日 · 6条评论

注释

$G 命令被视为未确认 #1100
贡献者

我正在努力解决我当前与 Smoothieboard 相关的问题。其中之一似乎是 bCNC 认为某些命令尚未完成,将它们保留在缓冲区中,工作最终在它们堆积时停滞不前。

这是我发现可以预见的工作方式:$G

再生产:

  1. 启动程序

从协议日志:

?$H
<Idle|MPos:0.0000,0.0000,0.0000|WPos:0.0000,0.0000,0.0000|F:4000.0,100.0>
$G
?<Home|MPos:0.0000,0.0000,0.8120|WPos:0.0000,0.0000,0.8120|F:240.0,4000.0,100.0>
...
?<Home|MPos:0.0000,0.0000,39.3253|WPos:0.0000,0.0000,39.3253|F:120.0,120.0,100.0>
ok
?[G0 G54 G17 G21 G90 G94 M0 M5 M9 T0 F4000.0000 S0.8000]
<Idle|MPos:0.0000,0.0000,39.0000|WPos:0.0000,0.0000,39.0000|F:4000.0,100.0>

缓冲:
$G

手动发出 $G 具有相同的效果,$G 不断堆积在缓冲区中。

GRBL 文档 ( https://github.com/gnea/grbl/wiki/Grbl-v1.1-Commands ) 表明这是正确的:

将此命令发送到 Grbl 时,它将回复一条以 [GC: 指示符开头的消息,例如:

[GC:G0 G54 G17 G21 G90 G94 M0 M5 M9 T0 S0.0 F500.0]

但是,我目前没有 Grbl 开发板。有人可以确认 Grbl 之后是否说“ok”,以及是否有指定正确答案的标准?我不确定是修复 smoothie 还是 bCNC,但我想目前 bCNC 中的 smoothie 特定解决方法可能是有序的。

$G 命令被视为未确认 #1100
贡献者作者

进一步的测试表明这可能是我的问题的根源:

我尝试了一个由多次重复组成的测试文件:

G0 X1.0 Y1.0
G0 X2.0
G0 Y2.0
G0 X1.0
G0 Y1.0

这工作得很好。

但是在那之前做一个 $G ,事情就会变得一团糟。第一个 $G 被认为是未确认的,然后对 G0 的“确定”被视为对 $G 的确认,最后缓冲区中有 G0 命令并且 bCNC 被卡住以供确认。

所以看起来至少 $G 和其他命令的确认机制被破坏了。这可能是 Smoothie 或 bCNC 的错,我不确定是哪一个。

$G 命令被视为未确认 #1100
贡献者作者

唔!这是 grbl 的作用:

https://github.com/grbl/grbl/blob/master/grbl/protocol.c#L49

} else if (line[0] == '$') {
    // Grbl '$' system command
    report_status_message(system_execute_line(line));

report_status_message 将始终打印“ok”或错误:https ://github.com/grbl/grbl/blob/master/grbl/report.c#L40

这是有道理的,尤其是看到 $H 确实得到了“确定”。

现在我们来看看 Smoothieware,结果它故意跳过了通知,根据评论:

https://github.com/Smoothieware/Smoothieware/blob/edge/src/modules/utils/simpleshell/SimpleShell.cpp#L216

          case 'G':
               // issue get state
               get_command("state", new_message.stream);
               //new_message.stream->printf("ok\n"); // sending this while printing will cause ok count to get out of sync
               break;

这来自 2018 年 9 月 30 日的提交 54f0098a4,不幸的是,它没有提供任何关于理由的解释。

所以很明显有人必须在这里改变一些东西。我将尝试在 Smoothieware 上打开错误报告。我想如果他们想保留它,bCNC 将需要一个解决方法。

$G 命令被视为未确认 #1100
贡献者作者

报告给 Smoothieware:

冰沙/冰沙#1356

经过一番讨论,确定了。我明天会做一些测试。

所以确认这不是 bCNC 错误,但在关闭它之前,我建议将这个添加到常见问题解答或文档中的其他地方,以防其他人遇到它?

$G 命令被视为未确认 #1100
合作者

在关闭它之前,我建议将这个添加到常见问题解答或文档中的其他地方,以防其他人遇到它?

哪些版本的 smoothie 受此影响?

$G 命令被视为未确认 #1100
贡献者作者

不幸的是,Smoothieware 似乎根本没有编号的版本或版本号。

受影响的版本将是 2018 年 9 月 30 日之后发布的任何内容。

第一个固定版本在 commit a555b096 中上传,时间为 2018 年 12 月 15 日星期六 22:20:56 +0000

我已经测试过了,$G 的问题已经解决了。

$G 命令被视为未确认 #1100
合作者

不幸的是,Smoothieware 似乎根本没有编号的版本或版本号。

我不确定要在常见问题解答中添加什么。如果他们没有版本控制方案,那就有点难了。我想我只是补充一下,用户应该始终使用最新版本的控制器固件,尤其是 smoothieware。

我暂时关闭它。因为 bCNC 没有真正的问题。