Wrong return point after tool change



  • Hi, I am doing first prints with my new tool changer but i dont understand the behavior of the tool change procedure. The new tool allways returns to the point the other tool left the print and contaminates it with its color. It is doing it automatically, I have no such command in my tpost file. I want it to go directly to the point it is supposed to start printing... is there a wa to achieve that?


  • Moderator

    Can you post your config.g and tool change files? What slicer are you using?



  • Sure, would be awsome if you find something. I am a little under time pressure here šŸ˜‰

    ; Configuration file for Duet WiFi (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Sep 25 2020 15:34:47 GMT+0200 (MitteleuropƤische Sommerzeit)
    
    ; General preferences
    G90                                            ; send absolute coordinates...
    M83                                            ; ...but relative extruder moves
    M550 P"Hydra TC One"                           ; set printer name
    M669 K1                                        ; select CoreXY mode
    
    ; Network
    M551 P"LivMatS"                                ; set password
    M540 PBE:78:4F:38:52:3A
    M552 S1 P0.0.0.0	                           ; enable network and set IP address
    M553 P255.255.255.0                            ; set netmask
    M554 P10.5.154.254                            ; set gateway
    M586 P0 S1                                     ; enable HTTP
    M586 P1 S0                                     ; disable FTP
    M586 P2 S0                                     ; disable Telnet
    
    ; Drives
    M569 P0 S1                                     ; physical drive 0 goes forwards
    M569 P1 S1                                     ; physical drive 1 goes forwards
    M569 P2 S0                                     ; physical drive 2 goes backwords
    M569 P3 S1                                     ; physical drive 3 goes forwards
    M569 P5 S1                                     ; physical drive 3 goes forwards
    M569 P6 S1                                     ; physical drive 3 goes forwards
    
    M584 X0 Y1 Z2 C3 E5:6                              ; set drive mapping
    M350 X16 Y16 Z16 C16 E16:16 I1                        ; configure microstepping with interpolation
    M92 X100.00 Y100.00 Z400.00 C1312.36 E370.00:370.00          ; set steps per mm
    
    M566 X900.00 Y900.00 Z12.00 C900.00 E120:120           ; set maximum instantaneous speed changes (mm/min)
    M203 X6000.00 Y6000.00 Z1000.00 C600.00 E1200:1200        ; set maximum speeds (mm/min)
    M201 X500.00 Y500.00 Z20.00 C100.00 E250:250           ; set accelerations (mm/s^2)
    M906 X1200 Y1200 Z1450 C1200 E1200:1200 I100               ; set motor currents (mA) and motor idle factor in per cent
    ;M84 S30                                        ; Set idle timeout
    
    ; Axis Limits
    M208 X0 Y0 Z-1 C0 S1                               ; set axis minima
    M208 X305 Y260 Z350 C50 S0                         ; set axis maxima
    ;M208 C50 S0				                         ; set axis maxima
    
    ; Endstops
    M574 X1 S3                                     ; configure sensorless endstop for low end on X
    M574 Y2 S3                                     ; configure sensorless endstop for high end on Y
    M574 Z1 S2           			               ; configure sensorless endstop for low end on Z
    M574 C1 S3                                     ; configure sensorless endstop for low end on U
    M915 X R1 F0 S4
    M915 Y R1 F0 S4
    ;M915 Z R1 F0 S3
    M915 C R1 F0 S4
    
    ; Z-Probe
    M558 P1 C"!zprobe.in" R1.0 H3.0 T4000 F200 A6 S0.02
    ;M558 P0 H5 F120 T6000                         ; disable Z probe but set dive height, probe speed and travel speed
    M557 X{move.axes[0].min + 10}:{move.axes[0].max - 10} Y{move.axes[1].min + 10}:{move.axes[1].max -10} P3                      ; define mesh grid
    G31 P500 Z0.0
    
    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"bedheat" T0                          ; create bed heater output on bedheat and map it to sensor 0
    M307 H0 A176.8 B1 C500.5 D1.7 S1.00 V24.1
    M140 H0                                        ; map heated bed to heater 0
    M143 H0 S120                                   ; set temperature limit for heater 0 to 120C
    
    M308 S1 P"exp.thermistor3" Y"thermistor" T100000 B4138  ; configure sensor 1 as thermistor on pin e0temp
    M950 H1 C"duex.e2heat" T1                           ; create nozzle heater output on e0heat and map it to sensor 1
    M307 H1 A480.5 B0 C213.4 D5.7 S1.00 V24.1
    
    M308 S2 P"exp.thermistor4" Y"thermistor" T100000 B4138  ; configure sensor 1 as thermistor on pin e0temp
    M950 H2 C"duex.e3heat" T2                           ; create nozzle heater output on e0heat and map it to sensor 1
    M307 H2 A480.5 B0 C213.4 D5.7 S1.00 V24.1
    
    ; Fans
    M950 F0 C"fan0" Q500                           ; create fan 0 on pin fan0 and set its frequency
    M106 P0 S0 H-1                                 ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"duex.fan3" Q500                           ; create fan 1 on pin fan1 and set its frequency
    M106 P1 S1 H1 T45                              ; set fan 1 value. Thermostatic control is turned on
    M950 F2 C"duex.fan4" Q500                           ; create fan 1 on pin fan1 and set its frequency
    M106 P2 S1 H2 T45                              ; set fan 1 value. Thermostatic control is turned on
    
    ; Tools
    M563 P0 D1 H1 F0                               ; define tool 0
    G10 P0 X0 Y0 Z0                                ; set tool 0 axis offsets
    G10 P0 R0 S0                                   ; set initial tool 0 active and standby temperatures to 0C
    
    M563 P1 D0 H2 F0                               ; define tool 0
    ;G10 P1 X0 Y0 Z0                                ; set tool 0 axis offsets
    G10 P1 R0 S0                                   ; set initial tool 0 active and standby temperatures to 0C
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    M950 J0 C"^!zstop"
    
    M501                                           ; load saved parameters from non-volatile memory
    T0 P0
    T1 P0
    T-1 P0                                         ; deselect tool
    
    G29 S1
    
    if sensors.gpIn[0].value == 1
    	M291 P"Attached tool detected - please select in DWC" R"Warning" S2
    
    ; tfree1.g
    ; called when tool 1 is freed
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Sep 25 2020 15:34:48 GMT+0200 (MitteleuropƤische Sommerzeit)	
    
    G1 C0 F600
    
    G91
    G1 Z5 F1000
    G90
    
    G53 G1 X47.7 Y0 F4000
    
    M400
    
    M208 S1 Y-70
    
    G1 Y-70 F3000
    
    M98 P"release_tool.g"
    
    M208 S1 Y0
    
    
    ; tpost1.g
    ; called after tool 1 has been selected
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Sep 25 2020 15:34:48 GMT+0200 (MitteleuropƤische Sommerzeit)
    ; Wait for set temperatures to be reached
    
    if sensors.gpIn[0].value == 1 && state.previousTool == -1 && state.status != "processing"
    	abort "Tool selected without change procedure"   
        
    G1 C0 F600
    
    G91
    G1 Z5 F1000
    G90
    
    G1 X47.7 Y0 F4000
    
    M208 S1 Y-70
    
    G1 Y-70 F3000
    
    M98 P"pick_tool.g"
    
    G1 Y0 F4000
    
    M208 S1 Y0
    ;M208 S1 Z{-tools[0].offsets[2]}
    
    if sensors.gpIn[0].value != 1
    	M25
    
    if state.status == "processing" && sensors.gpIn[0].value == 1
    	M98 P"wipe_tool.g"
    	G1 R2 X0 Y0 Z20 F4000
    	
    


  • @Phaedrux it is supposed to go back 20mm above the print and then it should go directly to the new starting point


  • Moderator

    @TC said in Wrong return point after tool change:

    M563 P1 D0 H2 F0 ; define tool 0 ;G10 P1 X0 Y0 Z0 ; set tool 0 axis offsets

    Why do you have the tool offset for T1 commented out?

    @TC said in Wrong return point after tool change:

    G29 S1

    You should not load the heightmap in config.g because your z0 datum has not been established at power on. This can lead to unintended offsets.

    Can you also share the macros called in your tool change files?

    Also please the results of M122 to show me hardware and firmware combo.

    Can you also describe what your conditional gcode is doing?


  • administrators

    @TC said in Wrong return point after tool change:

    I want it to go directly to the point it is supposed to start printing... is there a wa to achieve that?

    Not currently, because when the slicer issues the T command, the firmware doesn't know where that point will be, or whether the slicer will issue a travel move at all before printing again.

    It's usual to retract some filament when a tool has finished being used (in the tfree file), and re-prime it just before printing again (in the tpost file). If there has been significant oozing, then you may need to wipe the tool after re-priming.



  • @dc42 Ah thanks David. It would be great if the firmware could just know the next G1 command allready in the tpost.g file. That would solve the problem. I am doing it as you described. I even have a cleaning station but I am printing Pla combined with extremly flexible TPU so the ozzing is a serious problem.



  • @dc42 But is there a way to stop the printer from going back to restore point automatically?


  • administrators

    @TC said in Wrong return point after tool change:

    @dc42 Ah thanks David. It would be great if the firmware could just know the next G1 command allready in the tpost.g file. That would solve the problem. I am doing it as you described. I even have a cleaning station but I am printing Pla combined with extremly flexible TPU so the ozzing is a serious problem.

    To minimize oozing I suggest the following in the tpost#.g file:

    • prime nozzle
    • wipe nozzle
    • retract
    • move explicitly to just above the resume point using G1 R2 X0 Y0 Z2
    • prime (i.e. undo the retract)

    This won't do exactly what you are looking for, but at least it will delay the reprime until after moving to the resume point.

    Are you using firmware retraction? If so then I could add a feature whereby if a G10 command occurs during a tpost file and it is not undone with G11, then G11 is inserted immediately before the first extruding move.



  • @dc42 Ah that is a nice idea. What would be the best way to store this information about a former retraction in RRF 3.1.1?

    And are there more than 3 restore points? if so I could save the last position for each tool so it could go back to where this exact tool left the print last time.


Log in to reply