注释
@109JB:这是设置归位的一般程序。我真的需要为此写一个 Wiki,因为这个问题每个月都会出现几次。
|
感谢您的快速回复。解决您的意见。 1- 轴都正确移动,需要设置 $3=2 |
@109JB: 听起来你的限位开关不像你想象的那样接线。Grbl 在任何引脚更改时都会发出硬限制警报(出于多种原因,我不会详细介绍),因此您的限制开关测试尚无定论。如果您的 z 轴设置正确以进行正常操作,则 Grbl 应该朝正方向移动,而不是负方向。那是除非你的限位开关是相反的。这不是第一次有人犯这个错误。 |
我向你保证,轴正朝着正确的方向移动。我不是 CNC 机器的新手,无论是生产机器还是 DIY,这也不是一台新机器。它已在 LinuxCNC 上运行多年。多年来,Homing 在此配置中也一直在使用 LinuxCNC,并在尝试使用 GRBL 之前和之后使用 LinuxCNC 进行了测试。 当我发出 G91X0Z1 命令时,头部向上移动,确认 z 方向移动正确。当头部完全向上移动时,限位开关被激活。 开关在 GRBL 中正常工作,这可以通过向开关移动的归位运动来确认,开关激活,轴稍微反转,再次前进以切换,重复,然后当应该发生拉断时,它会移动得更近到开关。 如果需要,我可以提供视频,但我很确定轴的移动方向正确,并且开关正在工作并被 GRBL 检测到。 |
@109JB: 明白了。验证我的想法的一种方法是更改归位搜索率。您应该看到归位搜索速度没有变化。如果您更改归位进给速率,您应该会看到速度的变化。当一切正常时,您应该看到相反的情况。 Grbl 的归巢程序相当愚蠢。它只移动一次搜索/搜索速度。当它检测到开关时,它会以归位进给/定位速度执行以下所有移动。如果开关没有像您想象的那样工作,Grbl 会立即检测到触发开关并进入定位模式。 让我知道你发现了什么。如果确实是Grbl端的问题,我明天一定会看一下代码。无论哪种方式,我都在我的待办事项列表中限制了定位周期的行程,这样这种类型的混乱就不会再次发生。就像我说的,这种情况不止一次发生过,一个用户把所有东西都连接好了,但是开关本身有问题。他必须打开它才能看到它被标记为与开关操作相反。 |
@109JB: 另外,帮我个忙,把 |
我刚从店里进来。不幸的是,那里还没有互联网,所以我只能在家里发帖。 仅供参考,我将我的 GRBL Arduino 连接到 DB25 连接器,以便 GRBL 与作为机器系统一部分的分线板通信。以这种方式设置,我可以通过简单地拔下 GRBL 的 DB25 并插入 LinuxCNC 机器上的 paraport 在 GRBL 和 LinuxCNC 之间来回切换。 在店里时,我重新连接了 LinuxCNC,并确认一切仍在该设置上工作,并且确实如此。LinuxCNC 归位按预期工作。我慢跑了几分钟检查所有的轴。最后,在关闭 LinuxCNC 之前,我将每个轴上的机器轴移出了极限几英寸。 我想确保我使用的 GUI(通用 G 代码发送器)不是罪魁祸首,所以我使用 Arduino IDE 串行监视器执行了以下操作: 然后我切换回 GRBL 并启动机器。我重置 GRBL 只是为了确保 GRBL 已经重新加载了所有设置。我之前已经将 23 美元设置返回到 23 美元 = 1,以反映 Z 限制在 Z+,X 限制在 X-,Y 限制在 Y+,因为机器设置和 WIKI 描述了 23 美元设置。重置后,我输入 $X 解锁机器,然后输入 G20 设置英寸单位。然后我输入了 G91G0Z1,头部按预期向上移动了 1 英寸。我对 X 和 Y 轴做了同样的事情来确认它们的运动方向。然后我输入 $H 启动归位序列,头部开始向下移动。由于头部应该向上移动并且向下方向没有开关,因此我关闭了步进驱动器的电源以在机器崩溃之前停止机器运动。 下面是请求的 $$ 和 $I 信息,这些信息会导致 Z 轴在归位时移动 Z-。下面的所有速度值都是从 linuxCNC 设置的速度值转换而来的。在 LinuxCNC 中,我的最大轴速度为 3.0 英寸/秒(180 IPM),归位进给率为 1.5 英寸/秒(90 IPM)。我确实尝试使用默认的归位进给率和 50 和 635 毫米/分钟的寻道速度在 GRBL 中进行归位。结果与 Z 轴在错误方向移动时相同。在归位期间。 此外,虽然我现在并不担心它,但我确实发现我必须从 linuxCNC 设置中降低我的轴加速度值。在 LinuxCNC 中,我在所有轴上的加速度为 20 in/sec^2,应该等于 508 mm/sec^2,但除非我将 GRBL 中的加速度降低到 175 mm/sec^2,否则我会出现电机失速。 **** 连接到 COM3 @ 115200 波特 **** grbl 0.9i [‘$’求救]
|
@109JB: 感谢您的设置信息。我将在今天晚些时候在我的测试设置中检查这一点。 同时,您是否能够检查更改 此外,您可以在 config.h 中启用 LIMIT_STATE_REPORTING(重新编译和上传)。这将导致 Grbl 在其“?”中发回极限状态。状态报告格式 |
@109JB: 另外,关于你的加速问题,我觉得你可以直接比较 Grbl 和 LinuxCNC 真是太好了!我从来没有时间深入检查性能差异。虽然,我听到了各种各样的报道。一方面,我听说 Grbl 在高速加工刀具路径上运行得更好,LinuxCNC 上相同的刀具路径会导致刀具过热和损坏。 这是我第一次听说有关加速的任何事情。我很确定 Grbl 和 LinuxCNC 以不同的方式处理加速和步骤生成,所以它可能与此有关。您可以为更快的机器调整一些配置参数。在 config.h 中,尝试将 ACCELERATION_TICKS_PER_SECOND 更改为 150 之类的值。您还需要取消注释 SEGMENT_BUFFER_SIZE 并将其增加到 8 之类的值。这样做将有助于平滑具有高加速度的机器的加速斜坡。让我知道是否有任何区别。 |
@109JB:好的,我花时间上传了 Grbl 的新版本并上传了您的设置。这应该是一个苹果对苹果的比较,因为 Arduino 是标准化的。没有什么不寻常的。一切正常。 同样,如果我要猜测到底出了什么问题,那将是限位开关或限位开关和 Grbl 之间的接线/电子设备。请记住,Arduino 是裸机电子设备,可能比缓冲良好的 PC 端口对外部影响更敏感。您必须连接通常不会发生的事情,并且确实会发生奇怪的事情。 |
我今天大部分时间都不在家,但确实有机会按照您的要求去做。 更改 $25 确实会更改归位时的初始移动速度。我尝试了许多不同的速度,但我认为不是这样。 我查看了 config.h 并且那里没有“LIMIT_STATE_REPORTING”,但我认为您指的是我未注释的“#define REPORT_LIMIT_PIN_STATE”。我跑了一个?查询了几次,我永远无法获得限制报告。状态行上打印的所有内容都是 Lim:如下面的剪切和粘贴所示。我什至通过更改 $5=0 并拔下 DB25 电缆来尝试它,该电缆应该具有高限制的引脚,但状态查询中仍然没有显示任何内容。如下所示,这是在警报中尝试的,并且单个轴处于限制状态,所有轴都超出其限制,处于解锁模式等。我尝试过的任何操作都不会为状态查询提供任何结果。这是状态报告的示例(必须从状态行中删除左箭头,以便在此处显示查询)。 Grbl 0.9i [‘$’ for help] 我还重新下载了 GRBL 并替换了我计算机上的所有 GRBL 文件,以防万一下载损坏或类似情况,但结果相同。 话虽如此,我认为真正的问题是,当 $23=1 时,归位时的轴初始移动方向错误。如前所述,我的限价开关位于 Z+、X- 和 Y+,因此 $23 应该 =1。我一生都无法弄清楚为什么会这样。我已经多次确认轴正朝着正确的方向移动。我整理了一段视频,展示了正在发生的事情。视频集中在 Z 轴上,因为它首先归位,但我发现要让运动朝着正确的方向前进,我需要 $23=6,这与 $23=1 正好相反。我认为这是问题的症结所在。 请看下面链接中的视频,我想你会更好地理解我在说什么。 |
@109JB: 确实很奇怪。感谢您发布视频。我找到了限制引脚报告不起作用的问题。我会在几分钟后发布它。但是,这不应该影响归位周期的工作方式。我不明白为什么它可以在裸 Arduino Uno 而不是你的机器上工作。我不记得您是否告诉过我,但是您如何将 Grbl 上传到您的 Arduino? |
我使用 Arduino IDE V1.6.1 上传。我使用的方法如 WIKI 中所述,选择示例 | grbl | grbl 上传。我认为这并不重要,但我使用的是 Arduino Nano 而不是 Uno。 |
@109JB: Nano 应该没关系,但我会订购一个以便我手头有一个可以测试。但问题是,您的视频显示 LinuxCNC 归位。当它发生时,我看到 Z 首先指向正方向,然后是 X 正方向,然后是 Y 负方向。但是,你的第一篇文章说 X 开关是负的,Y 开关是正的。为什么会出现差异?错字? |
没问题。我让很多人感到困惑,但这只是我的偏好。我在生产环境中的立式加工中心工作了几年。在那些特定的生产机器上,表格向右移动 +X,远离操作员 +Y。仍然是右手坐标系,只是 XY 平面绕 Z 轴旋转 180 度。这是我以前的经验所习惯的,所以我就这样设置了我的机器。 |
@109JB: 所以,我昨晚花了很多时间审查代码并测试它。我看不到任何会导致此问题的代码。我认为如果 Arduino Nano 或您的电气连接是问题,我们将不得不消除。我建议你从 Arduino 上拔下所有东西,除了你的 USB 电缆。针对这些情况监控 Z 方向 (D7) 和 Z 限制 (D12) 引脚。您需要将 Z-limit 连接到 GND 或将 NC 开关连接到地以模拟您的限位开关,因为您在设置中已将它们反转。 我们需要寻找的主要内容是 Z 方向销是否正确设置为正常 |
好消息。我能够按照您的建议进行一些测试,他们向我指出了我认为非常简单的解决方案。只需将 $5=1 更改为 $5=0 即可。这让我相信分线板没有像我认为的那样工作。尽管分线板向 DB25 的限位引脚发送了 5V 信号,但它必须简单地将其接地,基本上使它像一个 NO 开关一样工作。 我在测试过程中看到的情况是,仪表连接到 Arduino 引脚用于 Z 方向和接地是引脚为 0V 用于 +Z 移动。在没有任何其他引脚连接的情况下,如果 $5=0,无论发送 $H 命令之前的引脚状态如何,归位时引脚都保持在 0V。在 $5=1 的情况下,我执行了一个 -Z 移动,将 Z-dir 引脚设置为 +5V。启动 $h 导致引脚变为 0V,然后很快回到 5V。因此,我相信在归位期间,例程设置为 +Z,但立即检测到跳闸限制并反转为 -Z。 但是,如果上述情况属实,则当机器远离所有限制时,销应该是打开的。在 $5=1 的情况下,GRBL 应该将此视为跳闸限制,并在我使用 MDI 输入的任何时候发出警报。正如您在视频中看到的那样,即使使用 $5=1.. 我也能够毫无问题地进行 MDI。 我不确定这些,我想做更多的测试。不幸的是,我必须出城几天工作,并且在我回来之前无法进行任何测试。 请保持这个问题开放,直到我有机会做这个检查,我应该能够在我回来后迅速完成。 谢谢你的帮助。 |
@109JB: 感谢您的更新,很高兴您能够诊断出问题。 至于缺乏硬限制检查,您确实提出了一个很好的观点。Grbl 启动时没有一个,因为它只会让 Grbl 进入一个连续的冻结重置循环。但是,我认为如果仅在您 |
在重新阅读了一些东西之后,听起来限制是通过寻找引脚上的状态变化而不是特定的引脚状态来工作的。这个对吗?只是想了解逻辑是如何工作的。 |
@109JB:在归位期间,Grbl 检查引脚的实际状态。在正常操作期间,硬限制会在检测到任何引脚变化时触发,因为弹跳开关极有可能导致状态检查误读引脚。如果愿意,用户可以在 config.h 中禁用此行为,但不建议这样做,除非他们可以保证经过良好过滤的开关行为。 |
分身 评论 2015 年 4 月 2 日
@chamnit:“我认为,如果仅在您 $X 终止警报时进行硬限制检查,那应该涵盖所有情况。我会将其添加到我的待办事项列表中,以帮助立即诊断出像您这样的问题。” 我不同意解锁 grbl 时检查限制。许多人(包括我自己)使用 $X 在机器崩溃时自动将其移出极限(假设每个轴有 1 个限位开关和软限制)。当发生 $X 时,我投票不添加硬限制检查,因为这可以防止机器自动恢复自身。 我们添加到我们的 Grbl 机器的 Uncrash 代码: – |
@doppelhub: 是的。你是对的。Grbl 的状态机变得非常复杂,因此像这样的过度监督可能会更普遍。我们必须想出一个替代解决方案。 |
我对限制检测的替代解决方案是用步进器 ISR 中的快速检查来替换变化中的 ISR。我的想法是,如果您在每一步之前检查限制,即使使用非常有弹性的开关,您也不会超过限制的几步。在实践中,这工作得很好,尽管我没有在各种各样的传感器上进行测试。 我将 stepper.c 中清除轴锁的行替换为:
|
@ashelly: 好主意,尤其是限制检查程序的简化。但如果我没记错的话,我在归位例程中进行了严格的检查循环,因为它会在 ISR 的一侧保持对归位锁定掩码的更新。理论上,这应该允许它作为非易失性变量保留并仅由主程序写入。我从来没有检查过这是否真的是真的。 |
以为我会更新并发表评论。 我检查了我的分线板,我确实错了它是如何工作的。这就是归位的问题。GRBL什么都没有。 至于整个解锁和即使不回家也保持解锁,我不同意这一点。应读取开关状态并显示警报。至于能够从跳闸的开关上移开,有一些方法可以做到这一点,而无需让机器无限期地解锁。也许将机器解锁一段时间(最多 10 秒到 1 分钟)将允许有足够的时间从跳闸的开关上移开,然后机器可以归位。LinuxCNC允许解锁后一键移动。无限期地保持解锁状态可能会出现问题。例如,如果开关仅安装在轴的一端,可以解锁并在非归位、解锁状态下运行机器,然后机器可能会发生硬停止。这可能会发生,因为如果它没有正确归位,机器就不会 不知道它在哪里,软限制毫无意义。在某些机器上,如果碰撞没有足够的能量或电机功率造成损坏,这可能没什么大不了的,但在许多机器上,它可能会破坏某些东西。 |
@109JB: 感谢更新。解锁后的单步操作是个好主意,并且很容易实现。我会将其添加到待办事项列表中作为要调查的内容。我必须确保通信协议没有任何其他影响并破坏某些东西。从表面上看,不应该。 |
109JB 评论 2015 年 3 月 29 日
我终于把我的铣床设置好了,并试图让归位序列正确计算。首先,我在每个轴上只有一个限位开关,如下所示:
X 轴向负移动以激活开关
Y 轴向正移动以激活开关
Z 轴向正移动以激活开关
所以,我将归位方向反转掩码设置为 $23=6
为了让我的轴运动正确,我将方向端口反转掩码设置为 $3=2
奇怪的是,WIKI 指出正常的归位方向是 +Z、+X 和 +Y,这让我最初认为我需要 23 美元=1。但是,当 $23=1 时,启动归位序列开始 Z 向负方向移动。我最终以 $23=6 结束,它的轴最初以正确的方式移动。此外,我更改了 config.h 文件,使机器首先归位 Z,然后归位 X,然后归位 Y。每个轴以归位寻道速率移动,找到开关,然后按预期以归位进给速率接近,但是然后当需要移动到拉出距离时,它会更靠近开关而不是更远。我试图将拉离距离从 1.0mm 更改为 -1.0mm,但收到一个错误,即拉离不能为负数。在这一点上,我关闭了软限制。
我究竟做错了什么?