Contact me: hankecnc@gmail.com

归巢最佳实践? #613

推推 grbl 3年前 (2023-01-22) 142次浏览

关闭
markbotics 打开了这个问题 2015 年 3 月 2 日 · 17条评论
关闭

归巢最佳实践?#613

markbotics 打开了这个问题 2015 年 3 月 2 日 · 17条评论

注释

归巢最佳实践? #613

我们正在制造一台我们希望尽可能“交钥匙”的机器。我们的机器需要在开机后了解它的位置。我们还不够勇敢,无法将归位代码放入复位后可以自动运行的命令中,并且可能会有一个 GUI 按钮返回主页(理想情况下,微控制器上会分配一个“主页”引脚)。

这是一个普遍的问题,实现归位的最佳方法是什么?一个具体的子问题是,我们能否将它们编程为一个可通过单个命令调用的子例程(不知道该怎么做)?到目前为止,我们的序列(我们在 GUI 中输入的内容)是
$h
g92 x-180 y-260 z+205
f10000
g01 x0 y0 z0

对于那些已经实现了归巢系统的人,除了知道每次进入什么顺序(对于那些运行自己的个人创作的人)之外,你能分享一些建议吗?

我们使用“GRBL Controller 3.6.1”作为我们的 Windows GUI。我们在 Arduino Uno 中使用 GRBL 0.9c。

谢谢,
马克

归巢最佳实践? #613
成员

@markbotics:原始设备制造商通常编写或修改自己的 GUI 以实现其特定的归位要求。Grbl 本质上是通用的,可以覆盖大多数机器。如果您需要它来做其他事情,我会考虑编写您自己的 GUI。请参阅我们关于推荐协议的 Wiki。

归巢最佳实践? #613
成员

@markbotics: 重新阅读你关于归位的问题。注意到您使用的是 G92。不要将其用于“交钥匙”机器。G92 会在重置或被用户覆盖时删除。使用 G54-59 工作坐标系。这些由 G10 命令设置。请参阅 linuxcnc.org g 代码说明,了解它们的工作原理。Grbl 密切关注这些。

归巢最佳实践? #613

谢谢,我现在正在尝试学习坐标系。

我正在查看您建议的 linuxcnc.org 教程以及维基百科http://en.wikipedia.org/wiki/G-code#G50_position_register

我假设一些 G 命令说“从现在开始 x、y、z 坐标在名为 <—> 的空间中”,并且其他 G 命令应该设置这些坐标系之一,或者将它们归零(“名为 <—> 的坐标系—> 当前位于 0,0,0”)或设置它们(“坐标系 <—> 现在位于坐标 X=542、Y=-200、Z=100”)。

似乎“G…”可以指代命令和寄存器名称。

你知道任何地方有任何简单明了的文字来概括坐标情况吗?我想一些简洁的句子和例子就可以做到。

如果这不是讨论的论坛,我们深表歉意。

归巢最佳实践? #613

更多关于我的归位问题,它开始扩展到坐标系的一般问题。

当涉及多个命令时,您 (Chamnit) 建议将其放入 GUI。但我相信可以在非易失性存储器中存储一系列命令,我想研究一下可靠性,以防串行通信或 Windows 在此归位操作期间做一些有趣的事情。

我知道在许多 CNC 案例中,除非应用步进电机脉冲,否则机器永远不会移动,而且在许多应用中,人们手动将机器归位。但我们的机器应该是“交钥匙”供其他人使用,无需深入培训。在我们的机器中,一旦断电它就可以移动,实际上一根轴是垂直的并且在断电时会下降到静止位置。因此,控制器中存储的一些非易失性机器位置不适合我们的特定应用,每次电源循环时都必须假定机器处于完全未知的位置。

关于坐标系主题,我正在研究并发布在http://www.shapeoko.com/forum/viewtopic.php?f=3&t=5576理想情况下,我只在一个坐标系中工作,所有限位开关的值都设置一次在归位序列中设置。

归巢最佳实践? #613
成员

@markbotics:您可以随意更改 Grbl 的源代码,但您认为它更适合您的产品。您只需要遵守 GPL 许可条款并打开您所做的任何更改。

归巢最佳实践? #613

我只是想了解现有版本可以做什么。

我们不想重新发明轮子,尤其是考虑到您无疑已经面对并思考了所有这些问题,并且比我们做得更好。

关于我的坐标系问题,您可以链接到任何简单的描述吗?除了我需要告诉机器“你现在在 X=.., Y=…, Z=…”并且拥有所有 G01、G02、 G03 命令解释为该坐标系中的绝对坐标。谢谢。

归巢最佳实践? #613

我在 ShapeOko 论坛上回复了,但你可以先看看这个:http ://www.shapeoko.com/wiki/index.php/G-Code#Using_the_Work_Coordinate_Systems

归巢最佳实践? #613

感谢您提供该链接@twforeman, 那个部分非常好。我在 ShapeOko 论坛上回复了 ( http://www.shapeoko.com/forum/viewtopic.php?f=3&t=5576 )

只是暂时回答我自己关于坐标系的第二个问题,我需要知道的是,当 $h 归位操作完成时,MCS(机器坐标系)设置为 0,0,0,不应该尝试或想改变它。相反,应该使用“G10”命令将 WCS(工作坐标系)设置为该起始位置在工作坐标中的位置。Grbl 支持 6 种可能的 WCS,我将保持简单,只在第一个 (P1) 中工作。因此我输入“G10 P1 …”。我相信,但不确定,然后我需要使用“G54”命令切换到该坐标系。此后所有 G1、G2、G3 命令都在这个 P1 WCS 中。

和 ‘?’ 立即回复一条状态消息,告诉我机器和工作坐标系统 <Idle,MPos:0.000,0.000,0.000,WPos:0.000,0.000,0.000>。我将用它来确认我的理解。

为了回答我关于归位的原始问题,对于我的应用程序,我认为执行以下操作是正确的。我将用以下内容替换我编写的原始 G 代码序列($h、G92、…):

$h
G10 P1 L20 X-180 Y-260 Z205
G54(不确定这是否正确或必要)
G90(设置绝对坐标 – 应该是默认值但为了安全会发布)
F10000(设置进给速度)
G1 X0 Y0 Z0(移动到工作区中间的所需原点)

我有一个问题:我需要调用“G54”来设置 WCS#1,还是 G10 命令会自动将我们移动到这个坐标系中?

谢谢

归巢最佳实践? #613

我忘了补充,在我最后的评论中我的意思是说我的起始位置是 X=-180mm,Y=-260mm 和 Z=205mm 因此在 $h 完成后我希望工作坐标系统是(-180 ,-260,205) 因此我发送’G10 P1 L20 X-180 Y-260 Z205’,然后可能是’G54’,然后是’G90’以确保我在绝对坐标系中,然后’G1 X0 Y0 Z0’应该将我的机器移动到工作区中心的 WCS 原点。

归巢最佳实践? #613
成员

@markbotics:请重新阅读和研究 linuxcnc.org 网站链接上的 G 代码标准,关于 G 代码编程的部分。他们对 g 代码标准如何工作、什么是默认值、什么保存在持久内存中有非常好的解释。通过研究这些页面并用 Grbl 进行实验以验证它是否按照预期进行,可以弄清楚其中的许多问题。还有很多关于 CNC 编程和机器行为的其他资源,Grbl 试图密切关注这些资源,例如 Peter Smid 的 CNC 编程手册。

如果您正在开发 CNC 机床产品,我强烈建议您首先花时间全面了解 G 代码标准和机床的标准操作。这将有助于澄清所有这些问题。我很乐意帮助解决 Grbl 的具体问题,但这个问题是关于标准机器操作的。

但我会帮助你并回答你的问题:

  • $H 回家并找到机器零。这就是它的唯一目的。通常在归位循环后,程序应使用 G28 或 G30 命令自动将机器移动到预定的安全/启动位置。这通常在 X 和 Y 行程的中间范围内,并且 Z 始终为正。另一个 G28/G30(不用于后归位)通常用于移动到工具长度偏移探针位置。如果您在机器体积中铣削多个相同的零件,工作坐标通常仅用于设置零件零或多个零件零。这是这些工具的常见用法,并且通常以这种方式编写和描述。
  • G28.1 和 G30.1 命令将当前位置(如果我没记错的话)存储到内存中,并在调用 G28 或 G30 时检索它。这是在网站上描述的。
  • G10 设置相对于机器零位的工件坐标偏移。它是持久的,并保存在永久的记忆中。你只需要这样做一次。如果您需要更改它,请向 Grbl 发送一个新的 G10 命令。
  • 有一系列默认的 G 代码模式。这些在 linuxcnc.org 网站上的 g 代码标准和关于 g 代码的标准 CNC 手册中都有概述。其中包括 G54、G17、G0、G90、G94、G21 等。每当 Grbl 被软重置或电源循环时,Grbl 就会重置为这些。在 g 代码程序的开头发送这些是多余的,但大多数 CAM 程序都会导出包含这些内容的 g 代码标头,以确保设置正确。大多数 CNC 手册都会讨论程序标题行。G54 G17 G90 G94 G21在 g 代码程序的开头有一行是标准操作程序。
归巢最佳实践? #613

嗨,一些很好的信息。

所以我不需要多次执行“G10 P1 L20 X-180 Y-260 Z205”,因为它会存储在非易失性存储器中。我收集到最好在机器设置期间执行此操作,同时我还设置了最大速度、加速度、方向反转标志等。

所以我真的只需要在每次打开机器时执行 $h,并让所有 G 代码程序在开头包含标准 G54 G17 G90 G94 G21。G54 将我们置于 P1 WCS,G17 在 XY 平面绘制圆弧,G90 确保所有 G 运动命令都是绝对坐标,G94 将进给速率的单位设置为单位每分钟,G21 将我们设置为公制毫米。

我们不是在制造一系列产品,而是在制造一台机器。是的,我们可以阅读大量文档,但我们只需要一套简单明了的说明和最少的解释。我教了几年课程,很清楚最有效的学习方法是预先完整而简洁地定义基础知识,最好先有一个完整的工作示例。例如,G54 是否意味着您可以单独输入“G54”,或者在其后跟更多数字,例如“G01”。如果您是 Grbl 作者,那么您已经做了很多工作,我发布了这些问题希望其他用户提供帮助而不是占用您的时间。但是,当然,我们感谢您的帮助。

归巢最佳实践? #613
成员

@markbotics:的确,您只需要 gcode 命令的一个子集,但 Grbl 支持 CNC 机床所需的最少命令。您需要了解 Grbl 支持的所有内容才能创建好的产品。Gcode 资源有很多关于基础知识的精彩介绍。请花时间阅读这些内容,因为很明显您需要阅读这些内容。解释一切需要花费大量的时间和精力。

归巢最佳实践? #613

我不是在创建产品,而是为单个用户创建一台机器。您在为 Arduino Uno 创建 g 代码机器方面做得很好。但是对于经验丰富的 CNC 人员来说显而易见的概念对于新手来说并不明显。在一个高效的世界中,一个人不必成为专家就可以做基础工作。一个页面会告诉我,以及大多数用户,我们需要知道的一切,但我无法真正找到它,不得不从几个页面中拼凑知识。如果我有这些问题,其他人也有,理想情况下你会希望更多人使用 Grbl。

我的问题很冗长,因为我相信我正在帮助其他人,他们以后会重复我的曲目。

归巢最佳实践? #613
成员

@markbotics:在一个高效的世界中,是的,单个页面会有所帮助,但欢迎来到开源世界,只要有时间和愿意付出努力,事情就会完成。

但是,我正在尽我所能给你最好的建议。了解 gcode 标准和 Grbl 支持的代码。我为您链接的 linuxcnc 网站是我们可用的最佳资源之一。我知道标准令人困惑。有可能。它远远超出了单个页面来解释它。这就是我想要传达的

就像我之前说的,解释所有的细节都可以通过研究标准和实际使用 Grbl 进行试验来回答。即使你正在建造一台机器,而不是一个产品,如果你想要一些交钥匙的东西,你仍然需要学习它。否则,您将一直处于盲目状态,因为您不会理解 CAM 程序正在输出什么以及您在告诉机器做什么。

归巢最佳实践? #613

是的,非常感谢您的所有回复,毫无疑问,您所做的无数小时的编码也是如此。我确实坐在我们的机器前尝试了一段时间,明天带着新知识回到机器前。感谢一切。

据我了解,我的结论是,我最初的问题是“$h”是我需要的所有归位代码,其余的应该在设置时完成(比如 G10 应该在设置 $ 寄存器以获得最大速度时完成, accel 等)或程序的顶部(例如,在每个程序的开头放置“G54 G17 G90 G94 G21”或类似内容)。

我其余的困惑是对坐标系的根本误解,第 5 节。http://linuxcnc.org/docs/html/common/User_Concepts.html的坐标系很有帮助。我的收获是 Grbl 支持 7 个坐标系,MCS(机器坐标系)用 $h 重置为 0,0,0,还有六个 WCS(工作坐标系)命名为 G54 到 G59,其中默认最简单的情况是在 G54(第一个 WCS)中。G54 的偏移量由 G10 使用参数 P1 设置,该参数是持久(非易失性)信息。而 G1、G2、G3(可能还有 G0)命令仅在其中一个坐标系中。

我工作的机器人技术比 CNC 应用程序更多,我们真的只需要沿着路径移动但需要归位。

归巢最佳实践? #613

感谢您的耐心等待,抱歉打扰您。现在我明白了,似乎很清楚,但早些时候我不太明白。只是为了彻底,这是我的具体示例,写出来是希望像我一样学习的其他人发现它有用。也许这不是合适的地方,因为编码问题,我在 Shapeoko 论坛上也有几乎相同的文本http://www.shapeoko.com/forum/viewtopic.php?f=3&t=5576

这是我为我的机器所做的:

我首先找到了每个轴的范围,以便以后使用软限制,在 $130、$131、$132 寄存器 (v0.9g) 中输入这些“最大行程”数字。这是通过慢跑找到的定义安全范围的运动范围(增量)。这些最大行程数设置了 MCS(机器坐标系统)在归位后的状态。

然后,在回原点后,使用“G10”命令一次,将 WCS(工作坐标系)相对偏移量设置为 MCS。然后将它们永久(非易失性)存储在 EEPROM 存储器中。然后打开软限制以拒绝命令并进入复位状态,如果命令请求运动超出起始位置范围至 $130、$131、$132 寄存器中的范围。我早些时候误以为我可以设置 MCS 范围,并且 G92 命令会很有用。

就我个人而言,我发现硬性限制 $21(硬性限制,布尔值)对我不起作用,我必须将其保持在 0。我在此#616上提出了一个问题。有可能像其他问题一样,我错了,但到目前为止我发现它总是触发任何请求的移动(例如 G1 x0 y0 z0)。

在这个初始设置中,我为运动范围设置了这些寄存器:
$130=560.000(x 最大行程,mm)
$131=720.000(y 最大行程,mm)
$132=400.000(z 最大行程,mm)
然后我设置这些归位寄存器:
$22=1(归位周期,bool)
$23=3(归位方向反转掩码:00000011)
$24=2500.000(归位进给,mm/min)
$25=2500.000(归位搜索,mm/min)
$26=250(归位去抖动,毫秒)
$27=20.000(归位牵引,mm)
注意我在左下角(负 X,Y)但正 Z。还要注意我将牵引设置为 20mm(来自一个 $27 寄存器的所有轴) .
然后在归位操作($h)后,我的 MCS 为 -540、-700、-20。MCS 是 (-560,-720,-0)(来自负向归位移动轴 X、Z 的最大行程变量和正向归位轴 z 的 0)在找到最后一个限位开关时,在它进行归位之前拔下来。归位完全完成后,它已退回(X、Y 正向移动和 Z 负向移动)每个 20 毫米,使得 MCS 位于(-540、-700、-20)。我通过输入“?”看到这个 字符并看到 <Idle,MPos:-539.993,-700.000,-19.996,WPos:-260.000,-340.000,285.000>。

然后,第一次,我会在我想要的 WCS 中定义这个 MCS。支持 6 个 WCS,默认为第一个(也称为“G54”)WCS,因此我们使用“P1”。我承认我不知道“L20”是做什么的。
G10 P1 L20 X-260 Y-340 Z285
设置 WCS(请参阅上面 ? 回复的“WPos:-260.000,-340.000,285.000”部分)。
请注意,WCS 是 MCS 的偏移量 (280,360,305)。即一个WCS点是MCS+(280,360,305)

现在,如果我提供进给率(例如 F5000),请确保我是第一个 WCS (G54),然后使用以下命令转到我的 WCS 原点:
G1 X0 Y0 Z0
然后我的机器移动到我的工作体积的中心。然后,如果我输入“?”,我会看到
<Idle,MPos:-279.985,-360.007,-304.994,WPos:0.008,-0.007,0.002>
请注意相同的关系,其中 MCS+(280,360,305)=WCS (-280,-360 ,-305) + (280,360,305) = (0,0,0)

序言(类似于@chamnit在 Github/grbl 上)放在我们的 G 代码程序的顶部是:(G54 确保我们在第一个 WCS 中,除非您更改它,否则这是默认设置)
G54 G17 G90 G94 G21(54 = 确保我们’在 WCS#1 中,G17=XY 圆弧,G90=绝对坐标,G94=进给率=mm/min,G21=mm 单位)。

现在,如果我打开 soft limits
$20=1 (soft limits, bool)
那么机器只会让我移动到
范围 X -280mm 到 279.9mm 范围内的点(可以输入 G1 X-280 或 G1 X279 作为极值)
范围Y -350mm 到 359.9mm(可以输入 G1 Y-350 或 G1 y359 作为极值)
范围 Z – 95mm 到 300.0mm(可以输入 G1 Z-95 或 G1 Z300 作为极端)
这些在 WCS#1 (G54) 坐标中系统。

谢谢@chamnit感谢您的耐心和直截了当,尽管这不是您的职责,因为您已经投入了大量时间实际编码供我们所有人使用。谢谢@twforeman您也可以链接到坐标系统概述。

归巢最佳实践? #613

节省了我很多时间。
谢谢你们所有人。Markbotics 发布了这么多细节,尽管他已经解决了他的问题。这确实帮助了其他有类似问题的人(比如我)。

喜欢 (0)