@Phaedrux I thought about that line ( and the"Added lastStopHeight to the Z probe object model") but assumed that the Z Max would be when the bed was at its lowest extent: ie the biggest object one could print. After all, when the toolchanger does a HomeZ there is no tool in the toolhead, the offset of the tool would be irrelevant.
I noticed the problem because I was trying to get a Hermera in T3 running reliably, the offset from Tool 0 seemed to change every time the tool was deployed and I hoped the software upgrade might be part of the solution.
I can now confirm that the last attempt on 3.2/3.2.2 broke the Z homing microswitch...but luckily E3D have recently started selling them in the shop!
Config.g
Configuration file for Duet WiFi / Ethernet running RRF3 on E3D Tool Changer
; 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
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
; 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 Titan
M569 P6 S1 ; Drive 6 E3 Hermera Direct Drive same direction as mirror Titan
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 ; Set axis maxima & minima
;M92 X100 Y100 Z1600 C200 E834:834:834:834 ; Set steps per mm assuming x16 microstepping
M92 X100 Y100 Z1600 C200 E834:834:834:409 ; Set steps per mm assuming x16 microstepping Hermera (409), Titan(834)
M350 E16:16:16:16 I1 ; Configure microstepping with interpolation (extruder)
M350 C16 I1 ; Configure microstepping with interpolation (Coupler)
M350 X16 Y16 Z16 I1 ; Configure microstepping with interpolation (Axes)
M566 X400 Y400 Z80 C2 E200:200:200:200 ; Set maximum instantaneous speed changes (mm/min)
M203 X35000 Y35000 Z1200 C10000 E5000:5000:5000:5000 ; Set maximum speeds (mm/min)
M201 X6000 Y6000 Z400 C500 E2500:2500:2500:2500 ; Set accelerations (mm/s^2)
M906 X2000 Y2000 Z1330 C500 E1600:1600:1600:940 I30 ; Set motor currents (mA) and motor idle factor in percent HERMERA 940 mA (see dozuki hermera extruder assembly guide S5
M84 S120 ; Set idle timeout
; Endstops
M574 X1 Y1 S3 ; Set X / Y endstop stall detection
M574 Z0 ; No Z endstop
M574 C1 S3 ; Stall detect coupler at low end of its range
; Z probe
M558 P8 C"zstop" 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
;Stall Detection
M915 C S6 F0 H200 R4700 ; Coupler
;Stall Detection
M915 X Y S3 F0 H400 R4700 ; X / Y Axes
; Heaters
M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 C0 ; Set thermistor
M950 H0 C"bedheat" T0 ; Bed heater
M143 H0 S225 ; Set temperature limit for heater 0 to 225C
M308 S1 P"e0temp" Y"thermistor" A"T0" T100000 B4725 C7.06e-8 ; Set thermistor [limited to 285C before damage]
M950 H1 C"e0heat" T1 ; Extruder 0 heater
M143 H1 S285 ; Set temperature limit for heater 1 to 285C [300C]
M308 S2 P"e1temp" Y"thermistor" A"T1" T100000 B4725 C7.06e-8 ; Set thermistor
M950 H2 C"e1heat" T2 ; Extruder 1 heater
M143 H2 S285 ; Set temperature limit for heater 2 to 285C [300C]
M308 S3 P"e2temp" Y"thermistor" A"T2" T100000 B4725 C7.06e-8 ; Set thermistor
M950 H3 C"duex.e2heat" T3 ; Extruder 2 heater
M143 H3 S285 ; Set temperature limit for heater 3 to 285 [300C]
M308 S4 P"e3temp" Y"thermistor" A"T0" T100000 B4725 C7.06e-8 ; Set thermistor (v6 and Hermera)
M950 H4 C"duex.e3heat" T4 ; Extruder 3 heater
M143 H4 S285 ; Set temperature limit for heater 4 to 285 [300C]
; Tools
M563 P0 S"T0" D0 H1 F2 ; 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 F4 ; 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 F6 ; 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" D3 H4 F8 ; 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
; 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 T70 ; T0 HE
M106 P2 S0 ; T0 PCF (part cooling fan)
M106 P3 S255 H2 T70 ; T1 HE
M106 P4 S0 ; T1 PCF
M106 P5 S255 H3 T70 ; T2 HE
M106 P6 S0 ; T2 PCF
M106 P7 S255 H4 T70 ; 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 :commented out to test interference with mesh compensation 31/10/20
;tool offsets
G10 P0 X-9 Y39 Z-5.23 ; T0 -5 -0.08
G10 P1 X-9.3 Y39.4 Z-4.55 ; T1 -5-0.35
G10 P2 X-9.45 Y39.22 Z-4.68 ; T2 =5 -0.21
;G10 P3 X-8.75 Y39.15 Z-4.63 ; T3 -5 -0.31 Titan V6
G10 P3 X19.92 Y43.25 Z-5.51 ; was x19.72, z=-5.36 squishing layer, but was fine previously?
; Bowden tubes are ~700mm long so PA almost certainly needs to be increased
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