开源改变世界!!

只是一个想法/建议 #716

推推 grbl 2年前 (2022-10-27) 211次浏览 0个评论
打开
109JB 开了这个issue on 29 May 2015 · 24 条评论
打开

只是一个想法/建议#716

109JB 开了这个issue on 29 May 2015 · 24 条评论

注释

只是一个想法/建议 #716

这不是问题,而是对可能更改的建议。当用户希望将单位从毫米更改为英寸时,或者相反,他们必须完成两件事。首先在 G20/G21 中切换,然后更改 $13 的值以反映。这对我来说似乎是多余的,我个人想不出有什么时候我会用毫米来代替另一个。我的建议是让状态报告反映 G20/G21 的状态,并完全取消 13 美元的价值。这样设置可能是有原因的。我不知道,这只是一个建议。

感谢您在 GRBL 上所做的所有出色工作!!!

约翰·B。

只是一个想法/建议 #716
成员

尚尼特 评论 on 29 May 2015

@109JB: 好像有点多余吧。当时的想法是,它减少了 GUI 的职责,因此它不必跟踪 Grbl 所在的单位模式。

只是一个想法/建议 #716

我不是机械师,但我认为这台机器的价格是 13 美元——您通常总是希望以您习惯的单位查看您的位置。(并且接口软件可能希望单位总是以相同的方式报告。)但 G20/G21 用于文件。即使我喜欢看英寸,我也应该能够切割出以毫米为单位的图案。但这只是一个猜测。

只是一个想法/建议 #716
作者

109JB 评论 on 29 May 2015

我在立式加工中心做了几年机械师,说实话,我不知道它们是如何设置的。在我研究它们的时候,我只在 G20 中运行过零件,机器显示英寸。

我的观点是,如果我正在运行 G20 部件并且想要验证某些内容,我可以简单地查看 DRO 显示和正在运行的代码,并验证事情是否按应有的方式进行。如果显示屏上的单位与程序不同,现在我无法在不进行转换的情况下比较两者。

也许一个选项是让 13 美元有 3 个值 0=mm、1=inches、2=match G20/G21。

虽然可能不值得。即使它必须写入 EEPROM,也需要数十年才能将其耗尽。

只是一个想法/建议 #716

我将添加我目前作为机械设计师/机械师的经验。我主要在两台机器上工作,一台 Haas 铣床和一台旧的 2 轴 Bridgeport。Haas 专门用于英寸单位,因为我使用 CAM 软件对其进行编程,始终以英寸为单位。即使对于公制零件,我也使用英寸单位,因为刀具路径是根据零件几何形状编程的,这意味着原始单位大多无关紧要。我可以轻松地将 mm 用于所有内容,但我的工具大多以英寸为单位,所以我使用英寸。

我主要使用手动的 Bridgeport,偶尔使用简单的程序进行钻孔或端面。当用 CAM 编程时,我再次总是使用英寸。但是对于手动使用,如果我使用公制图纸或公制模型工作,我有时会将机器切换到 mm。当然,在这种情况下,G20 不适用。

有趣的是,在 Haas G20/G21 上实际上只是一个检查,以确保机器设置为使用与程序相同的单位。如果您尝试将 G21 与设置为英寸的机器一起使用,它会发出警报。我不确定 Bridgeport 会做什么。我应该检查一下。

我想底线是允许程序单元与机器单元不同是没有任何意义的。

C|

只是一个想法/建议 #716

我认为让 GRBL 根据当前状态切换状态更新中使用的单位是没有意义的。主要原因是因为当前的实现允许在程序过程中动态切换单元,如果有人在他们的程序中这样做,那么在发送 G20/G21 之后会有一段短暂的时间,这是不可能的一个 GUI,用于了解状态使用的单位。

只是一个想法/建议 #716
作者

109JB 评论 2015 年 6 月 4 日

@winder在 GRBL 状态报告的情况下,这是不正确的。很容易分辨状态报告中使用的单位,因为英寸是小数点后的 4 位数字,毫米是 3 位数字。

只是一个想法/建议 #716

@winder: 部分正确。GUI 会根据 g 代码状态报告中的 G20/21 知道它是什么类型的单元。不过有两个问题:

  • G93 反时限使用 F 字,在此模式下执行的每个运动都需要该字。它的单位为 1/秒。可以在内部将移动转换为 mm/min,但这样做需要额外的数学运算。这有助于减少 F 单位。
  • 当 G20/21 从英寸变为毫米或反之时,F 值会发生什么变化?当从 G21 到 G20 时,活动的 F200(mm/min) 是否仍然意味着 200 mm/min 或 200 inch/min?这有助于将 F 与单位保持一致。

有谁知道后者的行为?

只是一个想法/建议 #716

(如果我没记错的话)这本书明确警告不要玩 G20/G21 中间程序,特别是因为机器很笨,只会使用原始值而不“考虑”它。

用简单的英语来说,如果最后一个 F 是“20”并且我们在 G21 中,那将被解释为“20 mm/min”。如果您随后发出 G20 并继续发送移动命令,机器将简单地将其理解为“20 英寸/分钟”。对于所有寄存器(即包括轴字的最后一个值)、WCS、刀具表中的刀具直径/长度数据等也是如此。
这就是为什么在程序中更改单位显然是 CNC 世界的禁忌。

说了这么多,这本书关注的是发那科和该团伙的恐龙;完全有可能像 Grbl 这样的现代系统可以优雅地处理程序中期 G20/G21 转换,但百万美元的问题是:你真的想鼓励人们搞乱程序中期的单位吗?:)

只是一个想法/建议 #716

@csdexter: 既然你提到了,我记得曾经问过我的机械师朋友这个行为。我觉得你是对的。F 字没有单位,机器将采用该值到机器所处的任何单位模式。G20 或 G21。没关系。g-code 规范中有很多没有意义的东西,这就是其中之一。

无论哪种方式,如果 Grbl 优雅地处理这些值或作为“哑”机器,你会得到关于为什么它不以一种方式而不是另一种方式来做的问题。输,输局面。唯一的决胜局是反时限处理。

只是一个想法/建议 #716

@109JB我没有意识到这一点。如果这是一种稳定的行为,它将更加简化 GUI 端。以前我一直认为你需要查询 $13 标志来确定你得到了什么单位。

@chamnit我更担心的是,这意味着应用程序需要做的不仅仅是定期发送“?” 获取当前坐标。在这种情况下,它现在还需要注入 $G 以确保状态已更改,然后才能恢复状态请求。如果可以依赖坐标精度@109JB建议然后这些都不重要,因为单位是隐式报告的。

只是一个想法/建议 #716

@winder: 确实是’.’后面的位数 可用于根据数据是位置、速率还是设置值来跟踪单位类型。但是,它可以在 config.h 中进行配置。因此,有人可以轻松地自己更改它并破坏依赖于此的 GUI。但是,我不知道为什么有人需要更改它,因为您可以获得比 0.0001″ 或 0.001mm 更精确的机器。

只是一个想法/建议 #716

@winder: 我也在考虑让 Grbl 自动将 g 代码状态更新发送回 GUI,当一个改变时。它可能是整个字符串或只是已更改的字符串。在这一点上,我仍在考虑它。它将在 Grbl v1.0 中。像往常一样,我将为像您这样的 GUI 编写者设置一个开发分支,以供审查并提出建议或请求更改。

只是一个想法/建议 #716
作者

109JB 评论 2015 年 6 月 4 日

我可以评论一下 LinuxCNC 是如何设置的。例如,以我刚刚在我的机器上通过 LinuxCNC 运行的以下代码片段为例:

G90 G20
G0 X0 Y0 Z0
F10
G1 X10 <<<这 10 英寸的移动按预期花费了 1 分钟,模态读数为 F10
G0 X0
G21 <<<这里模态读数变为 F254
G1 X254 <<<这 254 毫米移动也花了1分钟

因此,很明显LinuxCNC保持相同的速度,并在G20/G21改变时进行转换。

只是一个想法/建议 #716

@109JB: 在 G93 反时限移动期间它说什么?(这对于 A 轴支持很重要)

只是一个想法/建议 #716
作者

109JB 评论 2015 年 6 月 4 日

我不确定自动状态更新会有多大用处。我之所以这么说是因为缓冲。当状态更改被发回时,GUI 将比 GRBL 所在的位置提前许多行。这就像我的 GUI 需要跟踪所有内容一样,因为它在 GRBL 之前运行。

只是一个想法/建议 #716
作者

109JB 评论 2015 年 6 月 4 日

@chamnit

在linuxCNC中,在G93中操作时,每条非快移的行都需要在行上加一个F字。

只是一个想法/建议 #716

@109JB: 哦忘了说.. 感谢您花时间检查 G20/21 的行为。看来我需要将 $G 打印输出更改为基于 G20/21 状态,而不是报告状态。对于实时状态报告,我将保留 13 美元的报告单位设置。如果启用,这只会影响实时机器和工作位置以及实时速率。

使用自动 g 代码状态反馈,更新后的状态只会在解析更改它的行后立即发回。从那时起发送到 Grbl 的任何 gcode 都会像往常一样受到这些状态的影响。这应该独立于 Grbl 正在做什么以及它缓冲了什么。我想不出您需要同步解析器状态和机器执行的情况。你有什么时候重要的例子吗?

至于G93,是的,在反时限模式下,每次非快速移动都需要一个F字。这在 Grbl 中得到了支持。回家后,我会在搬家期间检查读数的内容。要么说反时间值,要么说其他东西。我不确定它之后会说什么以及它会说什么,因为它应该被删除。

只是一个想法/建议 #716

从实际的角度来看,我看不出任何允许在中间程序中更改单位的充分理由。这并不是说它不应该被允许,但感觉有点像穿过雷区,这样做没有任何明显的好处。

C|

只是一个想法/建议 #716
作者

109JB 评论 2015 年 6 月 4 日

哦。linuxCNC 中的模态窗口准确报告在 G93 中发送的 F 值。例如,F4 报告为 F4。

关于状态反馈,我想我可能很困惑。我的想法是自动状态反馈将使 GUI 可以用它做一些有用的事情。在我的 GUI 中,我正在为完整的固定循环实现而工作,需要了解许多状态更改。例如,从 G54 到 G55 的更改需要在进行下一行之前立即应用零偏更改。如果 GUI 等待 GRBL 报告它,那么字符计数流将根本不起作用,等待响应会减慢 GUI。出于这个原因,从 GRBL 改变状态的价值是有限的。它可能对诸如 MDI 之类的事情很有用,在这种情况下事情发生的速度很慢,但是在运行程序时,似乎并没有太大的好处。

只是一个想法/建议 #716
作者

109JB 评论 2015 年 6 月 4 日

@cbaugher

我认为你没有抓住重点。虽然我同意在程序中更改 G20/G21 不太可能甚至不推荐,但 GRBL 不会运行该程序,因此它不知道一个程序在哪里结束,另一个程序从哪里开始。它只是运行可能在程序中、来自 MDI 或任何组合的 G 代码行流。因此,用户对命令执行的期望很重要,我认为我们发现 GRBL 和 LinuxCNC 之间存在差异。不是说绝对正确,而是GRBL现在更遵循LinuxCNC的运行方式,是一个更成熟的程序。

只是一个想法/建议 #716

@109JB

是的,我在发帖后模糊地想到了类似的东西。我缺少的部分是 grbl 不跟踪它是否在程序内部(我仍然在这里加快速度),在这种情况下,grbl 支持 G20/21 单元切换确实有意义。在更高级别上这可能是不好的做法,但这不是 grbl 强制执行的。

C|

只是一个想法/建议 #716

@109JB:我最近考虑了 GUI 必须等待 Grbl 实时发送回一些东西的命令。我一直在与 bCNC 开发人员合作安装“宏”。他完成了一项非常了不起的工作,并且已经在他的 repo 的一个开发分支中获得了一个工作测试版本。这个想法是安装宏,这样人们就可以使用高级伪代码轻松插入固定循环、工具更换或自定义(自动调平)探测循环。它不完全是 Fanuc Macro B,但它是一个更易于实现的基于 Python 的变体,它从中获取队列。所以,在我们的讨论中,他的确切问题出现了。

我唯一能想到的就是探测数据。其他所有内容都可以在早期使用流式 g 代码进行查询和管理。如果需要,可以在 GUI 端以这种方式完成所有工作坐标偏移。其他所有内容都应该能够流式传输到 Grbl,而无需等待。

回到最初的话题,我们是否决定保持 13 美元不变?只有 $G gcode 状态字符串将被更新以显示基于 G20/21 和 G93 的 F 值。

是否有更简单的方法让 GUI 无需查看和解析 $$ 设置即可知道实时状态报告正在显示哪些单位?位数是一个不错的解决方案,尽管并不可靠。我是否需要让 Grbl 在欢迎字符串中发送一些东西,比如握手来设置 GUI?

只是一个想法/建议 #716

我个人认为 GUI 应该很容易看到 F 和 G 设置出来。并展示它们。

在启动时,期望 GUI 执行 $$ 以从 Grbl 获取当前设置是合理的,否则您怎么知道它的配置。

Gerrit/GrblPanel

发件人:Sonny Jeon [ mailto:notifications@github.com ]
发送时间:2015 年 6 月 4 日星期四上午 11:02
收件人:grbl/grbl
主题:回复:[grbl] 只是一个想法/建议(#716

@109JB https://github.com/109JB :我最近考虑了 GUI 必须等待 Grbl 实时发送回一些东西的命令。我一直在与 bCNC 开发人员合作安装“宏”。他完成了一项非常了不起的工作,并且已经在他的 repo 的一个开发分支中获得了一个工作测试版本。这个想法是安装宏,这样人们就可以使用高级伪代码轻松插入固定循环、工具更换或自定义(自动调平)探测循环。它不完全是 Fanuc Macro B,但它是一个更易于实现的基于 Python 的变体,它从中获取队列。所以,在我们的讨论中,他的确切问题出现了。

我唯一能想到的就是探测数据。其他所有内容都可以在早期使用流式 g 代码进行查询和管理。如果需要,可以在 GUI 端以这种方式完成所有工作坐标偏移。其他所有内容都应该能够流式传输到 Grbl,而无需等待。

回到最初的话题,我们是否决定保持 13 美元不变?只有 $G gcode 状态字符串将被更新以显示基于 G20/21 和 G93 的 F 值。

是否有更简单的方法让 GUI 无需查看和解析 $$ 设置即可知道实时状态报告正在显示哪些单位?位数是一个不错的解决方案,尽管并不可靠。我是否需要让 Grbl 在欢迎字符串中发送一些东西,比如握手来设置 GUI?


直接回复此邮件或在 GitHub #716(评论)上查看。 https://github.com/notifications/beacon/AH0pYp_RcNtInL6eD6MEk7hKtOpfM_9Xks5oQF_4gaJpZM4EuGN7.gif

只是一个想法/建议 #716
作者

109JB 评论 2015 年 6 月 5 日

就我个人而言,我认为当前状态报告为 3 位毫米和 4 位英寸,以及执行 $g 的能力对于 GUI 了解正在发生的事情很好。喜欢@gerritv提到在启动时提取所有 GRBL 报告以让 GUI 知道发生了什么非常容易。这就是我设置 GUI 的方式。在我变得非常复杂的地方是跟踪完全实现“事物”所需的所有事物。在经历了其中一些之后,在没有“完整”实现的情况下设置固定循环相当容易。例如,如果您需要任何 G81 线路上的所有 G81 信息,则 G81 很容易,基本上使 G81 成为非模态的。它变得复杂的地方是必须跟踪坐标和模态信息。例如,像这样的一个片段:

N001 G90G0X0Y0Z2
N002 G91
N003 G98G81R0.1Z-1
N004 X1
N005 X2

在 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。

喜欢 (0)

您必须 登录 才能发表评论!