注释
我一直无法找到引入此更改的提交,但我记得一些关于在 MDI 之后让 axis 将 LinuxCNC 返回到手动模式的事情。我相信这是为了解决 2.7 中必须先通过键盘点动以将 LinuxCNC 设置为手动模式,然后才能使用 MPG 点动的麻烦。 一般来说,返回手动模式似乎是可取的行为。问题是它至少破坏了一个用户插件(正确的术语?)probe_screen,它通过 python 接口发出一系列 MDI 命令,并期望 LinuxCNC 在执行每个命令后保持在 MDI 模式。 我已经尝试在发出每个 MDI 命令之前立即将 linuxcnc 设置为 MDI 模式,但可能有 50% 的时间失败。我猜轴在模式设置为 MDI 和实际发出 MDI 命令之间将模式设置回手动。 |
这个粗略的脚本演示了即使它在发出 MDI 命令之前立即将模式设置为 MDI,不知何故 LinuxnCNC 实际上并没有设置为 MDI,或者在脚本将模式设置为 MDI 和实际发出 MDI 命令。 您可能需要运行几次,但它应该会导致错误 我希望我只是在这里做一些愚蠢的事情,并且有一个简单的解决方案。 #!/usr/bin/env python
import linuxcnc
s = linuxcnc.stat()
c = linuxcnc.command()
MODES = {
linuxcnc.MODE_MANUAL: 'MANUAL',
linuxcnc.MODE_AUTO : 'AUTO',
linuxcnc.MODE_MDI : 'MDI'
}
def print_mode():
s.poll()
print "Current MODE: ", MODES[s.task_mode]
print_mode()
for i in range(4):
print '\n'
print_mode()
print 'Changing to MDI mode ...'
c.mode(linuxcnc.MODE_MDI)
c.wait_complete()
print_mode()
cmd = 'G0 X{}'.format(i)
print 'Issuing MDI command: ', cmd
c.mdi(cmd)
c.wait_complete()
|
由于 gmoccapy 也会发生这种情况,我认为它与 gui 本身无关。NorbertAm 30.11.2017 21:39 schrieb Kurt Jacobson <notifications@github.com>:这个粗略的脚本演示了即使它立即设置为 MDI 的模式在发出 MDI 命令之前,不知何故 LinuxnCNC 实际上没有设置为 MDI,或者它在脚本将模式设置为 MDI 和实际发出 MDI 命令之间设置回手动。您可能需要运行几次,但它应该会导致错误必须处于 MDI 模式才能发出 MDI 命令以抬起它丑陋的头。我希望我只是在这里做一些愚蠢的事情,并且有一个简单的解决方案。#!/usr/bin/env python import linuxcnc s = linuxcnc.stat() c = linuxcnc.command() MODES = { linuxcnc.MODE_MANUAL: ‘MANUAL’, linuxcnc.MODE_AUTO: ‘AUTO’, linuxcnc.
|
这很有趣 Norbert,我没有注意到它发生在 Gmoccapy 中,我会再次测试它。 我确实认为它依赖于 GUI,因为当我使用 hazzy 作为 GUI 运行它时,我的小脚本运行正常。 |
我无法使用您的脚本进行测试,但 gmoccapy 中嵌入的探测屏幕也确实抱怨不在 MDI mods 中。NorbertAm 30.11.2017 22:16 schrieb Kurt Jacobson <notifications@github.com>:这很有趣,Norbert,我没有注意到它发生在 Gmoccapy 中,我会再次测试它。我确实认为它依赖于 GUI,因为当我使用 hazzy 作为 GUI 运行它时,我的小脚本运行正常。—你收到这封邮件是因为你发表了评论。直接回复这封电子邮件,在 GitHub 上查看它,或者将线程静音。
|
好的,我制作了两个快速视频,展示了在 axis 和 hazzy 中运行我上面发布的脚本之间的区别。当在 hazzy 中运行时,它的行为与我预期的一样,由于 当我在 axis 中运行脚本时,第一段似乎运行正确,但后两段“一起运行”。您可以从终端中快速连续的打印和背景图中圆锥体的运动中看出这一点。另外,我们得到了 我认为这表明问题出在 GUI,而不是其他地方。 以下是两个视频的链接: (很抱歉针对 hazzy 进行了测试,因为它不是标准的 UI,但我知道它是如何工作的(我希望 :D)所以这是我消除其他可能原因的最简单方法。) |
我也遇到了这个问题,见#285 |
谢谢@pkmcnc,我看到了你的问题,但我不确定这是同一件事,现在我很确定是这样。抱歉重复。 |
我的描述不够清楚,可能。我很高兴你也发现了这个问题。It’s pretty annoying, because I have a blocking relay connected to manual mode pin (inverted, actually), and it goes on/off when the machine starts, when MDI tab is selected, also before and after every MDI command. |
@gmoccapy我不知道我的小脚本的测试效果如何,但我刚刚用它测试了 Gmoccapy,一切似乎都按预期工作。当我有机会时,我会用 probe_screen 测试 Gmoccay。 |
好消息:我想我找到了破坏它的提交。 |
嗯,也许这是一个轴错误? |
我认为这可以关闭。 |
@rene-dev根据您的说明关闭。谢谢@dngarrett |
以下是我重现该问题所遵循的步骤:
这是我期望发生的事情:
我希望 LinuxCNC 保持在 MDI 模式,直到通过
c.mode()
或通过与 UI 的某些交互更改模式。这是发生了什么:
似乎只要解释器空闲,axis 就会将 LinuxCNC 设置为手动模式,这会导致后续 MDI 命令失败。
在此之前它工作正常:
在 2.7.11 中按预期工作,即 LinuxCNC 保持在 MDI 模式,以便可以连续发出多个 MDI 命令,而不必在每个命令之前设置 MDI 模式。
有关我的硬件和软件的信息: