开源改变世界

QUERY:$1 = 步空闲延迟使用? #597

推推 grbl 2年前 (2023-01-22) 71次浏览
打开
chamnit 打开了这个问题 2015 年 2 月 14 日 · 45条评论
打开

QUERY:$1 = 步空闲延迟使用?#597

chamnit 打开了这个问题 2015 年 2 月 14 日 · 45条评论

注释

QUERY: class=
成员

全部:

已经提出了关于在 Grbl 中安装睡眠模式的问题。我在考虑我们是否应该删除$1=255 (step idle delay,msec)设置、保留它或将其移动到 config.h 定义中。

你们有多少人:

  • 通过设置使您的步进器始终处于启用状态$1=255
  • $1通过设置小于 255 ,让步进器在 Grbl 空闲时断电?
  • 认为通过$S命令进入睡眠模式是您想要的吗?

Grbl 的正常操作是始终保持步进器启用,除非处于警报模式和这种新的睡眠模式。

QUERY: class=

我喜欢使用 $S 命令来禁用电机的想法。

QUERY: class=
贡献者

我认为每个拥有 ShapeOko 或任何其他使用 GT2 传送带的系统的人都需要始终开启步进器。所以我认为最好将此设置为默认设置并使用 $ sleep 命令使步进电机在长时间闲置时保持凉爽。
就我而言,我只在需要时才打开机器,我不会让它闲置太久。但是如果有一个睡眠命令,我想我会在开始和结束时将它添加到我的 g 代码文件中。

PS:像循环启动命令这样的编译模式选项如何从睡眠中唤醒,而 M2/M30 将其作为自动睡眠选项重新进入睡眠状态?当 grbl 开机时,它默认处于睡眠模式。

QUERY: class=

我希望能够在作业之间禁用电机,我认为 GUI 可以使用的 Grbl 特定睡眠命令是个好主意。
无论如何,现有的 $1 != 255 默认值不适合与微步进驱动程序一起使用,而且它们很常见。

QUERY: class=

我离开那个设置=0,不要发现我的电机只是坐在那里变热。

也许使用“%”是一个不错的选择?一个在文件的顶部,如果最后有一个,则关闭电机。只有最后一个是错误的。

或者使用设置指示 M30 应关闭电机。

格里特

发件人:Sonny Jeon [ mailto:notifications@github.com ]
发送时间:2015 年 2 月 14 日星期六上午 10:26
收件人:grbl/grbl
主题:[grbl] 查询:$1 = Step idle delay usage?(#597

全部:

已经提出了关于在 Grbl 中安装睡眠模式的问题。我在考虑我们是否应该删除 $1=255 (step idle delay,msec) 设置,保留它,或者将它移到 config.h 定义中。

你们有多少人:

  • 通过设置 $1=255 使您的步进器始终处于启用状态?
  • 通过将 1 美元设置为小于 255,让步进器在 Grbl 空闲时断电?
  • 认为通过 $S 命令进入睡眠模式是您想要的吗?


直接回复此电子邮件或在 GitHub #597上查看。 https://github.com/notifications/beacon/AH0pYkIMEH1zlQokbcEBD1PxcXujL4olks5nr2CXgaJpZM4DghRk.gif

QUERY: class=

我使用它(几乎没有修改)。我已经为特殊操作预留了 251-255。
不是用于步进器启用,而是主要用于减少电流。
如果不使用它,它可以方便地让 led 显示运动。
255 是实际代码。
如果将其设置为 254,则 254 毫秒后在 mc_reset(M2、M30)上,步进
驱动器将被停用。
这是一个不错的功能,但并不总是需要,因为在微步进
时位置会丢失。
如果在使用 M2 代码 G28 之前,它与微步一起工作。
252/253为手动控制,253开启,252关闭。
如果上电后设置为 253,则进入报警状态。
251 是在此引脚上输出 M10/11 的代码。

使用ADC 输入在同一引脚上进行其他修改、启动/归位和暂停/停止。
mit许可证,也适用于gpl。

2015-02-14 15:26 GMT,Sonny Jeon notifications@github.com

全部:

已经提出了关于在 Grbl 中安装睡眠模式的问题。我在
考虑我们是否应该删除$1=255 (step idle delay,msec)
设置、保留它或将其移动到 config.h 定义中。

你们有多少人:

  • 通过设置使您的步进器始终处于启用状态$1=255
  • $1通过设置小于255 ,让步进器在 Grbl 空闲时断电
  • 认为通过$S命令进入睡眠模式是您想要的吗?

直接回复此邮件或在 GitHub 上查看:
#597

QUERY: class=
贡献者

画架用它来锁定/解锁电机,但只是因为没有通电/睡眠设置!

我见过的一些 Shapeoko 将其设置为小于 255,以便他们可以在机器开启时手动移动龙门架以方便使用。似乎如果更改空闲超时,使电机仅在所有轴空闲时才空闲,这将避免 Shapeoko 皮带问题并且是一个更直观的设置。在 CNC 的上下文中,超时一次只在一个轴上起作用(即如果 Y 轴正在移动,X 轴步进器应保持接合)是很奇怪的。“%”的建议@gerritv似乎也是这样做的好方法。

关于这将如何工作的问题:

  • 机器会在睡眠模式下启动吗?
  • 如果在睡眠模式下发送 gcode 会怎样?它“醒来”了吗?
  • 睡眠模式会成为实时报告的一部分吗?
  • 睡眠在所有轴上都是全局的,还是在每个轴上都是独立的?
QUERY: class=
成员作者

@alpharesearch: 我同意。GT2 皮带和禁用步进器不兼容。你必须保持一切启用,这样你就不会慢慢失去位置。我认为这与步进驱动器在禁用然后重新启用时丢失微步数有关,或者 GT2 皮带驱动器非常敏感。可能是后者。

@gerritv: 我考虑过使用%作为程序启动,但这无助于区分点动命令。对于 GT2 系统,您确实必须启用步进器,从开机、归位、慢跑到整个程序运行。使用%不会捕获这些情况。对于丝杠 CNC,我认为禁用我的步进器没有问题,因为将东西固定到位的摩擦力很大。

使用 M2/30 可以完成。但是,我仍然担心 GT2 系统中的步骤丢失,如果用户需要在之后立即运行另一个作业。用户将不得不重新运行归位循环以确保保留位置。

@paulkaplan: Grbl 不应禁用单个轴。只有一个引脚可以启用和禁用所有步进驱动器,因此如果任何一个轴需要移动,它就会启用所有这些驱动器。它仅在所有轴上都没有运动时才禁用。

我建议以下操作:

  • 新的睡眠状态。在状态报告中报告。GUI 使用它来知道它需要解决与驱动程序被禁用和重新启用时丢失步骤有关的问题。为了简单起见,Grbl 在退出 SLEEP 后不会强制归位。
  • 在睡眠期间,任何重新激活步进器的运动命令都将退出睡眠模式并在不执行任何操作时恢复到空闲状态。
  • IDLE 状态表示什么都不做,但步进器始终处于启用状态。
  • 任何 ALARM 状态都会自动禁用步进器,例如睡眠,但是当通过 homing 或 退出时$X,Grbl 将进入 IDLE,而不是 SLEEP。(不确定后者,但对我来说似乎有意义。)
  • 上电和归位周期禁用后,Grbl 进入空闲状态。因此,持久地启用步进器。
  • 在上电和归位循环启用后,Grbl 启动一如既往地进入警报。步进器被禁用。
QUERY: class=
成员作者

另一个提议:

  • 告诉 Grbl 在工作后去睡觉应该是 GUI 的工作。它可以像 GUI 中的复选框一样简单,在发送$Sg 代码程序的最后一行后发送睡眠命令。
QUERY: class=
贡献者

@chamnit @gerritv: 为什么不把从睡眠中唤醒添加到现有的 ~ 循环开始命令,新的 % 唤醒命令给你什么?

@chamnit: 你打算用一个命令 ($S) 在睡眠和空闲之间切换并使用状态报告来确定状态,还是用一个命令设置为空闲 (~ 或 %) 和一个命令设置为睡眠 ($秒)?

QUERY: class=

我个人喜欢完全控制我的电机状态。我更喜欢 $S 命令。也许 $S 和一个二进制参数。$S0……$S1

QUERY: class=
成员作者

@alpharesearch:我不想让用户混淆睡眠开关。$S 应该只会让 Grbl 进入睡眠状态。

我喜欢使用循环启动“~”键退出睡眠而无需使用运动命令的想法。我不喜欢“%”,因为它破坏了 gcode 标准。

QUERY: class=
贡献者

我觉得这只会让状态机更加混乱。睡眠的用例是什么?

在 2015 年 2 月 14 日星期六中午 12:00,Sonny Jeon notifications@github.com
写道:

@alpharesearch: 我同意。GT2 皮带和禁用步进器不兼容。你必须保持一切启用,这样你就不会慢慢失去位置。我认为这与步进驱动器在禁用然后重新启用时丢失微步数有关,或者 GT2 皮带驱动器非常敏感。可能是后者。
@gerritv: 我考虑过使用%作为程序启动,但这无助于区分点动命令。对于 GT2 系统,您确实必须启用步进器,从开机、归位、慢跑到整个程序运行。使用%不会捕获这些情况。对于丝杠 CNC,我认为禁用我的步进器没有问题,因为将东西固定到位的摩擦力很大。
使用 M2/30 可以完成。但是,我仍然担心 GT2 系统中的步骤丢失,如果用户需要在之后立即运行另一个作业。用户将不得不重新运行归位循环以确保保留位置。
@paulkaplan: Grbl 不应禁用单个轴。只有一个引脚可以启用和禁用所有步进驱动器,因此如果任何一个轴需要移动,它就会启用所有这些驱动器。它仅在所有轴上都没有运动时才禁用。
我建议以下操作:

  • 新的睡眠状态。在状态报告中报告。GUI 使用它来知道它需要解决与驱动程序被禁用和重新启用时丢失步骤有关的问题。为了简单起见,Grbl 在退出 SLEEP 后不会强制归位。
  • 在睡眠期间,任何重新激活步进器的运动命令都将退出睡眠模式并在不执行任何操作时恢复到空闲状态。
  • IDLE 状态表示什么都不做,但步进器始终处于启用状态。
  • 任何 ALARM 状态都会自动禁用步进器,例如睡眠,但是当通过 homing 或 退出时$X,Grbl 将进入 IDLE,而不是 SLEEP。(不确定后者,但对我来说似乎有意义。)
  • 上电和归位周期禁用后,Grbl 进入空闲状态。因此,持久地启用步进器。

– 启用上电和归位循环后,Grbl 启动一如既往地进入警报。步进器被禁用。

直接回复此邮件或在 GitHub 上查看:
#597(评论)

QUERY: class=
贡献者

如果我再考虑一下,唤醒不需要特定的命令,任何需要步进器的命令都应该唤醒它们。这会从 SLEEP 变为 IDLE,并且只有在发送睡眠命令时才会返回到 SLEEP。如果有人想锁定机器,可以通过新命令将 GRBL 置于软警报状态来完成,这将启用睡眠并防止机器移动,直到脱离警报状态。如果您清除警报,机器将进入睡眠状态,直到发送任何需要步进器的命令。开机后机器处于睡眠状态,归位后机器将处于空闲状态。
@paulkaplan:我的用例,我希望睡眠模式在不需要时让我的踏步机保持凉爽

QUERY: class=

我还让我的步进器始终通电。我在使用 MXL 腰带跑步时做到了这一点,现在我使用 GT2 腰带做到了这一点。不,我不认为 MXL 皮带在步进器被禁用时不会以任何方式失去位置。如果没有通电,步进器有轻微的“点击”整个步进位置的倾向。这是否夸大了 GT2 腰带,我不知道,也没有测试的计划。

如果我想手动移动步进器,我会点击红色的大按钮……

QUERY: class=

同意。我的 z 轴使用 gt2 皮带和两个电机。步进器闲置会导致 x 托架撞到桌子上。所以我的步进器必须保持启用状态。我没有热问题,它们几乎不会变暖,但如果我有,我认为睡眠命令会很棒。

QUERY: class=
成员作者

@paulkaplan:主要用例是在完成作业后禁用机器。CNC 的最大特点是它是自动化的,你可以离开机器。如果你的工作很长,不需要太多照料,你可以离开,让 Grbl 在完成后去睡觉。

我觉得你是对的@alpharesearch,任何命令都应该将 Grbl 从睡眠中唤醒。为了防止人们通过粗指键盘意外使用 $S,也许命令应该是 $SLP。

QUERY: class=
贡献者

鉴于有关可能向状态机添加 SLEEP 状态的讨论,我想知道我是否可以将以下输入添加到讨论中:

在我的设置中,我有一个电气启动/停止电路(当按下启动时继电器被锁定,并保持锁定直到按下停止或电源被移除)。我最近从 LinuxCNC 切换到 Grbl,在 LinuxCNC 上,我将该电路的状态连接到 EStop 输入。

当启动/停止电路处于停止状态时,LinuxCNC 将阻止按下其 Axis UI 中的绿色“On”按钮,从而阻止任何移动(如归位)。仅当我在我的硬件上按下 Start(这也会为步进电机供电)时,LinuxCNC 才允许我在 Axis 中按下“On”,从而启用归​​位等功能。如果我在硬件上按下“停止”,它也会自动将其软件“版本”关闭。

我有点期待 Grbl 中的类似行为,将我的 EStop 连接到重置/中止,但显然此引脚的任何切换(打开或关闭)都会软重置 Grbl。
现在,当我按下 Stop 时,我认为软重置 Grbl 并锁定所有内容是有意义的。
但是,然后可以执行 $H,这实际上不会移动我的硬件,因为驱动程序在物理上是禁用的。
此外,当我按下“开始”时,Grbl 再次软重置,这是我没有预料到的。

所以我想我的用例在某种程度上非常接近 SLEEP 模式,但我想提出一种模式,其中这种 SLEEP(ish) 模式不会被移动命令自动唤醒,而是阻止移动。也就是说,只要外部硬件 EStop 处于活动状态,它就会进入,在我释放外部 EStop 时保持活动状态,并且只能通过 Grbl 命令(’~’ 或 $-command)手动解锁。(也许该模式应该被称为 DISABLED 或 ESTOP,但无论如何……)

顺便说一句,我的驱动板有一个选项 btw,可以减少(即不完全关闭)电机电流。我目前已经将驱动器启用引脚连接到它,所以我喜欢现有的 1 美元设置,以便在一段时间后自动降低驱动器电流。

希望我在这里有任何意义……

QUERY: class=
成员作者

@poelstra:在 Grbl 中根本不应该处理 IMO 紧急停止。太多的事情可能会出错。我总是建议 estop 简单地切断整台机器的电源或通过硬接线完全禁用它。

您要的是类似于安全门开关的东西,该开关本周刚刚在 edge 分支中发布。它会保持和暂停 Grbl,并为除步进驱动器之外的所有东西断电。对传入数据进行排队并等待循环开始恢复。开关必须关闭才能工作。

睡眠模式只是作为一种通过软件禁用步进器的方法,无论用户出于何种原因可能需要它。大多数是为了在不使用时降低功耗。

QUERY: class=

我一直让我的步进电机在机器开启时通电。如果有睡眠模式我可能不会使用它,但这并不意味着它不应该被实现。

我不会使用它的原因是因为在睡觉后你需要再次回家机器重新拿起你的零。

我倾向于打开我的机器,做一些工作,然后再关闭它。我不会让它长时间闲置。

QUERY: class=

保持功能在那里!并更改为 int32。所以我们可以将它设置为几毫秒到几秒。

QUERY: class=
成员作者

@GabeHC:出于什么目的,您需要在禁用前让步进器闲置几秒钟?我无法想象需要这种情况的特殊情况。

通电时空转通常是 G4 驻留命令的用途。如果您之后需要禁用,建议的 $SLP 命令会将其关闭。

QUERY: class=
贡献者

@chamnit:我认为,如果建议的 $SLP 命令仅通过位于 g 代码文件的末尾就可以工作,那将是一件好事。换句话说,不是像进给保持这样的实时命令。我认为在这种情况下,人们可以将此命令放在一些 g 代码文件的末尾,而不必等待发送程序支持。

QUERY: class=

由于这是一个使用非标准硬件的 DYI 项目,$S 会很有用,但不应顺便混淆,可以节省能源/或减少散热。

当前的 0.9g 仅为所有轴提供一个“启用”总和信号。这使得它对外部电流衰减毫无用处,但具有更多硬件睡眠模式的功能,因为所有轴都“或”在一起。
有像较旧的 TA85xxHQ 一样的步进驱动器,它具有电流衰减输入信号以在不移动时减少电流,而其他驱动器会自动执行此操作 2M9xx。
需要注意的另一项是步进驱动器在未启用时保持微步位置(状态)的能力。

因此,在谈论睡眠模式之前,我希望看到一个用于单独“启用”输出以控制轴电流的功能。然后将此信号用于“完全关闭能量”或仅用于电流衰减到“项目经理”:-)

因此,我投票支持 $S 但不是作为实时维护状态。GUI 或控制程序可以根据需要发送此命令。

  1. 为每个轴单独启用
  2. $S0 作为命令位而不是实时状态
  3. 轴与主轴同步:-)

顺便说一句:我认为步进驱动器和电流充电应该在电机几乎保持凉爽的范围内。无论如何,连续负载都会加热电机,因此睡眠模式无助于减少热量。

QUERY: class=
成员作者

@extrafastlight:我很难理解你的帖子,但 Grbl 只能通过一个引脚控制步进器启用。它不连接步进驱动器的睡眠功能。尽管命名相似,但 Grbl“睡眠”模式仅通过该使能引脚禁用步进器。

总之,所有$命令都不是实时的,会按照命令发送的先后顺序进行处理。所以,是的,您可以$SLP在每个 g 代码程序的末尾放置一个命令,或者让 GUI 为您附加一个命令,以便在您完成一项工作后禁用步进器。

至于 1) 和 3),Arduino Uno 上的 Grbl 没有足够的可用引脚来对每个轴进行单独启用,而主轴同步是一个完全不同的主题。

QUERY: class=

或许我们应该重新审视一下为什么会出现这个问题,解决方案开始听起来很复杂。

如果您的电机变热,请不要担心。
如果您的电机摸起来真的很热,那么您可能还有其他问题?例如,如果您的电机在空闲时发出嗡嗡声,那么衰减或电流是错误的。

如果我使用 $SLP 那么我会在开始另一个程序之前先回家。任何时候步进器被“释放”都意味着您不再对它们的位置充满信心。

QUERY: class=
成员作者

@gerritv: 最初的原因是去掉 $1 step idle delay 设置。这本身就令人困惑。从它的声音来看,根本没有用过。

我的意图是删除 $1 并始终保持步进器启用,但在某些警报期间除外。

这个睡眠命令只不过是用户出于任何原因关闭步进器的一种方式。例如,如果有人不使用归位并想用手手动移动他们的轴,他们可以使用睡眠来大致定位(在带式 CNC 上非常容易)。然后重新启用以定位其零件零。不是每个人都使用归位。

QUERY: class=
贡献者

@chamnit我通过$S命令为睡眠模式 +1(最好使用 gcode /~输入恢复)

我们需要一些清晰的文档来解释(微)步骤的潜在损失

QUERY: class=

我的用例和代码库与普通 grbl 相去甚远,但为了它的价值,我使用了 2 个不同的 step_idle_delay 设置。

I have an encoder on one axis, and use 0 during calibration to detect the limit of travel where the motor starts slipping.
The rest of the time, the machine runs 24-7, and I send it gcode in small batches. I set $1=250 so that the motors hold position during sequences of moves, and shut down while idle to reduce power consumption and heating. For one operation, I found that 250ms wasn’t long enough, so I added a compile time option for a long delay – axes with the bit set have their shutdown delay multiplied by 250. (I also made the disable call asynchronous to avoid stalling st_go_idle())

If you replaced the delay with always on plus a sleep command, I could rework my sender to use that. But I’d also add back a way to run like the current delay 0 setting for my calibration mode.

QUERY: class=
MemberAuthor
喜欢 (0)