Toolchange position in RRF 3.5 beta 4
-
Due to issues discussed here: https://forum.duet3d.com/topic/32528/duet3-mini-5-can-setup-drivers-erros?_=1686396603663 we switched to the current beta beta 3 first and now beta 4.
On an IDEX tool change after switching back to T0 positions are wrong and the tool thus crashes.In more detail (just an example):
-
Homing - T0 is now at X 160
-
Tool change to T1 (U now becomes X) - works fine
T0 gets parked at X-39 (from tpre1.g) and T1 moves in to X (or U) 332 for cleaning -
Tool change back to T0
T1 gets parked at X (or U) 359 and T0 is supposed to move right to X-11 for cleaning but moves left and crashes in DWC you can shortly see positions being restored to X160 from homing
It looks like moves inside the tool change files don't update the actual position anymore.
Worked fine in 3.4.5 so far and will probably go back again now.
If I do the same thing but move T0 to X-39 manually before switching to T1 it works fine when switching back but after another round position X-11 is restored and T0 cleans at X-39 instead of X-11 when I switch back to T1 again it tries to move left again and crashes again (but shorter) -
-
@benecito please post the contents of config.g and all your tool change files.
-
@dc42
config.g;############################## ;###### Emergency Stop ###### ;############################## M950 J3 C"!0.io6.in" ; configure external trigger 3 (J3) and invert input M581 P3 T0 S0 R0 ; map to trigger #0 (T0) (calls emergency stop), trigger on falling edge (S0) and trigger always (R0) ;################################# ;###### General preferences ###### ;################################# G90 ; Send absolute coordinates... M83 ; ...and relative extruder moves ;#################### ;###### Drives ###### ;#################### M569 P0.0 S0 ; physical drive 0.0 goes backwards (X_left) M569 P0.1 S1 ; physical drive 0.1 goes forwards (X_right or U) M569 P0.2 S1 ; physical drive 0.2 goes forwards (Y_left) M569 P0.3 S0 ; physical drive 0.3 goes backwards (Y_right) M569 P0.5 S1 ; physical drive 0.5 goes forwards (E0) M569 P0.6 S1 ; physical drive 0.6 goes forwards (E1) ;M569 P1.3 S1 ; physical drive 0.5 goes forwards (E0) ;M569 P1.4 S1 ; physical drive 0.6 goes forwards (E1) M569 P1.1 S1 ; physical drive 1.1 goes forwards (Z) M584 X0.0 U0.1 Y0.2:0.3 Z1.1 E0.5:0.6 P4 ; driver mapping ;M584 X0.0 U0.1 Y0.2:0.3 Z1.1 E1.3:1.4 P4 ; driver mapping M350 X16 U16 Y16 Z16 E16:16 I1 ; Configure microstepping with interpolation ;M350 I0 ; Configure microstepping without interpolation M92 X80 U80 Y80 Z1600 ; Set steps per mm M92 E685:685 ; NanoXtruder -> set steps per mm ;M92 E415.00 ; Xtruder -> set steps per mm ;M92 E690.00 ; Orbiter -> set steps per mm ;M92 E770.00 ; Orbiter (2.85mm) -> set steps per mm M566 X400 U400 Y400 Z100 E120 ; Set maximum instantaneous speed changes (mm/min) ;M566 X700 U700 Y700 Z100 E120 ; Set maximum instantaneous speed changes (mm/min) - fast mode M203 X50000 U50000 Y50000 Z600 E1000 ; Set maximum speeds (mm/min) M201 X5000 U5000 Y5000 Z100 E1200 ; Set accelerations (mm/s^2) M204 P1000 T2000 ; set print and travel accelerations (mm(s^2) M906 X1600 U1600 Y1400 Z1600 E900:900 I30 ; Set motor currents (mA) and motor idle factor in percent M84 S30 ; Set idle timeout ;######################### ;###### Axis Limits ###### ;######################### M208 X-39 U31 Y0 Z0 S1 ; Set axis minima M208 X290 U359 Y264 Z300 S0 ; Set axis maxima ;###################### ;###### Endstops ###### ;###################### M574 X1 S1 P"1.io2.in" ; configure active-high endstop for low end on X M574 U2 S1 P"1.io3.in" ; configure active-high endstop for high end on U (x_right) M574 Y2 S1 P"1.io4.in" ; configure active-high endstop for high end on Y ;##################### ;###### Z-Probe ###### ;##################### M558 K0 P8 C"^1.io6.in" H1 F100 T10000 R0.2 A3 B1 ; set Z probe 0 (K0) type to unfiltered switch (P8), the dive height (H_), speeds (F_), travel speed (T_), recovery time (R_), repetitions (A_) and to turn off heaters while probing (B_) M557 X15:300 Y30:230 P05:04 ; define mesh grid M558 K1 P8 A1 S0.2 C"1.io5.in" H5 F300 T3000 ; set z probe 1 (K1) type to unfiltered switch (P8), repetitions (A_), the dive height (H_), speeds (F_), Tolerance (S_) and travel speed (T_) ;##################### ;###### Heaters ###### ;##################### M308 S0 P"0.temp0" Y"thermistor" A"Bett" T100000 B4725 C7.06e-8 ; configure sensor 0 as thermistor M950 H0 C"0.out0" T0 ; create bed heater (H0) output and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C ;M570 H0 P60 T40 S3 ; Configurate Heater Fault Detection M308 S1 P"0.temp1" Y"thermistor" A"Links" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor M950 H1 C"0.out1" T1 ; create nozzle heater (H1) output and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S320 ; Set temperature limit for heater 1 to 320C M302 S150 ; set minimum extrusion temperature ;M570 H1 P60 T50 S3 ; Configurate Heater Fault Detection M308 S2 P"0.temp2" Y"thermistor" A"Rechts" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor M950 H2 C"0.out2" T2 ; create nozzle heater (H2) output and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H2 S320 ; Set temperature limit for heater 1 to 320C M302 S150 ; set minimum extrusion temperature ;M570 H2 P60 T50 S3 ; Configurate Heater Fault Detection M308 S10 P"0.io1.out+0.io1.in" Y"dht22" A"Chamber Temp[C]" ; configure DHT22 temperature sensor for the chamber M308 S11 P"S10.1" Y"dhthumidity" A"Chamber Hum[%]" ; configure DHT22 humidity sensor for the chamber ;M950 P0 C"1.out2" ; create chamber heater as on/off via a SSR M308 S12 P"0.io0.out+0.io0.in" Y"dht22" A"Filament Temp[C]" ; configure DHT22 temperature sensor for the filament station M308 S13 P"S12.1" Y"dhthumidity" A"Filament Hum[%]" ; configure DHT22 humidity sensor for the filament station M950 P1 C"1.out1" ; create filament station heater as on/off via a SSR ;################## ;###### Fans ###### ;################## M950 F0 C"1.out3" Q1000 ; create fan 0 (part cooling fan T0) and set its frequency M106 P0 C"Links" S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"0.out5" Q1000 ; create fan 1 (build chamber) and set its frequency M106 P1 C"Bauraum" S0 H-1 ; set fan 1 value. Thermostatic control is turned off M950 F2 C"1.out4" Q1000 ; create fan 2 (part cooling fan T1) and set its frequency M106 P2 C"Rechts" S0 H-1 ; set fan 2 value. Thermostatic control is turned off M950 F5 C"0.out3" Q1000 ; create fan 5 (hotend fan T0) and set its frequency M106 P5 S1 H1 T50 ; set fan 5 value. Thermostatic control is turned on M950 F6 C"0.out4" Q1000 ; create fan 6 (hotend fan T1) and set its frequency M106 P6 S0 H2 T50 ; set fan 6 value. Thermostatic control is turned on ;################### ;###### Tools ###### ;################### M563 P0 S"Links" D0 H1 F0 ; define tool 0 G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C M563 P1 S"Rechts" D1 H2 X3 F2 ; define tool 1 G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ;############################## ;###### Open Door Switch ###### ;############################## M950 J1 C"0.io4.in" ; configure external trigger 1 (J1) which is the front door and invert input M581 P1 T2 S1 R0 ; map to trigger #2 (T2) (calls trigger2.g), trigger on rising edge (S1) and trigger always (R0) ;############################ ;###### Filamentsensor ###### ;############################ ;M950 J4 C"!0.io2.in" ; left Filament Sensor ;M581 P4 T4 S1 R0 ; Configure trigger #4 (calls trigger4.g), trigger on rising edge and always (R0) for filament-sensor ;M591 D0 P3 C"1.io0.in" S1 R80:120 E3 A1 L26.02 M591 D0 P3 C"0.io2.in" S1 R80:120 E3 A1 L26.02 M950 J5 C"!0.io3.in" ; right Filament Sensor M581 P5 T5 S1 R0 ; Configure trigger #5 (calls trigger5.g), trigger on rising edge and always (R0) for filament-sensor ;################### ;###### LED's ###### ;################### M950 F8 C"0.out6" Q1000 ; LED chamber M950 F9 C"1.out5" Q1000 ; status lights red (fan 9) M950 F10 C"1.out6" Q1000 ; status lights green (fan 10) M950 F11 C"1.out0" Q1000 ; status lights blue (fan 11) M98 P"0:/macros/StatusLightYellow.g" ; set staus lights to yellow ;########################### ;###### Miscellaneous ###### ;########################### T0 P0 ; select first tool M400 ; wait for everything to be done (moves to finish) M501 ; read config-override
tfree0.g
; tfree0.g ; called when tool 0 is freed (which means it was selected and is now deselected) --- Step 1 of Toolchange M106 P0 S0 ; turn part cooling fan off
tfree1.g
; tfree1.g ; called when tool 1 is freed (which means it was selected and is now deselected) --- Step 1 of Toolchange M106 P0 S0 ; turn part cooling fan off
tpost0.g
; tpost0.g ; called after tool 0 is selected --- Step 3 of Toolchange M116 P0 S5 ; wait for tool 0 heaters to be within 5°C of operating temperature M98 P"clean0.g" ; clean nozzle M106 R2 ; turn part cooling fan on to last set value M208 Z0 S1 ; Set axis minima
tpost1.g
; tpost1.g ; called after tool 1 is selected --- Step 3 of Toolchange M116 P1 S5 ; wait for tool 1 heaters to be within 5°C of operating temperature M98 P"clean1.g" ; clean nozzle M106 R2 ; turn part cooling fan on to last set value M208 Z{tools[1].offsets[2]*-1} S1 ; Set axis minima
tpre0.g
; tpre0.g ; called after tool 1 is freed (which means it was selected and has been deselected) but before tool 0 is selected --- Step 2 of Toolchange G91 ; relative axis movement G1 Z{tools[1].offsets[2]*-1+2} F500 ; move bed down G90 ; absolute axis movement G1 U{move.axes[3].max} F15000 ; park the U carriage (which is tool 1) G1 F25000
tpre1.g
; tpre1.g ; called after tool 0 is freed (which means it was selected and has been deselected) but before tool 1 is selected --- Step 2 of Toolchange G91 ; relative axis movement G1 Z{tools[1].offsets[2]*-1+2} F500 ; move bed down G90 ; absolute axis movement G1 X{move.axes[0].min} F15000 ; park the X carriage (which is tool 0) G1 F25000
-
-
Can confirm exact same config works fine in 3.4.5
-
@benecito please provide macro files clean0.g and clean1.g and any other macros files that they call.
-
I've created https://github.com/Duet3D/RepRapFirmware/issues/886 for this. I believe it's fixed in the latest 3.5-dev source code.
-
@dc42 How's your work with input shaping on short segments coming along?
-
@ctilley79 one issue per thread please.
-
@dc42 my apologies