注释
@109JB: 看起来有点多余不是吗。想法是它减少了 GUI 的责任,因此它不必跟踪 Grbl 所处的单位模式。 |
我不是机械师,但我认为机器的固定价格为 13 美元——您通常总是希望以您习惯的单位查看您的职位。(并且界面软件可能希望单位始终以相同的方式报告。)但是 G20/G21 是针对文件的。即使我喜欢看英寸,我也应该能够切割出以毫米为单位指定的图案。但这只是一个猜测。 |
我作为立式加工中心的机械师工作了几年,说实话,我不知道它们是如何设置的。在我处理它们的时候,我只在 G20 中运行过零件,机器显示英寸。 我的观点是,如果我正在运行一个 G20 部件并且我想验证一些东西,我可以简单地查看 DRO 显示和正在运行的代码并验证事情是否按预期进行。如果显示器上的单位与程序中的单位不同,现在我不做转换就无法比较两者。 也许一个选项是让 $13 有 3 个值 0=mm,1=inches,2=match G20/G21。 虽然可能不值得。尽管它必须写入 EEPROM,但仅此一点就需要几十年才能耗尽。 |
我将添加我目前作为机械设计师/机械师的经验。我主要在两台机器上工作,一台 Haas 铣床和一台旧的 2 轴 Bridgeport。Haas 只使用英寸单位,因为我使用 CAM 软件对其进行编程,始终使用英寸单位。即使对于公制零件,我也使用英寸单位,因为刀具路径是根据零件几何形状编程的,这意味着原始单位大多是不相关的。我可以很容易地使用毫米来表示所有内容,但我的工具大多以英寸为单位,所以我使用英寸。 我主要手动使用 Bridgeport,偶尔使用简单的程序进行钻孔或饰面。当用 CAM 编程时,我再次总是使用英寸。但是对于手动使用,如果我使用公制图纸或公制模型,我有时会将机器切换到 mm。当然,在那种情况下,G20 不适用。 有趣的是,在 Haas G20/G21 上实际上只是检查以确保机器设置为使用与程序相同的单位。如果您尝试将 G21 与设置为英寸的机器一起使用,它会发出警报。我不确定 Bridgeport 会做什么。我应该检查看看。 我想最重要的是,允许程序单元与机器单元不同是没有任何意义的。 C| |
我认为让 GRBL 根据当前状态切换状态更新中使用的单位没有意义。主要原因是因为当前的实施允许在程序的过程中在运行中切换单元,如果有人在他们的程序中这样做,那么在发送 G20/G21 之后会有一段短暂的时间,这是不可能的一个 GUI 来了解状态正在使用的单位。 |
@winder在 GRBL 状态报告的情况下,这是不正确的。很容易分辨状态报告中使用的单位是什么,因为英寸是小数点后的 4 位数字,而毫米是 3 位数字。 |
@winder: 部分正确。根据 g 代码状态报告中的 G20/21,GUI 会知道它是什么类型的单元。但是有两个问题:
有谁知道后者的行为? |
(如果我没记错的话)这本书明确警告不要在程序中玩 G20/G21,特别是因为机器很笨,只会使用原始值而不“思考”它。 用简单的英语来说,如果最后一个 F 是“20”而我们在 G21 中,那将被解释为“20 mm/min”。如果您随后发出 G20 并继续发送移动命令,机器将简单地将其理解为“20 英寸/分钟”。这同样适用于所有寄存器(即包括轴字的最后一个值)、WCSes、刀具表中的刀具直径/长度数据等。 话虽如此,这本书与发那科和帮派的恐龙有关;像 Grbl 这样的现代系统完全有可能优雅地处理 G20/G21 中期计划过渡,但百万美元的问题是:你真的想鼓励人们在计划中期搞乱单位吗?:) |
@csdexter:既然你提到了,我确实记得曾经问过我的机械师朋友关于这种行为的问题。我觉得你是对的。F 字没有单位,机器将采用该值到机器所处的任何单位模式。G20 或 G21。没关系。在 g 代码规范中有很多没有意义的东西,这就是其中之一。 无论哪种方式,如果 Grbl 优雅地处理这些值或作为“哑”机器,您会问为什么它不以一种方式而不是另一种方式来处理。输,输的局面。唯一的决胜局是反时限处理。 |
@winder: 确实是 ‘.’ 后的位数 可用于根据数据是位置、速率还是设置值来跟踪单位类型。但是,它可以在 config.h 中配置。所以有人可以很容易地自己改变它并破坏依赖于它的 GUI。但是,我不知道为什么有人需要更改它,因为您可以获得比 0.0001″ 或 0.001 毫米更精确的机器。 |
@winder:我也在考虑让 Grbl 在更改时自动将 g 代码状态更新发送回 GUI。它可能是整个字符串,也可能只是发生变化的字符串。我现在还在考虑这个问题。它将在 Grbl v1.0 中。像往常一样,我将建立一个开发分支,供像您这样的 GUI 编写者审查并提出建议或请求更改。 |
我可以评论 LinuxCNC 是如何设置的。例如,以我刚刚在我的机器上通过 LinuxCNC 运行的以下代码片段为例: G90 G20 因此,很明显LinuxCNC保持相同的速度,并在G20/G21变化时转换它。 |
@109JB:在 G93 反时限移动期间它说什么?(这对A轴支撑很重要) |
我不确定自动状态更新会有多大用处。我之所以这样说是因为缓冲。当状态变化被发回时,GUI 将比 GRBL 所在的位置提前很多行。这就像我的 GUI 遇到的问题一样,需要跟踪所有内容,因为它在 GRBL 之前运行。 |
在linuxCNC中,以G93运行时,每一行不是快速移动的,都需要在线上有一个F字。 |
@109JB: 哦忘了说.. 感谢您花时间检查 G20/21 行为。看来我需要将 $G 打印输出更改为基于 G20/21 状态,而不是报告状态。对于实时状态报告,我将保留 13 美元的报告单位设置。如果启用,这应该只会影响实时机器和工作位置以及实时速率。 使用自动 g 代码状态反馈,更新的状态只会在解析更改它的行后立即发回。从那时起发送到 Grbl 的任何 gcode 都将受到这些状态的影响,就像通常一样。这应该独立于 Grbl 正在做什么以及它缓冲了什么。我想不出需要同步解析器状态和机器执行的情况。你有什么时候重要的例子吗? 至于 G93,是的,反时限模式下的每个非快速移动都需要一个 F 字。这在 Grbl 中得到支持。当我回到家时,我会检查移动过程中的读数。它要么是反时值,要么是别的什么。我不确定它之后会说什么,因为它应该被删除。 |
从实际的角度来看,我看不出有什么好的理由允许在程序中期更改单位。这并不是说它不应该被允许,但感觉有点像在没有任何明显好处的情况下穿过雷区。 C| |
哦。linuxCNC 中的模态窗口准确报告在 G93 中发送的 F 值。例如,F4 被报告为 F4。 关于状态反馈,我想我可能很困惑。我的想法是,自动状态反馈将使 GUI 可以用它做一些有用的事情。在我的 GUI 中,我正在致力于完整的固定循环实施,有许多需要知道的状态变化。例如,从 G54 到 G55 的更改需要在进入下一行之前立即应用零点偏移更改。如果 GUI 等待 GRBL 报告它,那么字符计数流将根本不起作用,等待响应会减慢 GUI。因此,从 GRBL 更改状态的价值有限。它可能对像 MDI 这样以缓慢的人类速度发生的事情很有用,但在运行程序时,它似乎没有太大好处。 |
我认为你错过了重点。虽然我同意在程序中更改 G20/G21 是不可能的,甚至是不推荐的,但 GRBL 不会运行该程序,因此它不知道一个程序在哪里结束,另一个程序从哪里开始。它只是运行一个 G 代码行流,这些代码行可能位于程序中、来自 MDI 或任何组合。因此,用户对命令的作用的期望很重要,我认为我们发现 GRBL 和 LinuxCNC 之间存在差异。不能说完全正确,但GRBL现在更遵循LinuxCNC的运作方式,是一个更成熟的程序。 |
是的,我在发帖后隐约想到了一些类似的事情。我遗漏的部分是 grbl 不跟踪它是否在程序内部(我仍在加快速度),在这种情况下,grbl 支持 G20/21 单位切换确实有意义。在更高级别上这可能是不好的做法,但这不是 grbl 强制执行的。 C| |
@109JB:我最近一直在考虑 GUI 必须等待 Grbl 实时发送回某些内容的命令。我一直在与 bCNC 开发人员合作安装“宏”。他做了一项绝对了不起的工作,并且已经在他的回购协议的开发分支中获得了一个工作测试构建。这个想法是安装宏,这样人们就可以使用高级伪代码轻松插入固定循环、工具更改或自定义(自动调平)探测循环。它不完全是 Fanuc Macro B,但它是一个更容易实现的基于 Python 的变体,它从中获取队列。因此,在我们的讨论中,他提出了确切的问题。 我唯一能想到的就是探测数据。其他所有内容都可以尽早查询并使用流式 g 代码进行管理。如果需要,所有工作坐标偏移都可以在 GUI 端以这种方式完成。其他一切都应该能够流式传输到 Grbl 而无需等待。 回到最初的话题,我们是否决定保持 13 美元不变?只有 $G gcode 状态字符串将被更新以显示基于 G20/21 和 G93 的 F 值。 是否有更简单的方法让 GUI 知道实时状态报告显示的是哪些单元,而无需查看和解析 $$ 设置?位数是一个不错的解决方案,尽管不够稳健。我是否需要让 Grbl 在欢迎字符串中发送一些东西,比如握手来设置 GUI? |
我个人认为 GUI 应该很容易看到 F 和 G 设置的变化。并展示它们。 在启动时,期望 GUI 执行 $$ 从 Grbl 获取当前设置是合理的,否则你怎么知道它的配置。 Gerrit/Grbl面板 发件人:Sonny Jeon [ mailto:notifications@github.com ] @109JB https://github.com/109JB :我最近考虑过 GUI 必须等待 Grbl 实时发回某些内容的命令。我一直在与 bCNC 开发人员合作安装“宏”。他做了一项绝对了不起的工作,并且已经在他的回购协议的开发分支中获得了一个工作测试构建。这个想法是安装宏,这样人们就可以使用高级伪代码轻松插入固定循环、工具更改或自定义(自动调平)探测循环。它不完全是 Fanuc Macro B,但它是一个更容易实现的基于 Python 的变体,它从中获取队列。因此,在我们的讨论中,他提出了确切的问题。 我唯一能想到的就是探测数据。其他所有内容都可以尽早查询并使用流式 g 代码进行管理。如果需要,所有工作坐标偏移都可以在 GUI 端以这种方式完成。其他一切都应该能够流式传输到 Grbl 而无需等待。 回到最初的话题,我们是否决定保持 13 美元不变?只有 $G gcode 状态字符串将被更新以显示基于 G20/21 和 G93 的 F 值。 是否有更简单的方法让 GUI 知道实时状态报告显示的是哪些单元,而无需查看和解析 $$ 设置?位数是一个不错的解决方案,尽管不够稳健。我是否需要让 Grbl 在欢迎字符串中发送一些东西,比如握手来设置 GUI? — |
我个人认为,当前状态报告有 3 位数字的毫米和 4 位数字的英寸,以及执行 $g 的能力对于 GUI 来说很好,可以知道发生了什么。喜欢@gerritv提到在启动时很容易提取所有 GRBL 报告,让 GUI 知道发生了什么。这就是我设置 GUI 的方式。在我这里变得非常复杂的是跟踪完全实施“事物”所需的所有事物。在完成其中一些之后,要设置没有“完整”实施的固定循环是相当容易的。例如,如果您需要任何 G81 行上的所有 G81 信息,则 G81 很容易,本质上使 G81 成为非模态。变得复杂的地方是必须跟踪坐标和模态信息。例如,像这样的片段: N001 G90G0X0Y0Z2 在 N003 行中,由于使用了 G98,它需要从 N001 行知道先前的 Z 位置是什么,在本例中 Z=2,并且 G98 和 G81 都不支持 GRBL,因此 GUI 也需要跟踪它们。此外,N004 和 N005 系列也是 G81,因为 G80 或 G1-G3 尚未发布。这意味着需要跟踪 N003 行上的所有 G81 信息,直到固定循环被取消。 现在最重要的是,N001 行中的 Z 位置是可以的,因为它是 G90 移动,但如果它是 G91,我们真的需要知道机器位置而不仅仅是最后的 Z 移动。如果从 G54 到 G55 发生变化并且它真正参与其中,则抛出这一点。还有其他需要跟踪的东西。这就是我在 GUI 上绞尽脑汁想的。在某些情况下,在进行固定循环之前等待 GRBL 是可行的。例如,您可以等待 GRBL 空闲,阅读 Z 位置的状态报告并继续。这可能适用于位置信息,但您仍然必须跟踪固定循环的模态信息,除非如我之前所说,您只是进行部分实施并要求用户重新输入制作固定循环的所有信息非模态的。我考虑过这样做,但我仍在尝试跟踪位置和所有其他信息,我现在至少大部分时间都能做到。我设置它的方式是跟踪机器位置并根据需要应用当前工作偏移,同时跟踪模态信息。它现在正在以这种方式工作,需要添加一些东西。我现在必须解决的问题是当用户执行 G20/G21 切换、用户重置或工作位置重新归零时会发生什么。这些需要通过 GUI 对用于跟踪的数组进行转换或通过重新查询 grbl 来捕获。我设置它的方式是跟踪机器位置并根据需要应用当前工作偏移,同时跟踪模态信息。它现在正在以这种方式工作,需要添加一些东西。我现在必须解决的问题是当用户执行 G20/G21 切换、用户重置或工作位置重新归零时会发生什么。这些需要通过 GUI 对用于跟踪的数组进行转换或通过重新查询 grbl 来捕获。我设置它的方式是跟踪机器位置并根据需要应用当前工作偏移,同时跟踪模态信息。它现在正在以这种方式工作,需要添加一些东西。我现在必须解决的问题是当用户执行 G20/G21 切换、用户重置或工作位置重新归零时会发生什么。这些需要通过 GUI 对用于跟踪的数组进行转换或通过重新查询 grbl 来捕获。 这可能是具有 Visual Studio (Visual Basic) 经验的人可以提供帮助的东西。我有一个例程来检测发送到 grbl 的重置命令。如果检测到,将请求来自 grbl 的所有报告以重新初始化 GUI。我遇到的问题是 GUI 检测到重置,并在 GRBL 有机会重置自身之前发送 $ 请求,因此请求失败。我尝试了几种方法让 GUI 等待,但没有成功。如果我只是等待并有一个按钮来重置它就可以正常工作。如果有人有想法,请告诉我。 至于F值的$G报告。我提出它的原因是因为在我的 GUI 中,如果 G20 是当前的,它期望 F 的 in/min 值。我已经在我的代码中写入了一个解决方法,因为 GUI 查看当前的 G20/G21 状态并设置13 美元匹配。这样 F 值的 $G 报告总是符合我的预期。这只是我认为违反规范的事情,所以我想我会提出来。 谢谢, 约翰·B。 |
这不是问题,而是对可能的更改的建议。当用户希望将单位从毫米更改为英寸或相反时,他们必须完成两件事。首先在 G20/G21 中切换,然后更改 $13 的值以反映。这对我来说似乎是多余的,我个人想不出有什么时候我会用毫米表示一个而另一个用英寸表示。我的建议是让状态报告反映 G20/G21 状态,并完全取消 13 美元的价值。这样设置可能是有原因的。我不知道,这只是一个建议。
感谢您在 GRBL 上所做的所有出色工作!!!
约翰·B。