开源改变世界

多轴讨论 #713

推推 grbl 3年前 (2023-01-29) 147次浏览
关闭
c-morley 打开了这个问题 2020 年 4 月 8 日 · 39条评论
关闭

多轴讨论#713

c-morley 打开了这个问题 2020 年 4 月 8 日 · 39条评论

注释

多轴讨论 #713
合作者

当前行为 AFAIKT 进行了一些测试。

只要已经设置了各自的 S 代码,M3/M4 将启动所有主轴,添加带数字的 $ 将启动特定主轴。
M5 停止所有主轴 – 添加带数字的 $ 指定要停止
的主轴 在 s 代码使用 $ 指定主轴后,之后的普通 s 代码将仅控制指定的主轴。
您不能在没有另一个主轴控制代码的情况下将 $ 与数字放在一起 – 即您不能以这种方式将特定主轴预设为模态。

我的想法 – 大部分是从开发电子邮件列表中复制的……

将 s 代码设置为特定的主轴(带 %)将从那时起始终使用普通 s 代码控制该主轴。不确定这是不是故意的,但我不这么认为。

如果您不使用 $ 设置 s 代码,则只有主轴 0 将以 m3 m4 m5 启动和停止。
这意味着在单主轴机器上运行的程序在双主轴机器上运行相同。
但是,考虑到 linuxcnc 可以重新映射并使用子程序(可以设置它)或者可能从手动设置中遗留下来(我没有尝试过),依靠不设置 $ 代码似乎有点冒险

我确实发现使用 python 模块来控制主轴(就像所有 python 屏幕一样)停止命令似乎假定主轴 0 所以按下停止按钮只会停止主轴 0。这可能是也可能不是预期的但没有 python命令停止所有主轴,除非你添加了一个我没有检查过的主轴。

我仍然觉得对于 mcode 和 python 模块,用 say -1 指定所有轴是更好的做法。
我们应该修复 python 模块,以便能够指定要停止的所有主轴。

我觉得用s代码,它可能是一个错误,它会记住最后指定的主轴并继续使用普通的s代码进行调整。
如果指定 $-1 将设置所有主轴的主轴速度,那将是一种很好的做法并且是一致的。

多轴讨论 #713 c-morley 添加了 影响2.8 标签 2020 年 4 月 8 日
多轴讨论 #713
合作者

使 S 模态化是有意的,但总的来说我认为这是一个错误。

这可能也是真的,如果有人真的需要设置一组主轴并一起启动/停止它们,那么他们可能会阅读手册以了解如何操作。

statetags 和各种 Python 接口目前不报告超过默认主轴。使用这些接口的接口和使用多轴的接口之间的重叠可能很小。

多轴讨论 #713
合作者

M19 停止所有主轴,不管 $ 号。应该是?

多轴讨论 #713
合作者作者

m19 – 我不这么认为。
是的,我认为它可能是模态的,所以自己尝试在一条线上输入 1 美元,但没有被接受。我同意我不认为这是要走的路。

如果有人想添加它们,Qtvcp 现在支持多个轴。

我只是认为在发布之前解决细节很重要,这样我们就不必在下一个版本中破坏行为。

多轴讨论 #713
合作者

参见3139328

多轴讨论 #713
合作者作者

哦,太好了,我会测试一下。

多轴讨论 #713
合作者作者

这是一个很大的进步。
s 代码将不接受 $-1 – 我认为它应该。
我会看看我是否能弄清楚如何让 python 使用 -1 命令做正确的事情。

还有一个问题。
我在 MDI 中输入命令,如果我输入了错误的 S 或 M3/M5,它会停止所有主轴。
你觉得应该吗?
我认为除了抱怨它什么都不应该做。

多轴讨论 #713
合作者

s 代码将不接受 $-1 – 我认为它应该。

我想在多轴(复制)路由器和双轴车床上很可能希望所有主轴都以相同的速度。

我在 MDI 中输入命令,如果我输入了错误的 S 或 M3/M5,它会停止所有主轴。
你觉得应该吗?

可能不是,但这是内置的错误行为。
(如果您忽略错误并输入提要移动,那么您应得的一切)

多轴讨论 #713
合作者作者

好吧,这意味着如果您将所有主轴都设置为加速,然后去调整一个主轴但弄错了,它会将它们全部关闭,您需要重新设置它们。你不值得这样:)

多轴讨论 #713
合作者作者

所以看起来有一个 NML 消息发送给每个要控制的主轴,即没有消息来一次控制所有的主轴。
因此,为了修复 python,如果用户指定 -1,我需要它为每个主轴发送一条消息

听起来对吗?

多轴讨论 #713
合作者

但是,除非不进行检查,否则我看不出有什么方法可以改变它。

多轴讨论 #713
合作者

是的,这是每个主轴的消息。

多轴讨论 #713
合作者作者

好的,谢谢你的确认。我将处理 python 代码

多轴讨论 #713
合作者作者

遇到障碍 – python 不知道有多少轴可用。如果我为最大数量的主轴发送命令,则运动会在不可用的主轴上给出错误。

我想我们可以默默地忽略不可用的主轴命令吗?
其他建议?

多轴讨论 #713
合作者作者

或者也许我应该忘记它并记录在 python 中没有 ‘all spindles’ 命令

多轴讨论 #713
合作者

Python 有办法找到它吗?看起来这可能是一件有用的事情。
无论如何,这有点混乱,因为(就像在其他几个地方一样)motmod modparam num_spindles 和 INI NUM_SPINDLES 必须匹配,但是 LinuxCNC 的两半不能看到对方来检查这个。

多轴讨论 #713
合作者作者

status 报告主轴数,python 模块可以读取它。
但它不会自动。我认为这样做会很痛苦。
似乎运动组件应该知道有多少个主轴,然后您可以告诉它停止所有主轴等 – 也许我会研究这种可能性。
似乎运动和解释器无论如何都不知道彼此对主轴编号的了解。

多轴讨论 #713
合作者

只需记录 Python 无法做到这一点,然后继续。

多轴讨论 #713
合作者作者

https://github.com/LinuxCNC/linuxcnc/commits/motion-all-spindles-command
这教导 motion -1 表示所有主轴,所以现在 python 可以发送 -1 来命令所有主轴。
有时间请看一看。

多轴讨论 #713
合作者
安迪普 评论了 2020 年 4 月 10 日  

这与现有的东西兼容吗?(包括da3c1c1

I am a bit nervous of the big block of duplicated code. How about:
int s0 = spindle;
int s1 = spindle;
if (spindle = -1) { 
    s0 = 0;
    s1 = settings->num spindles - 1;
}
for (i = s0; i <= s1; i++){
.... one common block of code to maintain....
}

编辑:我一直在考虑对 -1 的其他更改进行此操作,但认为在这种情况下,代码的清晰度胜出。
edit2:它需要在 for 循环中 <= 。
edit3:但是我们需要将 s1 设置为比主轴少一个。

多轴讨论 #713
合作者作者

是的,我也不喜欢它,但很明显。我可以添加注释来描述有些奇怪的代码。

多轴讨论 #713
合作者作者

意思是我会在评论中使用你的更改

多轴讨论 #713
合作者

我不清楚这是否会取代我所做的更改?我认为是吗?

多轴讨论 #713
合作者作者

它不会替换您的代码。但是您可能可以更改代码以使用 -1 作为主轴编号而不是多个来发送一条 NML 消息。
还需要修改s代码才能使用%-1

多轴讨论 #713
合作者

几分钟前我做了 S:da3c1c1

多轴讨论 #713
合作者作者

好的,我按照您的要求重做并用我的系统进行了一些测试。请看一下。

多轴讨论 #713
合作者作者

哈很难跟上 :) 我会把它拉进去测试。

多轴讨论 #713
合作者作者

一切似乎都很好!

多轴讨论 #713
合作者

我试图将 -1 传递给所有更深的主轴:
4b7b487
但它根本不起作用。(而在该提交之前一切都很好)

emccanon 使用主轴编号作为主轴数组的索引:
https
://github.com/LinuxCNC/linuxcnc/blob/master/src/emc/task/emccanon.cc#L1888 所以我需要一个循环用于主轴== -1,我宁愿在 interp 而不是 canon 中进行更改。

多轴讨论 #713
合作者作者

很公平 – 到目前为止,没有任何人抱怨有多个动作消息。
我不确定是单步执行、单步执行每个主轴消息还是完全忽略它们。
这是我目前能想到的唯一可能的区别。

你对动作代码满意吗,所以我可以提交?

多轴讨论 #713
合作者

已经承诺了。

下一个问题:CSS 有多个主轴?我想你可以。

多轴讨论 #713
合作者作者

是的,我想那是可能的。
我也可以看到它们从属于不同的轴。- 只是变得更深不是吗
但也许我们应该稍后再过那座桥。

多轴讨论 #713
合作者

CSS 明确地从属于 X。
这似乎缺少一个技巧,它可以在铣刀的刀具直径上工作……

多轴讨论 #713
合作者作者

是的,在床上有副主轴的铣床上,可能需要从动副主轴速度。到 Z 位置

多轴讨论 #713
合作者作者

我将我的第二个主轴(这是安装在工作台上的主轴)从速度模式修改为位置模式。
所以现在它是一个索引器。通过使用 S 代码作为以度为单位的位置请求来运行。
这很容易设置并且运行良好。我注意到你要求 S0 它取消主轴启用。
这真的需要发生吗?我看不到普通主轴期望 S0 会关闭主轴,我希望它将请求的 RPM 设置为 0。速度主轴没有太大差异,但位置主轴有很大差异。想法?

多轴讨论 #713
合作者

不禁感慨在LinuxCNC支持3个回转轴的情况下用S来控制位置有点偏心。

S = 0 一直关闭 LinuxCNC 中的主轴。改变这一点似乎迈出了一大步。

多轴讨论 #713
合作者作者

我将它用作分度器而不是旋转轴 – 运动不管理分度器。
添加到配置中要容易得多,而且似乎运行良好 – S0 在这种情况下很烦人。

我知道 S0 一直这样做,但我建议依赖这种行为的人可能要少得多(我想不出你为什么会这样做),这是一个主要版本,所以改变是一种选择。

多轴讨论 #713
合作者作者

换句话说;
如果期望 S0 自动添加一个 M5(它基本上是这样做的),那么为什么发布 S1000 不会自动发布 M3 或 S-1000 不会自动发布 M4。(我不想要这个 – 这只是为了讨论)

我从未见过像这样的 gcode 程序:
M3 S100

S0
M2

这是另一种明确的情况 – S 代码用于调整,M 用于状态
感谢您的考虑。

多轴讨论 #713
合作者

我倾向于保留它现在的样子。也许考虑为 2.9 进行更改,但保持当前稍微奇怪的行为保持一致可能是有意义的。

多轴讨论 #713
合作者作者

是的,我同意 – 我有一个 master 补丁,需要更多测试,但到目前为止工作正常。