FluidNC icon indicating copy to clipboard operation
FluidNC copied to clipboard

Problem: M6 commands do not initiate move to tool change position

Open Xeroside opened this issue 4 months ago • 5 comments

Wiki Search Terms

Fluidnc, ATC_Manual, M6, M6 commands do not initiate move to change_mpos_mm: location

Controller Board

6x CNC Controller for FluidNC (integrated ESP32)

Machine Description

WEN 33013 Milling Machine

Input Circuits


Configuration file

board: 6x CNC Controller
name: 'WEN 33013 CNC '
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: 250.55
    max_rate_mm_per_min: 800
    acceleration_mm_per_sec2: 40
    max_travel_mm: 265
    soft_limits: true
    homing:
      cycle: 2
      positive_direction: false
      mpos_mm: 0
      feed_mm_per_min: 100
      seek_mm_per_min: 500
      settle_ms: 500
      seek_scaler: 1.2
      feed_scaler: 1.1
    motor0:
      limit_neg_pin: gpio.33:low
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1
      standard_stepper:
        step_pin: I2SO.2
        direction_pin: I2SO.1
        disable_pin: I2SO.0
  y:
    steps_per_mm: 255.532
    max_rate_mm_per_min: 800
    acceleration_mm_per_sec2: 40
    max_travel_mm: 100
    soft_limits: true
    homing:
      cycle: 2
      positive_direction: true
      mpos_mm: 0
      feed_mm_per_min: 100
      seek_mm_per_min: 500
      settle_ms: 500
      seek_scaler: 1.1
      feed_scaler: 1.1
    motor0:
      limit_neg_pin: gpio.32:low
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1
      standard_stepper:
        step_pin: I2SO.5
        direction_pin: I2SO.4
        disable_pin: I2SO.7
  z:
    steps_per_mm: 1005.763
    max_rate_mm_per_min: 400
    acceleration_mm_per_sec2: 30
    max_travel_mm: 400
    soft_limits: true
    homing:
      cycle: 1
      positive_direction: true
      mpos_mm: 0
      feed_mm_per_min: 100
      seek_mm_per_min: 800
      settle_ms: 500
      seek_scaler: 1.2
      feed_scaler: 1.1
    motor0:
      limit_neg_pin: gpio.35:low
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 3
      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
sdcard:
  card_detect_pin: NO_PIN
  cs_pin: gpio.5
probe:
  pin: gpio.34:low
  toolsetter_pin: gpio.36


coolant:
  flood_pin: gpio.12
  mist_pin: gpio.4
  delay_ms: 0
start:
  must_home: false

pwm:
  pwm_hz: 5000
  direction_pin: gpio.15
  output_pin: gpio.13
  enable_pin: gpio.14
  disable_with_s0: false
  s0_with_disable: true
  spinup_ms: 0
  spindown_ms: 0
  tool_num: 0
  speed_map: 0=0.000% 10000=100.000%
  off_on_alarm: false
  atc: atc_manual 
  
atc_manual: 
  safe_z_mpos_mm: -1.000000
  probe_seek_rate_mm_per_min: 800.000000
  probe_feed_rate_mm_per_min: 80.000000
  change_mpos_mm: "0.000 -47.000 0.000"
  ets_mpos_mm: "0.000 -47.000 -179.000"
  ets_rapid_z_mpos_mm: -1.000000

uart2:
  txd_pin: gpio.25
  rxd_pin: gpio.27
  rts_pin: NO_PIN
  cts_pin: NO_PIN
  baud: 1000000
  mode: 8N1

uart_channel1:
  report_interval_ms: 75
  uart_num: 2

Startup Messages

[MSG:INFO: FluidNC v3.9.8 https://github.com/bdring/FluidNC]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.7-dirty]
[MSG:INFO: Local filesystem type is littlefs]
[MSG:INFO: Configuration file:config.yaml]
[MSG:INFO: Machine WEN 33013 CNC ]
[MSG:INFO: Board 6x CNC Controller]
[MSG:INFO: UART2 Tx:gpio.25 Rx:gpio.27 RTS:NO_PIN Baud:1000000]
[MSG:INFO: uart_channel2 created at report interval: 75]
[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: 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,265.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.2 Dir:I2SO.1 Disable:I2SO.0]
[MSG:INFO:  Neg Limit gpio.33:low]
[MSG:INFO: Axis Y (-100.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.5 Dir:I2SO.4 Disable:I2SO.7]
[MSG:INFO:  Neg Limit gpio.32:low]
[MSG:INFO: Axis Z (-400.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standard_stepper Step:I2SO.10 Dir:I2SO.9 Disable:I2SO.8]
[MSG:INFO:  Neg Limit gpio.35:low]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: Connecting to STA SSID:FlipmyFlap]
[MSG:INFO: Connecting.]
[MSG:INFO: Connecting..]
[MSG:INFO: Connecting...]
[MSG:INFO: Connected - IP is 10.0.0.44]
[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: ATC:atc_manual]
[MSG:INFO: PWM Spindle Ena:gpio.14 Out:gpio.13 Dir:gpio.15 Freq:5000Hz Period:8191]
[MSG:INFO: Flood coolant gpio.12]
[MSG:INFO: Mist coolant gpio.4]
[MSG:INFO: Probe gpio.34:low]
[MSG:INFO: Toolsetter gpio.36]

User Interface Software

WebUI and M5 FluidDial

What happened?

Sending M6T# or M61Q# gives a response of "ok" but does not initiate move to change_mpos_mm: location specified in my config.yaml. Google AI showed an analysis of the problem:

1.atc: atc_manual is loaded: Your $Startup/Show output confirms that [MSG:INFO: ATC:atc_manual] appears,   meaning the configuration block is recognized.
2. pwm Spindle linked: The atc: atc_manual line under pwm: correctly links your spindle to the ATC feature.
3. Commands accepted: M6T0, T0, M61Q1, M6T1 all result in ok, showing they are valid G-code.
Lack of movement: The critical issue is the absence of the expected movement to change_mpos_mm (which is 0.000 -47.000 0.000). 

GCode File

No response

Other Information

No response

Xeroside avatar Aug 18 '25 11:08 Xeroside

I'll test your config file later today

bdring avatar Aug 18 '25 14:08 bdring

It works fine on my machine. Here is the console session I suggested you do.

Grbl 3.9 [FluidNC v3.9.8 (wifi) '$' for help]
$H
[MSG:Homed:Z]
[MSG:Homed:XY]
ok
<Idle|WPos:-45.000,80.000,39.000|FS:0,0|WCO:45.000,70.000,-39.000>
$10=1
ok
<Idle|MPos:0.000,150.000,0.000|FS:0,0|Ov:100,100,100>
$G 
[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0]
ok
M6T1
[MSG:INFO: Sel:1 Cur:-1]
[MSG:INFO: PWM spindle changed to tool:1 using atc_manual]
ok
[MSG:INFO: MSG,: Install tool #1]
<Idle|MPos:75.000,145.000,-1.000|FS:0,0|Ov:100,100,100>
$G
[GC:G0 G54 G17 G21 G90 G94 M5 M9 T1 F0 S0]
ok

This is my config section

pwm:
  pwm_hz: 5000
  direction_pin: NO_PIN
  output_pin: gpio.14
  enable_pin: gpio.13
  disable_with_s0: false
  s0_with_disable: true
  spinup_ms: 0
  spindown_ms: 0
  tool_num: 0
  speed_map: 0=0.000% 10000=100.000%
  off_on_alarm: false
  atc: atc_manual

atc_manual:
  safe_z_mpos_mm: -2
  probe_seek_rate_mm_per_min: 200
  probe_feed_rate_mm_per_min: 100
  change_mpos_mm: 75.0 145.0 -1.0
  ets_mpos_mm: 3.0 139.0 -40.0
  ets_rapid_z_mpos_mm: -15.0

bdring avatar Aug 18 '25 15:08 bdring

I think you might have a trailing space on atc: atc_manual . Try it without that space. My start messages show this.

[MSG:INFO: PWM Spindle Ena:gpio.13 Out:gpio.14 Dir:NO_PIN Freq:5000Hz Period:8191 with atc_manual]

Yours does not show the with atc_manual

I'll see if I can have the code catch an error like that.

bdring avatar Aug 18 '25 15:08 bdring

Looks like that space was the problem. The spindle now moves as expected when sending M6T#. Thank you

Xeroside avatar Aug 18 '25 16:08 Xeroside

I can have the code do this. I put it in single quotes, so you can better see the trailing blank.

[MSG:INFO: PWM Spindle Ena:gpio.13 Out:gpio.14 Dir:NO_PIN Freq:5000Hz Period:8191 atc: 'atc_manual ' not found]

It is probably better to have it print within the spindle INFO rather than a separate ERR or WARN, so you know where the problem is.

We might consider trimming all strings in the yaml to prevent this error, but that does not catch the problem of other ways the string differs, like atc: atc-manual (dash vs underscore)

bdring avatar Aug 18 '25 17:08 bdring