Contact me: hankecnc@gmail.com

每次打开新的串行连接时,警报模式都打开是否正常? #731

推推 grbl 3年前 (2023-01-23) 251次浏览

关闭
tahutipai 开启了这个issue 2019 年 9 月 23 日 · 16条评论
关闭

每次打开新的串行连接时,警报模式都打开是否正常?#731

tahutipai 开启了这个issue 2019 年 9 月 23 日 · 16条评论

注释

每次打开新的串行连接时,警报模式都打开是否正常? #731

我正在尝试通过 grbl’s 以编程方式小批量 gcode 命令stream.py

我遇到的问题是:每次我打开一个新的串行连接时,“警报模式”都会打开 – 设备需要重新定位或“$X”,每次我只打开一个到设备的串行连接。(例如screen /dev/ttyUSB0 11520

我尝试在要发送的 gcode 列表中添加“$X”作为第一个命令,希望它能在连接时关闭警报,但这似乎不起作用。

如果启用了归位,我如何才能简单地将 gcode 列表流式传输到设备?每次都归位不是一个可行的解决方案。

每次打开新的串行连接时,警报模式都打开是否正常? #731

这是一个安全问题。如果你只是连接,你怎么能确定机器的位置?

每次打开新的串行连接时,警报模式都打开是否正常? #731
作者

好问题,安全第一。在这种特定情况下,因为机器是通过程序控制的。归位是执行的第一项任务,硬限位开关就位。

我相信我正在接近解决方案:它似乎pyserial正在切换 DTR 线,arduino 将其视为重置。所以这可以解释为什么单片机复位只是通过打开串行连接引起的……

#160
pyserial/pyserial#124

每次打开新的串行连接时,警报模式都打开是否正常? #731
我杰森T 评论了 2019 年 9 月 23 日  

是的,这很正常。
在 config.h 中有一个在启动时发出安全锁的命令,如果您不希望它以这种方式运行,您可以将其禁用。

// If homing is enabled, homing init lock sets Grbl into an alarm state upon power up. This forces // the user to perform the homing cycle (or override the locks) before doing anything else. This is // mainly a safety feature to remind the user to home, since position is unknown to Grbl. #define HOMING_INIT_LOCK // Comment to disable

然而,工业机器以某种安全锁定方式启动,它是故意的,因为您不希望机器在启动时抖动并且主轴在没有任何警告的情况下启动。你是正确的,当串行通信连接时,arduino 被重置,这是 micro 用来建立和同步串行连接的方法。两者都很好,在我的书中,我认为学习如何正确加工会更好。

每次打开新的串行连接时,警报模式都打开是否正常? #731
作者

谢谢你。我确实希望在电源循环后发生安全锁定(警报),但我不希望在简单地进行串行连接时发生警报。(串行连接将被实用控制)

在我的具体情况下,这是针对没有主轴或类似危险​​部件的实验性(非数控)制造机器,GRBL 恰好非常适合控制。

未来读者的解决方案:

  1. 意识到所有 arduino 的,默认情况下,只需打开串行连接即可重置。(与 GRBL 无关,但由于 GRBL 已“重新启动”,这意味着警报将打开。
  2. 理论上,可以在您的操作系统中关闭此行为。
  3. 我无法在我的 Linux 机器上找到上述方法的成功,所以我采用了硬件解决方案,即在 Reset 和 GND 之间放置一个 10uF 电容器。

这很有用,现在在电源循环后仍然需要归位,但在建立串行连接后不需要。

每次打开新的串行连接时,警报模式都打开是否正常? #731
作者

对于任何有兴趣进一步关注此内容的人,这里有一个指向可能有用的 hack的链接

它涉及重新编译cdc_adm驱动程序。

每次打开新的串行连接时,警报模式都打开是否正常? #731

我将 hc-06 蓝牙模块连接到 Arduino 的 rx/tx 引脚,Corse 我遇到了超过 3 m 的 USB 电缆问题。
重新连接时没有重置!

每次打开新的串行连接时,警报模式都打开是否正常? #731

hc-06 没有复位引脚。因此通常无法重置设备。检查谷歌是否有 hc-06 或 hc-05 模块的重置模块。

每次打开新的串行连接时,警报模式都打开是否正常? #731
作者
塔胡蒂派 评论了 2019 年 9 月 26 日  

这是个好建议。虽然,我怀疑@matze-mm将该信息作为解决方案而不是问题发布。

在某些设置中,有(有效地)alarm-on-power-cycle但没有alarm-on-serial-connect

每次打开新的串行连接时,警报模式都打开是否正常? #731

是的,这应该是一个提示,
有时将正在运行的 arduino 连接到您 pc 的 usb 时会出现问题。
特别是当您使用不同的电源运行时。Arduino 崩溃和/或进行重置。使用蓝牙,您就不会遇到这个问题。
您只需将 USB 电缆连接到 Programm。
115000 的波特率没有问题。
我用 grbl 运行我的 diy Cnc Router,在我的 mac 上运行 grblgru 来发送 gcode。
抱歉,希望你能理解我的糟糕英语

每次打开新的串行连接时,警报模式都打开是否正常? #731

Matze
什么糟糕的英语。

昨天我正在阅读一篇旧问题的帖子,其中提到了关于使用 grbl 面板的相同问题。我什至没有意识到我的机器有问题。在 grbl 面板上,它表现为在连接到某些 grbl 控制器时不显示数字读数 XYZ 工作坐标。在归位机器之前,我下意识地按下面板上的重置以刷新屏幕。我的机器使用自制的 grbl 控制板/pcb,它与 PC 的连接是通过 USB 到 RS232 和 RS232 到 TTL 转换,看起来我的设置缺少几次握手。

针对该问题给一位用户的建议是增加 grbl 面板中/的连接延迟

每次打开新的串行连接时,警报模式都打开是否正常? #731
作者

@matze-mm马策,

你的英语很清楚,可以完全理解你。你的母语是什么?也许是希伯来语?用外语交流是非常困难的——尤其是那些字母表完全不同、书写方向也不同的语言,例如英语。

可以肯定的是,您的英语技能比我其他任何语言的技能都要好得多。

感谢您与社区分享您的好建议!

每次打开新的串行连接时,警报模式都打开是否正常? #731

也比我的好而且我是英国人(不是英国人)

每次打开新的串行连接时,警报模式都打开是否正常? #731
贡献者

只是为了清楚。Arduino 引导加载程序会在串行连接时自动强制重置控制器。这不是 Grbl 控制的东西。发生重置时,所有内存都将被擦除,Grbl 必须在警报状态下启动,因为它不再知道自己在哪里。我相信您可以通过在没有引导加载程序的情况下闪烁 Grbl 和/或使用直接连接到 RX/TX 引脚的单独 USB 串行连接来解决这个问题。如果您觉得烦人,也可以在 config.h 中禁用 Grbl 的自动警报,但强烈不建议这样做,因为这可能在最糟糕的时候导致更多问题。

每次打开新的串行连接时,警报模式都打开是否正常? #731
作者
塔胡蒂派 评论了 2019 年 9 月 28 日  

谢谢。
事后看来,最简单的解决方案就是在 Reset 和 GND 之间放置一个 10uF 的电容器。

优点:安装仅需 20 秒,无需焊接(只需拧入),是一种简单的可逆修改。(可以将其移除)。
这消除了不需要的 ardiunoreset-upon-serial-connect行为,同时仍保留所需的alarm-after-power-cycle功能。

缺点:手头需要一个 10uF 电容器。

每次打开新的串行连接时,警报模式都打开是否正常? #731

我遇到了同样的错误 9,当我试图通过 raspi 终端与 cnc 建立连接时,
我的错误是:

sudo chmod +777 /dev/ttyUSB0 # 2. allow access to printer USB permissions, add user to dialout or tty is better
stty 115200 -F /dev/ttyUSB0 -echo -onlcr # 3. set serial port baud rate, might be 250000 for you
cat -v < /dev/ttyUSB0 # 4. get printer output 

传递命令后,我收到一条消息,确认已建立连接:

Grbl 1.1e ['$' for help]

[MSG:'$H'|'$X' to unlock]

我打开一个新终端并使用第二个终端将 g 代码回显到第一个终端,然后应该将机器移动到我想要的位置
echo "G28" >> /dev/ttyUSB0

在第二个终端中通过上述命令后,我在第一个终端中得到以下响应
error:9

我试过回显$X$H“解锁”我得到回复说ok然后我尝试回显归位命令并出现相同的错误:error 9

每次打开新的串行连接时,警报模式都打开是否正常? #731
西蒙约翰城堡 评论了 2021 年 2 月 12 日  

我目前没有使用 linux,但你确定每个 echo 都不会再次打开端口,而不管预期的附加>>

你可以试试
tee -a /dev/ttyUSB0
或者试试
bash | tee /dev/..
将转发每个后续回显的结果

或者将 2 行放在一个文件和 cat 文件中 > /dev/tty 作为测试
不知道你是否需要 dos 行结尾

喜欢 (0)