对话
|
@tmpvar: 感谢您的解释。我只是想澄清一下为什么我们需要添加更多探测工具。代码看起来不错而且很小,所以吃掉太多闪存应该没有任何问题。不过,在稍后集成和审查代码后,我可能会添加或更改一些内容,例如单独的消息(或没有 G38.3/.5 的消息)。 一些东西:
我并不完全反对添加这些。我通常不想让刚开始使用 CNCing 的新用户感到困惑。这些探测 g 代码在它们之间非常相似,并且不能立即清楚它们的区别和用例。 |
|
我绝不是这应该如何工作的权威!我唯一的经验是使用我的一些业余爱好者级自制数控系统。
我同意,那很好。我主要担心的是工具长度的变化会影响探测循环发生的速度。如果我们可以在以合理的速度行进时触发开关,那么我们就有了执行
这是个好问题。我天真的回答是行为应该是一样的
根据我的经验,即使在拉回之后,开关仍然被压下,将它固定到位的 1/8″ 杆仍然偏转。偏转量在较高的探测速率下更大。 我的情况(并且我敢猜测其他人)如果您退回到开关触发点,开关仍应被触发(即使开关具有完全相同的打开和关闭位置)。 不过我确实明白你的意思,并且很好奇为什么在回撤阶段后柱线仍然偏斜。
是的,这就是我所依赖的。用于 |
|
@tmpvar: 不研究代码就很难说清楚,但有两件事突然出现。第一,我会尝试找到一种方法来删除 sys.probe_away 变量并将其移至探测循环函数。必须有一种方法可以在不添加永久变量的情况下做到这一点。其次,我可能会重新设置 probe_get_state() 函数。我一直在尝试将任何特定于引脚的调用保留为可以出于可移植性原因轻松更改或更新的函数调用。 |
|
@tmpvar: 我不确定你是否还在处理这个拉取请求。我应该等待吗? |
|
@chamnit是的,在考虑了一下之后,我又开始尝试了。 我已经通过将 为了解决这个问题,我认为 |
|
刚刚意识到这仍然需要在 G38.3 和 G38.5 上安装“无错误”模式 |
|
@tmpvar: 是的。我上周末开始研究它,然后才想起先问你。所以我们没有做同样的任务。(然后我被 Windows 更新地狱所困扰,试图恢复旧的 PC 笔记本电脑。)我认为“无错误”不会成为问题。探测调用之前的所有内容都应该相同。退出处理只需要避免设置警报并将存储的探头位置更新为故障位置。 根据 linuxcnc 的说法,还需要一个额外的布尔参数,用于跟踪探测是否成功。而且,这可能需要与 |
|
我的投票:将其添加到 PRB 响应使其在正确的上下文中可用。 你不能在数学模式下使用“宏参数字符#”
$# 目前返回轴值,而不是状态值。如果/当 GUI 实现 G38 支持时,它将对其上下文中的状态感兴趣,即紧接在探测命令之后。制作 GUI 然后执行 $
# 获取状态不是很整洁。 |
|
@gerritv: 同意。我不喜欢将布尔探测参数添加到 |
|
@chamnit,这正是我为我的自动化界面所做的。我要么在好的时候得到“[PRB:]”,要么在坏的时候得到“[PRB:Not Found]”。它适用于我的用例。 |
|
根据我所读的内容,不成功的探测会返回 0 作为点的状态和位置(我想是失败点的位置)。G38.3 和G38.5 也只是增加了一个Error 指示,否则它们分别执行与G38.2 和G38.4 相同的功能。(并不是说我已经使用过任何探测命令。尽管很快就会添加到我的 GUI 中)由于失败也可能表示错误,因此我们应该发送一个错误:子代码。允许更通用和更强大的错误处理程序。 |
|
当未触发开关时,G38.3/G38.5 的当前行为将返回原点。
这应该在下一次提交中通过跳过 pull-off 部分来修复 |
|
功能性,减去 PRB 报告上的标记。
我认为添加一个 bool 来跟踪成功是一个好主意,这样格式通常是相同的,这使得编写解析器时不那么令人惊讶。我确实认为应该立即返回状态,但是如果您清除了终端或其他东西,您也应该能够在 |
|
@gerritv: 我在 使用 G38.2 很容易,我需要做的就是启用警报并根据 g 代码定义停止所有执行。干净简单。 G38.3/.5 有点乱,因为它有点不同。如果探测失败,发送 如果 G38.3/.5 探测命令有效(响应“确定”)并且循环失败,则 GUI 应接收单独的反馈并继续流式传输 g 代码。我想如果发送了多个探测命令,然后 GUI 需要确定哪一个失败了……该死。当没有一个干净明显的解决方案时,我讨厌它。 |
|
如果您始终将探测失败/成功状态作为 [PRB: 响应的一部分发送,则 1 部分已解决。对于 G38.2 和 G38.4,您可以额外设置 Alarm? .3 和 .5 根本不应该发送错误,只是将探测状态位设置为 0。 发送/响应的协议问题是一个普遍问题,将消息编号添加到 Gcode 数据包和 ok/error (Ack, NAK) 将使它们保持一致。但这需要 Grbl 和所有 GUI 的完全不同的实现。也许当 Arduino Zero 发布到野外时,我们可以考虑添加额外的“真实”协议。(我曾经在同步通信时代设计和实现协议,SDLC、X.25、Uniscope 和一些专有协议,我们遇到的问题很常见) |
|
@gerritv你需要解锁/回家才能退出闹钟模式
|
|
我知道我需要这样做,这就是为什么我认为这是实施中的错误。这是一个错误,而不是灾难性的失败。它使 G38.2 无用或至少使用起来非常危险:如果它失败了。我失去了所有的位置,进给率等只是因为探头失败?我不完全确定这是什么@chamnit故意的。 当探头失效时,机器仍然知道它在相同的 X 和 Y 位置,它甚至知道控制点在 Z 轴上的位置。不需要强制归巢周期等? |
|
@gerritv:目的是将故障的 G38.2 探头置于警报状态。这是 grbl 的错误机制来停止一切。gcode 标准没有明确列出应该发生什么的确切细节,但它确实说程序执行必须停止,这实际上是一个警报。从我对专业 CNC 的接触来看,警报仅用于解决从限制到简单的 g 代码错误的所有问题。这迫使用户确保他们的 g 代码程序是好的。 但是,机器位置不应丢失。在发出警报之前,探测器应该已经停止。在这些情况下,如软限制,机器位置将被保留。但是你确实提出了一个很好的观点,如果你设置了 G92 偏移和其他 g 代码模式,你确实会在 G38.2 探测失败时丢失这些。它确实使它不太有用,但在其他情况下可能很有用。这也是另一个原因@tmpvar也在推动安装 G38.3/.5,因为这些不会强制程序执行停止。我们只需要弄清楚这两个不会停止程序的g代码的错误机制。 |
|
我理解需要停止,崩溃了几次以及刀具损坏 IMO 实施 .3 和 .5 的真正好消息是不需要错误或警报,只需将状态位设置为 0 而不是 1。对于 .2 和 .4,警报可以保留。这允许探测程序继续,即使它在稀薄的空气中探测,如果我正在映射模型车身以进行复制,这正是我需要它做的。 |
|
@chamnit re: the modes being lost, if you have the preset loaded in Gbl it will apply those after the Unlock? And a Gcode program should have its required settings at the top anyway. So that doesn’t worry me either now. Thank you for clarifying the intent. |
|
@gerritv : Hmm. I just re-read the NIST and linuxcnc definitions. I must have hallucinated the program execution stop, because I don’t see it. It just says “error is signaled”, whatever that means. I suppose I interpreted it as a program stop. Has anyone use Mach3 or linuxcnc’s probing feature? What’s it behavoir? If we need to change the “error is signaled behavior, we may need to think about a new feedback mechanism to indicate these |


.jpg)
这主要是我在底部包含的#490描述的副本
这好像是@chamnit对登陆这个有一些保留,所以我想解释我的用例是值得的。
我真的很想在我的机器附近的某个地方有一个开关
0,0,-z,我可以结合使用G43(G43 工具长度偏移)在手动工具更改后自动设置工具(现在的深度)。我主要关心的是
G38.2,一旦按下开关,它就会在EXEC_FEED_HOLD/deceleration 阶段继续移动到开关中,并最终报告它的静止位置。这是有道理的,您当然不想破坏机器执行硬停止和丢步的状态。对于具有快速加速设置的机器来说,这可能不是一个大问题。然而,为了对各种机器配置保持稳健,关闭开关似乎是一个合理的下一个操作,以确保工具恰好位于按钮的高度。这大致类似于当前执行归巢的方式(即后退、重新参与等)
如果可以访问探针引脚状态或
G38.{4,5}很像归位循环的循环,可以在用户端工具(即 python/node/java)中创建,以帮助消除工具更改之间的任何差异。我在这里选择了标准方式,以避免向输出添加更多的报告噪音,并希望它对使用其他类型探头的人也有用复制自#490
这是通过添加一个 sys.probe_away 标志来实现的,该标志用于根据我们正在探测的方向翻转开关的方向。
真值表
这假设开关在“探测离开”开始时接合,考虑到 linuxcnc 描述中的措辞,这似乎是合理的
带有此补丁的 grbl 构建为 27758 字节,而 master 为 27654 字节