评论
|
有一些选项可以指定它(MAX_POS、MIN_POS 和 MANUAL_*_HOME_POS)。 |
|
它很简单,但我认为我没有正确表达自己的意思,所以我会尝试将其付诸实践:我总是使用负数来铣削 pcb。假设我将 Z 向上移动 10mm。然后我需要这个位置作为 Z 轴的新零点(G92 或 M206 似乎不起作用)。此外,我需要确保有与此位置相关的进一步移动,因此 G91。然后在 -0.2 处进行铣削或在 -1.75 处进行钻孔,因此坐标移动在机器边界内的临时负空间中。在具备这些先决条件的同时,如果我按 G28 返回原点,则原点应该转到 G92/M206 点而不是绝对零(硬件停止点)。 G28 ;原点 我不能让 G92 或 M206 和 G91 那样工作。但我发现暂时允许将 0.0.0 参考更改为其他点而不是家很重要,并进一步相对使用该位置,因此允许负坐标从该参考移动,同时保持在尺寸边界内。所有用于 pcb 铣削的软件链都在负空间中生成 gcode。我还没有找到一个至少对 Z 不使用负空间的实例。这通常不是问题,因为让这些 g 代码像它们在标题 (~start.gcode) 中应该的那样工作,应该没有必要将机器配置更改为通常的 reprap 以外的任何其他配置 – 左下角为 0.0. 但是又不能让它像那样工作。 解决方法是为了举例说明,不可用:1) 分割床,所以只能使用一个部分,所以它充其量是有限的,以及 2) 设置“min_software_endstops false”将允许负坐标移动,但要注意的是将允许任何类型的负面动作,但要注意它可能会变得危险。可以一直检查终点站,但随后它失去了一个功能,事情不必那样。 这些 gcode G92 M206 和 G91 是否有效,或者以与我预期不同的方式工作?我查看了 marlin_main.cpp 但不能说任何可疑的东西,这就是为什么我更怀疑“software_endstops”的组合,我怀疑它可能链接到它,因为它看起来不一样,只是我宁愿保留这个方面作为一个功能 – 不能承受不幸. |
|
我的叉子允许原点在床的中间: 2013 年 2 月 7 日 10:12,Noobman [email protected]写道:
|
|
您好,感谢回复。是的,我也可以把 origin 放在床的中间,只是在实践中不方便。大多数情况下,PCB 的底部(完全)作为负坐标生成,而 y 完全作为正坐标生成,这意味着只有部分床可作为最大 PCB 尺寸使用,因此在比较中存在局限性。如果能够根据情况自由设置 0.0.0 参考,我可以将它设置在不同的角落,从而使用整个空间。或者,另一种使它成为可能的方法我也可以禁用软件停止,但这感觉绝对是错误的事情。或者最终可以求助于脚本操作 gcode 以适应给定的机器设置,但这更像是用右手抓左耳。 确实存在替代方案,可以找到变通办法,甚至是链式上下文。我绕过了这些话题,因为 pcb-milling on reprap 并不是什么新鲜事。由于这样的原因,可能只是在某种程度上限制了凸轮链的选择。但是这些 gcode 的工作集将大大简化事情并提供大量无价的自由。无论如何,它们应该如何工作。所以自然而然的事情就是解决这里的问题,至少是长期的。 |
|
你可以看看我的马林鱼克隆。可以使用 G 代码在运行时调整最小/最大和起始位置,并可选择将其存储到 eeprom。在您的情况下,您只需要调整配置和重新安置。 此外,我认为您的 G92 被解释为“将当前绝对位置更改为参数中的值”,因此在 G92X0 机器认为它位于绝对 X0 上并且不可能发生负向运动之后。 G91 切换到相对坐标 – 应该不需要调整绝对位置,但你所有的 PCB G 代码必须在相对坐标中: M206 – 在我看来,Marlin 中的这个命令被“修复”了几次,以匹配不同作者的需求/解释。它目前很破(G28X0.5 不同于 G28X1 与非零 M206)。 |
|
我觉得你说得比我好。 因此,G92 被解释为“绝对位置的变化”,因此在 G92 X0 认为其处于绝对零位并且不可能出现负向运动之后。好吧,这正是我们应该期待的。我在中间移动并在那里做 G92,我得到了什么:我松了 3/4 空间……为什么?做什么的?谁会想要这样的 gcode 命令?那就是我想说的其中一件事:没有理由那样做。 拥有这样的命令没有多大意义,除非它不会缩小空间并允许负向移动。这就是它应该做的,在整个空间的范围内。 关于命令的描述,我将其视为一种行为。我相信命令描述中的“改变它的绝对零”这个词是为了解释它的行为,而不是固件的胆量。所以我宁愿把它当作描述而不是“本身”的实现。所以我认为这只是一个词的选择,它确实很好地总结了它的行为,但仅此而已。 所以固件可以“伪造”它,也许通过简单地将其未来的 G0/1/2/3 相对于那个“伪造”的零进行翻译,然后像往常一样进一步传递它们,这样它就可以“模仿”那个位置的零。不必为了一个简单的 gcode 命令而全神贯注。并且可能不应该改变它的实际零,所以永远不要忘记它在哪里,因为这只会导致坏事。 所以我认为它应该保留在 G92 之后进行全面移动的能力。 因此必须允许在定义的空间中进行负向移动。并且不允许那些超越(否则我们为什么要定义空间)。至少恕我直言。 |
|
Marlin 当前使用“固定坐标”系统制作,其中假定相同的 X、Y、Z 始终位于机器中的相同位置。使用 CNC 铣削时情况并非如此,这就是您遇到问题的原因。 Marlin 从来不是为铣削而建造的,我在某处读到它存在一些速度非常慢的问题。 |
|
是的,这就是为什么我总是使用不同的固件来正确处理这个问题:) 至少事情更清楚了,我的观点是 G92 命令并不意味着像现在这样让床的部分不可用。它旨在伪造/模仿参考点更改/平移,并保持可用的全尺寸床,并通过允许负向移动来实现。它的描述“0 的变化”是对其行为的描述,而不是它的实现。因此(至少)实际的 G92 有点偏离它需要的样子。这会影响与床尺寸、软件停止等相关的更多内容和命令。就是这样,我走了,干杯:) |


相当重要的 G91 命令似乎与“software_endstops true”交互不当。
描述:我需要移动到床的中心,比如位置 x100 y100,然后使用 G91 x0y0 并具有以下与该位置相关的所有命令。但是解析器似乎根本不接受负向运动,所以当我这样做时,我松开了大部分床区域,因为在更远的地方,似乎只允许正向运动。当我设置“min_software_endstops false”时,我可以进行负向运动,这可能会导致允许过多的运动,并破坏和过度击中我的设置无法承受的硬件停止位。一种替代方法是将床中心调整为 0 并始终使用一半的负空间,但这是一个快速修复/解决问题的方法,因为这并没有反映出 G91 命令在我看来应该如何工作。
预期行为:移动空间为 0-200,移动到 100,使用 G91 *0 相对于此位置有进一步的移动,仍然有可能移动到相对于最后一个 G91 位置从 -100 到 +100 的整个范围,而软件终点站是真的。