开源改变世界

高级设置和 grbl-system 命令。 #71

推推 grbl 2年前 (2023-01-21) 195次浏览
关闭
chamnit 打开了这个问题 2012 年 3 月 5 日 · 78条评论
关闭

高级设置和 grbl-system 命令。#71

chamnit 打开了这个问题 2012 年 3 月 5 日 · 78条评论

注释

高级设置和 grbl-system 命令。 #71
成员

对于 v0.8 edge 的最后一次重大推动之一,我一直坚持这个主题(状态报告和归位/慢跑仍然需要解决,但将单独处理。)这个主题是关于高级设置的和 grbl 系统命令,正如他们所说,这会打开一大堆蠕虫或潘多拉魔盒。这里的问题是,一旦我们开始添加东西,就很容易得意忘形地添加所有东西。我想开始讨论什么需要存储在 EEPROM 中,什么可以保留在编译时 config.h 文件中,以及 grbl 系统命令的外观和行为方式。就像我说的,这里有很多东西要谈。

因此,首先,我已经编译并汇总了可能需要安装的东西的列表,一些可能的或未来的项目,以及一些系统命令的开始。

Grbl EEPROM 设置

$0 = 314.95 (steps/mm x)
$1 = 314.96 (steps/mm y)
$2 = 314.96 (steps/mm z)
$3 = 20 (microseconds step pulse)
$4 = 254.00 (mm/min default feed rate)
$5 = 635.00 (mm/min default seek rate)
$6 = 0.10 (mm/arc segment)
$7 = 192 (step port invert mask. binary = 11000000)
$8 = 50.00 (acceleration in mm/sec^2)
$9 = 0.05 (cornering junction deviation in mm)
'$x=value' to set parameter or just '$' to dump current settings

现在我们有了这个,这里是我认为需要安装的东西的简短列表。

  • (睡眠、限制、主轴反转掩码。二进制=00000000)
  • (默认循环自动启动。1=开,0=关)
  • (串口波特率。1=9600, 2=19200, 3=57600)
  • (点动默认轴。1=x,2=y,3=z)
  • (点动默认进给速度,单位为 mm/min)
  • (以 mm/min 为单位的归位默认进给速率)
  • (以 ms 为单位的归位去抖延迟)
  • (状态报告小数位)
  • (状态报告单位。1=mm,2=inch,3=steps)
  • (status report item mask.binary=10000101) -> 此掩码设置将由状态报告运行时命令实时报告的项目。将设置一个单独的报告命令来报告我稍后将讨论的 g 代码模式。诸如 Grbl 状态 [Idle、Run、Hold、Jog、Home、Sleep、Abort]、MPOS、WPOS、缓冲区大小、进给速率、覆盖、行号、主轴速度/方向等项目可以包含在掩码中。

此外,我认为我们可以向用户隐藏它并在内部存储掩码,而不是在设置中使用反转掩码。我们可以让用户看到一个真/假陈述,就像$7=1 (invert x-direction. 1=true,0=false)面具中的每个项目一样。这会使设置源更大,但这可能会使用户更容易学习以这种方式重新配置掩码。

最后,我认为我们应该保留我们已经拥有的设置 EEPROM 默认值的编号约定。这将使事情保持一致,并且用户可以通过打印“$”设置转储轻松地看到哪个数字对应于哪个设置。

Grbl 高级或额外设置?

以下是保存到 EEPROM 存储器中可能需要或不需要的内容列表。其中一些东西是可有可无的,但并非完全必要。我想看看大家对这些有什么看法。

  • G54 工位默认。这可能会有用。用户可以将坐标系存储到 EEPROM 中,并始终在归位循环后立即定义工作零。但是,这也可以通过程序中的显式 G10 命令进行设置。
  • G28 和 G30 起始位置(不一定在机器零位)
  • 默认工作坐标系。通常为 G54,但只有在使用多个工作坐标系时才需要
  • G92 坐标偏移位置默认值和启用/禁用。
  • 工作区体积限制或软限制。软限位是 Grbl 会在内部跟踪它在机器空间中的位置,当它达到软限位时,它会自动启动进给保持并在达到限位开关之前停止。
  • 默认切换:块删除、可选停止、单块模式、空运行

Grbl 系统命令

我所说的系统命令是指这些命令设置 Grbl 如何运行特殊模式,如慢跑,或切换运行时选项,如块删除和可选停止。我认为我们应该使用“$”字符来表示一个特殊的命令,但是开始使用字母或单词来定义它们,并且有很多。

  • 运行时切换:这些将设置 g 代码解析器如何使用尚未安装的功能运行,但非常容易以最小的开销运行。我认为这些非常有用,应该安装。这些切换是自动启动、块删除、可选停止、单块模式和试运行。默认情况下,所有这些都将设置为 false(除非以其他方式添加到 EEPROM)。为了设置它们,我在想诸如$BLKDEL=0假或$OPTSTOP=1真之类的东西。
  • Jogging:需要有一种方法可以在没有 g 代码命令的情况下设置点动轴和进给率,并通过接口的一些命令来操作它们。要设置轴,我们可以做一些事情,比如$JX启用 x 轴进行点动并$JF=100.0设置进给率。对于硬件用户界面,我们可以有一个慢跑启用/禁用切换和方向引脚。对于软件用户界面,我们可以使用诸如$J+开始正轴运动、$J-负轴运动和$J0停止之类的东西。所有这些都值得商榷。可能有很多更好的方法可以做到这一点。
  • 设置机器位置:在 grbl 中,除了执行归零循环或硬重置 Arduino 之外,用户无法设置机器位置,两者都将它们归零。我想讨论一下我们是否需要安装一种手动设置机器位置的方法。例如,$MX=1.0将机器 x 设置为 1.0mm 或$M0将当前位置的所有轴归零。
  • 打印非实时状态报告:Right now ‘?’ 立即打印 grbl 位置的实时状态报告,但我认为我们需要一种方法来打印出非实时的完整状态报告。该报告将包括有关 grbl 当前状态的所有信息,包括打印输出时的位置和 g 代码解析器状态。这对于 UI 了解 grbl 中事物的完整状态非常重要。我们可以为此使用这样的命令$STATUS

我知道一篇文章要塞进很多东西,但所有这些都是交织在一起的。在对所有这些应该如何看待的某种类型的集体共识发展之前,我不会继续编码。请记住,Grbl 的使命之一是让事情尽可能简单。但是有很多东西处于灰色地带,我们只需要弄清楚在哪里以及如何整合它们。

高级设置和 grbl-system 命令。 #71

大帖子。大话题。总的来说,我认为这是个好主意。现在来谈谈细节。

  • 如果 $ 代码有检查,那就太好了。所以输入 $blkdel 会返回值,而 $blkdel=1 或 $blkdel=0 会设置值。
  • 什么是错误行为?如果输入 $blkdel=2 不是有效值会怎样?
  • 您对保留编号系统 $0 – $9 的评论是否只是指这些值的现有参数,或者您的意思是它扩展到所有新值 – 即它们同时具有数字和文本名称(例如 $blkdel 与45 美元)?
  • 对于按轴分组的参数,您有什么约定吗?现在只有三个:$0-$2 X steps,Y steps,Zsteps。你提到的一些添加会添加更多——比如原位、G54 偏移、慢跑速度和音量限制/软限制。你显示 $JX 和 $MX。按轴分组而不是按函数分组是否有好处,例如 $Xjog、$Xposition?这使得部分单词解析和“自动完成”(即只是“Xpo”,因为这是匹配所需的全部)变得更加容易。

一些细节

  • 还有什么理由不支持 115,200 波特?
  • 如果我理解正确的话,$ 本身会打印所有设置,而 $status 会打印 gcode 模型的(动态)内容。

干得好。

  • 奥尔登
高级设置和 grbl-system 命令。 #71

哇谢谢将是一大步!

建议:现在是否可以定义机器系统(毫米或英寸)
我有一个步/英寸正好等于 20000 步/英寸,因为英寸胎面,但我必须输入 784.401 步/毫米
所以有一个每次我移动时都会有小的累积误差。
然后菜单将全部更改为所有步长/英寸……
无论如何,您已经为 G20 G21 代码进行了所有这些转换。

帕特小工具

高级设置和 grbl-system 命令。 #71

当你现在说’?立即打印 grbl 位置的实时状态报告,我有 0.7D,无法重现该命令?
帕特小工具

高级设置和 grbl-system 命令。 #71
成员作者

奥尔登:谢谢,好点。

  • 我同意需要某种方式来显示系统命令状态。输入没有值的命令听起来是个好方法。我能看到的一个问题是它不是所有其他命令都通用的。不过,我们仍然可以使用 kitchen sink$STATUS命令查看系统设置。
  • 错误反馈可能会保持相同或相似,但我同意使用 0 和 1 来设置真/假值可能会让某些用户感到有些困惑。我们可以为这些值切换到“T”和“F”或“开”和“关”方案,如果这样更清楚的话。
  • 关于“$”和值与名称:我建议数值应该只与 eeprom 设置有关。没有多重含义。这些名称仅适用于 grbl 系统命令/运行时设置。这主要是为了更清楚地区分他们所做的事情。
  • 轴上约定:对此并没有想太多。我认为我们可以使它与 g 代码解析器的工作方式非常相似,因为所需的函数已经存在。也许我们可以将 grbl 系统命令更改为一组字符和数字命令,就像在 g 代码中一样。因此,例如,我们可能必须$M=X0.0 Y1.0设置 x 和 y 机器位置。有一百种方法可以做到这一点……我将不得不再考虑一下,以尝试针对这些命令的约定提出一个通用的解决方案。
  • 关于 115200 波特:没有特别的理由不支持这个,除了不想过多地推动 Arduino 的极限。一般情况下,在某物准备就绪之前不要对其提供官方支持,总比现在支持它然后由于性能问题不得不将其删除要好。
  • 在“$”和“$STATUS”上:“$”打印所有 eeprom 设置,“$STATUS”打印厨房水槽,包括 gcode 解析器状态。我可以通过这个问题看到你的意思。我们可能需要更清楚地说明它们是如何工作的以及它们是什么。

帕特:可以用英寸来定义所有东西,但这不是必需的。代码的工作方式是每次移动不应该有误差累积,但整个工作区体积只会有缩放误差。对于大多数人来说,这个比例误差会小于他们机器的精度。还, ‘?’ 命令在 grbl 的开发分支 v0.8 edge 中。您可以通过单击主页上的分支下拉按钮来查看源代码,并且可以在下载页面上获得构建。另外,请在另一个“问题”线程上发布与此主题无关​​的问题和评论。

高级设置和 grbl-system 命令。 #71

桑尼 – 对您上面的评论的评论:

  • 我认为有一种“通用”的方式来查询参数会很有用。$ 没有价值很简单。它就像 GET 而不是 SET,后者由等号表示。
  • 我并不是要离开 0 和 1,实际上我更喜欢它而不是 t 和 f。我只是很好奇错误会发生什么。像一个’2’。保留现有的错误响应就可以了。
  • 那么这是否意味着 EEPROM 设置的价格现在超过了 9 美元?就个人而言,我宁愿看到一些助记符,用户不必担心 EEPROM 中的内容和模型中的内容。然而,我对此有两种看法,最好区分 EEPROM 和 Gcode 模型值

(暂时)

高级设置和 grbl-system 命令。 #71
成员作者

这是从其他问题帖子中收集的一些可能需要添加到 EEPROM 设置中的其他内容。

  • 归位轴到家以及顺序。
  • 对于以非常高的步进率运行的用户,每脉冲错误检查微秒。(Shapeoko 将 47kHz 用于 Z 轴,转换为每个脉冲 21usec)。
  • 一种清除 EEPROM 并将其恢复为默认设置的方法。我认为我们需要停止支持所有旧的 EEPROM 设置,因为这会导致一些非常大的代码。我在想至少对于下一次设置更新,我们应该放弃旧的支持。有人同意吗?
高级设置和 grbl-system 命令。 #71

我的想法,没有特别的顺序。

手动设置机器位置。非常方便,尤其是在您使用工作空间的一小部分时。

尽可能使用变量名而不是位置。只是给你另一层抽象。

慢跑-需要相当多的引脚,但我真的很喜欢四个开关来进行慢跑。双掷 (+/-) 中的每个轴,第四个轴快/慢。

高级设置和 grbl-system 命令。 #71
成员作者

现在可以手动设置工作位置。手动设置或调零机器位置
在待办事项列表中,但并不紧急。可能是 v0.9。

变量可以在外部处理和解释,很可能不会
安装到 grbl 本身。
在不影响性能的情况下,我们只能塞进去这么多。

慢跑也是一种待办事项。不确定这是否会被固定或如何
完成。可能是 v0.9。但是人们已经在
使用他们的 GUI 发送短线段和馈电点来做类似的事情。

在 2012 年 10 月 4 日晚上 9:42,komradebob notifications@github.com写道:

我的想法,没有特别的顺序。

手动设置机器位置。非常方便,尤其是在您使用
工作空间的一小部分时。

尽可能使用变量名而不是位置。只是给你
另一层抽象。

慢跑-需要相当多的引脚,但我真的很喜欢四个开关来
进行慢跑。双掷 (+/-) 中的每个轴,第四个轴
快/慢。


直接回复此电子邮件或在 GitHub 上查看它
https://github.com/ /issues/71 #issuecomment-9164615。

高级设置和 grbl-system 命令。 #71

我是 CNC/GRBL 的新手,但我爱死它了。我也是编码方面的新手,我想弄清楚是否有任何与运行时命令相关的引出线。喜欢 ”!” feedhold 和“~”恢复。我正在设置我的 Estop 盒,并认为这些是非常有用的命令,并希望将它们作为硬按钮包含在内。我在哪里可以找到这方面的信息?
谢谢!
(希望这是发布此类内容的正确位置,我不想开始新线程)

高级设置和 grbl-system 命令。 #71
成员作者

没问题,谢谢你的道具!

为了回答您的问题,计划添加用于循环开始/恢复、进给保持和复位的引脚分配,可能添加到三个模拟引脚。我想我们现在可以在代码中加入一些东西来做这件事,但它确实需要一个去抖例程来让它万无一失。在其他一些更重要的功能之后,添加去抖动是顺理成章的。我将快速浏览一下将某些东西放入其中需要什么。如果有效,我会将其添加为实验性编译时选项,这意味着您必须在 config.h 文件中启用它并自行编译。

此外,紧急停止应直接连接到 Arduino 复位引脚或完全切断 Arduino 的电源。这是执行此操作的推荐方法。

高级设置和 grbl-system 命令。 #71
成员作者

好的。试了一下。这很容易,而且不需要去抖动也没有问题,所以我刚刚将运行时命令的引脚输出的标准功能推入了边缘分支。循环开始 (A2)、进给保持 (A1) 和复位 (A0)。您需要做的就是将一个常开开关连接到引脚和地。就是这样。

但是,边缘分支已经更新了很多新代码并且正在调试中。Alden Hart 正在帮助测试新的代码库,而我今天也在做同样的事情。我计划在它接近准备就绪时上传它的构建。如果有人愿意,我可以在边缘分支代码上使用一些测试人员。通过报告任何奇怪的事情或可能的改进来帮助我们。

高级设置和 grbl-system 命令。 #71

如果你愿意,我会在几个小时后回家时尝试一些。

2012 年 11 月 4 日 12:53,Sonny Jeon notifications@github.com写道:

好的。试了一下。这很容易,而且不需要去抖动也没有问题,所以我刚刚将运行时命令的引脚输出的标准功能推入了边缘分支。循环开始 (A2)、进给保持 (A1) 和复位 (A0)。您需要做的就是将一个常开开关连接到引脚和地。就是这样。

但是,边缘分支已经更新了很多新代码并且正在调试中。Alden Hart 正在帮助测试新的代码库,而我今天也在做同样的事情。我计划在它接近准备就绪时上传它的构建。如果有人愿意,我可以在边缘分支代码上使用一些测试人员。通过报告任何奇怪的事情或可能的改进来帮助我们。


直接回复此电子邮件或在 GitHub 上查看。

高级设置和 grbl-system 命令。 #71

您能否记录要测试的每个案例的预期行为?

2012 年 11 月 4 日 12:53,Sonny Jeon notifications@github.com写道:

好的。试了一下。这很容易,而且不需要去抖动也没有问题,所以我刚刚将运行时命令的引脚输出的标准功能推入了边缘分支。循环开始 (A2)、进给保持 (A1) 和复位 (A0)。您需要做的就是将一个常开开关连接到引脚和地。就是这样。

但是,边缘分支已经更新了很多新代码并且正在调试中。Alden Hart 正在帮助测试新的代码库,而我今天也在做同样的事情。我计划在它接近准备就绪时上传它的构建。如果有人愿意,我可以在边缘分支代码上使用一些测试人员。通过报告任何奇怪的事情或可能的改进来帮助我们。


直接回复此电子邮件或在 GitHub 上查看。

高级设置和 grbl-system 命令。 #71
成员作者

哎呀,这花了一段时间!完成并放置在 Wiki 中。谢谢@komradebob寻求帮助!

https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.8

高级设置和 grbl-system 命令。 #71

哇。看起来这是很多工作。我会下载最新的并在早上试一试!

2012 年 11 月 4 日 21:49,Sonny Jeon notifications@github.com写道:

哎呀,这花了一段时间!完成并放置在 Wiki 中。谢谢@komradebob寻求帮助!

https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.8


直接回复此电子邮件或在 GitHub 上查看。

高级设置和 grbl-system 命令。 #71

哇,非常感谢。我不认为我会再次使用我的 parellel 设置……GRBL 实在是太有能力了。本周我将尝试测试这些东西,让你知道这些引脚是如何工作的。

高级设置和 grbl-system 命令。 #71
成员作者

伟大的。感谢大家的帮助。请测试新功能,例如开关、归位、引出线等。无论您有多少时间。这些都是可以修改的,甚至是事物的组织方式,或者可以删除某个功能,如果发现它太多或不是很有用的话。或者,如果您发现某事不太正常或您认为会怎样,请告诉我。最重要的是尝试让人们可以访问 Grbl 而不会压倒他们。因此,如果它让您感到困惑,那么新手也会更加困惑。

高级设置和 grbl-system 命令。 #71
成员作者

所以从无线电静默来看,我假设一切正常?如果是这样,我会将其与 master 分支合并并正式发布 v0.8。大概今晚晚些时候。如果没有,请告诉我需要更改或改进的地方!

高级设置和 grbl-system 命令。 #71

我打算这个周末试一试(终于收到了来自 Sparkfun 的一些零件)。但是,对于 CNC 的新手来说,我个人认为新的运行时项目,如进给保持等非常有用并且很有意义。能够暂停、设置归位和工作坐标是我致力于设置 LinuxCNC 的唯一原因

就个人而言,我认为让某人了解软件的最重要部分是文档。当我对 GRBL 越来越熟悉时,我可能会尝试这样做。也许非程序员的观点会有助于解释一些事情。

高级设置和 grbl-system 命令。 #71

啊……我刚到地下室开始测试。实际上只是在写
一封电子邮件。

花了我几天时间,因为我炸毁了 Z 轴步进驱动器并且
在 328 编程方面遇到了一些问题。但是已经解决了。

命令轴移动时,我一点反应都没有。

例如,G0 z-1 什么都不做。

$S0-4 全部返回 ‘Error Unsupported Statement’

While returning my mill to functionality (testing with previous version) I

喜欢 (0)