开源改变世界

软限位报警。G 代码运动目标超出机器行程。 #471

推推 grbl 2年前 (2023-02-05) 442次浏览
关闭
3 个任务中的第 1 个
daxliniere 打开了这个问题 2022 年 6 月 6 日 · 16条评论
关闭
3 个任务中的第 1 个

软限位报警。G 代码运动目标超出机器行程。#471

daxliniere 打开了这个问题 2022 年 6 月 6 日 · 16条评论

评论

软限位报警。G 代码运动目标超出机器行程。 #471
达克斯利尼埃 评论了 2022 年 6 月 6 日  

控制板

DLC32

董事会供应商的帮助

  • 是的
  • 不适用

机器描述

不适用

配置文件

board: MKS-DLC32 V2.1
name: SWOLE-CNC
meta: (23.04.2022) 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
# was 18000.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: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: gpio.36:high
      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
# was 18000.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
# was 300.000
      seek_mm_per_min: 200.000
# was 5000.000 (was 100 with MKS firmware)
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: gpio.35:high
      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
# was 18000.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
# was 300.000
      seek_mm_per_min: 100.000
# was 1000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.34: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: 20000
  tool_num: 0
  speed_map: 0=0% 0=25% 5868=25% 23237=99% 24000=100%
#DLC32 Spindle TTL max output voltage is 4.89v, so it can never reach 24000rpm/400Hz


#pwm:
#  direction_pin: NO_PIN
#  output_pin: gpio.32
#  enable_pin: gpio.5:low
#  pwm_hz: 5000
#  disable_with_s0: false
#  s0_with_disable: true
#  spinup_ms: 10000
#  spindown_ms: 20000
#  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

启动消息

N/A

用户界面软件

UGS 2.0.11+开发版

发生了什么?

我开始测试启用的软限制。我发出了一个超出机器边界的移动命令。这些是我收到的消息:

[消息:信息:Z 目标的软限制:21.100]

[错误] 发送“G91 g54 G0 Z21.1”时检测到错误:(ALARM:2) 软限位报警。G 代码运动目标超出机器行程。保留机器位置。可以安全解锁警报。流式传输已暂停。

[消息:信息:重置以继续]

第三行与第二行矛盾,确实是正确的,我确实需要执行重置才能继续。解锁没用。

其他信息

没有反应

软限位报警。G 代码运动目标超出机器行程。 #471
贡献者

一个小注意事项,您似乎正在通过移动到最大正值来归位 Z 轴(我假设这是因为$/axes/z/homing/positive_direction=true)并且您设置了$/axes/z/max_travel_mm=46.000,因此 46 将是您的最大高度然后理论上您可以移动一直归位到 0向下 46mm 。

我有一个问题是围绕 value $/axes/z/homing/mpos_mm=0。根据文档mpos_mm


  • mpos_mm:

    • 类型:浮动
    • 范围:-1000000.000 至 1000000.000
    • 默认值:0.000
    • 详细信息:以毫米为单位设置归位和限位开关拉开后的机器位置。如果您希望机器位置在限位开关处为零,请将其设置为零。请记住您选择此数字的归位方向。

所以,我认为你会希望它是以下值:

$/axes/z/max_travel_mm$/axes/z/motor0/pulloff_mm 在您的情况下为 45.500 (46.000 – 0.500)。

再一次,我完全有可能离开这里。?

软限位报警。G 代码运动目标超出机器行程。 #471

在目前的做事方式中,起飞被认为是在旅行范围之外。使用提供的配置,行程范围从 -46 到 0。

软限位报警。G 代码运动目标超出机器行程。 #471

我可以问作者一个问题,也许是题外话,为什么你的 steps_per_mm: 在轴 X (802.341)、Y (802.322) 和 Z (802.497) 上彼此不同?我假设您有 T8 和 HEMA23 那么为什么设置如此不同?至于我呢,应该到处都是800吧,还是我记错了?

软限位报警。G 代码运动目标超出机器行程。 #471

@IgorPack,我不知道,但这是我从多次测量中得到的。这些是我在使用原始 Arduino V4 GRBL 开发板时拍摄的,但似乎没有问题。
我计划用细齿梳检查对齐/校准的每个元素,但最近有更紧迫的事情要做。

软限位报警。G 代码运动目标超出机器行程。 #471

@MitchBradley @buildlog,对第一篇文章中的问题有什么想法吗?

软限位报警。G 代码运动目标超出机器行程。 #471
合作者
米奇布拉德利 评论了 2022 年 6 月 20 日  

没有足够的信息来理解它。第一篇帖子没有说明发出违规动作时机器的位置,也没有说明工作偏移量,也没有说明“没有工作”的确切含义。另外,我没有看到第二条和第三条消息之间的矛盾。

软限位报警。G 代码运动目标超出机器行程。 #471

@MitchBradley,当然,所以只要问我更多。我总是很乐意提供。

问题不在于绝对位置,而在于 FNC 对带有软限制的越界请求的反应方式。
没有任何轴的移动,因此不会丢失任何步骤,因此不需要重置系统。它应该只需要解锁。

软限位报警。G 代码运动目标超出机器行程。 #471
作者
达克斯利尼埃 评论了 2022 年 6 月 20 日  

矛盾是:
“机器位置保留。警报可以安全解锁。” 和“重置继续”

软限制与硬限制一样对待。似乎 CriticalEvent 因软限制超出而被触发,这应该只发生在硬限制超出时。

案例ExecAlarm::SoftLimit:
系统。state = 状态::报警; //设置系统报警状态
alarm_msg (rtAlarm);
report_feedback_message (Message::CriticalEvent);
protocol_disable_steppers ();
rtReset = false ; //禁用任何现有的重置

 

软限位报警。G 代码运动目标超出机器行程。 #471
所有者

在某些情况下,位置会因软限制而丢失。如果机器仍在执行先前的移动,并且输入了一个新的移动,但软限制失败,则机器将突然停止当前移动并发出软限位警报。大多数 Grbl 口味可能都是如此。这就是您收到该通知的原因。

通常软限制发生在超出机器范围的 gcode 文件中。在那种情况下,工作是不可恢复的,因为在机器的范围之外有一些区域需要加工。

当您使用常规 gcode 在手动控制下“慢跑”机器时,也会发生这种情况。最近我们修改了$J 样式的点动以防止软限位错误。移动将被截断到机器范围。

我们正在考虑修改处理软限制的方式。gcode 不会立即出错,而是会被拒绝,仍在缓冲区中的运动将完成,然后发出警报。如果您正在运行一些长而慢的线路,这可能需要一段时间。另一种选择是发出一个 feedhold 并为用户提供完成缓冲运动的选项。

我们已将其添加到愿望清单跟踪器中。这不太可能是一项简单的任务,可能需要一段时间。

https://github.com/bdring/FluidNC/projects/1#column-17014978

软限位报警。G 代码运动目标超出机器行程。 #471
作者
达克斯利尼埃 评论了 2022 年 6 月 20 日  

好吧,太棒了。感谢您提供信息和最近的慢跑变化。

软限位报警。G 代码运动目标超出机器行程。 #471

要求重置 gcode 执行中发生的软限制的另一个原因是绝对确定发送方不会只是在之后继续发送。大多数发件人将重置视为具有从发送角度停止作业的附加语义。

软限位报警。G 代码运动目标超出机器行程。 #471
作者
达克斯利尼埃 评论了 2022 年 6 月 21 日  

不错,@MitchBradley,但是既然FNC需要解锁才能继续,那不是已经解决了吗?

软限位报警。G 代码运动目标超出机器行程。 #471
合作者
米奇布拉德利 评论了 2022 年 6 月 23 日  

我们向我们的 github 跟踪器添加了一个任务来考虑这种情况。它与 GCode 执行和发送者交互,所以我们不能只做一个简单的改变就完事了。关闭此工单。