注释
@markbotics:OEM 通常会编写或修改自己的 GUI 以实现其特定的归位要求。Grbl 本质上是通用的,可以覆盖大多数机器。如果您需要它来做其他事情,我会考虑编写您自己的 GUI。请参阅我们关于推荐协议的 Wiki。 |
@markbotics:重新阅读您关于归位的问题。注意到您使用的是 G92。不要将其用于“交钥匙”机器。G92 在复位或被用户覆盖时删除。使用 G54-59 工作坐标系。这些由 G10 命令设置。请参阅 linuxcnc.org 的 g 代码描述,了解它们如何工作。Grbl 非常密切地遵循这些。 |
谢谢你,我现在正在尝试学习坐标系。 我正在查看您建议的 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…’ 可以引用命令和寄存器名称。 你知道任何地方都有简单的明文来概括坐标情况吗?我想一些简洁的句子和例子就可以做到。 如果这不是此讨论的论坛,我们深表歉意。 |
更多关于我的归位问题,它开始扩展到坐标系的一般问题。 当涉及到多个命令时,您 (Chamnit) 建议将其放入 GUI。但我相信人们可以将一系列命令存储在非易失性存储器中,我想研究一下这个可靠性,以防串行通信或 Windows 在这个归位操作期间做一些有趣的事情。 我知道在许多 CNC 案例中,机器永远不会移动,除非应用步进电机脉冲,而且在许多应用中,人们手动将机器归位。但是我们的机器应该是“交钥匙”供其他人使用,无需经过深入培训。在我们的机器中,一旦断电,它就可以移动,实际上一个轴是垂直的,并且在断电时会下降到静止位置。因此控制器中存储的一些非易失性机器位置不适合我们的特定应用,每次重新上电时机器必须假定处于完全未知的位置。 关于坐标系主题,我正在研究并发布在http://www.shapeoko.com/forum/viewtopic.php?f=3&t=5576理想情况下,我会在一个坐标系中工作,一旦所有限位开关都设置了该坐标系的值在归位序列中设置。 |
@markbotics:您可以随意更改 Grbl 的源代码,但您认为它对您的产品更有效。您只需要遵守 GPL 许可条款并打开您所做的任何更改。 |
我只是想了解现有版本可以做什么。 我们渴望不重新发明轮子,尤其是因为您无疑已经面对并考虑了所有这些问题,并且做得比我们做得更好。 关于我的坐标系问题,您可以链接到任何简单的描述吗?除了我需要告诉机器“你现在在 X=.., Y=…, Z=…” 并且拥有所有 G01、G02、 G03 命令解释为该坐标系中的绝对坐标。谢谢。 |
我在 ShapeOko 论坛上做出了回应,但你可以先看看这个:http ://www.shapeoko.com/wiki/index.php/G-Code#Using_the_Work_Coordinate_Systems |
谢谢你的链接@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 我有一个问题:我需要调用“G54”来设置 WCS#1,还是 G10 命令会自动将我们移动到这个坐标系统中? 谢谢 |
我忘了补充,在我的最后一条评论中,我的意思是说我的起始位置是 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 原点。 |
@markbotics: 请重新阅读和学习linuxcnc.org网站链接上的g-code标准,G-code编程部分。他们对 g 代码标准的工作原理、默认值是什么、持久内存中保存的内容有非常好的解释。通过研究这些页面并用 Grbl 进行实验来验证它是否做了它应该做的事情,可以解决很多这些问题。还有很多其他关于 CNC 编程和机器行为的资源,Grbl 试图密切关注,比如 Peter Smid 的 CNC 编程手册。 如果您正在开发数控机床产品,我强烈建议您首先花时间了解完整的g代码标准和机床的标准操作。这将有助于澄清所有这些问题。我很乐意为 Grbl 的细节提供帮助,但这个问题是关于标准机器操作的。 但我会帮助你并回答你的问题:
|
嗨,一些很好的信息。 所以我不需要多次执行“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 作家,您已经做了很多工作,我发布了这些问题,希望其他用户能够提供帮助,而不是占用您的时间。但是,当然,感谢您的帮助。 |
@markbotics:确实,您只需要 gcode 命令的子集,但 Grbl 支持 CNC 机床所需的最少命令。您需要学习 Grbl 支持的所有内容才能创建一个好的产品。Gcode 资源有很多关于基础知识的精彩介绍。请花时间阅读这些内容,因为很明显您需要阅读这些内容。解释一切需要花费大量时间和精力。 |
我不是在创建产品,而是为单个用户创建一台机器。您在为 Arduino Uno 创建 g 代码机器方面做得很好。但是对于经验丰富的 CNC 人员来说显而易见的概念对于新手来说并不明显。在一个高效的世界里,一个人不应该成为专家来做基础知识。一个页面会告诉我和大多数用户,我们需要知道的一切,但我真的找不到它,不得不从几页拼凑知识。如果我有这些问题,其他人也有,理想情况下你会希望更多人使用 Grbl。 我的问题很冗长,因为我相信我正在帮助以后会重复我的轨迹的其他人。 |
@markbotics:在一个高效的世界里,是的,一个页面会很有帮助,但欢迎来到开源世界,只要有时间和愿意努力,事情就会完成。 但是,我正在尽力给你最好的建议。学习 gcode 标准和 Grbl 支持的代码。我为您链接的 linuxcnc 网站是我们可用的最佳资源之一。我知道标准令人困惑。有可能。它远远超出了一个页面来解释它。这就是我想要克服的 就像我之前说的,解释所有的细节可以通过研究标准和实际使用 Grbl 来回答。即使您正在构建一台机器,而不是产品,如果您想要交钥匙,您仍然需要学习它。否则,您将一直在盲目飞行,因为您将无法理解 CAM 程序正在输出什么以及您在告诉机器该做什么。 |
是的,非常感谢您的所有回复,毫无疑问,您所做的无数小时的编码也是如此。我确实在我们的机器前坐了一段时间尝试了一些东西,明天会带着新知识回到机器上。感谢一切。 我的结论,据我所知,对于我最初的问题,’$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,还有 6 个 WCS(工作坐标系)名为 G54 到 G59,其中默认最简单的情况是在 G54(第一个 WCS)中。G54 的偏移量由 G10 使用参数 P1 设置,该参数是持久(非易失性)信息。而 G1、G2、G3(可能还有 G0)命令仅在其中一个坐标系中。 我正在使用比 CNC 应用程序更多的机器人技术,我们真的只需要沿着路径移动但需要归位。 |
感谢您的耐心等待,很抱歉打扰您。现在我明白了,这似乎很清楚,但早些时候我不太明白。为了彻底,这是我的具体示例,写出来是希望像我一样学习的其他人发现它有用。也许这不是合适的地方,因为编码问题,我在 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)。 在这个初始设置中,我为运动范围设置了这些寄存器: 然后,第一次,我会在我想要的 WCS 中定义这个 MCS 是什么。支持 6 个 WCS,默认是第一个(又名“G54”)WCS,所以我们使用“P1”。我承认我不知道“L20”是做什么的。 现在,如果我提供进给率(例如 F5000),请确保我是第一个 WCS(G54),然后转到我的 WCS 原点: 序言(类似于由@chamnit在 Github/grbl 上)放在我们的 G 代码程序的顶部是:(G54 确保我们在第一个 WCS 中,除非您更改它,否则这是默认设置) 现在,如果我打开软限制 谢谢@chamnit尽管这不是你的职责,但因为你已经投入了大量时间实际编码供我们所有人使用,但请耐心并让我直截了当。谢谢@twforeman您也可以链接到坐标系统概述。 |
为我节省了很多时间。 |
标记机器人 评论 on 2 Mar 2015
我们正在制造一台我们希望尽可能“交钥匙”的机器。我们的机器需要在通电后了解它的位置。我们没有足够的勇气将归位代码放入可以在重置后自动运行的命令中,并且可能会有一个用于归位的 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。
谢谢,
马克