注释
此 EStop 功能与边缘分支上的安全门功能有何不同? |
@poelstra: 我大约一个月收到一次这个问题,最近更频繁。这是我的立场。
|
@ashelly:@chamnit完美地解释了它(第三颗子弹):) @chamnit:我同意 EStop 应该主要在硬件中处理(这确实是我所做的)。不过我不同意,将它连接到 Arduino 的复位引脚是最好的设置。 我实际上认为将 EStop 连接到 Arduino 的重置甚至是一个坏主意,因为当它处于重置状态时,我无法验证它是否真正正确启动、具有正确的配置、与 GUI 的通信是否如我预期的那样,等等。 验证这一点的唯一方法是释放我的硬件 EStop 信号,这将启动我的驱动程序并同时启动 Arduino,Arduino 将有一段(短暂的)单元化输出引脚,甚至可能看起来已经闪烁错误的固件/设置… 我确实同意,如果 GUI 也知道这种行为,并且可以例如在释放 $DIS 模式之前保持 Homing 之类的按钮处于禁用状态,那将非常有用,但我不介意必须在其上输入 $EN(ABLE)暂时的“命令行”;) |
@poelstra:我认为很明显的一件事是,根据他们对紧急停止应该是什么的解释,有多种方法可以实施紧急停止。 对于您提到的物理按钮问题,我认为这不是问题。这是 Grbl 通电时的标准行为。您已经有一个现有的程序来处理这个问题。急停按钮表现出相同的行为并非不现实。 虽然不是每个人都会连接(或知道如何连接)物理按钮,但我能做的最好的事情就是提供在 GUI 端实现一个按钮的工具。让 GUI 解释他们自己的急停行为版本。每台机器都不同,可能需要这种灵活性。 最后,Grbl 本身并不是 LinuxCNC 的一体化替代品。它需要一个 GUI,编写一个相当简单。IMO,Grbl 应该尽其所能保持灵活性,让 GUI 确定特定的行为,如紧急停止甚至工具更改。 |
对于复位引脚上的 HW Estop,需要下拉,或者在 2015-02-19 16:15 GMT,Sonny Jeon notifications@github.com:
|
@chamnit是的,Grbl 已经支持广泛的机器和功能,我认为您在所有这些之间取得平衡做得很好! 我一直在思考更多,我同意我正在寻找的大部分内容确实可以通过 GUI 完成(例如,只要“EStop”处于活动状态,就不会发送运动命令,并且总是发送 $DIS当检测到 Grbl 重置时),尽管 Grbl 的固件支持肯定会帮助那些不支持 GUI 的情况,并使其更可靠。 如前所述,我很乐意向 PR 提供针对我建议的更改的提案。仅所有三个编译时选项,我认为它们都不过是一个不同的初始化值或一个额外的“if”。 @cri-s我的限位开关没有以任何方式连接到我的 EStop,我也没有尝试将硬限位用作 EStop。所以恐怕我跟不上你? |
@poelstra:我不确定我是否同意 Grbl 的固件支持会使 GUI 更可靠。如果我们安装您的一些可选建议,这意味着 GUI 必须考虑这些可选条件才能正常工作。需要某种方式来告诉 GUI 其处理的构建配置是什么。 关于你的三个建议:
我认为我们可以使用现有的警报机制之一来制定基于软件的紧急停止。喜欢@cri-s提到过,硬限制是一种执行您想要的急停操作的方法。触发后,它会完全阻止 Grbl 执行任何操作,直到您发送重置命令。也许,可以有一个像“Ctrl-E”或“Ctrl-Esc”这样的实时命令来触发同样的停止/重置机制。 |
如果您只有 E-Stop,并且希望 gui 应该识别 E-Stop,只需将 DTR 或任何 对于固件支持,当检测到重置作为 avr 的启动原因时,可能会发出警报。 |
@chamnit谢谢你的想法!我对可靠性的推理是,GUI 已经“需要”处理启动时的初始归位警报、安全门和您建议的 $DIS 状态等状态。可选条件唯一做的就是在这些模式激活时发生变化,这是 GUI 可以自动处理的事情。所以我认为一切都可以以对任何 GUI 透明的方式实现,只要 GUI 正确处理状态(空闲、警报、禁用……)。
是的,当前的硬限制行为在某种程度上有点像我预想的,但不同之处在于它完全“锁定”Grbl:我不能要求设置等。我想如果硬限制警报机制仍然会允许“正常”交互(但当然会阻止移动),这也可能会达到我的目标。 添加 Ctrl-E 或 Ctrl-Esc 当然也是一个好主意,因为它确实与现有的 Ctrl-X 不同,因为 Ctrl-X 可能会启用步进器,而 Ctrl-Esc 也可以禁用它们,就像“硬重启”就可以了。虽然我可能总是为此使用我的硬件 EStop 按钮,但它可能对想要 EStop 但没有硬件电路的人有用。 @cri-s嗯,我有硬限制和 EStop。我想触发硬限制是否也应该强制 EStop“模式”是有争议的,但我连接它的方式,它们不能完全相同:当我的 EStop 处于活动状态时,我的驱动程序没有电,但我如果之前达到了限制,则“需要”他们的力量将他们赶出硬限制(“强制限制覆盖模式”)。 请注意,我非常感谢您对此的所有投入!因此,如果我的某些言论由于措辞不当而显得刺耳,请原谅,它们绝不是故意的:) |
@poelstra:在急停(或硬限制)期间,与 Grbl 交互的目的是什么?现在是紧急状态,不应该有任何其他事情发生。 至于$DIS,没错,它可能是一个额外的状态,但它对Grbl的整体运行来说是相当透明的。我仍在考虑如何实现它,保持 GUI 的向后兼容性,并确保它在所有场景中都能正确运行。现在,这只是一个提议。 |
在我的情况下(外部参考:#580)我的机器附带的并行端口驱动器盒包括一个不会切断任何电源的紧急停止开关。我理解你对此的立场,@chamnit的,并且希望有朝一日弄清楚如何为盒子制作这样的模组……但现在我试图让它的内部电路保持不变,这仍然给我一些基本的“紧急按钮”功能。 我的问题仍然是我可以在按钮仍处于锁定状态时恢复 Grbl,这通常会在下次我可能需要它时造成糟糕的情况。也许我在这里的用例只是缺乏经验/天真,但到目前为止,我使用它的次数并不是完全有必要丢失步骤的紧急情况——只是想修改部分夹紧或在继续之前仔细检查这个或那个. 添加一个物理进给保持按钮可能真的是我所追求的,但即使这解决了我的用例,它仍然困扰着我,软件(Grbl 或 PC)无法帮助我记住弹出紧急按钮以供下次使用。 当我正在为这台机器的 Grbl 控制编写自己的界面时(主要是为了体验),我想知道(仍然禁止任何其他解决方案)你是否可以简单地公开 pin 状态 – 然后我的 UI 可以拒绝发送任何 $X 直到已解决,没有任何您认为与安全相关的变化? |
@chamnit的确,在 EStop 发生的那一刻,存在紧急状态。因此,我随后解决了问题,并(软)重置了 Grbl (Ctrl-X)。在当前情况下没有真正的问题,尽管我认为 GUI 总是可以请求当前状态是很好的。例如,如果我确定 GUI 也处于错误状态(可能是我按下 EStop 的原因),我首先想重新加载它,并且它不知何故需要一种方法来询问当前状态(就像它目前也可以例如,当它正在等待执行归位时)。 但是,在 Grbl 软复位后,我的物理急停仍然有效。此时它可能不再是真正的“紧急”状态,因此我们可以将其称为正常的“停止/禁用”状态。然后我希望能够与 Grbl 通信(例如验证 GUI 确实看到了正确的状态,即:禁用/EStop’ish),所以现在我可以安全地通过按下我的物理开始按钮来删除 EStop ,从而让 Grbl 控制我的步进器。 请注意,此时硬限位开关可能仍处于活动状态(即使我释放了 EStop),我希望有可能将步进器从硬限位中移出。这当然只能通过手动覆盖来实现,例如输入 $X。LinuxCNC 有一个“覆盖限制”复选框,允许您执行一次点动操作,如果硬限制仍然存在,它会再次进入自己的硬限制模式。 我知道 $DIS 仍然是一个提案,这就是为什么我将这个场景作为输入添加到讨论中,特别是对于它确实需要成为一个附加状态的情况:) |
@poelstra:将您的物理紧急停止按钮连接到 Arduino 复位引脚将完成您想要的一切。当您释放时,Grbl 会重新启动到它的通电状态。正如您所提到的,当您的物理紧急停止处于活动状态时,Grbl 运行没有潜在的问题。 正如您的长篇文章所说明的那样,软件紧急停止要棘手得多。没有一个干净简单的解决方案,它可能会涉及对 Grbl 操作方式的大量更改。您仍然可以让 GUI 在他们这边做您需要的事情。Grbl 唯一不报告其状态的时间是出现严重警报(硬/软限制)时,并且 Grbl 明确指出存在警报及其原因。我发现那里没有问题。 我认为你想得太多了,我真的看不出有什么问题。请记住 Grbl 不是 LinuxCNC,反之亦然。Grbl 必须谨慎选择,因为它只是 CNC 控制器的一半。另一半是 GUI,就像我之前多次说过的,软件急停应该是一个 GUI 协议。为了帮助解决问题,也许应该发布关于编写软件紧急停止的推荐方法的 Wiki 描述。 至于硬限制问题,您可以通过“$”设置禁用硬限制,然后点动机器。之后重新启用它们。就个人而言,我认为在使用硬限制时赋予用户移动机器的权力是危险的。最好让他们手动处理问题,因为 Grbl 不可能知道那台特定机器上的情况。如果有人经常遇到硬限制,那么他们真的应该重新评估他们如何使用他们的机器。 @natevw:我听说你关于物理急停开关的反馈问题,但急停确实不应该经常发生,你可以随时连接闪光灯以指示紧急情况。让 Grbl 在检测到急停时提供反馈会很好,但实际上没有必要,尤其是考虑到我们必须为其专门提供一个输入引脚。 |
@poelstra我不确定我是否理解您为什么不只是使用我们已有的进给保持和恢复输入,为什么不制作一个 grbl 吊坠(也许像这个https://lunaticcharade.wordpress.com/2014/11/ 15/grbl-吊坠/ ) 然后将 estop 连接到主轴和电机电源?这样在我看来你可以做任何你想做的事,暂停机器,恢复,紧急停止,关闭电源更改设置? |
@poelstra: 一切都没有丢失。我仍在考虑可能的解决方案。
总的来说,我认为这不会进入 v0.9,而是 v1.0。让这个对话继续下去,并尝试提出一个简单优雅的解决方案,该解决方案既可以向后支持,也可以针对当前的 GUI 轻松更新。 |
在这一点上,如果我打开盒子备份并进行自定义修改,我可能应该分析一下我是否可以在 E-Stop 按钮被锁定时以某种方式至少降低主轴功率。(当我看到它时,我的步进器启用情况到底是什么……) 我想要的是能够以“软件闪光灯”的形式执行此操作。
我有点困惑你在这里说什么?我将我的 E-Stop 连接到已经为 预留的引脚 A0, |
@chamnit Yup, that’s exactly what I was thinking! (Plus only triggering abort/reset and limits when they go from inactive-to-active, and preventing exit of the alarm state as long as abort/reset is active.) |
在我的机器上,我有一个带有继电器和物理按钮的电路来禁用我的步进驱动器。该电路的状态也被馈送到我的控制器(以前是 LinuxCNC,现在是 Grbl)上的输入引脚。在 LinuxCNC 上该引脚是 EStop,在 Grbl 上它是重置/中止。
当 EStop 处于活动状态时,LinuxCNC 知道它不能做任何事情(并且应该中止任何挂起的操作)。
如果 EStop 引脚变为非活动状态,它仍然不会做任何事情,直到我按下循环启动按钮(Axis 中的绿色按钮)。只要 EStop 处于活动状态,此按钮就会被禁用。
我真的很想在 Grbl 中也有这个功能,我认为#597(评论)中提出的暂停状态为其添加了基础。
一些额外的(小的)东西是必要的(如果人们同意,我会很乐意自己实现):
这样,如果 EStop(连接到重置/中止)在运行时变为活动状态,则 Grbl 将重置,从而重新进入挂起状态。循环启动被阻止,直到 EStop 再次被清除。完全符合我的工作流程,而且非常喜欢
请让我知道你在想什么!