开源改变世界

添加工具表参数 #557

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

打开
bdurbrow 打开了这个问题 2018 年 11 月 13 日 · 8条评论
打开

添加工具表参数#557

bdurbrow 打开了这个问题 2018 年 11 月 13 日 · 8条评论

注释

添加工具表参数 #557

我将要为我在 grbl-mega 前叉上所做的工作添加一个工具数据表(长度偏移和半径)…(此数据将与其他设置一起存储在 eeprom 中。)

我正在考虑通过 $ 参数提供工具数据,工具 0 长度起价 500 美元,工具 1 长度起价 501 美元,等等;刀具 0 半径 600 美元;工具 1 等 601 美元

我将使用这些数据进行探头偏移;但将来我可以看到这些参数分配用于刀具半径补偿。

我认为基于 atmega328 的平台上的代码没有足够的闪存空间,但是在 atmega2560 和即将推出的基于 SAMD 的平台上有足够的空间……还有足够的 eeprom 空间来容纳一个非常大的工具表,而且还有有足够的扩展空间。

任何意见?主意?烂番茄?

添加工具表参数 #557
贡献者

@bdurbrow: 我以前想过添加工具数据。拥有工具长度很有用,但我发现很难在适应各种不同的工具和用户工作流程的同时提出通用的东西。此外,存储刀具半径对您没有任何帮助,因为 Grbl 没有刀具补偿。

因此,我将 Grbl 设计为仅接受动态刀具长度补偿命令 G43.1。这将工具数据库置于 GUI 的手中,这比更改 Grbl 的固件更容易定制。GUI 在管理工具数据方面有更多的责任,但它也可以做其他事情,例如通过流式传输到 Grbl 的脚本代码命令集执行工具更换和偏移探头的命令。这提供了我正在寻找的灵活性。虽然不完全理想,但它似乎有效。

添加工具表参数 #557
作者

在 GUI 中完成所有操作效果很好……如果您有 GUI。我没有 – 我直接从连接到 RAMPS 卡的 SD 读卡器流式传输 g 代码。整个想法是不要将 PC 连接到 CNC 机器(另一个副作用是手动操作 – 如慢跑 -反应灵敏)。

我在设置中使用半径数据,在该设置中,您在探测时将切削工具放在主轴中(典型的 CNC 路由器,而不是在更传统的设置中使用的电子接触式探测工具,例如在 VMC 上)。然后,在设置 G54/G55 等时考虑到触摸板厚度和刀具半径……

无论如何,当半径补偿添加到 grbl 时,我描述的工具数据的接口对你有意义吗?

添加工具表参数 #557
贡献者

您的 RAMPS 卡是一个 UI。它可以像管理完整的 GUI 一样完成管理工具表的工作。

刀具半径补偿比看起来更复杂。您需要整个 gcode 程序的数据才能正确计算偏移量和边缘条件。Grbl 不能这样做,因为它接收到程序流。Cutter comp 是 UI 也需要负责的事情。

添加工具表参数 #557
射手64738 评论了 2018 年 11 月 16 日  

我没有在 grbl 中实现 crc nativley。我也想要,但这太难了。展望未来是我的主要障碍。所以我在第二个 arduino 上实现了它,它根据工具表补偿运动。我有一篇关于它如何工作的详细文章,以及为什么向前看是它的关键所在。也作为@chamnit 说起来,事情并不像看起来那么简单。我没有阅读所有的 gcode,但它必须至少提前阅读 1 条 MOTION 行。越多,路径交叉检测就越好。
https://github.com/shooter64738/CRC/wiki
到现在已经 2 年了,代码仍在调整中。

添加工具表参数 #557
作者
黑眉 评论了 2018 年 11 月 16 日  

您的 RAMPS 卡是一个 UI。它可以像管理完整的 GUI 一样完成管理工具表的工作。

嗯…只是为了清楚; 通过 UI/GUI 我的意思是在单独的 CPU 上运行的单独进程。我碰巧在运行主 grbl 程序的同一个 CPU 上进行所有管理。对于其他阅读本文的人;连接到 RAMPS 板上的 RepRap Discount 智能控制器没有任何“智能”——它实际上只是一个愚蠢的 20×4 字符 LCD、SD 卡插槽、带旋钮的旋转编码器和一个全部焊接到 PCB 上的蜂鸣器(不是贬低RepRap Discount 的家伙——这是一块不错的板子,但上面没有辅助 CPU 可以让它变得“智能”)。


我很清楚这个问题;在我自己构建时对我的 CAD/CAM 选择不满意……路径偏移算法是(呃……,– 它仍然有问题)整个事情中最棘手的部分。

好吧,FWIW,如果……但是……如果你能接受这样的限制,即命令的路径必须完全由切割器跟随(并且任何会“挖槽”的路径都是错误的,并且会导致控制报警);那么它可以在没有前瞻的情况下完成:

对于凸路径段,只需偏移路径,并插入圆弧移动以绕过拐角。
对于凹形路径段,所有直线运动必须由半径大于或等于刀具半径的圆弧运动连接;否则就是一个错误。

@shooter64738– 我会去读那个维基百科。看起来很有趣。:-)

添加工具表参数 #557

有几个地方的方法发生了变化,他们现在并没有完全按照 wiki 进行操作,但在大多数情况下是这样。我试图找到一种不向前看的方法来做到这一点,但它变得不可能,所以至少必须在我的缓冲区的 10 行内读取一条运动线。G0/1/2/3 可能是第一个运动,对于不引起运动的 G 或 M 代码,您可能还有 8 行附加行,但第 9 行必须引起运动,否则前瞻将失败。我真的不知道有任何其他方法可以在没有至少 1 个前瞻动作的情况下可靠地完成它,但我绝不是该主题的专家。

添加工具表参数 #557
危机 评论了 2018 年 11 月 16 日 通过电子邮件
添加工具表参数 #557

由于半径补偿有一个最终的关闭运动,该运动可以缩短 1.2 倍的半径补偿,并将未完成的运动添加到下一个或最终的关闭运动中。2018-11-16 6:42 GMT+01:00,shooter64738 notifications@github.com

这基本上就是展望未来所做的事情。它使用向前运动的点数据来确定当前运动应该在哪里结束。您可以在当前路径上开始运动,但我永远无法想出一种方法来确定当前路径的终点,而不知道下一个运动将是什么。启动运动、短暂停止并等待在外角连接到另一个弧形绕组 CCW 的弧形绕组 CW 上的下一个动作是数学上的噩梦。让机器保持静止直到下一个运动进入,然后开始和结束当前运动变得更容易。无论哪种情况,我仍然需要向前运动数据来确定当前运动的结束位置。

喜欢 (0)