开源改变世界

“Join Pixels”在禁用“Verbose GCode”的情况下给出不正确的结果 #470

推推 grbl 3年前 (2023-02-04) 282次浏览
关闭
llamasoft 打开了这个问题 2018 年 4 月 24 日 · 4条评论
关闭

“Join Pixels”在禁用“Verbose GCode”的情况下给出不正确的结果#470

llamasoft 打开了这个问题 2018 年 4 月 24 日 · 4条评论

评论

“Join Pixels”在禁用“Verbose GCode”的情况下给出不正确的结果 #470
贡献者

在未启用“详细 GCode”的情况下使用“加入像素”会导致不正确的结果。如果比较文件 1、2 和 3,您会发现文件 1 和 2 在功能上是相同的,但是文件 3 将导致……什么都没有。一般来说,问题是任何一系列烧伤点中的第一个点都被剥离了。当图像主要是单个点时(例如,启用抖动选项时),会去除大量点。

据我所知,根本原因在于_commandpostProcessing
_command正在剥离当前命令和上一个命令之间的所有公共值,这导致剥离无效的裸S命令。 一个建议的修复方法是防止删除元素,另一个建议是在 bare命令前面加上 a 。postProcessing
_commandGpostProcessingG1S

相关文件:
1_noJoin_Verbose.txt
2_Join_Verbose.txt
3_Join_noVerbose.txt
vertical_bars.png
workspace.json.txt

“Join Pixels”在禁用“Verbose GCode”的情况下给出不正确的结果 #470
成员
开胃菜 评论了 2018 年 4 月 24 日  

感谢您的提示和分析。

G1 移动是模态的,因此一系列 G1 的顺序只需要在第一行有一个 G1。但是G1移动需要一个移动距离。“G1 S1”将无效。“G1 X0.1 S0”(相同位置)之后的“G1 X0.1 S1”也不正确,最终只会产生激光脉冲(取决于固件速度)。

光栅操作为每个像素创建具有工具直径长度的线。使用“join pixels”,所有没有间隙的线都应该采用线的第一个和最后一个点,并删除所有中间点。所以看起来我们在连接像素中有一个错误。

“Join Pixels”在禁用“Verbose GCode”的情况下给出不正确的结果 #470
成员

noJoin gcode 在我看来也是错误的,因为 G1 移动的长度为零。我想知道为什么它会起作用。需要再调查一些。

“Join Pixels”在禁用“Verbose GCode”的情况下给出不正确的结果 #470
贡献者作者
骆驼软件 评论了 2018 年 4 月 25 日  

零长度G1无效吗?我认为这是燃烧与激光直径精确大小的点的唯一方法。唯一不受控制的是下一个 G1 发生之前激光脉冲的持续时间。下次我在当地的创客空间时,我会验证它是否真的会燃烧积分。

至于为什么会有零宽的G1:貌似是_getPoint. 从“white->black->white”的过渡意味着第一个白点将具有lastWhite = true正偏移量,然后下一个点(黑色)具有lastColored = true负偏移量。这是它在 GCode 中的表现方式:

; Size       : 0 x 0 mm
; PPI        : x: 127 - y: 127
; PPM        : x: 0.2 - y: 0.2
; Tool diam. : 0.2 mm
; Feed rate  : 4000 mm/min
; Beam range : 0 to 1
; Beam power : 0 to 100 %
; Options    : trimLine, burnWhite, verboseG

G1 F4000

G1 X0.10 Y0.10 S0.0000  ; Would have been X0.0, but first = true
G1 X0.10 Y0.10 S1.0000  ; Would have been X0.2, but lastColored = true
G1 X0.40 Y0.10 S0.0000
G1 X0.60 Y0.10 S0.0000
G1 X0.80 Y0.10 S0.0000
G1 X1.10 Y0.10 S0.0000  ; Would have been X1.0, but lastWhite = true
G1 X1.10 Y0.10 S1.0000  ; Would have been X1.2, but lastColored = true

我认为一个可能的解决方法是lastColored如果前一点有lastWhite. 不幸的是,并非所有点都具有该lastWhite属性,检查前一点似乎很老套。这会导致单点点稍微过大,但更改不应影响点线。
请注意,我还没有研究这种变化如何影响对角线扫描,只影响水平扫描。我也没有实际测试这些变化。

“Join Pixels”在禁用“Verbose GCode”的情况下给出不正确的结果 #470
贡献者作者

我今天必须进行一些测试。结果如你所料。无论功率如何,零宽度移动都不会产生任何结果。我什至尝试了一个零宽度移动 ( G1 S1.0000) ,然后是驻留 ( G4 P10),结果什么也没有。G1 命令一完成,激光似乎就停止发射了。我对/ hack 的
最初想法有点奏效。它会产生可见的单点,但会导致较长的通电点串的 GCode 不正确。如果我想出一个可行的解决方案,我会更多地尝试它并提出拉取请求。lastColoredlastWhite

llamasoft 添加了对引用此问题的 llamasoft/LaserWeb4 的提交 2018年5月1日

jorgerobles 推送了引用此问题的提交 2018年5月1日

喜欢 (0)