开源改变世界

键盘点动 #178

推推 grbl 2年前 (2023-01-21) 90次浏览

关闭
JKSoft 开启了这个问题 2013 年 1 月 31 日 · 11 条评论
关闭

键盘点动#178

JKSoft 开启了这个问题 2013 年 1 月 31 日 · 11 条评论

注释

键盘点动 #178

我正在尝试使用我的键盘原理图+软件)进行慢跑。
计划是在 keydown 和 ~ 在 keyup 上发送 G0 命令。到目前为止工作正常,但必须在下一步之前清除缓冲区。重置有效,但需要相当长的时间。因此,包含清除缓冲区(或仅清除缓冲区)的进给保持命令会有所帮助。任何提示调用新命令字符的函数是什么?

键盘点动 #178

你好,
这几天我在尝试用箭头键连续移动,
我尝试在协议模块中添加状态“JOG”并在主步进循环中克隆“进给保持”程序,添加计划的取消和坐标同步。
启动命令 es。G1 X2000 按下键和 | 上钥匙刹车。
它似乎运行良好,但我不知道这种添加是否会影响
高速性能

……
} else if (sys.state == STATE_JOG) {

    if ( iterate_trapezoid_cycle_counter() ) {                    
      // If deceleration complete, set system flags and shutdown steppers.
      if (st.trapezoid_adjusted_rate <= current_block->rate_delta) {
        plan_reset_buffer();//
        //plan_discard_current_block();
        st_go_idle();
        bit_true(sys.execute,EXEC_CYCLE_STOP); // Flag main program that feed hold is complete.
        current_block = NULL;
        sys_sync_current_position();

      } else {
        st.trapezoid_adjusted_rate -= current_block->rate_delta;
        set_step_events_per_minute(st.trapezoid_adjusted_rate);
      }      
    }

  } else {.....
键盘点动 #178
成员

慢跑计划在 v0.9 中安装。关于它应该如何工作还没有达成共识,但我个人认为它应该是一个专用的 Grbl 模式,你可以像你说的那样做。这意味着它不需要任何 g 代码命令来慢跑。您只需通过诸如“$J”之类的命令将 Grbl 置于“慢跑”模式,然后它就会感知箭头字符或其他任何内容,并据此开始和停止。按钮也可以完成,但我认为这需要安装为 i2c 接口,因为我们没有引脚。

键盘点动 #178

(承认我的低能力),
您可以直接从命令 $ 在计划中插入一个块,但解释轴方向和速度的参数在我看来,与 G 命令相比,它是最昂贵的资源,尽管在概念上更正确

键盘点动 #178
成员

同意,但就像我说的那样,对于它应该如何工作或实施还没有达成共识或决定。慢跑的“$”命令不需要太多。就像你说的方向、速度和轴。相当简单,不需要太多资源,主要是一些闪存空间。

我通常非常犹豫是否要向步进算法添加任何不必要的东西,因为它需要尽可能少。我不排除您的方法,因为如果我要将归位周期直接集成到步进算法中,可能需要这样的方法。还不确定。有很多需要考虑的问题,尤其是对于现在优先级更高的进给率覆盖。必须管理所有这些不同的条件和状态可能会变得非常笨拙。

键盘点动 #178

你是对的,也许我可以从归巢程序中得到启发,
我是一名工匠,对我来说,连续运动很重要
,这样才能轻松放置原始和不成形的零件

键盘点动 #178
作者

谢谢,dan-nab,我开始慢跑了。G0 命令按下键,〜按下键,等待空闲,然后发送我自己的“%”命令,该命令调用:

void kill_buffer()
    {
    plan_discard_current_block();
    st_go_idle();
    current_block = NULL;
    sys_sync_current_position();
    sys.auto_start = true;
    }

完成工作。

键盘点动 #178

你好,我按照你的建议做了,对我来说效果很好

键盘点动 #178
贡献者

有趣的是,我正在研究硬件以实现 GRBL 的 I2C ( #231 )。

慢跑模式似乎是可行的方法。

@chamnit是否很难实现包含每轴速度的慢跑?

键盘点动 #178
成员

@Protoneer:我一直在考虑键盘慢跑一段时间。实施起来并不难,期待一件事。规划器没有写保护,所以每当有运动命令时,尤其是点动命令,有可能会改变当前执行的块并导致运动错误。当缓冲区中没有太多内容并且您添加了新的运动命令时,通常会发生这种情况。(流式传输 g 代码程序几乎不会出现此问题。)

所以,如果我们安装键盘/旋转拨盘点动,我们确实需要安装一个合适的写保护计划器。这并不容易做到,但幸运的是,我已经开始着手解决这个问题。它与进给率覆盖有关,因为您还必须从缓冲区的开头重新规划不完整的块。我有一些工作,但在这一点上它有很多问题。我对结果不满意,但它应该有效。我认为我需要更多时间才能使它达到高效和简单的程度。就像我在另一个线程中发布的那样,我将在 7 月回到众所周知的 Grbl 马上。目前有许多非常耗时的生活/工作事件。

另一个小问题是我们从未真正确定如何实现点动的控制。基本上有两个阵营:(1) 一个简单的启用/禁用切换,可将单个轴移动到用户设置的方向和进给率。没有真正的精确控制,但这使得所需的控制对话框和代码最少。这也更符合当前的规划器。只是移动。(2) 旋转拨盘式点动,每次单击都会使轴移动一小段距离增量。方向可以随时翻转。

问题是:我们要安装哪种类型的慢跑?点动界面需要哪些命令?我们如何设置要移动的轴、进给率和方向?距离增量呢?

如果将所有这些加起来,代码和用户反馈对话框会迅速膨胀,很可能会导致我们达到 328p 的 flash 上限。所以,如果我们这样做,我们将不得不想出一种非常有效的方法来实现它。

键盘点动 #178
贡献者

@chamnit我将不得不玩一下。

带有旋转拨盘的选项 2 似乎是我们想要结束的方式……

但是…选项 2 也可以像选项 1 一样通过发送启动/停止信号来实现。

构建信号发生器也非常容易制作。:)

键盘点动 #178
贡献者

@chamnit我想在离线状态下与您多谈谈。你能给我发邮件吗?(我的地址在我的个人资料页面上。)

喜欢 (0)