[FluidNC Issue#1410] Problem: Feed hold sometimes stops with a hard stop

未分类 bolang 4个月前 (10-14) 47次浏览

Issue #1410 | 状态: 已关闭 | 作者: ktand | 创建时间: 2024-12-20


Wiki Search Terms

feed hold deceleration
cycle start acceleration
feed hold hard stop

Controller Board

PiBot 4.9 Plus

Machine Description

Gantry router with external DM556 drivers for x and y (dual). DM542 for Z. Spindle 10V controlled. FluidNC pendant.

Input Circuits

feedholdpin: gpio.36:low
  cyclestartpin: gpio.39:low

Configuration file

name: Pibot
board: Pibot 4.9
stepping:
  engine: I2S_STREAM
  idle_ms: 255
  pulse_us: 4
  dirdelayus: 1
  disabledelayus: 0

junctiondeviationmm: 0.02

axes:
  sharedstepperdisablepin: NOPIN
  x:
    stepspermm: 320
    maxratemmpermin: 3600
    accelerationmmper_sec2: 50
    maxtravelmm: 410
    soft_limits: false
    homing:
      cycle: 2
      mpos_mm: -205
      positive_direction: false
      seekmmper_min: 800
      feedmmper_min: 100
      seek_scaler: 1.100
      feed_scaler: 1.100
      settle_ms: 250
    motor0:
      limitallpin: NO_PIN
      limitnegpin: gpio.32:high
      limitpospin: NO_PIN
      hard_limits: true
      pulloff_mm: 1
      standard_stepper:
        step_pin: i2so.2
        direction_pin: i2so.1
        disable_pin: i2so.0
  y:
    stepspermm: 640
    maxratemmpermin: 3600
    accelerationmmper_sec2: 50
    maxtravelmm: 432
    homing:
      cycle: 2
      mpos_mm: 216
      positive_direction: true
      seekmmper_min: 800
      feedmmper_min: 100
      seek_scaler: 1.1
      feed_scaler: 1.1
      settle_ms: 250
    motor0:
      limitallpin: NO_PIN
      limitnegpin: NO_PIN
      limitpospin: gpio.35:high
      hard_limits: true
      pulloff_mm: 1
      standard_stepper:
        step_pin: i2so.5
        direction_pin: i2so.4:low
        disable_pin: i2so.7
  z:
    stepspermm: 1600
    maxratemmpermin: 800
    accelerationmmper_sec2: 50
    maxtravelmm: 100
    homing:
      cycle: 1
      mpos_mm: 100
      positive_direction: true
      seekmmper_min: 400
      feedmmper_min: 100
      seek_scaler: 1.1
      feed_scaler: 1.1
      settle_ms: 250
    motor0:
      limitallpin: NO_PIN
      limitnegpin: NO_PIN
      limitpospin: gpio.34:high
      hard_limits: true
      pulloff_mm: 1
      standard_stepper:
        step_pin: i2so.10
        direction_pin: i2so.9
        disable_pin: i2so.8

start:
  must_home: false

probe:
  pin: gpio.33:low
  toolsetterpin: NOPIN
  checkmodestart: true
  hard_stop: true

control:
  safetydoorpin: NO_PIN
  resetpin: NOPIN
  feedholdpin: gpio.36:low
  cyclestartpin: gpio.39:low
  macro0pin: NOPIN
  macro1pin: NOPIN
  macro2pin: NOPIN
  macro3pin: NOPIN
  faultpin: NOPIN
  estoppin: NOPIN

status_outputs:
  run_pin: gpio.12
  hold_pin: gpio.14  

user_outputs:
  digital0_pin: gpio.4

10V:
  forwardpin: NOPIN
  reversepin: NOPIN
  pwm_hz: 1000
  output_pin: gpio.13
  enablepin: NOPIN
  directionpin: NOPIN
  disablewiths0: false
  s0withdisable: true
  spinup_ms: 0
  spindown_ms: 0
  tool_num: 0
  speed_map: 0=0.000% 4000=0.000% 25000=100.000%
  offonalarm: false

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

spi:
  miso_pin: gpio.19
  mosi_pin: gpio.23
  sck_pin: gpio.18  

sdcard:
  carddetectpin: NO_PIN
  cs_pin: gpio.5

uart1:
  txd_pin: gpio.25
  rxd_pin: gpio.27
  rtspin: NOPIN
  ctspin: NOPIN
  baud: 1000000
  mode: 8N1

uart_channel1:
  reportintervalms: 75
  uart_num: 1

Startup Messages

[MSG:INFO: FluidNC v3.9.3 https://github.com/bdring/FluidNC]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.7-dirty]
[MSG:INFO: Local filesystem type is spiffs]
[MSG:INFO: Configuration file:config-pibot.yaml]
[MSG:INFO: Machine pibot]
[MSG:INFO: Board Pibot 4.9]
[MSG:INFO: UART1 Tx:gpio.25 Rx:gpio.27 RTS:NO_PIN Baud:1000000]
[MSG:INFO: uart_channel1 created at report interval: 75]
[MSG:INFO: I2SO BCK:gpio.22 WS:gpio.17 DATA:gpio.21]
[MSG:INFO: SPI SCK:gpio.18 MOSI:gpio.23 MISO:gpio.19]
[MSG:INFO: SD Card cspin:gpio.5 detect:NOPIN freq:8000000]
[MSG:INFO: Stepping:I2S_STREAM Pulse:4us Dsbl Delay:0us Dir Delay:1us Idle Delay:255ms]
[MSG:INFO: User Digital Output: 0 on Pin:gpio.4]
[MSG:INFO: Axis count 3]
[MSG:INFO: Axis X (-205.000,205.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.2 Dir:I2SO.1 Disable:I2SO.0]
[MSG:INFO:  X Neg Limit gpio.32]
[MSG:INFO: Axis Y (-216.000,216.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.5 Dir:I2SO.4:low Disable:I2SO.7]
[MSG:INFO:  Y Pos Limit gpio.35]
[MSG:INFO: Axis Z (0.000,100.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.10 Dir:I2SO.9 Disable:I2SO.8]
[MSG:INFO:  Z Pos Limit gpio.34]
[MSG:INFO: feedholdpin gpio.36:low]
[MSG:INFO: cyclestartpin gpio.39:low]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: Connecting to STA SSID:OT]
[MSG:INFO: Connecting.]
[MSG:INFO: Connecting..]
[MSG:INFO: Connected - IP is 192.168.1.224]
[MSG:INFO: WiFi on]
[MSG:INFO: Start mDNS with hostname:http://pibot.local/]
[MSG:INFO: HTTP started on port 80]
[MSG:INFO: Telnet started on port 23]
[MSG:INFO: Status outputs Interval:500 Idle:NOPIN Cycle:gpio.12 Hold:gpio.14 Alarm:NOPIN]
[MSG:INFO: 10V Spindle Ena:NOPIN Out:gpio.13 Dir:NOPIN Fwd:NOPIN Rev:NOPIN Freq:1000Hz Period:65535]
[MSG:INFO: Probe gpio.33:low]

User Interface Software

CNCJs

What happened?

I have wired up external buttons for feed hold and cycle start. When activating feed hold motion sometimes stops with a hard stop (i.e without deceleration). When that happens, the cycle start resumes without acceleration causing missed steps.

The same also happens when activating feed hold from a FluidNC pendant.

This is the terminal output when it happens (after the last Run):










































GCode File

G90 G94
G17
G21
T7
M3 S18000
G54
G0 X0 Y-72
Z7.5
G1 Z2.5 F2400
Z1 F800
G2 X0 Y72 Z0.75 I0 J72 F2400
X0 Y-72 Z0.5 I0 J-72
X0 Y72 Z0.25 I0 J72
X0 Y-72 Z0 I0 J-72
X0 Y72 Z-0.25 I0 J72
X0 Y-72 Z-0.5 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-0.75 I0 J72
X0 Y-72 Z-1 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-1.25 I0 J72
X0 Y-72 Z-1.5 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-1.75 I0 J72
X0 Y-72 Z-2 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-2.25 I0 J72
X0 Y-72 Z-2.5 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-2.75 I0 J72
X0 Y-72 Z-3 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-3.25 I0 J72
X0 Y-72 Z-3.5 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-3.75 I0 J72
X0 Y-72 Z-4 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-4.25 I0 J72
X0 Y-72 Z-4.5 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-4.75 I0 J72
X0 Y-72 Z-5 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 Z-5.25 I0 J72
X0 Y-72 I0 J-72
X0 Y72 I0 J72
X0 Y-72 I0 J-72
X0 Y72 I0 J72
G1 Z7.5
M5
M30

Other Information

FluidNC 3.9.3 also happens on 3.9.1


评论 (8)

#1 – MitchBradley 于 2024-12-20

I no longer have time to solve problems on unofficial hardware whose developers do not sponsor FluidNC. If you can reproduce the problem on official hardware like some flavor of 6-pack board, I will look into it.


#2 – ktand 于 2024-12-20

I was able to reproduce this on a standalone ESP32 Dev Kit using RMT stepping, if that matters.

Here is an example of stepper pulse capture when Feed Hold is pressed. The deceleration can clearly be seen.

!image

Here Cycle Start is pressed and then after a short while Feed Hold is pressed. The stepper pulses shows the acceleration but there is no deceleration when Feed Hold is pressed and the stepper pulses abruptly stops:

!image

I used the following configuration:


name: DevKitC
board: ESP32-DevKitC
stepping:
engine: RMT
idle_ms: 255
pulse_us: 4
dirdelayus: 1
disabledelayus: 0

junctiondeviationmm: 0.02

axes:
sharedstepperdisablepin: NOPIN
x:
stepspermm: 320
maxratemmpermin: 3600
accelerationmmper_sec2: 50
maxtravelmm: 410
soft_limits: false
homing:
cycle: 2
mpos_mm: -205
positive_direction: false
seekmmper_min: 800
feedmmper_min: 100
seek_scaler: 1.100
feed_scaler: 1.100
settle_ms: 250
motor0:
hard_limits: true
pulloff_mm: 1
standard_stepper:
step_pin: gpio.22
direction_pin: gpio.21
y:
stepspermm: 640
maxratemmpermin: 3600
accelerationmmper_sec2: 50
maxtravelmm: 432
homing:
cycle: 2
mpos_mm: 216
positive_direction: true
seekmmper_min: 800
feedmmper_min: 100
seek_scaler: 1.1
feed_scaler: 1.1
settle_ms: 250
motor0:
hard_limits: true
pulloff_mm: 1
standard_stepper:
step_pin: gpio.16
direction_pin: gpio.17

z:
stepspermm: 1600
maxratemmpermin: 800
accelerationmmper_sec2: 50
maxtravelmm: 100
homing:
cycle: 1
mpos_mm: 100
positive_direction: true
seekmmper_min: 400
feedmmper_min: 100
seek_scaler: 1.1
feed_scaler: 1.1
settle_ms: 250
motor0:
hard_limits: true
pulloff_mm: 1
standard_stepper:
step_pin: gpio.18
direction_pin: gpio.19

start:
must_home: false

control:
safetydoorpin: NO_PIN
resetpin: NOPIN
feedholdpin: gpio.26:low:pu
cyclestartpin: gpio.27:low:pu
macro0pin: NOPIN
macro1pin: NOPIN
macro2pin: NOPIN
macro3pin: NOPIN
faultpin: NOPIN
estoppin: NOPIN

status_outputs:
run_pin: gpio.12
hold_pin: gpio.14


#3 – bdring 于 2024-12-21

I will setup a test fixture with control switches for hold and cycle start. It will take a few hours before I can fit that in my schedule.


#4 – breiler 于 2024-12-21

@bdring this sounds similar to to the the PR that I have open for jogging:
https://github.com/bdring/FluidNC/pull/1396

And with a bit of imagination also this issue about jogging: https://github.com/bdring/FluidNC/issues/902


#5 – bdring 于 2024-12-21

I am able to replicate the problem. I concur with @breiler observations. This seems to be due to the tiny segments coming from the arcs. It does not happen with longer segments.


#6 – bdring 于 2024-12-27

@ktand

I think this PR fixes the problem. Do you know how to compile the code from a PR? It would be great if you could test it.


#7 – ktand 于 2024-12-27

@bdring

Yes. I will try it a.s.a.p. Thanks!


#8 – ktand 于 2024-12-27

@bdring

I can confirm that this solves the problem. I have tested feed hold/cycle start hundreds of times without any problems. Thank you very much!


原始Issue: https://github.com/bdring/FluidNC/issues/1410

喜欢 (0)