注释
你能确认你运行的是哪个版本的 Grbl 吗?您是否进行了任何配置更改(具体来说,`SAFETY_DOOR_SPINDLE_DELAY`,它的默认值为 4.0 秒)。我已经简要查看了 v1.1g,它看起来应该可以工作,但我理解 v0.9 处理恢复的方式完全不同。
|
我用的是1.1g 延迟在以下情况下确实有效:
但在另一种情况下没有延迟
综上所述,从 Door 状态恢复时,有延迟,从 Hold 状态恢复时,即使主轴停止,也没有延迟 |
我遇到了同样的麻烦。在保持状态下关闭后没有主轴延迟(默认配置) |
我想我可能已经发现了问题,但由于我不经常查看 Grbl 源代码,其中一位常客可能会确认。`protocol.c` 的 `351` 行开始从任何主轴覆盖(不仅仅是停止)到恢复它的转换。`protocol.c` 的 `745` 行在内部执行循环启动并清除主轴覆盖,我在这里也没有看到暂停。我提议的修复分为两部分(我已经推送到我自己的 repo 并发送了一个 PR, #606) : 1) 将 `SAFETY_DOOR_SPINDLE_DELAY` 重命名(并重复使用)为 `SPINDLE_SPOOLUP_DELAY`,让主轴有时间从任何停止的状态加速,而不仅仅是安全门。2) 在“351”行之后插入一个延迟,使用与安全门延迟工作相同的方法。在等待零件到达的几周内,我无法对此进行测试,因此我鼓励其他人查看它,如果他们愿意,请自行承担测试风险。
|
就我而言,这不是问题,问题是主轴仅在进给保持后自动启动。所以实际上一个问题是主轴在循环启动被命令时完全启动。 在大多数工业机器上,进给保持和循环启动按钮仅启动和停止机器轴进给。主轴可以在进给保持时关闭和打开,冷却液也可以,但是在循环开始时由操作员重新打开它们。这就是我曾经工作过的每台工业机器的运行方式。 在工业机器上,门是锁着的,甚至在主轴运行时都无法打开,所以我理解 Grbl 如何通过开关而不是锁来为安全门做出合乎逻辑的让步,如果门是在循环中打开。但是,我不同意循环启动应该默认自动重新启动主轴。作为用户可配置的选项(即:config.h)会很好,但我认为在进给保持后循环启动不应该比重新启动轴运动做更多的事情以保持与工业标准的通用性。 打开工业机器门然后恢复程序的方式如下: 1 进给保持 |
@109JB,是的,确实如此。对于工业机器。 但是有多少这样的机器实际上是由 Grbl 控制的?事实上,它主要由业余爱好者和小商店使用,而且绝大多数机器根本没有门。 但我仍然应该能够暂停我的机器,停止主轴,做任何我需要的事情,并在不损坏我的工具的情况下恢复循环。 |
我的观点是:延迟没有坏处,但非常有帮助 |
我认为无论是否使用门,resume 都应该始终如一地运行。开门关门发送~后,开启主轴等待4秒后循环继续。如果 door 根本不存在,很自然地会出现相同的行为。вт, 12 февр. 2019 年 15:22,亚当 <notifications@github.com>:
|
通常有很好的理由让他们按照在工业机器上的方式做事。有时爱好机器可以学到一些东西。然而,这就是为什么我说这不应该是默认配置,而是 config.h 中的用户可配置选项。在可能的范围内,你想在你的机器上做的事情不应该强加给我,我想在我的机器上做的事情也不应该强加给你。在大多数情况下,Grbl 非常擅长这一点。 至于破坏工具。只需在发出循环开始之前重新启动主轴。您必须发出主轴停止命令才能停止它,不是吗? 我同意简历应该保持一致,但我的投票是使其与工业运作保持一致。此外,过去曾多次指出 Grbl 尽可能遵循 LinuxCNC 的操作方式。如果情况仍然如此,进给保持或恢复都不会影响 LinuxCNC 中的主轴或冷却液。 |
所以,我认为对我们大多数人有用的是:
|
按照您的建议反转当前的默认行为可能对当前安装基础期望主轴加速的现有安装不利。然而… 添加 a 也许当 1.2 出来时,这种行为可以倒转以更接近地反映工业机器,因为与主要版本号一样,人们期望一些重大变化,但不是 |
目前的行为很好!保持不会停止主轴,因此在恢复后不需要等待它。你的问题是你自己造成的,不是grbl的错误。 |
我不经常使用进给保持,如果有的话。所以这个问题对我来说不是什么大问题。但是文档上明确的说必须要有4s的延迟,听上去也挺合理的。此外,我认为用 $ 变量来配置延迟时间会很好。 |
@Schildkroet, 没有产生问题。 明确指出应该延迟:
这是合理的 |
@ademenev |
实际上,我将不得不从“我的投票是”改为我强烈反对合并此请求。至少在没有 config.h 选项的情况下合并它。 我的理由是,提要保持、保持提要,并且是您要从中恢复的内容。您在暂停期间所做的事情是您重新激活或不在简历上的责任。 结合此功能可能会导致意外行为,即冷却液重新启动和主轴重新启动。如果用户习惯于工业标准,则尤其如此。许多用户,包括我自己,都来自工业背景,或者可能会转向工业环境。最重要的是,我们都知道 MCU 在开关输入和噪声错误方面有多么挑剔。我一直在与新机器构建的限制问题作斗争。想象一下,发出进给保持以检查刀具刀片可能会使某人的手接触刀具,并且错误的噪声尖峰可能会启动主轴,从而造成比简单的轴进给恢复更严重的伤害。 考虑到这一点后,我觉得如果在恢复时不带无主轴和无冷却液的 config.h 选项并入,那将是为了一点点方便而牺牲安全性。 |
无论如何,至少必须更正文档。
我对此完全满意。使其在有门/无门设置之间保持一致。使其可配置,使用您认为最合理的任何默认行为,并让用户决定他们需要什么。 |
您好,如果这是一个愚蠢的问题或可证明是错误的地方,我想说抱歉,并为我的低理解提前道歉,但我想在这里问一下,例如使用“通用 Gcode 发送器”之类的 GUI,我如何发送 CMD_FEED_HOLD命令(“!”或 0x83)?是通过一些数字输入(硬件?)的唯一方法。我希望能够发送实时命令来停止机器,但我不知道如何通过软件 – GUI 来完成。 |
有人可以检查一下master...carneeki:master是否满足所有各方的要求吗? @SailWithChips不是这个讨论的正确位置——但是不需要特殊的硬件。GUI 应该发出实时命令来为您执行此操作。如果您正在用 C 编写 GUI, char hold = '!'; // send a exclamation mark to feed hold
char cmd = 0x99; // set spindle to 100%
UGS 是用 Java 编写的,因此可能需要进行 Unicode 转换。在此处查看更多信息。我建议向 UGS 人员询问有关在那里实施控制的细节。顺便说一句,UGS 在界面顶部已经有了暂停和停止按钮。 |
我可以在这里检查一下。 |
上述代码更改似乎并非在所有情况下都能正常工作。这是我看到的 启用定义以在循环开始时恢复主轴和冷却液
定义未启用(注释掉)以在循环开始时恢复主轴和冷却剂
|
感谢详细的测试结果! |
@109JB我试图为启用的定义(SpindleOff、Hold、Resume)重新创建第二个测试用例,这时我注意到我必须 事实证明,此覆盖在运动过程中被特别阻止(注释说明只允许在保持状态下切换)。 这是您使用的机器上的预期行为吗?我不确定我以前是否必须在运动期间切换主轴,而且我可以看到在空闲、运行和点动状态下允许和阻止此切换的原因。 |
我不能说我曾经有过在运行模式下关闭主轴的机会。通常,如果是这种情况,就会出现一些不好的问题,您希望停止一切,并且更有可能使用紧急停止。我有机会在运行期间调整 rpm,这是由主轴速度覆盖命令涵盖的。我认为在运行期间禁用切换 (0x9E) 很好。 To tell you the truth, I used the “Spindle” button on my gui when running the tests I performed. This button is programmed to use M3/M4/M5 as appropriate when in “Idle”, and it uses (0x9E) when in “Hold”. I also used the GUI’s feed hold button which just sends a “!”, and cycle start button which just sends “~”. I didn’t actually stream any code as grbl doesn’t really know if code is streaming or just being typed a line at a time. For the SpindleOff-Hold_Resume test I simply typed a single line of code (M3S1000), and then M5 to make sure a S value was stored by Grbl. The I insured that the spindle was off, selected feed hold and then resume and made sure the spindle didn’t start. As for when it would make sense from my perspective to be able to use the spindle toggle I would say that limiting it to the Hold state is fine. It is needed for hold because g-code input is blocked during this state so M3/M4/M5 wouldn’t get through. During Idle M3/4/5 works so that can be used there. I can’t really see a need to use the toggle anywhere else but a would like to hear you ideas of situations where it might be useful in other modes. |
当 Grbl 处于 Run 状态时,发送 ‘!’ 会将其切换到 Hol 状态。在此状态下,它接受 0x9E 并停止主轴。现在发送’~’打开主轴并恢复循环。问题是主轴通电和运动开始之间没有延迟。相反,应该有延迟以允许主轴旋转。