Bed mesh compensation not applied to all the tools



  • Hi everybody

    I'm using E3D Tool Changer :
    Board: Duet 2 Ethernet (2Ethernet)
    Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.1.1 (2020-05-19b2)

    I discovered that bed mesh compensation is not applied to tool 3.

    My gcode contains G29 S1 at the beginning of file.

    I see bed compensation on tool 2, but not on tool 3.

    This print uses only T2 and T3. Print starts with T2.

    What is the reason ? How could I solve it ?

    Thanks !


  • Moderator

    @sylvain said in Bed mesh compensation not applied to all the tools:

    I see bed compensation on tool 2, but not on tool 3.

    What do you mean by this? What makes you think it's not active? When you send M122 does it say compensation: mesh?

    Can you provide your config.g and tool change files?



  • I see Z screw turning when T2 is active, not turning when T3 is active.

    M122 says "Bed compensation in use: mesh, comp offset 0.000"

    Thanks !


  • Moderator

    @Phaedrux said in Bed mesh compensation not applied to all the tools:

    Can you provide your config.g and tool change files?

    The more config files you can share the better we can see what's going on with the gcode otherwise we're just guessing in the dark.



  • config.g

    ; Configurat; Configuration file for Duet WiFi / Ethernet
    ; executed by the firmware on start-up
    
    ; General preferences
    M111 S0 						; Debugging off
    G21 							; Work in millimetres
    G90 							; Send absolute coordinates...
    M83 							; ...but relative extruder moves
    M555 P2 						; Set firmware compatibility to look like Marlin
    
    ; Network
    ; Read https://duet3d.dozuki.com/Wiki/Gcode#Section_M587_Add_WiFi_host_network_to_remembered_list_or_list_remembered_networks
    M550 P"ToolChanger" 	; Set machine name
    M552 S1							  ; Enable Networking
    M586 P0 S1 						; Enable HTTP
    M586 P1 S0 						; Disable FTP
    M586 P2 S0 						; Disable Telnet
    
    M667 S1 						; Select CoreXY mode	
    
    ; Endstops
    ;M574 Y1 S3 						; Set X / Y endstop stall detection
    M574 X1 S1 P"^xstop"
    M574 Y1 S1 P"^ystop"
    M574 Z1 S2 						; Set Z endstop probe
    M558 P8 C"zstop" H5 F120 T10000 A5 S0.01 
    ;M558 P7 X0 Y0 Z2 H3 F360 I0 T20000 			; Set Z probe type to switch, the axes for which it is used and the dive height + speeds
    G31 P200 X0 Y0 Z0	 				; Set Z probe trigger value, offset and trigger height
    M557 X10:290 Y20:180 S40 				; Define mesh grid
    
    ; Drive direction
    M569 P0 S0 						; Drive 0 X
    M569 P1 S0 						; Drive 1 Y
    M569 P2 S1 						; Drive 2 Z
    M569 P3 S0 						; Drive 3 E0
    M569 P4 S0 						; Drive 4 E1
    M569 P5 S1 						; Drive 5 E2
    M569 P6 S1 						; Drive 6 E3
    M569 P7 S0 						; Drive 7 COUPLER
    M569 P8 S0 						; Drive 8 UNUSED
    M569 P9 S0 						; Drive 9 UNUSED
    
    M584 X0 Y1 Z2 C7 E3:4:5:6 				; Apply custom drive mapping
    M208 X-35:328.5 Y-49:243 Z0:300 C0:500 S0 		; Set axis maxima & minima
    ;M350 E8:8:8:8 C8 I0 					; Configure microstepping without interpolation
    M350 E16:16:16:16 I1
    M350 C8 I0
    
    M350 X16 Y16 Z16 I1					; Configure microstepping with interpolation
    M92 X100 Y100 Z1600 C100 E837:837:837:837		; Set steps per mm (old 417)
    M566 X400 Y400 Z8 C2 E2:2:2:2				; Set maximum instantaneous speed changes (mm/min)
    M203 X35000 Y35000 Z1200 C5000 E5000:5000:5000:5000	; Set maximum speeds (mm/min)
    M201 X6000 Y6000 Z400 C400 E2500:2500:2500:2500		; Set accelerations (mm/s^2)
    ;M906 X2000 Y2000 Z1330 C400 E1680:1680:1680:1680 I30 	; Set motor currents (mA) and motor idle factor in percent
    M906 X1000 Y1000 Z1330 C400 E900:900:900:900 I30 
    M84 S120 												; Set idle timeout
    
    ;Stall Detection
    M915 C S5 F0 H200 R4700					; Coupler
    
    ;Stall Detection
    ;M915 Y S5 F0 H400 R4700				; X / Y Axes
    
    ; Heaters
    ;xxxxxxxxxxxx
    ;M305 P0 T100000 B4138 C0 				; Set thermistor 
    ;M143 H0 S225 						; Set temperature limit for heater 0 to 225C
    
    ;M305 S"T0" P1 R4700 T100000 B4388 			; Set thermistor
    ;M143 H1 S300 						; Set temperature limit for heater 1 to 300C
    
    ;M305 S"T1" P2 R4700 T100000 B4388			; Set thermistor
    ;M143 H2 S300 						; Set temperature limit for heater 2 to 300C
    
    ;M305 S"T2" P3 R4700 T100000 B4388			;Set thermistor
    ;M143 H3 S300 						; Set temperature limit for heater 3 to 300C
    
    ;M305 S"T3" P4 R4700 T100000 B4388 			; Set thermistor 
    ;M143 H4 S300 						; Set temperature limit for heater 4 to 300C
    ;xxxxxxxxxxxx
    
    ; Heaters RFF3
    
    M308 S0 P"bedtemp" Y"thermistor" A"Bed" T100000 B4138 C0   ; Set thermistor 
    M950 H0 C"bedheat" T0                                      ; Bed heater
    M140 H0                                                    ; Add heater to bed after RRF3.01 RC10
    M143 H0 S120                                               ; Set temperature limit for heater 0 to 120C
    
    M308 S1 P"e0temp" Y"thermistor" A"T0" T100000 B4725 C7.06e-8 ; Set thermistor
    M950 H1 C"e0heat" T1                                         ; Extruder 0 heater
    M143 H1 S300                                                 ; Set temperature limit for heater 1 to 300C
    
    M308 S2 P"e1temp" Y"thermistor" A"T1" T100000 B4725 C7.06e-8 ; Set thermistor
    M950 H2 C"e1heat" T2                                         ; Extruder 0 heater
    M143 H2 S300                                                 ; Set temperature limit for heater 2 to 300C
    
    M308 S3 P"e2temp" Y"thermistor" A"T2" T100000 B4725 C7.06e-8 ; Set thermistor
    M950 H3 C"duex.e2heat" T3                                    ; Extruder 0 heater
    M143 H3 S300                                                 ; Set temperature limit for heater 3 to 300C
    
    ;M308 S4 P"e3temp" Y"thermistor" A"T3" T100000 B4725 C7.06e-8 ; Set thermistor
    ;M950 H4 C"duex.e3heat" T4                                    ; Extruder 0 heater
    ;M143 H4 S300                                                 ; Set temperature limit for heater 4 to 300C
    
    
    ; Tools
    M563 P0 S"T0" D0 H1 					; Define tool 0
    ;G10 P0 X0 Y0 Z0 					; Reset tool 0 axis offsets
    G10 P0 R0 S0 						; Reset initial tool 0 active and standby temperatures to 0C
    
    M563 P1 S"T1" D1 H2 					; Define tool 1
    ;G10 P1 X0 Y0 Z0 					; Reset tool 1 axis offsets
    G10 P1 R0 S0 						; Reset initial tool 1 active and standby temperatures to 0C
    
    M563 P2 S"T2" D2 H3 					; Define tool 2
    ;G10 P2 X0 Y0 Z0 					; Reset tool 2 axis offsets
    G10 P2 R0 S0 						; Reset initial tool 2 active and standby temperatures to 0C
    
    M563 P3 S"T3" 					; Define tool 3
    ;G10 P3 X0 Y0 Z0 					; Reset tool 3 axis offsets
    G10 P3 R0 S0 						; Reset initial tool 3 active and standby temperatures to 0C
    
    ; Fans
    ;xxxxxxxxxxxx
    ;M106 P0 S0						; UNUSED
    ;M106 P1 S255 H1 T50					; T0 HE
    ;M106 P2 S0						; T0 PCF
    ;M106 P3 S255 H2 T50 					; T1 HE
    ;M106 P4 S0						; T1 PCF 
    ;M106 P5 S255 H3 T50 					; T2 HE 
    ;M106 P6 S0 						; T2 PCF
    ;M106 P7 S255 H4 T50					; T3 HE
    ;M106 P8 S0						; T3 PCF
    ;xxxxxxxxxxxx
    
    ; Fans RFF3
    ; Fan0 output is not used
    M950 F1 C"fan1"
    M950 F2 C"fan2"
    M950 F3 C"duex.fan3"
    M950 F4 C"duex.fan4"
    M950 F5 C"duex.fan5"
    M950 F6 C"duex.fan6"
    ;M950 F7 C"duex.fan7"
    ;M950 F8 C"duex.fan8"
    
    M106 P1 S255 H1 T50             ; T0 HE
    M106 P2 S0                      ; T0 PCF
    M106 P3 S255 H2 T50             ; T1 HE
    M106 P4 S0                      ; T1 PCF 
    M106 P5 S255 H3 T50             ; T2 HE 
    M106 P6 S0                      ; T2 PCF
    ;M106 P7 S255 H4 T50             ; T3 HE
    ;M106 P8 S0                      ; T3 PCF
    
    M593 F50						; cancel ringing at 50Hz (https://forum.e3d-online.com/threads/accelerometer-and-resonance-measurements-of-the-motion-system.3445/)
    
    M376 H15						; bed compensation taper
    ;https://forum.duet3d.com/topic/6800/doubts-about-mesh-bed-compensation-taper-height-solved
    
    ;tool offsets
    G10 P0 X-9.0	Y39.0	Z-4.8					; T0
    G10 P1 X-9.0	Y39.8	Z-4.8					; T1
    G10 P2 X-9.2	Y39.5	Z-4.8					; T2
    G10 P3 X-0.5	Y36.7	Z-35.26				; T3
    
    
    ;deselect tools
    T-1
    
    ;M572 D0 S0.2 						; pressure advance T0
    ;M572 D1 S0.2 						; pressure advance T1
    ;M572 D2 S0.2 						; pressure advance T2
    ;M572 D3 S0.2 						; pressure advance T3
    
    M950 J0 C"^duex.e2stop" ; assign duex.e2stop pin to sensors.gpIn[0], inverted and pull-up activated
    M950 J1 C"!^duex.e3stop" ; dock 0
    M950 J2 C"!^duex.e4stop" ; dock 1
    M950 J3 C"!^duex.e5stop" ; dock 2
    M950 J4 C"!^duex.e6stop" ; dock 3
    
    M950 S9 C"duex.pwm5" ;
    M280 P9 S0; initialization
    
    ;panel
    M575 P1 S1 B57600
    
    

    tfree :

    ; tfree2.g
    ; called when tool 2 is freed
    
    ;Drop the bed
    G91
    G1 Z4 F1000
    G90
    
    ;mesh levelling off
    G29 S2
    
    ;Purge nozzle
    ;M98 Ppurge.g
    
    ;Move In
    G1 Y170 F5000
    G53 G1 X212.9 F5000
    G53 G1 X212.9 Y200 F5000
    G53 G1 X212.9 Y220 F5000
    G53 G1 X212.9 Y240 F5000
    
    ;Open Coupler
    M98 P/macros/Coupler - Unlock
    
    ;fan off
    M106 P6 S0
    
    ;Move Out
    G53 G1 X212.9 Y175 F5000
    
    M400
    G4 P500
    
    
    

    tpre :

    ; tpre2.g
    ; called before tool 2 is selected
    
    ;Ensure no tool is selected
    ;T-1
    
    M400
    G4 P1000
    
    
    ;Unlock Coupler
    M98 P/macros/Coupler - Unlock
    
    ;Move to location
    G1 Y170 F5000
    G1 X212.9 F5000
    
    ;Move in
    G1 X212.9 Y230 F5000
    
    ;Collect
    G1 X212.9 Y240 F2500
    
    ;Close Coupler
    M98 P/macros/Coupler - Lock
    
    ;WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
    ;if you are using non-standard length hotends ensure the bed is lowered enough BEFORE undocking the tool!
    G91
    G1 Z4 F1000
    G90
    
    
    
    
    

    tpost

    ; tpost2.g
    ; called after tool 2 has been selected
    
    M400
    G4 P500
    
    
    
    ;heatup
    M116 P2
    
    ;;;;;;;
    ;Move Out
    ;G1 X212.9 Y150 F4000
    G1 Y150 F4000
    ;;;;;;;;
    
    
    ;prime nozzle
    ;M98 Pprime.g
    
    ;mesh levelling on
    G29 S1
    
    ;PCF fan on
    ;M106 P6 S255
    
    G1 R2 X5 Y5 F5000 ; Y.. ok pour north
    G1 R2 Z0 F1500
    G1 E0.4
    

  • Moderator

    Why is mesh levelling disabled in tfree and then reenabled in tpost?



  • This is default configuration of E3D Tool Changer bundle.


  • Moderator

    Can you try commenting out those lines? I'm not sure why it would be desirable to disable and re-enable mesh compensation during a tool change.



  • I already tried commenting all G29 in tfree and tpost wihtout success


  • Moderator

    Can you upload all of the tool files. (drag and drop into the post window show do it)



  • Job starts with T2, I see bed compensation running

    then T3 becomes active.
    gcode file :

    T3
    
    G91
    G1 Z5 F600
    G90
    

    As you can see I use G91 / G90 afteer T3 selection.
    Could this explain that after this bed compensation doesn't work ?

    Thanks


  • Moderator

    @sylvain said in Bed mesh compensation not applied to all the tools:

    As you can see I use G91 / G90 afteer T3 selection.
    Could this explain that after this bed compensation doesn't work ?

    I don't think so.

    I do think maybe there is a command to disable compensation in your tool changes, but I can't see the files to check.



  • Here it is.

    Board: Duet 2 Ethernet (2Ethernet)
    Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.1.1 (2020-05-19b2)

    tpost1.g tpost0.g tfree3.g tfree2.g tfree1.g tfree0.g tpre3.g tpre2.g tpre1.g tpre0.g tpost3.g tpost2.g

    I made severall tests again.

    I can see bed levelling on T2 (the fist tool used).
    When switched to T3, no bed levelling.

    Thanks !


  • Moderator

    Do you get any errors if you send M98 P"config.g"?



  • @sylvain said in Bed mesh compensation not applied to all the tools:

    Here it is.

    Board: Duet 2 Ethernet (2Ethernet)
    Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.1.1 (2020-05-19b2)

    tpost1.g tpost0.g tfree3.g tfree2.g tfree1.g tfree0.g config.g tpre3.g tpre2.g tpre1.g tpre0.g tpost3.g tpost2.g

    I made severall tests again.

    I can see bed levelling on T2 (the fist tool used).
    When switched to T3, no bed levelling.

    Thanks !

    G29 S1 is commented out (turned off) in your tpost3.g (and your tpost2.g you just uploaded!!!) whereas it is not commented out (turned on) in your tpost1.g.

    In addition to that, like @Phaedrux said, some of your tfree files have G29 S2 still active. Going from T0 to some other tool, you are disabling mesh compensation via tfree0.g, but then because it is G29 S1 is commented out in T2 and T3 it wont turn back on.


  • Moderator

    Tfree1 tfree0 still has

    ;mesh levelling off
    G29 S2

    And you've commented out all the G29 S1 to turn them on. Just remove all references to G29 in your tool files.



  • @Phaedrux said in Bed mesh compensation not applied to all the tools:

    M98 P"config.g"?

    => no error

    I will test with all G29 commented.

    But as I told you I only use T2 and T3.

    How could G29 in T0 or T1 could affect my print ?

    All the more the print starts with T2 and bed levelling is active for this first tool.

    Keep you updated !



  • @sylvain said in Bed mesh compensation not applied to all the tools:

    @Phaedrux said in Bed mesh compensation not applied to all the tools:

    M98 P"config.g"?

    => no error

    I will test with all G29 commented.

    But as I told you I only use T2 and T3.

    How could G29 in T0 or T1 could affect my print ?

    All the more the print starts with T2 and bed levelling is active for this first tool.

    Keep you updated !

    How high (in millimeters) is the object you are printing when the printer changes from T2 to T3?



  • The change to T3 is done at about 3 mm.

    I also thought at M376 H15

    but the bed levlling is stopped before.

    Thanks


  • Moderator

    You have T-1 in your config to deselect all tools, so perhaps that's when the tfree files are getting called.

    Removing all references should tell us.



  • T-1 and ALL G29 commented => same results... 😞

    If it could help, here is the part of gcode file when T3 is selected for the first time :

    G1 X199.790 Y94.848 E0.0216
    G1 X197.752 Y92.810 E0.1258
    G1 X198.247 Y92.810 E0.0216
    G1 X199.790 Y94.353 E0.0952
    G1 X199.790 Y93.858 E0.0216
    G1 X198.742 Y92.810 E0.0647
    G1 X199.237 Y92.810 E0.0216
    G1 X199.790 Y93.363 E0.0341
    G1 X199.790 Y92.868 E0.0216
    G1 X199.732 Y92.810 E0.0036
    G1 E-4.0000 F4200
    ; layer 7, Z = 2.167
    T3
    
    G91
    G1 Z5 F600
    G90
    
    G1 X200.600 Y107.666 
    ; feature outer perimeter
    ; tool H0.250 W0.010
    G1 Z6.667 F120
    G1 X99.205 Y91.805 F120
    G1 Z1.917 F120
    G1 X200.795 Y91.805 E0.1056 F300
    G1 X200.795 Y108.195 E0.0170
    G1 X99.205 Y108.195 E0.1056
    G1 X99.205 Y91.805 E0.0170
    

    When T2 is selected again after T3 bed levelling is running again.



  • @sylvain said in Bed mesh compensation not applied to all the tools:

    T-1 and ALL G29 commented => same results... 😞

    If it could help, here is the part of gcode file when T3 is selected for the first time :

    G1 X199.790 Y94.848 E0.0216
    G1 X197.752 Y92.810 E0.1258
    G1 X198.247 Y92.810 E0.0216
    G1 X199.790 Y94.353 E0.0952
    G1 X199.790 Y93.858 E0.0216
    G1 X198.742 Y92.810 E0.0647
    G1 X199.237 Y92.810 E0.0216
    G1 X199.790 Y93.363 E0.0341
    G1 X199.790 Y92.868 E0.0216
    G1 X199.732 Y92.810 E0.0036
    G1 E-4.0000 F4200
    ; layer 7, Z = 2.167
    T3
    
    G91
    G1 Z5 F600
    G90
    
    G1 X200.600 Y107.666 
    ; feature outer perimeter
    ; tool H0.250 W0.010
    G1 Z6.667 F120
    G1 X99.205 Y91.805 F120
    G1 Z1.917 F120
    G1 X200.795 Y91.805 E0.1056 F300
    G1 X200.795 Y108.195 E0.0170
    G1 X99.205 Y108.195 E0.1056
    G1 X99.205 Y91.805 E0.0170
    

    When T2 is selected again after T3 bed levelling is running again.

    I do not know, I'm sorry. It looks OK to me.

    Just conjecture, but G10 and the taper command couldn't possibly be causing this right? I see no reason for that to be the case...

    G10 P3 X-0.5	Y36.7	Z-35.26				; T3
    

    I recognize Z-35.26 is necessary.

    @sylvain could you try commenting out M376 H15?


  • Moderator

    @sebkritikel said in Bed mesh compensation not applied to all the tools:

    Just conjecture, but G10 and the taper command couldn't possibly be causing this right? I see no reason for that to be the case...
    G10 P3 X-0.5 Y36.7 Z-35.26 ; T3

    I recognize Z-35.26 is necessary.
    @sylvain could you try commenting out M376 H15?

    Worth a shot.

    Also, are you sure you've got G29 S1 enabled somewhere else now? Should be in the slicer start gcode or start.g at least.



  • Commenting M376 solved the issue !

    Thanks !



  • @sylvain said in Bed mesh compensation not applied to all the tools:

    Commenting M376 solved the issue !

    Thanks !

    Very interesting! @Phaedrux if this is truly the cause, I wouldn't say this is expected behavior correct? Expected behavior would be G10 tool offsets having no impacts on mesh taper?


Log in to reply