开源改变世界

未触发硬限制的行为与触发硬限制相同 #514

推推 grbl 3年前 (2023-02-05) 230次浏览
打开
3 个任务中的第 1 个
daxliniere 打开了这个问题 2022 年 7 月 3 日 · 17条评论
打开
3 个任务中的第 1 个

未触发硬限制的行为与触发硬限制相同#514

daxliniere 打开了这个问题 2022 年 7 月 3 日 · 17条评论

评论

未触发硬限制的行为与触发硬限制相同 #514

控制板

MKS DLC32

董事会供应商的帮助

  • 是的
  • 不适用

机器描述

数控铣床

配置文件

board: MKS-DLC32 V2.2
name: SWOLE-CNC
meta: (2202.07.01) Dax Liniere, originally by Skorpi

kinematics:
  Cartesian:

stepping:
  engine: I2S_STATIC
  idle_ms: 0
  pulse_us: 4
  dir_delay_us: 1
  disable_delay_us: 0
  
axes:
  shared_stepper_disable_pin: I2SO.0
  x:
    steps_per_mm: 802.341
    max_rate_mm_per_min: 1500.000
    acceleration_mm_per_sec2: 80.000
# was 1500.000
    max_travel_mm: 301.000
    soft_limits: false
    homing:
      cycle: 2
      positive_direction: false
      mpos_mm: 0.000
      feed_mm_per_min: 20.000
      seek_mm_per_min: 200.000
# was 100 in first SWOLE-CNC iteration running MKS firmware
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.36:high
      limit_pos_pin: gpio.34:high
      limit_all_pin: NO_PIN
      hard_limits: true
      pulloff_mm: 0.500
      stepstick:
        step_pin: I2SO.1
        direction_pin: I2SO.2:low
        disable_pin: NO_PIN
        ms1_pin: NO_PIN
        ms2_pin: NO_PIN
        ms3_pin: NO_PIN
        reset_pin: NO_PIN

  y:
    steps_per_mm: 802.322
    max_rate_mm_per_min: 1500.000
    acceleration_mm_per_sec2: 80.000
# was 300.000
    max_travel_mm: 187.000
    soft_limits: false
    homing:
      cycle: 2
      positive_direction: false
      mpos_mm: 0.000
      feed_mm_per_min: 20.000
      seek_mm_per_min: 200.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.35:high
      limit_pos_pin: gpio.23:high
      limit_all_pin: NO_PIN
      hard_limits: true
      pulloff_mm: 0.500
      stepstick:
        step_pin: I2SO.5
        direction_pin: I2SO.6:low
        disable_pin: NO_PIN
        ms1_pin: NO_PIN
        ms2_pin: NO_PIN
        ms3_pin: NO_PIN
        reset_pin: NO_PIN
  z:
    steps_per_mm: 802.497
    max_rate_mm_per_min: 1000.000
    acceleration_mm_per_sec2: 50.000
# was 500.000
    max_travel_mm: 46.000
    soft_limits: false
    homing:
      cycle: 1
      positive_direction: true
      mpos_mm: 0.000
      feed_mm_per_min: 20.000
      seek_mm_per_min: 100.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.18:high
      hard_limits: true
      pulloff_mm: 0.500
      stepstick:
        step_pin: I2SO.3
        direction_pin: I2SO.4:low
        disable_pin: NO_PIN
        ms1_pin: NO_PIN
        ms2_pin: NO_PIN
        ms3_pin: NO_PIN
        reset_pin: NO_PIN

i2so:
  bck_pin: gpio.16
  data_pin: gpio.21
  ws_pin: gpio.17

spi:
  miso_pin: gpio.12
  mosi_pin: gpio.13
  sck_pin: gpio.14

sdcard:
  cs_pin: gpio.15
  card_detect_pin: NO_PIN
# This could be GPIO.39, but Card Detect has no supported functions in FluidNC

control:
  safety_door_pin: gpio.33:low:pu
  cycle_start_pin: NO_PIN
  feed_hold_pin: NO_PIN
  reset_pin: NO_PIN
  macro0_pin: NO_PIN
  macro1_pin: NO_PIN
  macro2_pin: NO_PIN
  macro3_pin: NO_PIN

macros:
  startup_line0:
  startup_line1:
  macro0: $SD/Run=lasertest.gcode
  macro1:
  macro2:
  macro3:

coolant:
  flood_pin: gpio.0
# continuous air
  mist_pin:  gpio.4
# pulsed air 
  delay_ms: 0

probe:
  pin: gpio.22:low
  check_mode_start: true
  

10V:
# Spindle
  direction_pin: NO_PIN
  forward_pin: gpio.5:low
  reverse_pin: NO_PIN
  output_pin: gpio.32
  enable_pin: NO_PIN
  pwm_hz: 5000
  disable_with_s0: false
  s0_with_disable: true
  spinup_ms: 10000
  spindown_ms: 12000
  tool_num: 0
  speed_map: 0=0% 0=25% 5868=25% 23237=99% 24000=100%

user_outputs:
  analog0_pin: NO_PIN
  analog1_pin: NO_PIN
  analog2_pin: NO_PIN
  analog3_pin: NO_PIN
  analog0_hz: 5000
  analog1_hz: 5000
  analog2_hz: 5000
  analog3_hz: 5000
  digital0_pin: NO_PIN
  digital1_pin: NO_PIN
  digital2_pin: NO_PIN
  digital3_pin: NO_PIN

start:
  must_home: false
# Pins that could be used: 0(SDA), 4(SCL), 5, 18, 19, 22, 23, 25, 26, 27, 32 (TTL spindle control), 33, 39, I2SO.7

启动消息

[MSG:INFO: FluidNC v3.5.0-pre4]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.1-1-gb8050b365e]
[MSG:INFO: Local filesystem type is SPIFFS]
[MSG:INFO: Configuration file:config.yaml]
[MSG:INFO: Machine SWOLE-CNC]
[MSG:INFO: Board MKS-DLC32 V2.2]
[MSG:INFO: I2SO BCK:gpio.16 WS:gpio.17 DATA:gpio.21]
[MSG:INFO: SPI SCK:gpio.14 MOSI:gpio.13 MISO:gpio.12]
[MSG:INFO: SD Card cs_pin:gpio.15 detect:NO_PIN]
[MSG:INFO: Stepping:I2S_static Pulse:4us Dsbl Delay:0us Dir Delay:1us Idle Delay:0ms]
[MSG:INFO: Axis count 3]
[MSG:INFO: Shared stepper disable I2SO.0]
[MSG:INFO: Axis X (0.000,301.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.1 Dir:I2SO.2:low Disable:NO_PIN]
[MSG:INFO:     Neg Limit gpio.36]
[MSG:INFO:     Pos Limit gpio.34]
[MSG:INFO: Axis Y (0.000,187.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.5 Dir:I2SO.6:low Disable:NO_PIN]
[MSG:INFO:     Neg Limit gpio.35]
[MSG:INFO:     Pos Limit gpio.23]
[MSG:INFO: Axis Z (-46.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.3 Dir:I2SO.4:low Disable:NO_PIN]
[MSG:INFO:     Neg Limit gpio.18]
[MSG:INFO: safety_door_pin gpio.33:low:pu]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: 10V Spindle Ena:NO_PIN Out:gpio.32 Dir:NO_PIN Fwd:gpio.5:low Rev:NO_PIN Freq:5000Hz Res:13bits]
[MSG:INFO: Using spindle 10V]
[MSG:INFO: Flood coolant gpio.0]
[MSG:INFO: Mist coolant gpio.4]
[MSG:INFO: Probe Pin: gpio.22:low]
[MSG:INFO: Connecting to STA SSID:Puzzle Factory]
[MSG:INFO: Connecting.]
[MSG:INFO: Connected - IP is 192.168.2.81]
[MSG:INFO: WiFi on]
[MSG:INFO: Start mDNS with hostname:http://swolecnc.local/]
[MSG:INFO: SSDP Started]
[MSG:INFO: HTTP started on port 80]
[MSG:INFO: Telnet started on port 23]

Grbl 3.5 [FluidNC v3.5.0-pre4 (wifi) '$' for help]

用户界面软件

UGS

发生了什么?

  1. 如果触发硬限制,您可以重置控制器,然后解锁并继续。但是,当限位开关仍被触发时,将不允许被触发的轴移动,包括远离该限位。

  2. 但是,当您手动移动轴以取消触发限位开关时,这会导致第二个硬限位触发事件,尽管它不应该发生。

其他信息

我刚刚在 X 和 Y 轴的每一端添加了单独的限位开关,但这是在两端串联时发生的。

未触发硬限制的行为与触发硬限制相同 #514

单独但相关的是,如果您离开限位开关并手动触发它,它仍然会抛出限位错误,即使它不可能被实际触发。

未触发硬限制的行为与触发硬限制相同 #514
所有者

您是否尝试过归位以清除限位开关?

注意:开关弹跳可能会触发限制。原理图上未显示 r/c 滤波器的值。

未触发硬限制的行为与触发硬限制相同 #514

归巢需要很长时间,当我只是为了找一份工作而四处奔波时,这当然是一个巨大的麻烦。

关于开关弹跳的要点。您是说 FNC 不应该在脱离限制时触发限制事件吗?
另外,GRBL_ESP32 中没有可用的软件去抖动功能吗?

至于 r/c 电路,没有一个,因为我使用的是带有隔离 PSU 的光耦合器板,这是我最初从步进电机接线得到错误触发时制作的。也许我最好只构建另一个在光耦合器输入端带有 r/c 滤波器的?

未触发硬限制的行为与触发硬限制相同 #514

您是说 FNC 不应该在脱离限制时触发限制事件吗?

FluidNC 如何知道移动的意图是远离限制?我正在考虑如何解决这个问题,但我没有一个好的模型来管理状态。通常当我撞到硬限制时,我会关闭机器以释放步进器并手动将其移至安全区域。

未触发硬限制的行为与触发硬限制相同 #514
合作者
米奇布拉德利 评论了 2022 年 7 月 3 日  

另外,GRBL_ESP32 中没有可用的软件去抖动功能吗?

是的,但我们删除了它,因为人们用它来隐藏而不是修复开关噪声灵敏度 – 即用它来消除毛刺和噪声抑制而不是去抖动。在限位开关的典型使用中,一旦解决了噪音问题,就不必担心弹跳。即使开关确实反弹并因此发送了一个快速的开-关-开-关-开序列,后续脉冲也无关紧要,因为第一个脉冲触发了单向状态变化。Off 转换不会撤消该状态更改,并且 On 转换的重复是无关紧要的,因为状态已经更改。

但是,控制引脚(如宏引脚)存在一个问题,弹跳可能会导致多次调用。对于控制引脚,我们添加了一个固定的 10 毫秒间隔,在此期间重复不会导致其他事件。

未触发硬限制的行为与触发硬限制相同 #514
合作者
米奇布拉德利 评论了 2022 年 7 月 3 日  

“你什么时候离开限位”的一个答案是“限位开关处于活动状态并且运动方向相反”。如果限位销在定义的一端,这在某种程度上起作用,但当你有一个“两端”限位销时,即一对驱动单个输入的线或’ed开关。我想在那种情况下你可以允许任何运动,或者可能是任何慢跑,或者可能是小距离的慢跑,比如 10 毫米。我还怀疑添加这样的逻辑将花费大约永远的时间来正确处理所有边缘条件和与其他东西的交互。

当你被限制在归位端时,你可以归位一个轴来拉开开关。此功能已存在。如果您已经在开关位置,则归位周期不会花费很长时间,只需几个较短的拉离距离来回周期。

未触发硬限制的行为与触发硬限制相同 #514
作者
达克斯利尼埃 评论了 2022 年 7 月 3 日  

注意:开关弹跳可能会触发限制。原理图上未显示 r/c 滤波器的值

我意识到这超出了 FNC 的范围,但您认为该示意图中 r+c 元素的值看起来正确吗?
我是否正确地猜测 R2 可能不是必需的,因为 R1 具有更高的值?
未触发硬限制的行为与触发硬限制相同 #514

……
嗯,转念一想,如果我拍摄 100Hz LPF,也许 R1=560R,C1=2.8uF 并去掉 R2 会更好?问题是 2.8uF 要么是极化的(钽)要么是块状的(聚酯)。
……
啊,等等。我想我弄错了。LPF 应该位于光耦合器的输出端,而不是输入端。
令人惊奇的是,洗个澡能给你带来如此清晰的感觉!:)

未触发硬限制的行为与触发硬限制相同 #514
所有者

不知道具体情况,看来阻力还是挺大的。您需要考虑 LED 想要的值。

这是电路的控制器端。

未触发硬限制的行为与触发硬限制相同 #514

未触发硬限制的行为与触发硬限制相同 #514
合作者
米奇布拉德利 评论了 2022 年 7 月 4 日  

该电路只有在光耦合器具有高 CTR 的情况下才能工作。通过 LED 的电流将为 12V/15K = 0.8mA,大多数普通光耦合器需要通过 LED 的电流为几 mA,以便稳定开启。此外,由于您运行的电流低于正常情况,因此您的抗噪能力会受到影响。除了电流隔离对降噪的影响外,另一个因素是较低的阻抗(较高的开关电流),这使得噪声更难打开 LED。您不想要的是 R1,而不是 R2。

此外,您不需要 4.2 毫秒的时间常数 (100 Hz)。这将使边缘在过渡区域中停留的时间过长。0.5 到 1.0 毫秒更好。

电容器不应该出现在 LED 侧是正确的。

未触发硬限制的行为与触发硬限制相同 #514

您是说 FNC 不应该在脱离限制时触发限制事件吗?

FluidNC 如何知道移动的意图是远离限制?我正在考虑如何解决这个问题,但我没有一个好的模型来管理状态。

我想过的是,如果设置是使用limit_neg/pos_pin运行的,那么 FNC 可以知道它需要什么。例如,如果触发 limit+,则该轴应允许负向运动。

通常当我撞到硬限制时,我会关闭机器以释放步进器并手动将其移至安全区域。

我用 3D 打印了一些旋钮以安装在丝杠非电机端的螺母上,但我建议大多数人不会有这个,因此没有办法远离触发限制。

未触发硬限制的行为与触发硬限制相同 #514

另外,GRBL_ESP32 中没有可用的软件去抖动功能吗?

即使开关确实反弹并因此发送了一个快速的开-关-开-关-开序列,后续脉冲也无关紧要,因为第一个脉冲触发了单向状态变化。Off 转换不会撤消该状态更改,并且 On 转换的重复是无关紧要的,因为状态已经更改。

是的,这是完全合理的 (1-0-1-0-1),但是退出时的 0-1-0-1-0 序列会导致重新触发。

是的,但我们删除了它,因为人们用它来隐藏而不是修复开关噪声灵敏度

您是否有机会通过 config.yaml 中的设置重新引入它?似乎是为了拯救懒惰的人而惩罚那些试图解决合法问题的人。

未触发硬限制的行为与触发硬限制相同 #514
作者
达克斯利尼埃 评论了 2022 年 7 月 4 日  

..但不是当你有一个“两端”限制销时,即一对驱动单个输入的线或’ed开关。我想在那种情况下你可以允许任何动作,或者任何慢跑……

我认为在使用limit_all_pin时保持当前不允许任何移动的行为会更安全。

当你被限制在归位端时,你可以归位一个轴来拉开开关。此功能已存在。如果您已经在开关位置,则归位周期不会花费很长时间,只需几个较短的拉离距离来回周期。

这是千真万确的。我可能会在 UGS 中为此设置宏键。感谢您的建议。
编辑:啊,实际上,只有当它是负数限制时才是正确的。

未触发硬限制的行为与触发硬限制相同 #514

这个问题还有问题吗?

未触发硬限制的行为与触发硬限制相同 #514

我有一个类似的问题,因为我刚刚尝试从 v3.4.3 升级到最新版本 v3.6.3
一切似乎都很好,除非我遇到了终点站。
在 webui 中,在命令空间中出现错误
“警报:1
硬限制已被触发。机器位置可能因突然停止而丢失。强烈建议重新归位。”
但是在 GRBL 窗口中没有出现通常的警报按钮,而且我所做的任何事情似乎都无法释放该轴,但另一个轴仍然可以移动,直到触及止动器并且它们似乎已锁定。我必须关闭我的机器并将机器从终点站移开。

我刚刚测试了几个版本,看起来这个问题是从 v3.4.5 开始出现的。
v3.4.3 和 v3.4.4 没有给出这个问题,但似乎在上面的每个其他版本中都会出现。

有什么建议吗?

未触发硬限制的行为与触发硬限制相同 #514

@dylanpil
“已触发硬限制。”
“一切似乎都很好,除非我遇到了终点站。”

这正是应该发生的事情。我不知道为什么你没有在早期版本中看到它,因为它自 FNC 开始以来就存在。
我建议您测量每个轴的行程并启用软限制。这将避免该问题。

未触发硬限制的行为与触发硬限制相同 #514

@daxliniere
当它到达终点并且无法释放它时让 cnc 锁定是非常奇怪的,在我有经验的所有其他 cnc 程序中似乎都没有这样做。
我会按照你的建议尝试软限制,也许我不明白,但我一直在玩 cnc 和 3d 打印机……有一段时间了,这对我来说是个新消息 :)

未触发硬限制的行为与触发硬限制相同 #514

好的,我看到了光!
我很喜欢它,但我仍然觉得奇怪,机器无法解锁以将其移出终点站,但我想我再也不会撞到终点站了!:)
谢谢!

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

4人参加
未触发硬限制的行为与触发硬限制相同 #514未触发硬限制的行为与触发硬限制相同 #514未触发硬限制的行为与触发硬限制相同 #514未触发硬限制的行为与触发硬限制相同 #514

喜欢 (0)