开源改变世界

(软)限制、拉断和工具长度……想法 RFC #425

推推 grbl 2年前 (2023-01-22) 184次浏览

关闭
mschorer 打开了这个问题 2014 年 6 月 4 日 · 9条评论
关闭

(软)限制、拉断和工具长度……想法 RFC#425

mschorer 打开了这个问题 2014 年 6 月 4 日 · 9条评论

注释

(软)限制、拉断和工具长度……想法 RFC #425

请评论这些想法:

反转拉出逻辑

当我们按下归位开关时,我们首先将坐标重置为 pull_off,然后移至零:

  • 零不在开关触发的完全相同的位置。我的机械开关不是那么可重复
  • 软限制可以安全地在机器限制内……有一些空间可以优雅地减速和失败
  • 硬限制仅在出现问题时触发
  • 归位时机器坐标也全为零看起来更好;-)

从软限制 Z 空间中减去刀具长度

将软限制定义为“无工具安全行程”,然后将软限制 z 行程减少工具长度

  • 更好地保护机器
  • 相当小的代码/内存影响(对于 328p,当限制为 4-8 个工具时)
  • 支持多种工具(以及长期工具更换器)的第一步

你怎么看?

顺便说一句,这两个想法似乎仍然适合 328p 的内存——我准备了一些粗略的代码。

(软)限制、拉断和工具长度……想法 RFC #425

我创建了一台机器,其 Home 位置位于 X0 Y50,所以我在 limits.c 中做了一些反逻辑以使其工作。我为我的机器正确设置了最大行程参数。

这是我对从第 219 行开始的 Limits.c 代码所做的更改

if (cycle_mask & bit(idx)) {
  if ( settings.homing_dir_mask & get_direction_mask(idx) ) {
    target[idx] = -settings.homing_pulloff-settings.max_travel[idx];                     //Made this negative so that Y becomes max travel when homing in inverse direction, rather than negative max.
    sys.position[idx] = -lround(settings.max_travel[idx]*settings.steps_per_mm[idx]);    //Made this negative so that Y becomes max travel when homing in inverse direction, rather than negative max.
  } else {
    target[idx] = -settings.homing_pulloff;
    sys.position[idx] = 0;
  }
} else { // Non-active cycle axis. Set target to not move during pull-off. 
  target[idx] = (float)sys.position[idx]/settings.steps_per_mm[idx];
}

因此,通过使 to 线为负,然后我的轴在归位后将采用 Max Travel 值,从而允许我将轴的位置设置在家中。它对我很有效。

(软)限制、拉断和工具长度……想法 RFC #425
成员

@mschorer:

  • 我可能应该将归位更新为 [0,0,0] 并更新软限制检查以适应这一点。为什么他们的机器坐标归零后不为零,我有太多的请求和问题。重写 g 代码解析器后,我不再那么担心 CPU 开销,因为我们似乎有足够的周期来投资于此。我愿意改变这一点。
  • 我不确定将 z 长度偏移应用于软限制。工具撞击工件的风险与工具太低并撞击机器底座的风险一样大。我认为这只会导致更多的混乱。我将不得不考虑这个问题,并询问我的机械师朋友这样做会带来什么样的其他问题。
  • 我不反对添加工具参数等。Carbide 3d Nomad 的人想在某个时候添加这个。我个人暂时无法解决这个问题。只要它紧凑且微创,我就可以接受。
(软)限制、拉断和工具长度……想法 RFC #425
作者

@chamnit: 我明白。我想我会整理我的 git 并为我所有的东西提供代码。

关于碳化物/游牧民族:你和这些人有联系吗?他们的固件是基于grbl的吗?我会对他们的“工具长度探针”代码感兴趣——只是为了不重复工作……

(软)限制、拉断和工具长度……想法 RFC #425
作者

@chamnit:

  • 零坐标看起来不错!在 limits_go_home() 中归位
    的 零坐标:
  } else {
    sys.position[idx] = settings.homing_pulloff;
    target[idx] = 0;
  }

我可以看到自动机器校准即将到来……:-)

  • 但我很确定,我永远不想撞到机器床上。:-)。还有很多事情去做这可能会出错——少一个更好。
  • 到目前为止,工具参数/长度的东西似乎是合理的。主轴在撞到床身之前确实停止了。目前我没有将工具参数存储到 eeprom,因为 heekscad gcode 生成器似乎都首先输出软件配置的工具设置。此外,通过这种方式,新重置的机器与标准 grbl 没有任何不同。
    @chamnit:我会向您咨询 Tx 和 M6 的正确工作方式,如何通过 gc_block.modal.tool -> gc_state.modal.tool -> gc_state.tool 获取工具索引以及何时使用 protocol_buffer_synchronize();

@timryder:我还认为 softlimits 和 homing dir 应该是完全独立的,甚至更可配置。但是我越让约定俗成,它们对我来说就越有意义。

(软)限制、拉断和工具长度……想法 RFC #425
作者

@chamnit: 顺便说一句,我已经在 github 上更新了我的 grbl/dev

它包含用于以下方面的简单技巧:

  • 状态指示灯闪烁代码
  • i2c
  • 刀具长度
  • 归零

我不得不承认,我在提交和更新方面做得非常糟糕……差异看起来很糟糕!

下一步:

  • 刀具长度校正
  • 刀具长度探测
(软)限制、拉断和工具长度……想法 RFC #425

我的问题是我的机器是在 +X +Y 坐标系中设计的。所以我的 Y 回家远离工件,将它放在 50 毫米处。所以我需要在归位后覆盖坐标以反映这一点。

(软)限制、拉断和工具长度……想法 RFC #425
作者

@timryder:不确定,如果我明白你在做什么,但是..
你可以通过适当地改变 g54 坐标系来做同样的事情:

  • 机器坐标中 y=0 的位置(默认设置)
  • 执行“g10 l2 p1 x0 y-50 z0”(将 g54 坐标设置为 y-50)和
  • 让 grbl 正确工作坐标到你修复后得到的东西

不确定我的减号是否正确…

(软)限制、拉断和工具长度……想法 RFC #425

使用 0.9e

g10 g2 p1 y-50
错误:无效的 gcode ID:24
g10 g2 p1 y50
错误:无效的 gcode ID:24

喜欢 (0)