Attempting to extrude with no tool selected.
-
Trying to get some bugs worked out of the Tool Changer system. Right now I have a single tool defined in the system. I was running into random pauses in the prints that I am now troubleshooting.
I created the following Gcode (TC-Baiscs):
T-1 G28 ; home all axes
When running the file the first time I startup the system there are no problems. However subsequent times the following errors will occur and pause before the G28 command completes:
M24 Error: Attempting to extrude with no tool selected.
Or sometimes:
Error: Invalid tool number
-
Post your config.g, homeall.g (and any other homing files and macros called) your tool change files. And post the results of sending M122 and M98 P"config.g" so we can see what's actually happening.
-
config.g
; Configuration file for Duet WiFi (firmware version 3.0) ; executed by the firmware on start-up ; ; MODEL Railcore-II 400 TC ; General preferences G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves ;;;;;;;;;;;;;;;;;;; ;;; Network ;;; ;;;;;;;;;;;;;;;;;;; M550 P"RCII400TC" ; Set machine name M551 P"password: ; Set password M552 S1 ; Enable network M586 P0 S1 ; Enable HTTP M586 P1 S0 ; Disable FTP M586 P2 S0 ; Disable Telnet ;;;;;;;;;;;;;;;;;; ;;; Drives ;;; ;;;;;;;;;;;;;;;;;; M584 Z2:5 C9 E3 ; two Z motors connected to driver 2 & 5, Tool Coupler C is Driver 9, Extruder 0 driver 3 M667 S1 ; switch to CoreXY mode M669 K1 ; Set kinematics type to CoreXY M569 P0 S0 ; Drive 0 goes backwards (X) M569 P1 S0 ; Drive 1 goes backwards (Y) M569 P2 S1 ; Drive 2 goes forwards M569 P3 S0 ; Drive 3 Tool 0 goes forwards OMC Pancake Direct Drive M569 P9 S0 ; Drive 9 Tool Changer M350 X16 Y16 Z16 E16:E16 I1 ; Configure microstepping with interpolation M350 C8 I0 ; Configure C microstepping with interpolation (Tool Changer) M906 X800.00 Y800.00 Z800.00 C400 E600.00 I30 ; Set motor currents (mA) and motor idle factor in per cent M92 X201.2499 Y201.2499 Z1601.584008 C100 E421.1332199 ; Set steps per mm (BMG Extruder), T8x2 1-Start Lead Screw ;; This section sets the maximums of the axis movements. ;; I have been told it does not make sense to set these too low as the actual ;; requested speeds will be set by the G-Code and likely tuned in the slicer. M201 X500.00 Y500.00 Z60.00 C500 E600.00 ; Set accelerations (mm/s^2) https://wilriker.github.io/maximum-acceleration-calculator/ M203 X15000.00 Y15000.00 Z720.00 C5000 E4800.00 ; Set maximum speeds (mm/min) / Bondtech starts to skip at 1000 so back off to 80%. M566 X900.00 Y900.00 Z12.00 C2 E1600.00 ; Set maximum instantaneous speed changes (mm/min) ;Let slicer set...;M204 P1000 T3000 ; Set printing and travel accelerations ;M592 D1 A-0.046992623 B0.010089628 C0.045893262 ; Non-Linear Extrusion Advance ;M671 - Define positions of Z leadscrews or bed levelling screws (not to be confused with screws in the bed). M671 X-80:480 Y200:200 S5 ; leadscrews at left and right of X axis and allow 5mm of correction between screws. M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0.05 C0 S1 ; Set axis minima X-Axis will not lower than 0.05mm to bed. M208 X420 Y410 Z400 C240 S0 ; Set axis maxima M575 P1 B115200 S1 ; PanelDue communications ;;;;;;;;;;;;;;;;;;;; ;;; Endstops ;;; ;;;;;;;;;;;;;;;;;;;; M574 X1 S1 P"!x_stop" ; Set active high endstops M574 Y1 S1 P"!y_stop" ; Set active low endstops M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Filament Sensor M591 D0 P3 c"e0_stop" S1 R40:180 L25.5 E3.0 ; Duet3D rotating magnet sensor extruder drive 0 is connected to E0, enabled, sensitivity 24.8mm.rev, 70% to 130% tolerance, 3mm detection length M591 D1 P2 c"!e2_stop" S1 ; Enable Extruder 1, Simple Sensor (High signal), Connected to E1 input M581 P"e0_stop" T1 C1 ; Filament run-out sensor triggers a pause M581 P"e2_stop" T1 C1 ; Filament run-out sensor triggers a pause ; Z-Probe ;; BLTouch Sensor ; Z# = Trigger height. 1.5mm is normal for BlTouch, Relative to Tool 0 height to bed. ; P# = Trigger value. 25-100. Lower it if nothing happens. ; XY# = Placement of probe relative to your nozzle. Called offset. In mm. M558 P9 C"^z_probe.in" K0 H5 Z1 F120 T6000 A10 S0.005 ; BLTouch connected to Z probe IN pin M950 S0 C"duex.pwm5" ; create servo pin 0 for BLTouch ;; Sensor to right (negative X) of hotend G31 P25 K0 X31.75 Y-34.4 Z1.02 ; Z probe trigger value, offset in relation to nozzle. Larger trigger brings hotend closer to bed. M557 X10:370 Y20:370 S20 ; Define mesh grid Offset X to account for Z-Trigger. ; Tool Changer M574 C1 S3 ; Stall detect coupler at low end of its range ;; Stall Detection M915 C S3 F1 H400 R0 ; Coupler ;;;;;;;;;;;;;;;;;;; ;;; SENSORS ;;; ;;;;;;;;;;;;;;;;;;; ;; (BED) Sensor0 -> H0 M308 S0 P"bed_temp" Y"thermistor" R4700 T100000 B3950 ; bed temperature sensor ;; (BED SSR) Sensor M308 S9 P"duex.e6temp" A"BED-SSR" Y"thermistor" R4700 T100000 B3950 ; BED SSR temperature sensor ;; (Tool 0) Sensor1 -> H1 M308 S1 P"spi.cs2" Y"rtd-max31865" ; create sensor number 1 as a PT100 sensor in the second position on the Duet 2 daughter board connector ;;;;;;;;;;;;;;;;;;; ;;; Heaters ;;; ;;;;;;;;;;;;;;;;;;; ;; Bed M950 H0 C"bed_heat" Q100 T0 ; heater 0 uses the PIN bed_heat, PWM frequency 100Hz, Temperature sensor 0 M143 H0 S120 ; Set temperature limit for heater 0 to 120C even though it can go much higher. ;M307 H0 A192.7 C889.9 D2.0 S1.00 V24.3 B0 ; Disable bang-bang mode for the bed heater and set PWM limit Keenovo 1000W M140 H0 ;; Heater 1 (Tool 0) M950 H1 C"e0_heat" T1 ; heater 1 uses the PIN e0_heat and Temperature sensor 1 M143 H1 S300 ; Set temperature limit for heater 1 to 300C ;M307 H1 A469.1 C236.9 D4.8 S1.00 V24.1 B0 ;; Heater 2 M950 H2 C"nil" ; disable heater 2 and free up the associated pin ;; Heater 3 M950 H3 C"nil" ; disable heater 2 and free up the associated pin ;; Heater 4 M950 H4 C"nil" ; disable heater 2 and free up the associated pin ;; Heater 5 M950 H5 C"nil" ; disable heater 2 and free up the associated pin ;; Heater 6 M950 H6 C"nil" ; disable heater 2 and free up the associated pin ;; Heater 7 (Used for BLTouch) M950 H7 C"nil" ; disable heater 2 and free up the associated pin ;;;;;;;;;;;;;;;; ;;; Fans ;;; ;;;;;;;;;;;;;;;; ;; (E3D v6) (Stock Fan) M950 F10 C"fan0" Q167 ; Create Fan 10, PWM Frequency 167Hz M106 P10 H1 T40 ; Turn on thermostatic control above 40°C. ;; (Tool 0) M950 F1 C"fan1" ; Create Fan 1, PWM Frequency 500Hz M106 P1 S0 H-1 ; Set Fan 1 to on (100%) and Thermostatic control off. ;; (Disabled) M106 P2 S0.3 I-1 F500 H-1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned off ;; (Disabled) M106 P8 S0.3 I-1 F500 H-1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned off ;;;;;;;;;;;;;;;;; ;;; Tools ;;; ;;;;;;;;;;;;;;;;; ;; Tool 0 - Extruder 0 - E3D v6 1 - Mounted on Railcore Ultralight Aluminium plate. M563 P0 D0 H1 F0 ; Define tool 0 -> Heater 1 -> Fan 0 G10 P0 X0 Y0 Z-1.67 ; Set tool 0 axis offsets (-1.47) G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C ;M556 S100 X0.3 Y0.2 Z-0.9 ; Axis Skew Compensation ;T0 ; Select the first tool. ; Automatic saving after power loss is not enabled M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-2 F1000" ; Set voltage thresholds and actions to run on power loss ; Custom settings are not configured M375 M501
Homeall.g
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v2 on Fri Dec 21 2018 00:10:22 GMT-0800 (Pacific Standard Time) G91 ; relative positioning G1 Z5 F6000 H2 ; lift Z relative to current position ; Tool changer we want to home Y first to pull away from tools. ; Home Y M98 P"homey.g" ; Home X M98 P"homex.g" ; Home Z M98 P"homez.g" G90 ; absolute positioning G1 X200 Y200 F6000 ; Move to center of bed. ;Load height map from file G29 S1
homex.g
; homex.g ; called to home the X axis ; Time) G91 ; relative positioning G1 Z5 F6000 H2 ; lift Z relative to current position G1 X-430 F1800 H1 ; move quickly to X axis endstop and stop there (first pass) G1 X5 F6000 ; go back a few mm G1 X-430 F360 H1 ; move slowly to X axis endstop once more (second pass) G1 Z-5 F6000 H2 ; lower Z again G1 F6000 ; Set movement speed G90 ; absolute positioning
homey.g
; homey.g ; called to home the Y axis ; G91 ; relative positioning G1 Z5 F6000 H2 ; lift Z relative to current position G1 H1 Y-405 F1800 ; move quickly to Y axis endstop and stop there (first pass) G1 Y5 F6000 ; go back a few mm G1 H1 Y-405 F360 ; move slowly to Y axis endstop once more (second pass) G1 Z-5 F6000 H2 ; lower Z again G1 F6000 ; Set movement speed G90 ; absolute positioning
homez.g
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v2 on Fri Dec 21 2018 00:10:22 GMT-0800 (Pacific Standard Time) G91 ; relative positioning G1 Z5 F6000 H2 ; lift Z relative to current position G90 ; absolute positioning ; Z-Axis probe likely triggers beyond tool height. ; If we have an active tool we need to drop it now. if state.currentTool >= 0 M28 "/sys/tprevious.g" T{state.currentTool} M29 M98 P"/sys/tactive.g" > null ; Delete the register file so we don't try to dock again. M30 "/sys/tactive.g" G1 X200 Y200 F6000 ; go to first probe point G30 ; home Z by probing the bed ;; Points are not related to bed coordinates, but rather probe coordinates. ;; 2 Point G30 P0 X29 Y200 Z-9999 ; Left Center G30 P1 X373 Y200 Z-9999 S2 ; Right Center ; Load previous tool M98 P"/sys/tprevious.g" M30 "/sys/tprevious.g"
M122
M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.2.2 running on Duet WiFi 1.02 or later + DueX5 Board ID: 08DGM-9T6BU-FG3S8-6J1F8-3SJ6S-1BL7H Used output buffers: 3 of 24 (20 max) === RTOS === Static ram: 23460 Dynamic ram: 74672 of which 64 recycled Never used RAM 13884, free system stack 106 words Tasks: NETWORK(ready,182) HEAT(blocked,294) DUEX(blocked,31) MAIN(running,401) IDLE(ready,20) Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:18:21 ago, cause: software Last software reset at 2021-03-14 12:53, reason: User, GCodes spinning, available RAM 13884, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU temperature: min 42.8, current 43.2, max 44.4 Supply voltage: min 24.1, current 24.1, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: position 80500, standstill, SG min/max 43/214 Driver 1: position 0, standstill, SG min/max 61/203 Driver 2: position 9652, standstill, SG min/max 0/143 Driver 3: position 12300, standstill, SG min/max not available Driver 4: position 0, standstill, SG min/max not available Driver 5: position 0, standstill, SG min/max 0/102 Driver 6: position 0, standstill, SG min/max not available Driver 7: position 0, standstill, SG min/max not available Driver 8: position 0, standstill, SG min/max not available Driver 9: position 0, standstill, SG min/max 0/96 Driver 10: position 0 Driver 11: position 0 Date/time: 2021-03-14 13:12:16 Cache data hit count 1376850460 Slowest loop: 41.58ms; fastest: 0.18ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 1.5ms, write time 27.3ms, max retries 0 === Move === DMs created 83, maxWait 201351ms, bed compensation in use: mesh, comp offset 0.000 === MainDDARing === Scheduled moves 48, completed moves 48, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 Heater 0 is on, I-accum = 0.0 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 106.30ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.25 WiFi MAC address cc:50:e3:14:e3:17 WiFi Vcc 3.33, reset reason Turned on by main processor WiFi flash size 4194304, free heap 26528 WiFi IP address 192.168.0.* WiFi signal strength -45dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0 === Filament sensors === Extruder 0: pos 1.76, errs: frame 0 parity 0 ovrun 0 pol 0 ovdue 0 === DueX === Read count 1, 0.05 reads/min
M98 P"config.g"
M98 P"config.g" Error: in file macro line 14 column 29: M551: string too long HTTP is enabled on port 80 FTP is disabled TELNET is disabled Error: in file macro line 32 column 22: M350: array too long, max length = 1 Error: in file macro line 68: M591: parameter 'D' too high Error: Fan number 2 not found Error: Fan number 8 not found Warning: the height map was loaded when the current Z=0 datum was not determined probing. This may result in a height offset. Warning: Heater 0 appears to be over-powered. If left on at full power, its temperature is predicted to reach 241C Warning: Heater 1 appears to be over-powered. If left on at full power, its temperature is predicted to reach 1000C
-
You've got some problems in your config.g to sort out.
M98 P"config.g" Error: in file macro line 14 column 29: M551: string too long
Password command is missing a closing quote "
Error: in file macro line 32 column 22: M350: array too long, max length = 1
You define 2 Extruder drives but only have values for 1 extruder.
Error: in file macro line 68: M591: parameter 'D' too high
You've got pressure advance for two extruder drives, but only a single extruder was properly configured.
Error: Fan number 2 not found Error: Fan number 8 not found
Phantom fans.
Warning: the height map was loaded when the current Z=0 datum was not determined probing. This may result in a height offset.
Remove the M375 at the end of config.g. You should only load the heightmap after you've defined Z0 by probing.
Warning: Heater 0 appears to be over-powered. If left on at full power, its temperature is predicted to reach 241C Warning: Heater 1 appears to be over-powered. If left on at full power, its temperature is predicted to reach 1000C
These are just warnings about what your max temps could be in a runaway condition.
-
Okay. I changed some of the things in the config.g, but the change I made to homeall.g appears to have resolved the problem. Apparently somewhere along the line homing the tool coupler axis was removed from the scene. Odd as it would do it with a G28 or clicking the home all button.
homeall.g
; homeall.g ; called to home all axes ; G91 ; relative positioning G1 Z5 F6000 H2 ; lift Z relative to current position ; Tool changer we want to home Y first to pull away from tools. ; Home Y M98 P"homey.g" ; Home X M98 P"homex.g" ; Home Z M98 P"homez.g" ; Home C (Tool Coupler) M98 P"homec.g" G90 ; absolute positioning G1 X200 Y200 F6000 ; Move to center of bed. ;Load height map from file G29 S1
I wasn't sure where the best place to move the M375 command. But I placed it in the movez.g so it executes after a Z homing.
homez.g
; homez.g ; called to home the Z axis ; G91 ; relative positioning G1 Z5 F6000 H2 ; lift Z relative to current position G90 ; absolute positioning ; Z-Axis probe likely triggers beyond tool height. ; If we have an active tool we need to drop it now. if state.currentTool >= 0 M28 "/sys/tprevious.g" T{state.currentTool} M29 M98 P"/sys/tactive.g" > null ; Delete the register file so we don't try to dock again. M30 "/sys/tactive.g" G1 X200 Y200 F6000 ; go to first probe point G30 ; home Z by probing the bed ;; Points are not related to bed coordinates, but rather probe coordinates. ;; 2 Point G30 P0 X29 Y200 Z-9999 ; Left Center G30 P1 X373 Y200 Z-9999 S2 ; Right Center ; Load previous tool M98 P"/sys/tprevious.g" M30 "/sys/tprevious.g" ; Load Height Map M375
-
Okay. I remember removing it from the homeall.g on purpose as I can't check to see if my tool is loaded upon startup without being able to check for the existence of my tactive.g file. My understanding is this ability to check for a file existence within the system will be coming in a future firmware update...
I'm just going to have to be cautious. This is why I tell the system to unload the tools at the end of prints. Some tools are going to be taller than my probe and it could be quite disastrous if I can't be sure how the system responds.
-
Well, I jumped too soon. Still having the problem. It's not consistent but does happen more so after a print. I have had it happen just after a restart as well.
I'm going to keep messing around to see if I can get some consistency...
-
It's still not clear to me when and where those errors are being thrown.
-
I can understand the confusion as it's a head scratcher for me.
I still need more testing, but so far this appears to only happen when running a Job.
It appears to occur when I run G28.
TC-Basics.gcode
T-1 G28 ; home all axes
and I will get different results. I would expect if it was related to a short, there be some indication of what the system was detecting.
If I run G28 from the web console it executes, so far every time.
Only seems bomb when I run it within a Job.
-
Here is the output from the console when I run those two lines of code within a job:
3/14/2021, 3:45:09 PM Printing paused at X200.0 Y200.0 Z6.0 C123.0 3/14/2021, 3:45:05 PM Resume state saved Duet3D rotating magnet filament monitor v3 on pin e0stop, enabled, sensitivity 25.50mm/rev, allow 40% to 180%, check every 3.0mm, version 3, mag 133 agc 102, measured sensitivity 24.86mm/rev, min 98% max 102% over 258.5mm Error: Attempting to extrude with no tool selected. 3/14/2021, 3:44:58 PM Leadscrew adjustments made: -0.045 0.001, points used 2, (mean, deviation) before (-0.022, 0.014) after (0.000, 0.000) Warning: Macro file /sys/tprevious.g not found 3/14/2021, 3:44:21 PM Warning: Macro file /sys/tactive.g not found 3/14/2021, 3:44:02 PM M32 "0:/gcodes/TC-Basics.gcode" File 0:/gcodes/TC-Basics.gcode selected for printing
-
@Gamefanatic3D said in Attempting to extrude with no tool selected.:
; Home C (Tool Coupler) M98 P"homec.g"
What's in homec? And how bout your tool change files?
Can you also post the first 50 lines or so of a sliced gcode file so we can see what it's doing during a job?
-
Homec is for the E3D Tool Changer motor.
homec.g
M400 G91 ; Relative coordinates ; M913 C80 ; Crash fallback: Set C motor to lower current, but <= 80 was unstable low. G1 H1 C10 F5000 ; Space min end or stall at max end, needed for acceleration towards near min end. G1 H1 C-1000 F5000 ; Try to stall at min end, reset to min-axis M203 = 0 coordinate M400 G92 C0 ; Crash fallback: coordinates reset to 0 in case stall did not reset to min-axis M203 coordinate G90 ; Back to absolute coordinates M913 C100 ; Set C motor 100% current ;Open Coupler M98 P"/macros/Tools/Tool-Unlock"
Tool-UnLock
; Unlock tool M400 M906 C600 ; Raise motor current a bit. M400 if !move.axes[3].homed && move.axes[3].userPosition==0 ; We are assuming a tool is loaded and we want to unload it. ; G1 C-83 F2500 H1 else G1 C123 F2500 H1 M400 M906 C400 ; Put it back to normal M400
-
Tpre tpost tfree?