开源改变世界

可能的中止错误 #74

推推 grbl 2年前 (2023-01-21) 180次浏览

关闭
mike-holmes 打开了这个问题 2012 年 3 月 7 日 · 5 条评论
关闭

可能的中止错误#74

mike-holmes 打开了这个问题 2012 年 3 月 7 日 · 5 条评论

注释

可能的中止错误 #74

我在中止函数中发现了一个错误。我认为这是由于发送和确认了很多长命令(例如,括号中的注释,或小数点后 6 位的命令),并且在此之后发出了中止命令,然后 grbl 停止响应。

我所说的“停止响应”是指在收到重置后发送到 Arduino 的任何命令,但没有任何回传。

这是我使用的流文件,它给了我这个错误:

import serial
import time

s = serial.Serial("com3",9600)

s.write('\n')
time.sleep(2)
s.flushInput()

f = "C:/Users/Michael/Desktop/Python/Corners.nc"
file = open(f)

idx=1
for line in file:
    s.write(line)
    print idx, s.readline()
    if line.find("(End cutting path id: path3811)") >=0:
        s.write('\x18\n')
        print "aborted"
        time.sleep(2)
        break
    idx += 1

while s.inWaiting():
    print s.readline()

# Commands from here onwards cause Uno RX LED to light, but not TX LED
while(1): 
    s.write('\n')
    time.sleep(1)

如果文件一直持续到结尾,或者如果它在同一点暂停/恢复,则没有问题 – 只有中止才会执行此操作。

这是我使用的文件,它给出了这个错误:
http ://www.mediafire.com/?hsgrb5gy59km1h4

我有不会导致此错误的文件的较不详细版本,但我认为这个问题值得提出。

(顺便说一下,如果这只是我对 grbl 的编码/理解不佳,我深表歉意!)

可能的中止错误 #74
成员

迈克:谢谢你的提醒!有一些可能导致此问题的设置限制。

现在,g 代码解析器对每个块有大约 49 个字符的限制,减去任何注释和空格。通常这就足够了,但如果块长度超过这个长度,字符将被丢弃,解析器可能会得到一个不完整的块。我们可以增加 g 代码解析器缓冲区的大小,但内存有限,我们可以将所有额外的空间用于其他事情。虽然,已经有一些线下讨论通过稍微重新组织代码并即时解析块来消除对 g 代码解析器缓冲区的需求,但这可能是我们应该标记以在下一个版本中更改的内容v0.9。

此外,grbl 上的串行输入也有大约 127 个字符的限制,这意味着主机发送的完整行(包括注释)不能超过此长度,否则字符也会被丢弃。不过,这似乎与您的问题无关。

最后一件事可能是每个数字中的位数,如果超过 8 位可能会吓坏。我必须检查是否存在与此相关的错误,但我建议您使用与你的机器的精度。所以在大多数实用的 CNC 机器上,这大约是 0.01 毫米或 0.001-0.0005 英寸。

可能的中止错误 #74
成员

糟糕,抱歉,我想我没有正确阅读整条消息。您遇到了中止问题。我的错。我将不得不查看源代码并测试一些东西以确定发生了什么。但这可能与没有正确重置缓冲区的长注释有关,或者与仍然与位数有关。

可能的中止错误 #74

桑尼,

感谢您调查。与此同时,我将尝试对文件进行 preGrbl 以摆脱那些荒谬的数字。我的机器有 2.5 微米的分辨率,所以我只需要 4 dp,而不是 6!

麦克风

可能的中止错误 #74
成员

行。想我找到了问题所在。它是您的脚本(至少在我的 Mac 上)的一部分,也是 grbl 错误的一部分。首先,您的脚本需要调整发送到 grbl 的行。这仅意味着您需要发送一个回车符。为此,将 a 附加.strip()到行 and + '\n'。查看脚本文件夹中的 simple_stream.py。如果您不这样做,grbl 将响应换行符和回车符,并且不会与您发送的内容相关联。

grbl 错误原来与中止时的主轴关闭控制有关。由于某种原因它崩溃了。我将在今天晚些时候发布修复程序。感谢 Mike 报告此问题。

可能的中止错误 #74

没问题 – 很高兴你能查个水落石出。感谢您提醒我的脚本。

喜欢 (0)