Contact me: hankecnc@gmail.com

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99

推推 grbl 3年前 (2023-02-03) 272次浏览
关闭
 打开了这个问题 2016 年 12 月 20 日 · 66条评论
关闭

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论#99

 打开了这个问题 2016 年 12 月 20 日 · 66条评论

评论

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
 评论了 2016 年 12 月 20 日  

从与的讨论中解释@wolfmanjm十月:

@wolfmanjm
也许是时候重新考虑一次发送光栅线的特殊 LW only 命令?
这将需要一些思考和计划,我们无法发送二进制数据,因此可能需要对其进行 uuencoded 或者可能仅是 ascii 的运行长度编码。
不太确定我们会在冰沙方面做什么,但我认为它应该让队列保持完整。
我认为这有点像我们处理分段弧和增量分段的方式。
值得思考。

@openhardwarecozasaid
那将是一个非常酷且有益的实现!
Marlin 使用 Base64 实现:https
://github.com/TurnkeyTyranny/buildlog-lasercutter-marlin/blob/master/Marlin/Marlin_main.cpp#L1070 Lasersaur 的协议记录在此处https://github.com/nortd/driveboardapp/ blob/6409230a68bb653ea43a197ce9c091c9fef01188/docs/protocol.md#raster-data-mode

@wolfmanjm 说
与 Marlin 的所有事情一样,我不会用驳船杆碰它;)(即使我知道他们在做什么)。
另一个协议也是我不会使用的。
您希望能够在每个像素或像素运行上设置不同的速度吗?所以这些都不允许。
我也不想在冰沙中解析光栅。
我正在考虑更多的方法来指定您当前发送的相同类型的 gcode,但以更紧凑的方式,以便一次通过串行(或从 sdcard 读取)发送更多行。然后 smoothie 简单地解压缩命令并将它们扩展到常规的计划行中。所以 LW3 完成了所有工作,而 smoothie 只是将它们解包并像处理常规 gcode 一样处理它们。这有任何意义吗?
这些行不需要超过 USB 串行缓冲区大小,但应包含与 gcode 序列相同的信息,例如起始位置、每个序列的激光功率和每个序列的进给率。沿着这些路线的东西。

话虽如此,这里有一些基本的基础知识:

  • 无论我们最终决定什么,都需要成为一个新标准,至少对于 grbl@chamnit和Tinyg@giseburt

  • 这三个都有相同的瓶颈:如何最好地通过串行获取流式栅格数据

  • 我想用相同的数据格式支持 LW 中的所有三个!#yearofthelaser 和#laserweb 让激光成为主流,所以要么你帮助我们为所有人做出妥协,要么我可能会考虑从支持列表中删除你的固件。这不是“但我可以做得更好”的地方 – 我们在这里想要的只是足够好,适用于一切

  • 目前,Smoothie 在这方面的表现最差。TinyG 目前状态未知,但由于他们的激光代码是早期的,所以我们让他们现在加入聚会(讨论),而他们仍然可以。Grbl 实际上超过了 1.1,现在是光栅上表现最好的(顺便说一句,只有普通的旧 gcode)

  • 保持这一公民和结果的重点。让我们快速解决这个问题。它不是为了丰富某个特定的人,而是为了让激光更容易获得和更有用,进而确保 LW3 和我们所做的开放工作,确保您的各种板和固件,做用户想要的最好的

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99  改了标题 Smoothieware 光栅协议 新光栅协议 2016 年 12 月 20 日
光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99  加了 把招工广告 标签 2016 年 12 月 20 日
光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99

也许最好从当前状态开始。你能举例说明现在生产的产品吗?

G0X0Y0
G1S10X0.1F20000
S20X0.2
S30X0.3

像那样的东西?这可能是最紧凑的表示。它已经是运行长度,因为一行中具有相同内容的多个像素S可以简单地合并为一个X移动,或其他任何操作。

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
成员

这是 LW4 (lw.raster-to-gcode) 生成的内容:

G1 X0.15 Y0.15 S0.0000
S0.5529
X0.30
X0.60 S0.5673
X0.90 S0.5098
X1.20 S0.4654
X1.50 S0.3804

也许我们可以滥用评论?

G1 X0 Y0 S0
X100 (!S sdjDSleru93u4iuREd)      ; base-64 encoded S values
光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99

在 g2core 中,我们使用“活动评论”,我们将 JSON 放在带括号的评论中。这就是我们如何避免 Marlin 的 M 代码噩梦。

例如,我们有两个有点不标准的 M 代码:

  • M100是“与 gcode 同步执行此 JSON”
  • M101是“等待这个 JSON 为真”

因此,在 3D 打印机中,您可以通过以下方式设置温度(使用he1st代码,意思是 HEater 1 Set Temp)M100

M100 ({"he1st":210})

然后等待它变为 At Temp ( he1at):

M101 ({"he1at":true})
光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99

raster-to-gcode现在可以导出位图高度图;)
https://lautr3k.github.io/lw.raster-to-gcode/dist/example/

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99

在我们开始走这条路之前,我想补充一点。

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99

就个人而言,我不认为 g-code 本身是问题所在。如何接收节目同样重要,有很多方法可以独立于 g 代码和 LW 来改进流式传输过程。例如,通过使用机载存储,只需在工作期间消除流媒体。问题解决了。还有其他策略,例如缩短控制器的响应时间和更有效地执行光栅运动。

一般来说,我支持不要破坏 g 代码标准,因为它仍然是机器控制的通用接口。它被混为一谈的主要原因是由于标准中未定义的内容。Marlin 在这方面的许多方面都是有罪的,但有必要控制 3d 打印机上的所有其他东西。

如果我们开始沿着定义新 G 代码的道路前进。我想制定一些基本规则:

  • 完整描述 g 代码的作用。不应有任何错误执行或误解的余地。
  • 完整的错误检查定义。这对激光尤其重要。您不希望某些第 3 方、编写糟糕的 CAM 生成器错误地发出可能导致安全隐患或火灾的命令错误。
  • 它应该考虑所有其他可能的模态状态,例如增量和绝对模式。
  • 激光功率值应为浮点数,不限于 8 位整数。否则,这可能会限制将来的使用。
  • 如果使用现有的 g 代码命令字母 (LPQ),它们不应与任何其他潜在的未来应用程序重叠。例如,A、B、C、U、V、W 与其他轴相关,应排除在外。这条规则并没有真正留下多少用处。
  • 这应该得到每个人的同意。

就个人而言,我想避免必须发明一些全新的东西,比如 Base64 压缩方案(即使这是一个很好的主意)或 XML/JSON 命令。我更愿意将其纳入标准,但是,据我所知,无法在 g 代码中传递矢量。所以,在这个问题上我可能是少数。

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
亚瑟狼 评论了 2016 年 12 月 21 日 通过电子邮件  

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
成员

@arthurwolf它是否支持像 gcode 一样在同一个文件中混合光栅和矢量?

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
亚瑟狼 评论了 2016 年 12 月 21 日 通过电子邮件
光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
亚瑟狼 评论了 2016 年 12 月 21 日 通过电子邮件
光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99

我同意@chamnit如果可能的话,我们应该尽量坚持使用核心 GCode。只有在确定有明显优势或需要时才使用 JSON 等。

我不认为二进制是一个好主意,除非你愿意放弃实时调整流的能力,例如进给保持、调整激光功率或进给率等。

我想我们真的应该确定需要什么样的数据吞吐量。在给定的进给率下,比如 1m/s,我们发送命令所需的速率是多少?我们希望支持的最大合理像素分辨率是多少?

一旦我们确定了发送命令需要多的速度,我们就可以就如何以能够通过我们正在使用的管道(串行、USB 等)的方式传输命令做出明智的决定。

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
亚瑟狼 评论了 2016 年 12 月 21 日 通过电子邮件
光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
亚瑟狼 评论了 2016 年 12 月 21 日 通过电子邮件
光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99

Serial @ 115200 波特可以发送超过 1,100 行,每行 10 个字符。或 1,100 像素/秒。这对于“慢速”串行接口来说非常好。假设我们能够通过创建一个 g 代码来将激光功率矢量与光栅传递一起放置,从而将其减半,这将使潜在性能翻倍至 2,200 像素/秒。适度的改进。

让我们看一下 12Mbit/s 或 480Mbit/s 的本机 USB 接口,每行 10 个字符理论上分别提供 11,000+ 像素/秒和 468000 像素/秒。至少好一个数量级。因此,流式传输 g 代码程序的带宽不是问题。这是流接口或控制器的问题。必须在那里进行改进。

@arthurwolf:我同意动态调整速度和功率(覆盖)的能力在光栅作业中并不那么重要,但它对其他一切仍然很重要。我不会从这次谈话中排除一个特定的功能,因为未来可能会有非常有趣的用例,这些用例可能被证明是非常具有开创性的。

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
亚瑟狼 评论了 2016 年 12 月 21 日 通过电子邮件
光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99

@arthurwolf: 两者都有。第一篇文章展示了两个示例,说明如何更有效地命令光栅传递。这与改进 g 代码有关。对话的另一部分是问题是否出在命令上,是否出在流接口和控制器上。

恕我直言,g 代码是 CAM 和控制器之间的一个很好的分隔符。LW 的工作人员提出了通过消除过度运动来改进光栅处理的新方法,他们做得非常出色。如果您将位图上传到控制器,这会将 CAM 的责任完全放在控制器上。它使过程更加不透明和不灵活。我认为在我们的社区中保持责任的明确分离是个好主意。

FWIW,我很确定大多数专业机器仍然在 g 代码上运行。我实验室的制造车间有几台支持高速加工工具路径的生产级机器,包括 5 轴铣床和 CNC 车床。这些都仍然在直接的 g 代码上运行,并且通常在 100 的 MB 中有工作。

光栅问题:Smoothieware Jerkyness/我们是否需要一个新的协议,适当的讨论 #99
亚瑟狼 评论了 2016 年 12 月 21 日 通过电子邮件
喜欢 (0)