开源改变世界!!

如果在文件加载后执行手动命令则跳过行 #26

推推 grbl 2年前 (2023-01-25) 124次浏览
关闭
alpharesearch 打开了这个问题 2012 年 11 月 18 日 · 6条评论
关闭

如果在文件加载后执行手动命令则跳过行#26

alpharesearch 打开了这个问题 2012 年 11 月 18 日 · 6条评论

注释

如果在文件加载后执行手动命令则跳过行 #26

我发现了一个小错误,好消息是它是可重复的。

  1. 连接到 GRBL
  2. 加载 gcode 文件
  3. 输入手动命令:$h 开始归位循环
  4. 按发送按钮发送文件
  5. 它会倒数一行,并且会忘记从文件中发送一行 gcode

解决方法

  1. 连接到 GRBL
  2. 输入手动命令:$h 开始归位循环
  3. 加载 gcode 文件
  4. 按发送按钮发送文件
  5. 工作正常
如果在文件加载后执行手动命令则跳过行 #26

我有一个可用于重现错误的文件。默认的 python 脚本运行一整天都没有问题,因此我确定这不是 Grbl 问题。我猜 Universal Gcode Sender 如果缓冲区有一些问题,因为如果它设置为 127,我会跳过链接,但我发现如果我将缓冲区更改为 60,它总是发送所有行。

这是我的测试文件,有时缺少带有“X0 Z-15.7”的行:

G55
G0 X0 Y0 Z-13
G4 P1
G1 Z-15
X10 Z-15.05
Y10 Z-15.1
X-10 Y-10 Z-15.3
G0 Z-13
X10
G4 P1
G1 Z-15.4
Y10 X-10 Z-15.6
Y0 Z-15.65
X0 Z-15.7
G0 X-80 Y80 Z20

我使用 Grbl V0.8 edge 并且我不需要运行我的 CNC 来重现该问题,带有 $C 的新 gcode 测试模式也显示了该问题。您将在命令表中看到缺失的行。

PS:我使用 115200 波特这可能会更频繁地触发不良行为?

如果在文件加载后执行手动命令则跳过行 #26

从一些调试我认为这个错误是 streamCommands() 的一部分……看起来有时它跳到下一行而不发送任何东西?
不久之后我添加了一条调试打印行,我记得班级中的下一个索引,我现在查看索引……通常这个数字应该匹配……如果一切正常,他们会……但是在有一点不同步???

这是一个很好的案例

**** Connected to /dev/ttyUSB0 @ 115200 baud ****
ok
DEBUG: 0; 0; G55

>>> G55
DEBUG: 1; 1; G0 X0 Y0 Z-13

>>> G0 X0 Y0 Z-13
DEBUG: 2; 2; G4 P1

>>> G4 P1
DEBUG: 3; 3; G1 Z-15

>>> G1 Z-15
DEBUG: 4; 4; X10 Z-15.05

>>> X10 Z-15.05
DEBUG: 5; 5; Y10 Z-15.1

>>> Y10 Z-15.1
DEBUG: 6; 6; X-10 Y-10 Z-15.3

>>> X-10 Y-10 Z-15.3
DEBUG: 7; 7; G0 Z-13

>>> G0 Z-13
DEBUG: 8; 8; X10

>>> X10
DEBUG: 9; 9; G4 P1

>>> G4 P1
DEBUG: 10; 10; G1 Z-15.4

>>> G1 Z-15.4
DEBUG: 11; 11; Y10 X-10 Z-15.6

>>> Y10 X-10 Z-15.6
DEBUG: 12; 12; Y0 Z-15.65

>>> Y0 Z-15.65
ok
ok
DEBUG: 13; 13; X0 Z-15.7

>>> X0 Z-15.7
ok
ok
DEBUG: 14; 14; G0 X-80 Y80 Z20

>>> G0 X-80 Y80 Z20
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok

**** Finished sending file. ****

这是一个糟糕的案例


ok
DEBUG: 15; 15; G55

>>> G55
DEBUG: 16; 16; G0 X0 Y0 Z-13

>>> G0 X0 Y0 Z-13
DEBUG: 17; 17; G4 P1

>>> G4 P1
DEBUG: 18; 18; G1 Z-15

>>> G1 Z-15
ok
DEBUG: 19; 19; X10 Z-15.05

DEBUG: 19; 19; X10 Z-15.05

>>> X10 Z-15.05
>>> X10 Z-15.05
DEBUG: 20; 20; Y10 Z-15.1

DEBUG: 20; 21; X-10 Y-10 Z-15.3

>>> X-10 Y-10 Z-15.3
>>> X-10 Y-10 Z-15.3
DEBUG: 22; 22; G0 Z-13

DEBUG: 22; 23; X10

>>> X10
>>> X10
DEBUG: 24; 24; G4 P1

DEBUG: 24; 25; G1 Z-15.4

>>> G1 Z-15.4
>>> G1 Z-15.4
DEBUG: 26; 27; Y0 Z-15.65

>>> Y0 Z-15.65
ok
DEBUG: 28; 28; X0 Z-15.7

>>> X0 Z-15.7
ok
ok
DEBUG: 29; 29; G0 X-80 Y80 Z20

>>> G0 X-80 Y80 Z20
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok

**** Finished sending file. ****

ok

如果在文件加载后执行手动命令则跳过行 #26

看起来像某种竞争条件???如果我增加 25 毫秒的睡眠,它又不能工作了???

// Load the next command.
            if (this.commandBuffer.hasNext()) {
                this.commandBuffer.nextCommand();
                try
                {
                    Thread.sleep(25);
                }
                catch ( Exception e )
                {
                    e.printStackTrace();
                }
                //while(!CommUtils.checkRoomInBuffer(this.activeCommandList, this.commandBuffer.currentCommand()));
            }
如果在文件加载后执行手动命令则跳过行 #26
所有者

@alpharesearch你能检查一下最新的提交是否解决了这些问题吗?我无法用您的测试文件重现该问题。

如果在文件加载后执行手动命令则跳过行 #26

好消息,随着这些变化,我不再跳过一行 gcode!
我确实像以前一样使用了 $e 选项,它总是失败 4 次中有 1 次——我确实运行了至少 50 次而没有出现问题。我也在 Shapeoko 上毫无问题地运行它。这解决了我的问题,这个案例可以关闭。谢谢你的帮助。

如果在文件加载后执行手动命令则跳过行 #26
所有者

伟大的!感谢您的协助。