注释
是的,即使在恐慌中也很容易到达并且很难错过。 速度罐已经在 wiki 的愿望清单上。但正如你所说:这是更高级的挑战之一。 |
司门,我真的很喜欢那个按钮!:) 当我开始编写运行时命令时,我已经考虑过如何实现急停。急停通常应始终采用硬件接线,旨在切断电源或立即禁用所有功能,直到释放急停。我喜欢将限位开关销与限位销结合使用的想法,因为它已经在那里了,而且它会起到双重作用。如果我们为 grbl abort 使用一个 pin,那么 e-stop 也应该与此相关联。我们可能需要对 abort 代码进行一些小的重新安排,以防止 abort 在使用时循环。 所以我想问题是:我们如何做限位开关?是否会为想要添加自己漂亮的红色大按钮的用户提供一个简单的接线图?此外,如果限位开关禁用了电机,我们将如何进行归位循环,更不用说移动轴以便它们通过 grbl 命令脱离限位开关,而不是物理移动它们? 可变进给率将是非常重要的,尤其是在涉及计划员的情况下。可能需要大量的独创性和重构才能使某些东西实时工作。最简单的做法是强制暂停进给,用新的进给率重新计划,然后恢复。不是实时的,而是一个平庸的解决方案。 |
在研究这个主题时,我发现限位开关和归位开关是两种不同的东西,具有完全不同的行为,通常被混为一谈。例如,在某些情况下(尤其是在大型机器上),归位开关位于行程中间,而极限位于行程末端。因此,如果您为这两个功能共享开关,那么了解开关何时用于归位以及何时用作限位开关会很有用。此外,如果您想将它们用作限位开关,那么能够支持常闭开关(以及 NO 开关)也很重要,因为通常这些限制在故障安全回路中串联连接。 在做 TinyG 的事情时,我的解决方案只是在收到 G28 或 G30 时将限位开关置于归位模式。这会改变中断所采用的分支。我为每个轴都有独立的开关,但我不确定这是必要的,除非你想同时在多个轴上进行归位。欢迎任何见解。 |
一个硬接线以中断步进驱动器的启用引脚的按钮是唯一安全的解决方案。奥尔登曾经提到过将某些事情称为“紧急停止”而不是硬连线的可能性所涉及的责任。但是限位开关是一个问题。 |
我同意。对于任何被称为 Estop 的东西,它必须完全在固件之外工作。它的唯一工作是尽快停止机器,即使控制器已经疯了,它也必须工作。Estop 应该通过某种继电器以电气方式关闭电机,甚至可以对系统的某些部分施加机械制动。固件也可以执行中止(由外部 Estop 触发),尽管到那时它真的无关紧要,因为电机应该断开连接。 我在这里写了一些:http |
我同意奥尔登关于硬件急停的观点。那里有责任问题。 在传统的 CNC 控制器上,有一个“重置”按钮可以立即停止,就像您描述 Jens 一样。它的目的是在不断电的情况下停止和重置一切,这与急停不同。我在 v0.8a 中放入的系统中止做了同样的事情。它停止电机,强制 grbl 退出回到main.c循环,然后重新初始化系统(不重置机器位置)。 所以我们可以做的是确定系统中止命令(也将其保留为软件运行时命令),并将其与急停按钮一起使用来告诉 grbl 重置。主要是因为grbl是通过电脑USB口供电的,不能快速或者轻松的掉电。然后我们要做的就是修改主循环,直到释放限制/紧急停止引脚才完成重新初始化 grbl。 |
我希望硬件按钮重置调用相同的例程,运行时命令可以。这就像一个穷人的急停,我认为,对于许多 DIY 者来说已经足够了。 必须忽略在按下按钮(并可能释放)后进入的任何流式 gcode,直到发出干净启动(循环启动?)的信号。 你怎么看? |
不是一个穷人的电子站。重置按钮是 CNC 机器上存在的真实功能。要获得真正的急停,用户只需要添加一个电路,该电路也会关闭其他所有设备。 有一些细节需要解决。一个是如何管理各种类型的重置并确定要阻止的内容以及重置后的时间。现在,在重置/中止时,grbl 将刷新串行和规划缓冲区,但这不会在刷新后阻止任何新的传入串行数据。那么您是否阻止了所有串行数据,从而切断了与 grbl 的所有通信?这如何与限位开关配合使用?限位开关也应该强制 grbl 重置吗?….这开始让我头晕目眩。 |
为了阻止头脑旋转,如何打开一个 wiki 页面,在其中记录各种情况下所需的行为。有些人可能会称这些要求为:) |
好的,最后一个微调器。当阿德伦评论时,我正在打字。 任何触发直接步进禁用的操作都应将机器位置设置为零,因为我们可能丢失了步骤,因此无论如何都不知道我们在哪里。我认为这适用于复位和限位开关。 之后,只有在收到特殊的 gcode 命令后才能恢复 gcode 的处理(我使用了 M30)。这迫使用户明确承认发生了一些特殊的事情。运行时命令不会执行,因为某些接口程序可能会将命令插入仍在运行的流中间。相反,gcode 命令将在所有“丢失的命令”的末尾正确排队。 |
Jens:并不是所有时候都会失去脚步。如果用户在重置之前发出进纸暂停,机器位置仍然是正确的。当您意识到 g 代码程序有错误并且您不想重新查找或加工掉零件零位置时,这尤其有用。您应该能够回到零部分,修复您的程序,然后重新启动它。我想我们只能在机器在重置之前移动或碰到限位开关时重置机器位置,否则在我们知道正确的情况下保留它。 此外,以非标准方式使用 M30 可能不是一个好主意。当磁带仍在使用并在程序结束时倒带时,它基本上是一个遗留程序结束。在今天的 CNC 上,这只是将您带回到程序的开头,这不适用于 grbl,因为我们流式传输所有内容。我首先想到的是实现一个重置字符串,该字符串需要一个“y\n”响应来确认用户理解该位置可能会丢失并且所有串行流应该已经停止。我认为这比帮助更令人困惑,所以我没有这样做。 另一方面,我们应该让用户自己处理所有这些吗?我的意思是,很容易忘乎所以地继续添加和添加可能需要或可能不需要的东西。在这一点上,它开始偏离 Simen 最初的愿景,即提供一个非常简单、便携、可破解的 CNC 软件,我是该软件的坚定支持者。我真的很想提出一个很好的简单解决方案来遵循这一愿景,即使它需要的时间比预期的要长。我将考虑一段时间,看看是否有一些简单的事情我们可以做,可以容纳每个人和 grbl。 Alden:启动需求列表的好主意。以这种方式查看和理解一切肯定会更容易。你要开始一个还是我要开始? |
今天早上我想到了一个可能的解决方案:
大家怎么看? |
有趣的想法。我不确定你是否需要标志,如果它们是互斥的,它可能只是一个状态变量枚举——更容易处理。我一直在使用以下状态枚举:“reset”、“run”、“stop”、“hold”和“homing”。“恢复”也用作暂停后恢复速度的瞬态。可以添加“慢跑”。 我很乐意为开始和停止创建一个需求页面,但我也希望你们所有人都进行大量编辑!我可能只是将我在 TinyG wiki 上的很多内容移植到修改的起点。 |
嘿伙计们,我很高兴听到即将推出的 estop/limit 支持。在过去的 6 个月里,我一直在无可救药地分心,但我仍然对 grbl 的未来和方向非常感兴趣,我希望我能在某个时候做出贡献。我只是想扔掉我的红色蘑菇停止按钮,它有一个 NO 和一个 NC 侧(这些蘑菇按钮的一个共同特征)——http: //www.amazon.com/gp/product/B004U4911Q/ref= oh_o06_s01_i00_details 这个想法是 NC 为步进器供电,NO 侧将信号引脚接地到控制器以通知它急停。按下按钮会切断步进电源并将 arduino 的引脚接地。这显然会失去步骤,但确实完成了紧急停止的“硬连线”方式。我想为主轴电源增加一个极点会更好,但我计划在 Estop 被按下时使用继电器来中断它。 |
gregrebholz:谢谢你的信息!很高兴知道。 在与我的机械师朋友 mike 交谈并回顾了 EMC2 和 Mach3 的功能后,我们绝对应该在急停和触及限位开关(称为硬限位)后强制执行归位循环。所有定位都应重置并丢失。Grbl 将保持冻结状态,直到释放限制/紧急停止引脚,然后它将返回到初始化提示。我认为,如果我们让用户处理限位开关的释放方式,无论是手动操作还是其他方式,这将是最不容易混淆且易于实现的。我认为这应该相对容易做到。 那么,这就留下了一个问题,如果使用限位开关,我们现在如何处理归位周期?我们是否使归位周期完全独立于系统的其余部分并让它完成它的事情? |
我认为您将它们视为完全独立的操作,恰好使用相同的开关(或不使用)。如果机器共享开关(大多数情况下),那么当发出 G28 或 G30 时,这些开关将成为归位开关。它们保持在该模式,直到归位操作完成,然后它们再次恢复为限制。 |
我同意奥尔登的观点。限位开关中断应区分是原点操作有意触发还是意外触发。 在回原点模式下,运动停止并通知原点功能清除开关并将相应的轴位置设置为零。在硬限制模式下,该行为与急停相同。虽然我仍然希望选择自动清除硬限制违规。 顺便说一句,恕我直言:与现在的实现方式相反,归位功能应该使用普通(很长)缓冲移动来驱动机器进入极限。这样,归位可以以最大速度运行。 |
将归位保持为单独的操作听起来是个好主意。我认为将它放入计划器/缓冲区系统确实会使事情复杂化。这也将帮助人们根据需要编写自己的归位例程,因为我们不能真正说一种归位方式是每台不同机器的正确方式。 我在想,因为归位非常像慢跑,所以我们一次只移动一个轴。我们拥有在设置中计算我们自己的加速度限制和急流进给率所需的所有信息。我们可以保证全程最高速度。将一些慢跑和归位的运动代码组合在一起可能是一个好主意。 Jens:为了自动清除硬限制违规,我想不出一个非常简单的方法来处理硬限制跳闸。我想做这样的事情,但它可能更容易不让用户点击 grbl 重置/中止,只允许归位循环(重新配置限位开关)来移动轴。 其次,假设我们有两个要使用的引脚:grbl abort/reset(与运行时命令相同)和限制/紧急停止引脚。问题是当遇到急停、硬限位、归位周期,最重要的是,在归位周期和急停期间,这些引脚中的每一个如何协同工作。我们是否应该强制要求 e-stop 始终连接到 limit 和 grbl abort 引脚? |
我一直在将归位集成到规划器中,因为我认为确保过程中不会丢失任何步骤非常重要,并且我需要减速工作良好。我一直在向规划器发出增量模式 (G91) 命令来执行此操作。这说明了一种更通用的“固定循环”能力,用于进行归位、探测和可能的钻孔循环,以及一种处理微动的方式。我一直在使用归位周期来解决这个问题。 |
我不同意。我曾尝试将归位和慢跑集成到规划器和步进器模块中,但它使步进器模块变得臃肿且笨拙。 归位和慢跑都是特殊的运动情况,它们不需要使用规划器。(通过切换开/关或旋转拨盘进行慢跑,而不是 g01 可以做的明确移动。)探测也可以这样说。最重要的是,对于归位和探测,您必须在达到限制时立即立即停止。发生这种情况时,您会失去步骤。对于归位来说,这没什么大不了的,因为无论如何您都在定位零,但是探测可能需要一些特殊处理以避免丢失步骤。 对于其他固定循环,如钻孔,使用计划器很好,因为它是计划运动的一部分。 |
好,好,想走出去——到底“外面”在哪里? 以下是我使用规划器进行归位的原因和方式。我很容易错了,但这是逻辑。当您在初始高速搜索时卡入开关时丢失步骤可能无关紧要,但我确实认为您需要一个可重复的锁存阶段,这样您就可以尽可能地控制停止 – 所以我喜欢干净此时减速。可能是为了实现这一点,您需要一个不同于正常操作的归位加速(减速)曲线,但我认为无论如何您都需要一个可重复的曲线。 至于让计划者臃肿——我相信你所要做的就是利用已经存在的东西,而不是添加任何新东西。你发出一个动作,然后当开关被按下时强制一个进给保持(尽管是一个快速减速的进给保持)。然后你重置坐标,清除计划,重新开始。计划者本身不需要改变。 你认为这是有道理的吗?或者它是矫枉过正还是逻辑错误? |
我对“想走出去”这句话的理解是出去打架或呼吸新鲜空气。我猜不是后者。让我们在这里文明一点。我们都在这里自愿利用我们的空闲时间来从事这个项目。 至于讨论,有很多方法可以做到这一点。你的方法可能是正确的。分离一切的想法也是如此。另一个是完全使用计划器。相反,归位、慢跑和探测例程将显式块写入缓冲区是非常短的段。这样就可以访问和使用步进器模块,只需对效率和可读性进行最小的更改和影响。关闭加速计划时类似于 v0.6 的内容。 哪一个适合 grbl 及其对简单性和可破解性的关注?很难说,直到我可以查看每个人需要什么。 |
这只是我蹩脚的幽默尝试。对不起,如果它以任何方式被误导。我很感激我们都在业余时间做这件事,我真的很喜欢来回。 我同意,在您尝试一些事情之前,很难知道正确的实施方法是什么。如果您可以利用计划者,那可能是最简单的。如果它使计划者复杂化,它可能不值得。 |
没问题。无论如何,讽刺并不能很好地通过文本翻译。 Jens:您说过您将考虑将限位/紧急停止引脚移植到 grbl v0.8 中。优惠还在吗?我想看看你如何配置引脚并让它们触发。我们现在可以直接将它集成到 v0.8 中,作为一个立即停止,稍后再处理其他细节。不过,它需要与当前的归位周期很好地配合。 |
你好。我有一些建议,我不知道这是否是问/说它们的正确“地方”。首先,关于我的机器。我正在改装一个小型 CNC 路由器,它开始使用 DOS 控制器和专有控制器。从那以后,我将控制箱更改为一些现成的步进驱动器,并使用 Mach3 作为控制。这很好用,但现在越来越难找到一台运行 Mach3 并具有并行端口的计算机/笔记本电脑。所以,我正在尝试使用 grbl 作为并行端口的替代品。我想用我的 Arduino 控制一个主轴、3 个归位开关和 3 个运动轴。 就像 Simon 最初计划的一个没有很多花哨功能的简单 G 代码解释器一样,我希望 grbl 从 Vectric 的 Aspire 中获取输出,而无需我过多干预。我确实看到用户干预是让工具位开始切割工作位置。我正在努力让 grbl 中现有的归位例程在我的机器上运行。它们开始起作用了,但我认为我们需要实现一个去抖动功能,我不确定现在编写这些例程的最佳方式。 阅读此主题后,现在进行一些观察。grbl 将成为控制器的大多数爱好机器都不是大型机器。我不认为 grbl 需要一个特殊的 E-stop 来关闭步进驱动器。如果您处于失控状态,我见过的大多数 Arduino 板都有一个 RESET 开关,它成为一个非常有效的紧急停止。此外,步进电机系统不易出现失控情况。直流伺服系统是,但 grbl 并不是驱动此类系统的真正候选者,因为它实际上并不能实现高脉冲率。 我也不知道有多少小型 3 轴机器实际上具有可反转主轴。我想这些机器中的大多数都运行某种类型的 Dremel 或 A/C 路由器作为主轴,并且这些电机只会单向运行。 其次,我看到了另一个关于使用手控制器和需要额外的针来实现慢跑的“问题”。我在这里可能错了,但为什么不创建一个特殊的 G 代码,在用户选择的方向上启动用户可选择的轴,直到串行端口接收到任何数据。说“G100 X25 F50” 这个指令会启动 X 轴以 F50 的指令进给率正向移动,直到串口有任何数据进入。如果在 X=25 时串口没有接收到数据,则机器自行停止。这也适用于 -25,沿递减方向移动轴,直到在串行端口上接收到数据或获取位置。这将在软件中实现 JOG 功能,并使您仍然可以从终端程序或专用 G-Code 滴灌程序进行简单的设置/慢跑。好处是,如果你做了一个专门的控制程序,你可以在 KEYDOWN 命令上发出点动命令,并在相应的 KEYUP 命令上中断运动。 最后,(现在)我很想看到 XON/XOFF 的实现,因为我可以使用任何终端程序滴灌控制器 G 代码。顺便说一句,看到串行缓冲区的大小正在减小,我并不是很兴奋。我的路由器运行速度约为 1500 毫米/米,我担心数据不足。 布鲁斯 |
您好,感谢您的意见。 关于去抖动,我建议您使用 RC 过滤器。这比硬件去抖动“实现”简单得多。 您可能对 grbl 用于控制的机器是正确的。但话又说回来,一些爱好者比其他爱好者走得更远。只需在 youtube 上查看令人惊叹的 DIY CNC 机器。 由于许多小型机器没有用于手动移动轴的轮子,我个人喜欢在机器上安装硬件按钮以进行慢跑的想法。我认为我们还解决了“引脚短缺”问题。 XON/XOFF 可能会在下一个版本中作为 eeprom-able 选项出现。缓冲区长度将不再是问题。 |
很有意思。现在 Grbl 中的结束代码仍然只是 2012 年 2 月 8 日星期三上午 11:01,Jens Geisler <
|
我自己用过一两次电源板:) 也许这就是那个大红色按钮应该去的地方。 去抖动对于限制来说不是什么大问题,但对于归位来说可能是个问题。我使用 RTC 在开关闭合上提供 100 毫秒(大约)的排除区域,这样就不会读取其他闭合。我希望尽早检测到开关闭合,并且将虚假闭合的可能性降至最低。集成器方案——无论是硬件还是软件都延迟了闭合的开始,当您插入开关时,这并不好。 |
嗨布鲁斯。非常有趣的评论。很多事情要考虑。 我用我的 Arduino 上的物理复位按钮作为急停按钮,但有时很难按到。虽然我忘记了 Arduino 上有一个 RESET 引脚,并且可以明确地用作急停引脚,供用户将急停按钮连接到其中。对于这个“问题”,这将是一个伟大而简单的解决方案。我想看看你们对此有何看法:强制 Arduino 复位引脚用于急停按钮。在 wiki 中放置一个简单的接线示意图示例。保留限位开关销,用于归位和管理硬限位。 至于您对急停需要的评论,在大多数情况下,您可能是对的,所有用户可能不需要急停,但我确实需要。我有一台 Sherline 台式铣床,不想将工具撞到 XY 底座或燕尾榫上。这里的想法是在没有太多妥协的情况下拥有完整 CNC 系统的最小功能。 正如 Simen 所说,归位和限制例程是临时的,需要一些 TLC。现在,要提出一个通用的解决方案,在优先事项列表中的位置还很遥远。虽然 grbl 的源码旨在让用户轻松编写自己的。 诚然,在大多数爱好机器上可能不存在可逆主轴,但 grbl 或其代码已在许多非标准机器上使用,例如张紧线悬挂画家、喷水器、激光切割机、3d 打印机等。虽然可能没有直接在磨机上使用,可能在其他地方。它很容易实现,而且确实没有不这样做的主要原因。 慢跑是真正需要在完成之前讨论如何实现它的事情。我喜欢您使用 g 代码解析器来解释启用的轴和进给率的想法。为了模拟它,很多用户刚刚发送了 grbl short G0/G1 命令。有效,但不是一个很好的解决方案,因为在不同的机器上计时可能是一件苦差事。我喜欢使用大头针来打开和关闭运动,并使用解析器来解释进给率和要移动的轴。 标准 Arduino 上的串行缓冲区大小为 128 字节。它被减少回 128 字节(从 256 字节),主要是为了释放一些内存空间并保持规划缓冲区大小尽可能大。我个人并没有使用曲线重 g 代码测试在这些速度下遇到缓冲区不足(我听说它运行速度高达 10000 毫米/分钟,但未经验证。)此外,grbl 中有两个有效的缓冲层,规划器和串行读取。如果界面能够充分利用它们,它应该没有问题。即使这将是一个问题,grbl 也被编写为可破解和可重新配置的。增加串行缓冲区很容易做到。 此外,如果 Arduino 速度是个问题,有基于 ARM 的解决方案使用 grbl 的代码库或一直在移植它。在某些时候,我希望看到 grbl 开始使用更快、功能更强大的控制器(如 Arduino Due),但标准 Arduino 是一个很好的平台,可以将爱好者介绍给 CNCing,而不必担心过多的投资。这是我从事这个项目的主要原因。 |
我也可以在我的机器上使用重置引脚进行 estop。我对电源板停止的问题是,为我的 grbl-shield 供电的 24V 电源有足够的电容来保持步进器运行令人不安的长时间。通过物理中断 24V DC,我解决了这个问题。将 Arduino 上的复位引脚接地也可以。我们只需要让g-code streamer在reset pin被释放并且grbl代码启动时停止发送命令。真正中止引脚的一个好处是代码可以通过与客户端通信或拒绝非归位 g 代码命令等来处理它。 我一直在使用 G0/G1 手动慢跑,但梦想有一天我可以对轴进行 PS3 控制器式控制以实现快速定位。我将把它留给其他人来决定实施,但我很高兴看到一些用于“压敏”进给率控制的模拟读取引脚。不过,我也会没有它。 整个项目让我进入了我的第一台 CNC 铣床。非常感谢 Simen、Sonny、Jens 和 Alden 迄今为止所做的贡献! |
感谢大家花时间回复我的初始帖子。这就是我的想法… jgeisler0303:我知道我可以在硬件上做到这一点,但我真的想保持我的界面简单。现在它只是一个直接焊接到我的 Uno 板上的 25 针 D 型连接器。我知道软件去抖动是可以做到的,我一直在思考如何在当前的框架中实现它。我要试试… 西蒙:首先,很抱歉打电话给西蒙……虽然我同意硬件重置会影响工作,但如果发生不那么灾难性的事情(工具位断裂或机器撞到夹子),从已知位置执行简单的归位程序,然后慢跑回到起始坐标至少会让你有机会重新开始并尝试挽救工作。另外,我有点假设有人实际上已经尝试过归航程序。我必须进行大范围的手术才能使它们起作用,但它们仍然不存在,但是知道代码甚至没有经过验证确实会有所帮助。我会花一些时间在上面… adlenhart:我不同意使用软件进行去抖动。由于归位程序可以完全控制轴的移动,我想如果我检测到可能的开关闭合,我可以在机器不移动的情况下减慢轴的速度(甚至等待指定的时间),直到我对接触确实感到满意关闭。无论如何,我将尝试通过一些实际的代码/测试来证明我的假设。我会报告我的发现。 chamnit:虽然我意识到归位是一个低优先级,但对我来说它非常重要。至于移除主轴方向销,我有一个替代的动力。我想做的是使用第四个针作为工具触摸针。也称为 Z 零板。它们太棒了,一旦你使用了它,你就再也不想回到使用纸或“eye-cromiter”来知道工具钻头何时接触到作品。这与 Z 轴归位例程完全一样,除了它将使用不同的销和相反的 Z 方向。这确实会导致请求存储另一个 eeprom 变量,这将是工具触摸板厚度。如果您不熟悉这种技术或我在咆哮和咆哮的东西,我很乐意提供该过程的链接和视频。 我还想出了一种方法来使用现有框架执行我在上一篇文章中提到的自动慢跑功能,但它需要一个更多的覆盖命令。您当前的 CMD_FEED_HOLD 将停止当前运动的运动。唯一缺少的是 CMD_CYCLE_STOP。我想我可以使用 CMD_RESET,但我认为重置一切都太激烈了…… gregrebholz:我认为一旦实现了 XON/XOFF,grbl 中的第一个字符是 XOFF 命令就很容易了。这将在重置后有效地停止传入的数据流。我认为不需要单独的别针,但这只是我的意见。 我想建议对调用归位例程的方式进行一些更改。我认为这将涉及对很多 C 代码文件的代码更改。我也非常有信心,一个通用的归位程序将覆盖大约 95% 的机器——至少是 3 轴路由器/铣床类型的机器。我想这应该转移到另一个“问题”线程。 我愿意在 grbl 的归位部分工作,但我必须 100% 诚实。C 不是我的第一语言。不过,我可以并且已经在其中进行了编程。就是不知道能不能达到西门的标准。从好的方面来说,我会自由地发表评论,这样读者至少会明白我想要做什么或为什么…… 那么,我应该创建另一个分支还是应该将这些代码更改提交给某人?我不熟悉 Github 和一般代码存储库的互通…… 布鲁斯 |
Bruce:如果你不会流利地使用 C,那也不是问题。编程中最困难的部分是组织思想和降低操作顺序。我一直在努力获得使归位真正成为可能或有用的其他东西,例如机器坐标和工作坐标(G54+)之间的区别。还有其他一些东西,比如设置和存储变量,比如将偏移量存储到 eeprom 内存和实时状态和位置报告,以及这里讨论的内容。如果您想开始制定归航例程,您可以分叉 grbl 存储库并随意破解代码。当你觉得需要提交到主仓库时,我们可以合并它并处理细节。我知道这是某些时候真正需要的东西, 在某些时候支持 z 零板会很棒。我知道偏移工具 z 位置的意思可能会很麻烦,但并非不可能。 我不确定您所说的 CYCLE_STOP 是什么意思,以及它的功能是什么。重置命令重新初始化 grbl,同时保留机器位置和工作坐标偏移(在下一次推送中可用)。它清除所有剩余块的计划缓冲区,并擦除其中任何挥之不去的东西的串行缓冲区。它将所有 g 代码模式重置为默认值并开始干净。除了定位数据,我看不出还需要什么。 |
更精细一点 – 归位程序完全控制轴运动的软件 – 物理控制实际的轴运动。他们不会立即停止。去抖需要做的是(1)尽快检测到开关闭合 – 以便在击中时对开关施加最小的机械应力,以及(2)在击中开关时不要多次触发。机器达到极限之前的虚假关闭并不是真正的问题。 有很多方法可以做到这一点——我的建议只是一种方法。我有兴趣看看你想出什么。感谢您的加入。 |
aldenhart:是的,从技术上讲,你是对的。物理学可以控制超调,但在我们谈论的低速(~350mm/m 或更慢)并且这些机器中的大多数可能会在 50kg 以下,我并不认为惯性是主要因素。 至于噪音,我不确定我在机器上看到的到底是什么。它与 Mach3 完美匹配,但我从 Y 轴收到一个非常间歇性的关闭信号。X 和 Z 轴回家就好了。所以,我不知道我是否收到了噪音,或者由于某些逻辑编码错误,Atmel 上的限制引脚变低了……这就是为什么我计划添加去抖动例程,这样我就可以消除噪音问题。 布鲁斯 |
chamnit:还有更多,但额外的 CMD_CYCLE_STOP 的原因就是这个。比如说,我已经为一项特定的工作设置了我的机器。我已经将机器归位,设置了绝对模式(G90)并说我正在以英寸(G20)运行这部分。现在,我想点动机器,使工具位位于工件 0,0 处。不幸的是,我是一个糟糕的打字员,我输入的是 G0X2000 而不是 G0X200。现在,这台机器只有大约 400 毫米的 X 行程。所以,我点击了“!” 键,机器将受控停止。现在,我该怎么办?我唯一的选择是 control-x(完全重置)或硬重置(Arduino 重置开关)。这些选项中的任何一个都会导致我丢失所有以前的状态(绝对、英寸等)。 我希望的是不会重置整个控制器的东西,而只是最后一个命令:CMD_CYCLE_STOP。机器将不再尝试恢复长时间的慢跑。 我希望这能说明我在追求什么。对不起,如果我的描述太罗嗦了…… 布鲁斯 |
好的,您确实对也保留了 g 代码模式提出了一个很好的观点。像这样的事情不会很难做到。让我和我的机械师朋友谈谈这件事。我认为此功能与生产型 CNC 机器上的“取消”功能类似。我在进行机器调查时可能忽略了这一点。 如果要这样做,我会在下一次推送中标记它,而不是在本周末之前的下一次推送。 |
我和我的朋友看了看我们的 Haas 机器并详细讨论了这个问题。一般来说,确实没有 CYCLE_STOP 功能。只有重置,但重置可以通过两种方式发挥作用,保留 g 代码模式或将它们重置为默认值。不将 g 代码模式重置回默认值可能很危险,尤其是 G90/G91,并导致严重的崩溃。在实践中,应始终重置 g 代码模式以防止出现这些问题。 我能说的唯一需要保留的是 G20/G21 英寸和毫米模式。这可以放在 eeprom 内存中,并在重置时重新加载。 我可以看到拥有 CYCLE_STOP 命令将如何帮助您实现慢跑,但我认为还有其他方法可以做到这一点而无需此命令。如何做到这一点,以及设置,是需要讨论和弄清楚的事情。 |
我想也许 CMD_CYCLE_ABORT 会是一个更好的名字,而不是 STOP。我知道像 Mach3 这样的程序有两种停止类型。一种是您在恐慌中使用的紧急停止(红色蘑菇按钮),另一种是停止按钮或中止命令。当您损坏刀头或其他非紧急情况时在机器中使用。这就是我所要求的。我不认为 grbl 的目标是复制完整的 Haas 或其他机床控制器。我认为如果我们尝试做太多事情,grbl 的配置设置将开始看起来像 Mach3 配置页面(不用说,这是许多选项和引脚配置页面)。 我在归位程序上取得了一些进展。我正在处理的原始例程中存在一些基本的逻辑缺陷,例如所有轴都应朝负方向移动)。此外,取决于限位开关的工作方式,限位开关引脚需要拉高,以便限位开关闭合将它们拉低。那我正试图追查为什么我的 Y 轴限位开关只保持高位几秒钟然后读取关闭(即使开关没有关闭)…… 我还想支持某种类型的ABORT例程。现在,如果一个轴以错误的方向移动等,我将被迫急停/重置。 希望不久之后我会分享一些东西…… 布鲁斯 |
明白了。Mach3 和 EMC2 的配置问题在这里肯定是要避免的。简单才是王道。 我想我不明白你对 ABORT 例程到底想要什么,因为它已经存在于 v0.8 边缘,通过点击“Crtl-X”键击。您是否要求一些不同的输出,以便它不显示欢迎声明?您是否希望在您点击 ABORT 时保留当前的 g 代码状态(这很快就可以轻松完成)?grbl 重置/中止命令应该代表您的 Mach3 中止按钮,而不是急停。急停应由 Arduino 复位引脚处理,正如本次讨论所进行的那样。 我完全同意我们不必复制完整的 Haas 生产机器,但我认为让它们非常相似是个好主意,尽管被精简了。这将使新采用的有经验的用户更容易轻松熟悉 grbl 和当前的 grbl 用户以轻松使用其他机器。 |
大家好! 我想提出一个解决方案。它将增加 3 个额外的 DO(与 3 个限制一起)。 急停按钮——与步进驱动器启用和 grbl 并行连接,这样急停就可以做正确的事情并通知控制器,该控制器将不再信任当前已知位置。直到我把 E-stop 拉出来,什么都没有发生。不涉及固件。我认为用户对重置急停后发生的事情负有全部责任。除了通知用户机器不信任其当前位置的标志之外。 我建议使用串联的超驰继电器进行硬限制(在步进驱动器启用的路上) 硬停止——限位开关与启用的步进驱动器和 grbl 并联。在我看来,我不想知道机器为什么要撞到框架上,我只是想让它停下来稍后再问问题:) 硬停止覆盖——我没有手动移动轴的选项。我必须将控制权交还给系统以远离限位开关。所以我建议在限位开关和步进驱动器启用之间设置一个继电器。继电器是一个限制覆盖。系统可以识别它在哪里,并超越移动、回家、慢跑的限制。这也处理了归位序列 – 向一个方向发送,硬限制 + 禁用步进,打开覆盖,回家,关闭覆盖。 斯科特 |
我认为带有通知输入的硬接线急停是要走的路。但我并没有真正理解你建议的接线。急停按钮必须连接到步进器启用和 grbl 输入。如果驱动器启用低电平有效,那么它应该有一个上拉电阻,grbl 将其拉低以激活,急停按钮断开连接以禁用。通知输入直接连接到启用引脚。那能行吗? 我的机器也没有手动缓动轮,我确实考虑过用于硬限制的超驰继电器,并且非常喜欢这个想法。但另一方面,我确实足够信任 grbl,以至于我可以使用软限制。这里的问题又是:我们如何才能使 grbl 以最小的配置开箱即用,并且仍然为更高级的用户/硬件设置启用更多功能?也许我们应该开始考虑一个编译时配置方案。深思熟虑,实施良好,灵活且可消耗的修改总是受欢迎的。 |
杰斯勒—— 我同意主要使用软限制,尽管就个人而言,我希望“以防万一”在那里设置硬停止。特别是在编码/测试阶段?如果限位开关是常闭的,那么用户可以选择将一个上拉电阻连接到 grbl 限位引脚,并将限位开关接地。如果他们不想要硬限制,那么只需将 3 个限制引脚接地。不涉及软件。 至于急停接线,我认为急停在接合时会拉起 grbl 上的通知引脚和步进驱动启用。如果用户不想要/不需要急停通知,他们可以将急停引脚接地吗?如果它想被忽略,这将使我们不必担心处理通知?我想如果用户不想在 estop 通知上浪费一个 pin,那么它必须在软件中。 如果我们可以节省 4 个数字输入,那么我们可以有最低的启动要求吗?将 4 个引脚中的任何一个接地以忽略它们。该软件可以以任何一种方式开展业务。 |
我一直认为急停应该直接连接到 Arduino 复位引脚。这将做完全相同的事情并强制 Grbl 完全停止并重置。只要握住销钉,机器就不会移动。硬限制的主要问题是每个人都有不同的设置和要求。我们不能假设一个通用的解决方案可以支持所有人,这可能会成为未来的一大难题。 此外,我认为 Grbl 支持的大多数(如果不是全部)步进电机没有足够的扭矩来损坏框架或丝杠。所以,我认为即使这不是由用户连接的,简单的物理硬限制也可以正常工作。 至于软限制,我认为这是必不可少的。这将允许用户通过控制减速停止而不失步来保持定位。这与归航程序密切相关,没有它,它几乎没用。归位例程需要一些 TLC,但一旦进入并变得健壮,我们就可以毫无问题地进行软限制。 |
关于限位开关的说明……(注意,我是新来的,还没有看到这个问题在任何地方解决。如果有,请原谅我) 8 英寸 Tandon 软盘驱动器软件中一个非常著名且令人讨厌的错误,早在何时导致更换大量使用光学传感器作为限位开关的驱动器时,无论是由于电气故障(通常是通电)或机械冲击,导致用于触发光学限位开关的“标志”通过限位开关。在软驱的情况下,限位开关用于检测磁头何时位于零磁道。错误发生了,磁头在零磁道后面。解决方案是编写一些忽略限位开关的代码,步进 5 个单位,然后第 10 步负数或直到它碰到限位开关。 我这样说是因为虽然我的新 XY 工作台有非常漂亮的可调节限位开关,但 Z 轴是光学的,尽管标志足够大以避免这个问题。 这也带来了归位,在其中,我再次调用旧的软盘“寻找跟踪零”例程,其中磁头以低速步进以找到归位,而不是高速。花了更长的时间,但从未损坏任何东西。相同的方法用于打印头。 在慢跑。 |
开关: 软盘搜索: 慢跑:由于几何原因 DRO 的正交解码器/计数器: 希望这可以帮助。 |
jgeisler0303 评论 on 27 Jan 2012
我认为立即关闭所有运动的红色大按钮是下一个版本的必备品。(你有没有看到一个错误的程序破坏了你的刀具,而你因为电源开关无法触及而无法做出反应?)。该按钮可以与限位开关串联,这样限位开关也会触发立即停止。不确定,但我认为一些 DIY 机器会在丝杠过度扭曲时断裂。限位开关/急停输入引脚应配置为中断。它已经在我的 jgeisler0303 叉子中了。如果大家都同意,我会尽快将其移植到 v0.8。