Remapping Z drive when toolchange bug?
-
Hi all,
We are building a machine with 3 vertical axis: Z1 (drive 43), Z2 (drive 44), Z3 (drive 45).
When a tool is selected, we remap the Z driver using M584 to the correspondant drive i.e. M584 Z44 when tool 1 selected, so we always manage the Z axis as one.
This seems to work correctly. The problem comes when freeing the tool: the actual axis lifts correctly, but when calling M584 Z43 (which is the original Z axis that contains the probe), the new Z axis moves to the last position achieved by the old Z axis before lifting. It should stay at Z100.
We tried to stablish manually the position using G92 Z100, but didn't work.
Any ideas about how to fix it?
Find our tool config files below. Thanks in advance.
; tpre.1.g ; lift actual Z axis to top G91 ; relative positioning G1 Z105 F2000 ; lift Z to upper position G90 ; absolute positioning
; tpost1.g M584 Z44.0 ; remap Z drive to control the second Z axis
; tfree1.g G91 ; absolute positioning G1 Z105 F2000 ; lift Z to upper position G92 Z100 ; stablish actual position to Z100 M18 Z M584 Z43.0 ; original Z G92 Z100 ; stablish actual position to Z100
-
Which firmware version and Duet board?
-
@phaedrux Board: Duet 3 MB6HC with 1LC v1 extension board.
Firmware version: we are now on 3.4.0beta2, although we had the same behaviour on 3.3 version -
@phaedrux any ideas on this?
-
Potentially related to a similar sounding bug currently under investigation.
-
@carlosr it's standard behaviour that after a tool change, all coordinates get restored to the position immediately prior to the tool change. This is because we can't assume that the slicer will send a command to travel to the correct coordinates for all axes after it commands a tool change.
The way it does this is to save the position in restore point 2 at the start of the tool change, and restore the position to the contents of restore point 2 at the end. So you could modify the behaviour by using G60 within your tool change files to change the coordinates stored in restore point 2.