开源改变世界

最新的边缘归位行为 #230

推推 grbl 3年前 (2023-01-21) 221次浏览

关闭
tmpvar 打开了这个问题 2013 年 5 月 19 日 · 9条评论
关闭

最新的边缘归位行为#230

tmpvar 打开了这个问题 2013 年 5 月 19 日 · 9条评论

注释

最新的边缘归位行为 #230
贡献者

所以我只是用一些归位开关设置我的机器(已经很长时间了!)。启用归位的早期版本/分支在我的最后一台机器上真的很挑剔,但这段代码看起来真的很可靠。

但是有一个问题。归位序列完成后,sys.position在负空间中出路,因此?报告如下:<Idle,MPos:-197.999,-197.999,-198.000,WPos:-197.999,-197.999,-198.000>

我无法想象这是预期的,但也许我的配置是错误的:

$0=343.340 (x, step/mm)
$1=343.340 (y, step/mm)
$2=157.480 (z, step/mm)
$3=10000.000 (x v_max, mm/min)
$4=10000.000 (y v_max, mm/min)
$5=500.000 (z v_max, mm/min)
$6=125.000 (x accel, mm/sec^2)
$7=125.000 (y accel, mm/sec^2)
$8=50.000 (z accel, mm/sec^2)
$9=200.000 (x max travel, mm)
$10=200.000 (y max travel, mm)
$11=200.000 (z max travel, mm)
$12=10 (step pulse, usec)
$13=250.000 (default feed, mm/min)
$14=0 (step port invert mask, int:00000000)
$15=25 (step idle delay, msec)
$16=0.050 (junction deviation, mm)
$17=0.005 (arc tolerance, mm)
$18=3 (n-decimals, int)
$19=0 (report inches, bool)
$20=1 (auto start, bool)
$21=0 (invert step enable, bool)
$22=0 (soft limits, bool)
$23=0 (hard limits, bool)
$24=1 (homing cycle, bool)
$25=224 (homing dir invert mask, int:11100000)
$26=400.000 (homing feed, mm/min)
$27=400.000 (homing seek, mm/min)
$28=100 (homing debounce, msec)
$29=2.000 (homing pull-off, mm)

这是 grbl 问题还是我配置错误?

最新的边缘归位行为 #230
贡献者作者

做了一些探索并注意到“拉出”代码没有按照我期望的方式工作。

在这里打补丁:tmpvar@ a490888 – 基本上在 pull off 代码完成后将机器位置设置为 [0,0,0,…] 而不是“软限制边界” – “pull off”

如果这是正确的,我可以发送一个拉取请求,或者这可能是一个 hack,还有更好的方法。

最新的边缘归位行为 #230
成员

归位现在强制机器空间小于零(在生产 CNC 中很常见)。这样做是为了减少检查软限制违规的 CPU 密集度。这意味着现在它所要做的就是检查正目的地值或小于 -max_travel 的负目的地。

因此,根据您的限位开关位置和您在机器空间中返回的方向,归位例程将使用 max_travel 值来确定机器零位,以便坐标全部为负。然后归位牵引将从该位置移动。

在您的情况下,您将所有归巢方向设置为在负方向而不是典型的正方向上搜索家。所以它会将每个轴设置为它们的 -max_travel 值(XYZ 为 -200)。归位拉动将所有轴移动 2mm,因此所有轴现在都是 -198.0(大致)。[如果设置为在正方向上搜索,home 将为 0,pull off 将为 -2mm。]

这一切都假设您的机器上的坐标系设置正确,否则这将不起作用。如果它没有像我描述的那样工作,那么可能存在错误。我已经更改了很多与此相关的代码,但还没有将其推送到任何回购协议。

最新的边缘归位行为 #230
贡献者作者

归位现在强制机器空间小于零(在生产 CNC 中很常见)

好的,所以如果我有一个 [200, 200, 200] 的软限制并且我执行了一个归巢序列,我最终会在 ~ [-200, -200, -200]。现在,如果我发出命令,例如G1 X-10机器将进给 +190 个单位,并且距离软限制 10 个单位。这是预期的行为吗?

这一切都假设您的机器上的坐标系设置正确,否则这将不起作用。

某处有推荐的指南吗?

我已经更改了很多与此相关的代码,但还没有将其推送到任何回购协议。

如果您将它推到主题分支中,我很乐意根据我可能很奇怪的设置对其进行测试。

最新的边缘归位行为 #230
成员

是的。在您的情况下,G1 X-10如果您的机器坐标偏移全部为零,则会导致您的机器进给 188 毫米(距离拉出 2 毫米)。您可以通过将 G54 坐标偏移写入类似的东西G10 L2 P1 X-200 Y-200 Z-200(可能是 +200,永远不记得)来更改归位循环后的立即行为。这将使您的工作坐标在更熟悉的范围内移动,例如所有正空间。在后台,Grbl 将所有移动转换为机器坐标并据此检查软限制。

LinuxCNC.org上提供了有关设置机器坐标轴的指南。这有点令人困惑,但运动始终定义为工具尖端与工件的相对位置。因此,z+ 将工具从工件/床上向上移动。x+ 是将刀具移到工件右侧,或将床身移到左侧。y+ 将工具移离工件,或将床移向您。

不幸的是,我将所有更改与我一直在处理的进给率覆盖存储库的本地副本捆绑在一起。这一切都是零散的,可能无法正常工作。大多数更改是语义上的,并没有真正改变整体操作。我基本上重写了它们,以便在编译时更紧凑,并且更容易适应 3+ 轴,其中很多操作都是严格为 3 轴编写的。

最新的边缘归位行为 #230
贡献者作者

@chamnit首先,我要感谢您的耐心等待。那意义重大。

我认为我们思维模式之间的差异归结为机器的物理布局。当我在 x/y 上思考 + 时,我正在考虑头部在工作区域上移动,而我假设您正在考虑在膝磨机类型设置中移动的床。

这是我的机器在它的归位位置(最好是 0,0,0):
最新的边缘归位行为 #230

预期是当机器发出 +x,+y 命令时,龙门架将向相机移动,而 z 轴小车将向右移动。但是,如果没有上面的补丁,要进入工作区,需要发出-axis extent+命令。relative position或者,我可以根据最近的右角进行所有测量,然后发出负命令以返回到最左边。无论哪种方式似乎都相当混乱。

我想这里的目标是在将计算机屏幕空间映射到机器空间时降低认知开销。这是有道理的,还是我只是在给自己挖一个更深的洞?哈哈

最新的边缘归位行为 #230
成员

@tmpvar: 不用担心。很乐意尽我所能提供帮助。

您机器的 XYZ 方面是相同的,即使不是所有笛卡尔型铣床,也是大多数情况。XYZ 始终是轴正交的并且遵守右手法则。正如您所描述的,您的 x 轴沿着您的线性导轨,y 轴沿着您的横杆。

我知道这似乎混淆了我设置它的方式,但它确实使与归位、机器零和软限制相关的一切在 Grbl 代码中更容易管理。我认为这里最大的变化是让用户习惯使用工作坐标系,而不是机器坐标,就像在旧的预坐标系 Grbl 中一样。例如,您可以设置默认工作坐标系 G54,将归位位置定义为 [0,0,0],即使您的机器位置为 [-200,-200,-200]。每当您输入一个动作时,它都会按照您的意愿运行。

请注意,根据 linuxcnc.org,我最近更新了 G10 L20/L2 协议,以简化此过程。我认为您所要做的就是G10 L20 P1 X0 Y0 Z0在归位后立即发送命令,将归位的 G54 位置设置为 [0,0,0]。

不久前我问过我的机械师朋友关于生产 CNC 的负空间交易,他真的没有任何答案,为什么要这样做。只是它一直都是。或者,也许他们开始这样做是为了更容易分辨您在显示器上查看的坐标系。或者也许是因为我这样做的相同原因。无论哪种方式,机器坐标并不重要,不管它们是什么或如何设置。无论如何,工作坐标定义所有运动。

最新的边缘归位行为 #230
贡献者作者

我想你所要做的就是在归位后立即发送命令 G10 L20 P1 X0 Y0 Z0 将你的归位 G54 位置设置为 [0,0,0]。

啊哈!行得通,我绝对可以看到一些有益的情况

我知道这似乎混淆了我设置它的方式,但它确实使与归位、机器零和软限制相关的一切在 Grbl 代码中更容易管理。我认为这里最大的变化是让用户习惯使用工作坐标系,而不是机器坐标,就像在旧的预坐标系 Grbl 中一样。

也许最初遇到时,但应该遵循标准。

我挥之不去的担忧是,这些变化可能会使学习曲线变得陡峭,因为新用户现在必须了解工作/机器坐标之间的差异以及如何管理它们才能进行第一次切割。他们还需要记住在每个归位周期后设置工作位置。

最新的边缘归位行为 #230
成员

的确,它可能会增加学习曲线,但 Grbl 的行为仍然像以前不启用归位时一样。因此,无论何时重新启动,它都会将自身重置为 [0,0,0]。因此,那里有一些简单性。我认为当您对 CNC 投入足够的资金来安装限位/归位开关时,用户应该足够先进以了解如何使用工作坐标系。虽然,在某些时候需要一些明确的文档来说明这一点。也许当 v0.9 成为大师时。

此外,您不必每次都在归位周期后设置您的工作位置,至少当您不是故意这样做时。这意味着,一旦设置,偏移量将保留在 EEPROM 中,并且会保持这种状态,直到您更改活动工作坐标系(类似于 G55)或使用 G10 命令重新写入它。这是归位和工作坐标的伟大之处;一切都是可重复的,而且总是一样的。

您可能知道,您有 6 个可以独立设置的工作坐标。例如,您可以使用 G54 作为标准设置,在使用多个操作铣削复杂零件时将 G55-58 用作临时零件原点,将 G59 作为在某些偏僻/宽敞位置的可重复触发位置更改工具并测量 z 偏移。

最新的边缘归位行为 #230
贡献者作者

感谢您的时间/解释!

喜欢 (0)