[FluidNC Issue#1483] Problem: Real-time Status Report shows that spindle is still running after M5 command

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

Issue #1483 | 状态: 已关闭 | 作者: hmantz | 创建时间: 2025-04-27


Wiki Search Terms

Status Report Spindle Speed M5

Controller Board

PiBot FluidNC GRBL Laser CNC Controller V4.7 B but it can be reproduced in any generic ESP32 board

Machine Description

I didn’t connect it to my machine. I checked the PWM spindle output with my oscilloscope.

Input Circuits


Configuration file

board: PiBotV48A
name: Factory_Test
stepping:
  engine: I2S_STREAM
  idle_ms: 254
  pulse_us: 4
  dirdelayus: 1
  disabledelayus: 0
axes:
  sharedstepperdisablepin: NOPIN
  x:
    stepspermm: 800
    maxratemmpermin: 5000
    accelerationmmper_sec2: 100
    maxtravelmm: 300
    soft_limits: false
    homing:
      cycle: 2
      positive_direction: false
      mpos_mm: 150
      feedmmper_min: 100
      seekmmper_min: 200
      settle_ms: 500
      seek_scaler: 1.1
      feed_scaler: 1.1
    motor0:
      limitnegpin: NO_PIN
      limitpospin: NO_PIN
      limitallpin: gpio.2:pu:low
      hard_limits: false
      pulloff_mm: 1
      standard_stepper:
        step_pin: i2so.2
        direction_pin: i2so.1
        disable_pin: i2so.0
  y:
    stepspermm: 800
    maxratemmpermin: 5000
    accelerationmmper_sec2: 100
    maxtravelmm: 300
    soft_limits: false
    homing:
      cycle: 2
      positive_direction: true
      mpos_mm: 150
      feedmmper_min: 100
      seekmmper_min: 200
      settle_ms: 500
      seek_scaler: 1.1
      feed_scaler: 1.1
    motor0:
      limitnegpin: NO_PIN
      limitpospin: NO_PIN
      limitallpin: gpio.26:pu:low
      hard_limits: false
      pulloff_mm: 1
      standard_stepper:
        step_pin: i2so.5
        direction_pin: i2so.4
        disable_pin: i2so.7
  z:
    stepspermm: 800
    maxratemmpermin: 5000
    accelerationmmper_sec2: 100
    maxtravelmm: 300
    soft_limits: false
    homing:
      cycle: 1
      positive_direction: true
      mpos_mm: 150
      feedmmper_min: 100
      seekmmper_min: 800
      settle_ms: 500
      seek_scaler: 1.1
      feed_scaler: 1.1
    motor0:
      limitnegpin: NO_PIN
      limitpospin: NO_PIN
      limitallpin: gpio.33:pu:low
      hard_limits: false
      pulloff_mm: 1
      standard_stepper:
        step_pin: i2so.10
        direction_pin: i2so.9
        disable_pin: i2so.8
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
probe:
  pin: gpio.32:pu:low
  toolsetterpin: NOPIN
start:
  must_home: false
pwm:
  pwm_hz: 50
  output_pin: gpio.16
  disablewiths0: true
  s0withdisable: true
  spinup_ms: 0
  spindown_ms: 0
  tool_num: 0
  speed_map: 0=5% 5000=10%
  offonalarm: true
uart1:
  txd_pin: gpio.27
  rxd_pin: gpio.25
  rtspin: NOPIN
  ctspin: NOPIN
  baud: 921600
  mode: 8N1
uart_channel1:
  reportintervalms: 250
  uart_num: 1
control:
  estop_pin: gpio.35:low
  safetydoorpin: NO_PIN
  resetpin: NOPIN
  feedholdpin: NO_PIN
  cyclestartpin: NO_PIN
  macro0pin: NOPIN
  macro1pin: NOPIN
  macro2pin: NOPIN
  macro3pin: NOPIN
  faultpin: NOPIN

Startup Messages

[MSG:INFO: FluidNC v3.9.6 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:config1.yaml]
[MSG:INFO: Machine Factory_Test]
[MSG:INFO: Board PiBotV48A]
[MSG:INFO: UART1 Tx:gpio.27 Rx:gpio.25 RTS:NO_PIN Baud:921600]
[MSG:INFO: uart_channel1 created at report interval: 250]
[MSG:INFO: I2SO BCK:gpio.22 WS:gpio.17 DATA:gpio.21Min Pulse:2us]
[MSG:INFO: SPI SCK:gpio.18 MOSI:gpio.23 MISO:gpio.19]
[MSG:INFO: Stepping:I2S_STREAM Pulse:4us Dsbl Delay:0us Dir Delay:1us Idle Delay:254ms]
[MSG:INFO: Axis count 3]
[MSG:INFO: Axis X (150.000,450.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.2 Dir:I2SO.1 Disable:I2SO.0]
[MSG:INFO:  All Limit gpio.2:low:pu]
[MSG:INFO: Axis Y (-150.000,150.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.5 Dir:I2SO.4 Disable:I2SO.7]
[MSG:INFO:  All Limit gpio.26:low:pu]
[MSG:INFO: Axis Z (-150.000,150.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.10 Dir:I2SO.9 Disable:I2SO.8]
[MSG:INFO:  All Limit gpio.33:low:pu]
[MSG:INFO: estop_pin gpio.35:low]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: Connecting to STA SSID:##########]
[MSG:INFO: Connecting.]
[MSG:INFO: Connecting..]
[MSG:INFO: Connecting...]
[MSG:INFO: Connected - IP is ##########]
[MSG:INFO: WiFi on]
[MSG:INFO: Start mDNS with hostname:http://fluidnc.local/]
[MSG:INFO: HTTP started on port 80]
[MSG:INFO: Telnet started on port 23]
[MSG:INFO: PWM Spindle Ena:NOPIN Out:gpio.16 Dir:NOPIN Freq:50Hz Period:1048575]
[MSG:INFO: Probe gpio.32:low:pu]

Grbl 3.9 [FluidNC v3.9.6 (wifi) '$' for help] ok [VER:3.9 FluidNC v3.9.6:] [OPT:PHS] [MSG:Machine: Factory_Test] [MSG:Mode=STA:SSID=HMsrv.24G:Status=Connected:##########:MAC=############] ok

User Interface Software

Universal Gcode Sender 20250108 but the issue also exists on the fluidnc.local web interface

What happened?

I start the system from fresh. I issue S5000 command on the terminal. Real-time Status Report is:

I then issue M3. Real-time Status Report changes to:

If I then issue M5 the motor will stop but the Real-time Status Report remains the same:

All the sequence follows:



>>> s5000
ok



>>> m3
ok




>>> m5
ok


I went all the way back to v3.1.3 and the issue is still there. Grbl_Esp32 does not have this issue, neither of course GRBL v1.1. They both change the Real-time Status Report to FS0,0 after M5.

GCode File

S5000
M3
M5

Other Information

This issue causes me some difficulty because I use the Real-time Status Report information to control a custom PID controller running on a separate ESP32-S3. At present I have to manually edit every .NC file and add S0 before the M5 command. I can modify Fusion 360 grbl post-processor to do this automatically but I prefer to solve the issue within FluidNC source code instead.


评论 (8)

#1 – bdring 于 2025-04-27

Are you talking about the FS: vslue?

Feed and speed are both modal values. They stay at the last value set. This is the gcode standard.

M3 M4 and M5 are also modal. See the $G report for that.


#2 – bdring 于 2025-04-27

Use auto reporting to get the $g report


#3 – hmantz 于 2025-04-27

> Are you talking about the FS: vslue?

Yes, exactly!

> Feed and speed are both modal values. They stay at the last value set. This is the gcode standard.

With all due respect, I think you may be mistaken. We are not talking about what the operator sets, but what FluidNC reports back. If you check the GRBL v1.1 Wiki Interface section

https://github.com/gnea/grbl/wiki/Grbl-v1.1-Interface#real-time-status-reports

it states clearly that Real-time Status Reports “Contains real-time data of Grbl’s state, position, and other data” and further down that “The second value [of the FS: field] is the current spindle speed in RPM”

> M3 M4 and M5 are also modal. See the $G report for that.

$G also reports that the spindle is running when it is clearly stopped:

>>> s5000
ok
>>> m3
ok
>>> m5
ok
>>> $g
[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S5000]
ok

I am not saying that this is a bug as it seems to be intended behaviour, however, it clearly deviates from the GRBL v1.1 standard. It is interesting to note that all GRBL senders I tried state that the spindle is still running after M5.

Is it too difficult to change this? I am willing to help if you point me at the right direction. I had a quick look at the source files on Platformio and was overwhelmed… :)


#4 – hmantz 于 2025-04-27

P.S. I would assume that setting “s0withdisable: true” in the PWM: section of the config file would do exactly what I want. However, it seems that this setting doesn’t do anything.


#5 – bdring 于 2025-04-27

@hmantz is correct.

Feed is same. If motion ends or G0 is set. F still keeps it’s last value


#6 – MitchBradley 于 2025-04-27

Possibly fixed by #1484. Needs testing with a lot of different spindle types. s0withdisable must be true.


#7 – hmantz 于 2025-04-27

> Possibly fixed by #1484. Needs testing with a lot of different spindle types. s0withdisable must be true.

It works fine with my setup! :)


#8 – hmantz 于 2025-05-07

Fixed by #1484


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

喜欢 (0)