开源改变世界!!

平铺步骤之间的开始条件 #159

推推 grbl 2年前 (2023-02-09) 162次浏览
关闭
amoineau 打开了这个问题 2020 年 11 月 10 日 · 59条评论
关闭

平铺步骤之间的开始条件#159

amoineau 打开了这个问题 2020 年 11 月 10 日 · 59条评论

评论

平铺步骤之间的开始条件 #159

语境

我正在使用激光切割机,但目的是切割比机器更长的织物形状。我们使用带 arduino 板的传送带在切口之间移动纸张。添加“tile”功能对我们来说真是幸运。

我向 GRBL-plotter 添加了第二个串行通信,以便与 arduino 板通信。但是,现在我必须在正确的时间手动暂停流程,发送命令以移动传送带并恢复流程。

要求的功能

我想知道是否有办法在等待传送带的同时将流程置于瓷砖之间。

该过程将是:(
绘图仪)做瓷砖 n >(绘图仪)发送“顶部”并等待 >(Arduino)读取“顶部”并移动传送带 >(Arduino)发送“顶部”>(绘图仪)做瓷砖 n + 1 >环形…

理想情况下,GRBL 会在等待传送带时自动归位。

感谢您的帮助 !

平铺步骤之间的开始条件 #159 amoineau 添加了 增强 标签 2020 年 11 月 10 日
平铺步骤之间的开始条件 #159
所有者

原则上它已经实现但从未测试过:
变量#OFFX 和#OFFY 包含实际图块的偏移量(索引 * 大小),#INDX 和#INDY 包含图块的索引。
“(^2” 将控制第二个 arduino,该行必须以“)”结束,以作为第一个 arduino 的注释处理。
平铺步骤之间的开始条件 #159

平铺步骤之间的开始条件 #159
作者
阿莫诺 评论了 2020 年 11 月 12 日  

对不起,我不明白……这将如何阻止拼贴过程进入下一个拼贴?
但是,如果我理解正确,我可以使用此文本框在每个图块后向第二个设备发送串行消息,例如 (^2 DOSOMETHING)?如果是这样,您如何选择目标(COM 端口)?

平铺步骤之间的开始条件 #159
所有者

这将如何阻止拼贴过程转到下一个拼贴?

预期过程(从未测试过):

  1. 向第二个arduino发送定位命令,等待第二个arduino空闲(来自文本框的命令)
  2. 将瓷砖命令发送到第一个 arduino,直到瓷砖完成
  3. 重复步骤 1

平铺步骤之间的开始条件 #159

平铺步骤之间的开始条件 #159
作者
阿莫诺 评论了 2020 年 11 月 18 日  

只是让您知道,我们上周决定暂时搁置平铺功能,以专注于单个页面和工具更改。
如果您不介意,我会让这个问题开放,直到我可以回去花时间尝试解决我的问题。

平铺步骤之间的开始条件 #159
作者

嗨,其他一切大部分都在工作,所以我们回到平铺过程。
在深入研究软件之前,我想测试一下这个过程。
因此,在同步传送带和 grbl 之前,我希望能够在图块之间进行简单的暂停以手动处理转换。
我尝试了以下设置:

平铺步骤之间的开始条件 #159

但未插入 gcode。我也尝试过 M0。顺便问一下,是否有一个命令会暂停直到发送另一个命令?

平铺步骤之间的开始条件 #159
所有者

这是一个错误,您可以通过将代码替换为以前的版本来删除“graphicRelated.cs”第 472 至 479 行中的“改进” – 希望有效:

/* group objects by color/width/layer/tile-nr */
			if (graphicInformation.GroupEnable)
			{	//if (!graphicInformation.OptionClipCode)
                                GroupAllGraphics(graphicInformation);
				return Graphic2GCode.CreateGCode(groupedGraphic, headerInfo, graphicInformation);
			}

平铺步骤之间的开始条件 #159
作者

好,我会试试 !

平铺步骤之间的开始条件 #159
作者

我在代码中得到的最接近的是第 1584 行:

平铺步骤之间的开始条件 #159

平铺步骤之间的开始条件 #159
所有者

这太低了。它位于“graphicRelated.cs”中“public static string CreateGCode()”的末尾

平铺步骤之间的开始条件 #159
所有者

请撤消“graphicRelated.cs”中“public static string CreateGCode()”末尾的更改。
而是在第 784 行周围插入“countProperty((int)GroupOptions.ByTile, tileID);”
前:

tileID = string.Format("{0}_X{1}_Y{2}", tileNr, indexX, indexY);
tileCommands.Add(tileID, getTileCommand(indexX, indexY, tileSizeX, tileSizeY));

后:

tileID = string.Format("{0}_X{1}_Y{2}", tileNr, indexX, indexY);
countProperty((int)GroupOptions.ByTile, tileID);
tileCommands.Add(tileID, getTileCommand(indexX, indexY, tileSizeX, tileSizeY));

平铺步骤之间的开始条件 #159
作者

这是一个错误,您可以通过将代码替换为以前的版本来删除“graphicRelated.cs”第 472 至 479 行中的“改进” – 希望有效:

/* group objects by color/width/layer/tile-nr */
			if (graphicInformation.GroupEnable)
			{	//if (!graphicInformation.OptionClipCode)
                                GroupAllGraphics(graphicInformation);
				return Graphic2GCode.CreateGCode(groupedGraphic, headerInfo, graphicInformation);
			}

好的,我想我找到了,但它是第 430 行:

平铺步骤之间的开始条件 #159

但实际上我在这里没有改变任何东西,是吗?

平铺步骤之间的开始条件 #159
作者
阿莫诺 评论了 2020 年 12 月 3 日  

相反,我改变了这个?:

平铺步骤之间的开始条件 #159

(我似乎有 40~ 行与你偏移)

为此:

平铺步骤之间的开始条件 #159

平铺步骤之间的开始条件 #159
作者
阿莫诺 评论了 2020 年 12 月 3 日  

是的,我有 gcode,但我丢失了刀具更改和“从刀具表中获取进给率和主轴”。
虽然它仍然可以根据原始图层识别每个形状,这很好,但我担心它会丢失这些信息。但它不按它行事。

平铺步骤之间的开始条件 #159

在这里,我有一个交叉使用这两种工具跨越几个图块。我们可以看到瓷砖之间的停顿,其中一条线在激光层上,另一条线在油墨层上,但我没有换刀操作或我通常在工作时使用的正确进给率/主轴“单块”(无块)。

为了比较,这里是简单地取消选中“应用剪裁或平铺”时的情况:

平铺步骤之间的开始条件 #159

平铺步骤之间的开始条件 #159
作者

这并不重要,只是想让您知道,它们是平铺设置页面上的两个拼写错误。在工具提示中“draen”而不是“drawn”,其中一个选项是“Clipp”而不是“Clip”。

平铺步骤之间的开始条件 #159
所有者

到目前为止,它要么是 tiles 要么是 toolchange – 检查 graphic2Gcode.cs around line 135:
只需删除“else”,它可能会起作用

                if (graphicInfo.GroupOption == GroupOptions.ByTile)
                {
                    if (logEnable) Logger.Trace("-CreateGCode  try to insert Tile command {0}", groupObject.key);
                    if (Graphic.tileCommands.ContainsKey(groupObject.key))
                    { finalGcodeString.AppendLine(Graphic.tileCommands[groupObject.key]); }
                }
                else
                {
                    if (logEnable) Logger.Trace("CreateGCode-Group  toolNr:{0}  name:{1}", groupObject.toolNr, groupObject.toolName);

                    ToolChange(groupObject.toolNr, groupObject.toolName);   // add tool change commands (if enabled) and set XYFeed etc.
                }

平铺步骤之间的开始条件 #159
作者

如果我简单地删除 else,我不会在不平铺时丢失 toolchange 吗?

平铺步骤之间的开始条件 #159
所有者

不,但要确保您也可以删除第二个块周围的括号

                if (graphicInfo.GroupOption == GroupOptions.ByTile)
                {
                    if (logEnable) Logger.Trace("-CreateGCode  try to insert Tile command {0}", groupObject.key);
                    if (Graphic.tileCommands.ContainsKey(groupObject.key))
                    { finalGcodeString.AppendLine(Graphic.tileCommands[groupObject.key]); }
                }
                if (logEnable) Logger.Trace("CreateGCode-Group  toolNr:{0}  name:{1}", groupObject.toolNr, groupObject.toolName);

                ToolChange(groupObject.toolNr, groupObject.toolName);   // add tool change commands (if enabled) and set XYFeed etc.

平铺步骤之间的开始条件 #159
作者
阿莫诺 评论了 2020 年 12 月 11 日  

是的,我明白一旦我永远醒来……我回来纠正。显然你的意思是……
(我不知道为什么但在我的脑海中“删除其他”意味着将语句放在 if 中。)

平铺步骤之间的开始条件 #159
作者

图形是平铺的,我有“平铺命令”和工具更改命令。但是工具更改不会按预期发生,而是发生在图块之间。

我很难运行测试,因为我突然遇到一个错误,进程停止并且什么也没有发生。Grbl 在 G1 的中间从运行变为空闲。但我认为这不相关,因为我尝试撤消所有最近的更改,但问题仍然存在。

平铺步骤之间的开始条件 #159
所有者

应该什么时候换刀?
目前,每个组(颜色或瓷砖编号)都会更换工具。你什么时候需要它?

Grbl 在 G1 的中间从运行变为空闲

您检查 COM 窗口是否有错误?您是否低于 30kHz 步进脉冲(如果使用 Arduino Uno / Nano)?

平铺步骤之间的开始条件 #159
作者

该死的好东西,我只花了一个小时弄清楚,就在我发现你给我答案的时候^^’
我发现是因为在尝试使用“干净”版本的 GRBL-plotter(最新)时,它给了我一个关于那个的详细错误报告,而我正在使用的版本(以前的版本)只是在没有告诉我任何事情的情况下停止一切。
不知何故,我昨天搞砸了 GRBL 设置。

回到主题,我希望工具更改像在单页上那样发生,为每个图块按层对表单进行分组并执行:
第一个图块 -> 工具更改 -> 第一组 -> 第二个工具更改 -> 第二个组 -> 下一个图块。

平铺步骤之间的开始条件 #159
所有者
svenhb 评论了 2020 年 12 月 11 日  

好的,只是把工具更改放在 if 部分前面?
很难满足您的需求,它适用于所有组:[组 -> 工具更改 -> 数字]

                if (logEnable) Logger.Trace("CreateGCode-Group  toolNr:{0}  name:{1}", groupObject.toolNr, groupObject.toolName);
                ToolChange(groupObject.toolNr, groupObject.toolName);   // add tool change commands (if enabled) and set XYFeed                 

                if (graphicInfo.GroupOption == GroupOptions.ByTile)
                {
                    if (logEnable) Logger.Trace("-CreateGCode  try to insert Tile command {0}", groupObject.key);
                    if (Graphic.tileCommands.ContainsKey(groupObject.key))
                    { finalGcodeString.AppendLine(Graphic.tileCommands[groupObject.key]); }
                }
etc.

平铺步骤之间的开始条件 #159
作者

抱歉,我得到了相同的结果……
而且它似乎总是默认为“工具 1”。

平铺步骤之间的开始条件 #159
所有者

一开始。他们的想法是:使用组来收集同一工具的数据(按颜色、图层、笔宽分组)。
然后我实现了 tile-option 并使用组来分隔 tiles – 没有使用 tool-change 的想法。
可能,如果启用了工具更改,它会查找匹配的图块名称作为工具名称以找到正确的工具……
我不知道你需要什么……

平铺步骤之间的开始条件 #159
作者

我知道我的问题很烦人……但我会尽我所能总结一下,看看我们是否能找到解决方案。

语境

该机器的目的是能够从一卷织物上切割和标记帆和滑翔伞的碎片。这些布料很长,所以我们使用传送带和供应商将布料送入机器。因此平铺。

目前情况

多亏了您的帮助,我们目前能够在不使用传送带的情况下切割和标记适合工作区域的工件。一切都很好。该过程包括:

  • 在两层(激光和墨水)上设计 dxf。
  • 使用 GRBL 绘图仪打开文件。
  • 使用工具表和设置按层对表单进行分组。
  • 在每个组之间插入工具更改(这意味着文件最多 2 个更改)。
  • 转换为 Gcode。
  • 与墨水相关的所有内容都首先执行,然后是与激光相关的所有内容。
  • 过程完成。

最后一步

为了制造我们想要的作品,我们需要的最后一个特征是能够做到这一点,但要用平铺。
所以 :

  • 打开文件。
  • 平铺文件。
  • 像执行单个页面一样执行图块 1。
  • 传送带移动。
  • 像执行单个页面一样执行 tile n。
  • 传送带移动。
  • 循环直到没有瓷砖离开。
  • 过程完成。

The conveyor and supplier work on their side (basically they are just waiting for a serial command “move xxxx” and return something when they are done with how much they moved to check or adjust).

Idea

喜欢 (0)