Contact me: hankecnc@gmail.com

不是问题而是问题 #315

推推 grbl 3年前 (2023-02-05) 353次浏览
关闭
jfpion 打开了这个问题 2012 年 11 月 21 日 · 14条评论
关闭

不是问题而是问题#315

jfpion 打开了这个问题 2012 年 11 月 21 日 · 14条评论

评论

不是问题而是问题 #315

我最近让 pb 编写了与 marlin 一起工作的开始/结束 gcode
问题是使用缓冲的命令(g1)和一些没有缓冲的命令(看起来像 g28 没有)所以有些命令被忽略了:

G28 Z0
G1 F1800.000 Z10.000 ; 位置 à 10 de haut
G28 ; 主页所有轴

不起作用 g1 命令被忽略,如

M104 S0 ; 关闭温度
M140 S0 ; 关闭温床
G92 Z0
G0 Z1 ; 蒙特德 1 毫米
G28 X0 ; 原点 X 轴
M84 ; 禁用电机

G0 Z1 被忽略

G28 Z0
G1 F1800.000 Z10.000 ; 位置 à 10 de haut
M400
G28 ; 主页所有轴


M104 S0 ;关闭温度
M140 S0 ; 关闭温床
G92 Z0
G0 Z1 ; monte de 1mm
M400
G28 X0 ; 原点 X 轴
M84 ; 禁用电机

工作

那么是否有缓冲/非缓冲命令的列表?

是否还有其他一些不在 wiki 中的命令?

谢谢

不是问题而是问题 #315

您好,这是一个BUG。G28 应等待所有移动完成。
我会解决这个问题。

通常,与移动相关的命令会被缓冲。(G0、G1、G2、G3、G28)还有 FAN 命令 M106 和 M107。

不是问题而是问题 #315
贡献者

恕我直言,所有命令都应该以正确的顺序执行。唯一可以跳队列的是那些不影响机器状态并且不依赖于它的状态的。即读取温度、列出 SD 卡、紧急停止,仅此而已。

任何其他重新排序都会影响结果,因此不遵守 G 代码,因此是 G 代码解释器中的错误。

不是问题而是问题 #315
作者

谢谢你
没什么大不了的,但我经常挠头猜我做错了什么

不是问题而是问题 #315

@nophead你是对的。这就是为什么这个 G28 行为是一个错误。
但是对于前瞻,有一个缓冲区。
一些命令在执行之前等待缓冲区完成。但是对于某些命令来说,这并不重要,并且会产生不良的副作用。如果固件等待每个 M105 命令,打印结果会更差。这并不重要。FAN 控制需要与运动同步。这就是 FAN 命令在缓冲区中的原因。温度设置很慢,它们不在缓冲区中,并且固件在更改温度设置之前不会等待缓冲区结束。(由于内存限制,这不在缓冲区中。在理想的固件中,温度设置应该在缓冲区中)

不是问题而是问题 #315
贡献者

M105 是可以的,因为它不影响机器的状态。但几乎所有其他东西都是错误。例如,如果您在充满长填充行的缓冲区之前更改温度,而它本应在温度降得太低之后执行。例如,如果您在第一层之后温度较低并且您正在建造一个具有大底座的物体,就会发生这种情况。或者只是在大顶层的末端转动挤出机。

如果没有足够的内存将命令放入缓冲区,则它必须等待缓冲区清空。

不是问题而是问题 #315
贡献者

不,我不同意。如果你为桥设置不同的温度,
如果你早点加热实际上是非常好的。在我的世界中无阻塞地设置温度没有缺点,只有
优点。如果你
怕上次的T0设置对你有影响,就用之前的synchronize命令吧

我认为按照你的建议做会降低印刷质量,我
反对。如果你坚持,默认停用的#define 就可以为我
包含。
伯恩哈德

在 2012 年 11 月 21 日星期三下午 5:37,Chris notifications@github.com写道:

M105 是可以的,因为它不影响机器的状态。但几乎
所有其他东西都是错误。例如,如果您在
充满长填充行的缓冲区之前更改温度,而它本应
在温度降得太低之后执行。
例如,如果您在第一层之后温度较低并且您正在
建造一个具有大底座的物体,就会发生这种情况。或者只是在
大顶层的末端转动挤出机。

如果没有足够的内存将命令放入缓冲区,则它必须
等待缓冲区清空。


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ErikZalm/Marlin/issues/315#issuecomment-10604230。

不是问题而是问题 #315
贡献者

如果你想让它提前升温,那么 G 代码应该这样说,而不是依赖于解释器中的错误。

不是问题而是问题 #315
贡献者

如果缓冲区碰巧充满了很多微小的动作,那么它发生的速度会比充满长动作的速度快得多。

不是问题而是问题 #315
贡献者

我同意 M104 T220 <in 30 seconds> 会很好,但我不想将
它介绍给 Sound,因为很容易
从机器上询问物理上不可能的事情(M104 T220 在 30 秒内,M104 T200 在 31秒)。
替代方案:改变定位,需要 gcode 确实
依赖于机器,通过固有地了解
热端的加热/冷却曲线。
Gcode 应该尽可能独立于机器,所以那也
不起作用。

我认为当前的实施有利于打印质量,但不
利于 iso 标准化。但我宁愿有一个漂亮的印刷品。

伯恩哈德

在 2012 年 11 月 21 日星期三下午 6:09,Chris notifications@github.com写道:

如果缓冲区碰巧充满了很多微小的动作,那么它
发生的速度会比充满长动作的速度快得多。


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ErikZalm/Marlin/issues/315#issuecomment-10605622。

不是问题而是问题 #315
贡献者

它认为在挤压时改变温度没有多大意义,除非你等待它发生。结果完全不可预测 它提前发生的时间取决于清空缓冲区的时间,这可能会因几何形状而有很大差异,影响塑料从喷嘴中出来所需的时间取决于很多的东西也是如此。

为什么桥梁需要不同的温度?

不是问题而是问题 #315

我仍然对最新版本的 Marlin 有 OP 的问题。也就是说,不执行填充顶层的最后几行 G 代码。挤出机头似乎“颤抖”,然后移动到 Repetier Host 中设置的停放位置。它是固定的吗?或者有解决方法吗?

注意:根据 nothinman 的要求为清楚起见编辑了问题。

不是问题而是问题 #315
作者

解决方法仍然是在 g28 之前添加 m400 以强制缓冲区在归位之前为空

不是问题而是问题 #315

效果很好,非常感谢!