Contact me: hankecnc@gmail.com

关于实施M06换刀的思考 #480

推推 grbl 3年前 (2023-01-22) 252次浏览

关闭
gerritv 打开了这个问题 2014 年 8 月 31 日 · 10 条评论
关闭

关于实施M06换刀的思考#480

gerritv 打开了这个问题 2014 年 8 月 31 日 · 10 条评论

注释

关于实施M06换刀的思考 #480

我正在考虑尝试在 Grbl 中实现 M06。除了内存空间,它应该是可行的。

我查看了 LinuxCNC 以及书籍等中对换刀操作的各种描述。本质上它是一个

  • 停止主轴
  • 将 Z 轴移动到某个位置
  • 执行 G30 xyz(期望程序/设置完成 G30.1 以设置此位置)
  • 更换工具时暂停
  • 将刀具偏置 (G43.1) 设置为新的刀具偏置(在短表中查找)
  • 等待来自 Arduino pin 的 Resume

当在 gc_execute_line 中解析一行时,我正在考虑将 G30 伪造为 M06 的一部分。并将 M06 视为暂停。

我会实施几个选项来支持 4-5 个工具及其偏移量以及初始 Z 轴移动位置(相对于机器绝对值)。

在这种状态下我不允许手动移动,所以没有手动触发工具。
这听起来合理吗?

关于实施M06换刀的思考 #480
成员

是的,但这似乎是 GUI 可以轻松完成的事情。它可以保留一个工具表并手动应用偏移。我知道 Carbide 3D 的人正在使用 Grbl v0.9 来做这件事。他们基本上自动化了从探测周期、更新工具数据库到发生工具更换时执行工具更换所需的运动操作的所有操作。

关于实施M06换刀的思考 #480
作者

如果我要将它添加到 Grbl,我会朝着正确的方向前进吗?

我想我可以考虑将它添加到 UCS,但我需要使用 Java 和 NB,呃 :-( M06 本质上会变成一个宏。

关于实施M06换刀的思考 #480
作者

它不会是 UCS(它会预加载并处理所有行的 GCode,然后再将其吐出到 Grbl,太复杂而无法干扰 IMO)。
我有一个计划,已经开始了。我会及时通知你的。它包括拦截 M06 和几个固定循环,尤其是。那些与钻井有关的。

关于实施M06换刀的思考 #480
贡献者

@gerritv几年前我在看 G81 支持……你的计划是什么,这在 Linux 下也能工作吗?

关于实施M06换刀的思考 #480
作者

我正在写我自己的发件人,没有花里胡哨的东西。它是使用 .net 和 VS 2013 Express 构建的,因此应该在 Linux 上的 Wine 下运行。没有可视化,只有一个带有点动、工具表、将 G81/2/3 和 M06 映射到宏的能力的发送器。等等。可能会在下周末之前运行。与此同时,我需要为 3d 路由器完成我的新控制系统。

关于实施M06换刀的思考 #480
成员

@gerritv:仅供参考,我写了一个关于如何使用 GUI 或更确切地说是一组指南与 grbl 交互的 wiki 页面。如果您还没有,那将是一本值得一读的书。

关于实施M06换刀的思考 #480
作者

@chamnit谢谢,我已经阅读了大部分内容。(我关注代码和 wiki 的变化,最近发生了很多好事)
最初我会实现简单的发送/等待 ok 协议,当一切正常时我会增强它。迭代开发,取得可见的进步,然后增强 :-)
字符计数是一个巧妙的想法。

关于实施M06换刀的思考 #480
作者

@chamnit: 到目前为止取得了巨大的进步。即将添加最后一个主要部分,发送 gcode 文件。慢跑、指示器、动作按钮、基于定时器的状态轮询、设置保存/加载,一切正常。有没有办法与您分享这个,太早了,无法公开观看。

关于实施M06换刀的思考 #480
作者

一个快速的问题来验证我的理解。我可以在流出 gcode 块的过程中发送即时命令吗?例如?在街区中间?

关于实施M06换刀的思考 #480
成员

@gerritv: 是的。他们可以随时发送。实时命令字符是在中断的基础上直接从传入的串行 RX 流中提取的。当一个字符进入中断时,它将把它添加到 RX 缓冲区以供 Grbl 作为 g 代码处理,或者它会为实时命令设置一个执行标志。实时命令不会添加到 RX 缓冲区。他们被扔掉了。

对于下一个版本的 Grbl,出于可移植性的原因,我正在考虑不必依赖串行 RX 中断的方法,但我想它主要以相同的方式工作。

喜欢 (0)