Problem: M6 commands do not initiate move to tool change position
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
I'll test your config file later today
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
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.
Looks like that space was the problem. The spindle now moves as expected when sending M6T#. Thank you
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)