bdring / FluidNC

The next generation of motion control firmware

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Problem: Random homing fail from 3.7.7 onwards

TITAN3737 opened this issue · comments

Wiki Search Terms

Homing Fail

Controller Board

Root Controller ISO Rev 3

Machine Description

Gantry diode laser with external DM556 stepper drivers, dual Y motors, endstops switches on all axes, 80W laser module.

Input Circuits

No response

Configuration file

board: Root Controler v3.0
name: CNC-1250x1250
stepping:
  engine: I2S_STREAM
  idle_ms: 255
  pulse_us: 4
  dir_delay_us: 1
  disable_delay_us: 0

axes:
  shared_stepper_disable_pin: NO_PIN

  x:
   steps_per_mm: 800.000
   max_rate_mm_per_min: 4000.000
   acceleration_mm_per_sec2: 100.000
   max_travel_mm: 1280.000
   soft_limits: true
   homing:
    cycle: 2
    positive_direction: false
    mpos_mm: 0.000
    feed_mm_per_min: 300.000
    seek_mm_per_min: 3000.000
    settle_ms: 100
    seek_scaler: 1.100
    feed_scaler: 1.100

   motor0:
    limit_neg_pin: gpio.34
    limit_pos_pin: NO_PIN
    limit_all_pin: NO_PIN
    pulloff_mm: 3.000
    standard_stepper:
      step_pin: I2SO.7:low
      direction_pin: I2SO.5:low
      disable_pin: I2SO.3:high

  y:
   steps_per_mm: 800.000
   max_rate_mm_per_min: 4000.000
   acceleration_mm_per_sec2: 100.000
   max_travel_mm: 1280.000
   soft_limits: true
   homing:
    cycle: 2
    positive_direction: false
    mpos_mm: 0.000
    feed_mm_per_min: 300.000
    seek_mm_per_min: 3000.000
    settle_ms: 100
    seek_scaler: 1.100
    feed_scaler: 1.100

   motor0:
    limit_neg_pin: gpio.32
    limit_pos_pin: NO_PIN
    limit_all_pin: NO_PIN
    pulloff_mm: 3.000
    standard_stepper:
      step_pin: I2SO.12:low
      direction_pin: I2SO.10:high
      disable_pin: I2SO.8:high

   motor1:
    limit_neg_pin: gpio.26:low
    limit_pos_pin: NO_PIN
    limit_all_pin: NO_PIN
    pulloff_mm: 3.000
    standard_stepper:
      step_pin: I2SO.6:low
      direction_pin: I2SO.4:high
      disable_pin: I2SO.2:high

  z:
   steps_per_mm: 2000.000
   max_rate_mm_per_min: 1000.000
   acceleration_mm_per_sec2: 100.000
   max_travel_mm: 180.000
   soft_limits: true
   homing:
    cycle: 1
    positive_direction: true
    mpos_mm: 0.000
    feed_mm_per_min: 300.000
    seek_mm_per_min: 2000.000
    settle_ms: 100
    seek_scaler: 1.100
    feed_scaler: 1.100

   motor0:
    limit_neg_pin: NO_PIN
    limit_pos_pin: gpio.27:low
    limit_all_pin: NO_PIN
    pulloff_mm: 3.000
    standard_stepper:
      step_pin: I2SO.18:low
      direction_pin: I2SO.16:high
      disable_pin: I2SO.14:high

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

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

sdcard:
  card_detect_pin: NO_PIN
  cs_pin: gpio.5
# frequency_hz: 1000000

control:
  safety_door_pin: gpio.15:low
  reset_pin: NO_PIN
# feed_hold_pin: gpio.15:low
  cycle_start_pin: NO_PIN

probe:
  pin: gpio.2
  check_mode_start: false

Laser:
  pwm_hz: 5000
  output_pin: gpio.33
  enable_pin: NO_PIN
  disable_with_s0: false
  s0_with_disable: true
  tool_num: 0
  speed_map: 0=0% 1000=100%
  off_on_alarm: true

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

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: true

Startup Messages

FluidTerm v1.2.1 using COM6
Exit: Ctrl-C, Ctrl-Q or Ctrl-], Clear screen: CTRL-W
Upload: Ctrl-U, Reset ESP32: Ctrl-R, Send Override: Ctrl-O
$bye
[MSG:INFO: Restarting]
ok
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:13220
ho 0 tail 12 room 4
load:0x40080400,len:3028
entry 0x400805e4
[MSG:INFO: uart_channel0 created]
[MSG:RST]
[MSG:INFO: FluidNC v3.7.16 https://github.com/bdring/FluidNC]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.4]
[MSG:INFO: Local filesystem type is spiffs]
[MSG:INFO: Configuration file:con14.yaml]
[MSG:INFO: Machine CNC-1250x1250]
[MSG:INFO: Board Root Controler v3.0]
[MSG:INFO: I2SO BCK:gpio.22 WS:gpio.21 DATA:gpio.12]
[MSG:INFO: SPI SCK:gpio.18 MOSI:gpio.23 MISO:gpio.19]
[MSG:INFO: SD Card cs_pin:gpio.5 detect:NO_PIN freq:8000000]
[MSG:INFO: Stepping:I2S_stream Pulse:4us Dsbl Delay:0us Dir Delay:1us Idle Delay:255ms]
[MSG:INFO: Axis count 3]
[MSG:INFO: Axis X (0.000,1280.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.7:low Dir:I2SO.5:low Disable:I2SO.3]
[MSG:INFO:  X Neg Limit gpio.34]
[MSG:INFO: Axis Y (0.000,1280.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.12:low Dir:I2SO.10 Disable:I2SO.8]
[MSG:INFO:  Y Neg Limit gpio.32]
[MSG:INFO:   Motor1]
[MSG:INFO:     standard_stepper Step:I2SO.6:low Dir:I2SO.4 Disable:I2SO.2]
[MSG:INFO:  Y2 Neg Limit gpio.26:low]
[MSG:INFO: Axis Z (-180.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.18:low Dir:I2SO.16 Disable:I2SO.14]
[MSG:INFO:  Z Pos Limit gpio.27:low]
[MSG:INFO: safety_door_pin gpio.15:low]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: Laser Ena:NO_PIN Out:gpio.33 Freq:5000Hz Period:8191]
[MSG:INFO: Using spindle Laser]
[MSG:INFO: Probe Pin: gpio.2]
[MSG:INFO: BT Started with FluidNC]

Grbl 3.7 [FluidNC v3.7.16 (bt) '$' for help]
[MSG:INFO: ALARM: Unhomed]
ALARM:14

User Interface Software

gSender over Bluetooth

What happened?

I was using FluidNC 3.7.0 for long time with almost no issues. Now I wanted to update to 3.7.16, but when I try to home the machine, I get some random homing error. About one in five homing fails without any clue why. I have tried almost all versions between 3.7.0 and 3.7.16 and the last version that work flawlessly is 3.7.6. From 3.7.7 onwards homing randomly fails.
When homing the machine sometime randomly over travels one or more of the limit switches and crashes into the frame.
In the 3.7.7 description in nothing about homing or limit switches changes.
Can somebody please give me any hint what happened in version 3.7.7 that can cause this?

GCode File

No response

Other Information

No response

Send $message/level=debug and give us the debug log from a homing failure

What type of switches are you using?

Use FluidTerm to do what Mitch suggested and send $H.

Send $message/level=debug and give us the debug log from a homing failure

I'm out of the workshop for today, will send the terminal log first thing in the morning

What type of switches are you using?

I use the most common ones used with Arduino, similar to these:
https://www.amazon.de/dp/B08734MSDD/

$h
[MSG:DBG: Homing Cycle Z]
[MSG:DBG: Homing nextPhase FastApproach]
[MSG:DBG: Starting from 300.000,200.000,0.000]
[MSG:DBG: Planned move to 300.000,200.000,198.000 @ 2000.000]
[MSG:DBG: Z Pos Limit 1]
[MSG:DBG: Homing limited Z]
[MSG:DBG: Homing nextPhase Pulloff0]
[MSG:DBG: Starting from 300.000,200.000,3.916]
[MSG:DBG: Planned move to 300.000,200.000,0.916 @ 300.000]
[MSG:DBG: Z Pos Limit 0]
[MSG:DBG: CycleStop Pulloff0]
[MSG:DBG: Homing nextPhase SlowApproach]
[MSG:DBG: Starting from 300.000,200.000,0.916]
[MSG:DBG: Planned move to 300.000,200.000,4.216 @ 300.000]
[MSG:DBG: Z Pos Limit 1]
[MSG:DBG: Homing limited Z]
[MSG:DBG: Homing nextPhase Pulloff1]
[MSG:DBG: Starting from 300.000,200.000,3.797]
[MSG:DBG: Planned move to 300.000,200.000,0.797 @ 300.000]
[MSG:DBG: Z Pos Limit 0]
[MSG:DBG: CycleStop Pulloff1]
[MSG:DBG: Homing nextPhase Pulloff2]
[MSG:DBG: mpos was 300.000,200.000,0.797]
[MSG:DBG: mpos becomes 300.000,200.000,0.000]
[MSG:DBG: mpos transformed 300.000,200.000,0.000]
[MSG:DBG: Homing Cycle XY]
[MSG:DBG: Homing nextPhase FastApproach]
[MSG:DBG: Starting from 300.000,200.000,0.000]
[MSG:DBG: Planned move to -1108.000,-1208.000,0.000 @ 4242.641]
[MSG:DBG: Y2 Neg Limit 1]
[MSG:DBG: Y Neg Limit 1]
[MSG:DBG: Homing limited Y2]
[MSG:DBG: Homing limited Y Y2]
[MSG:DBG: Homing replan with X]
[MSG:DBG: Starting from 94.505,-5.486,0.000]
[MSG:DBG: Planned move to -1313.495,-5.486,0.000 @ 3000.000]
[MSG:DBG: X Neg Limit 1]
[MSG:DBG: Homing limited X Y Y2]
[MSG:DBG: Homing nextPhase Pulloff0]
[MSG:DBG: Starting from -5.733,-5.486,0.000]
[MSG:DBG: Planned move to -2.733,-2.486,0.000 @ 424.264]
[MSG:DBG: X Neg Limit 0]
[MSG:DBG: Y2 Neg Limit 0]
[MSG:DBG: Y Neg Limit 0]
[MSG:DBG: CycleStop Pulloff0]
[MSG:INFO: ALARM: Homing Fail Pulloff]
ALARM:8
[MSG:ERR: Macro can only be used in idle state]
ok

I just found out that this homing failures and random limit switches over travel only occur when connecting via Bluetooth. When connected by USB cable homing works fine. But cable connection is clumsy and unreliable for me, so I would prefer to use Bluetooth.

It is possible that the Bluetooth system code is blocking a thread causing realtime response problems with homing. That is just a guess. I am away from the office with no way to test this hypothesis.

Thank you for reply.
I am trying to figure this out all day long, about 500 homing cycles later I found out that this really does have something to do only with Bluetooth connection, but it is partially an issue in version 3.7.1 too. It looks like the Bluetooth connection can randomly overload the CPU during homing, so it becomes unresponsive, sometime even for 30 seconds with many $h commands in rapid succession.
This does not happen in 3.7.0, at least not so much it becomes unresponsive.
One of the enhancements in 3.7.1 is "5ms switch "debouncing" added.", can this be what puts so much load on the CPU?
Is there anything else I can do to help figure this out?

I'm sorry, I am not in a position to look into this right now. Realtime response in the face of a multicore,multithreaded system built on top of much third-party code is a very difficult problem.

I just donated 50$ to Honu Putters LLC/FluidNC.
Maybe that can help with the development just a little. I understand that creating open source must be difficult challenge.
Hope sometime in the future the Bluetooth can be used again on the newer versions.
Thank anyway.