Skip to content

[BUG] Incorrect Offset handling for Dual Extruders plus ZProbe #24056

@JoeScotty

Description

@JoeScotty

Did you test the latest bugfix-2.0.x code?

Yes, and the problem still exists.

Bug Description

For my self made cartesian Printer (dual extruder, BLTouch, Rumba32 board, future extruderlift) I'm going to switch to Marlin. Therefore I have a kind of rudimentary test system for checking all basic features.
Regarding Offset handling there is probably a bug, if I didn't miss important settings:

Defined following positions for X Offsets (Y-Offsets are all set to 0):
ZProbe: -10
E0: 0
E1: 20

  • If E0 is active and E1 will be activated, the physical position moves -20mm. Coordinate pos will stay the same. Thats OK, also vice versa
  • If E0 is active and Probing is activated, the physical position moves +10mm. Coordinate pos will stay the same. Thats OK.
  • If E1 is active and Probing is activated, the physical position moves +10mm. Coordinate pos will stay the same. That's wrong, I expect to move +30mm

Same behaviour, if X-offsets are 0 and Y-offsets have ththe above values.

Bug Timeline

first try was 2.0.9.3. Don't know about earlier versions

Expected behavior

When switching from E1 to ZProbe, the movement should be (Offset(E1)-Offset(ZProbe)

Actual behavior

The offset difference between E0 and E1 seems not to be calculated correctly, when switching from E1 to ZProbe

Steps to Reproduce

Parameters:

#define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle
#define HOTEND_OFFSET_Y { 0.0, 0.00 }  // (mm) relative Y-offset for each nozzle
#define HOTEND_OFFSET_Z { 0.0, 0.00 }  // (mm) relative Z-offset for each nozzle

#define NOZZLE_TO_PROBE_OFFSET { -10, 0, 0 }

#define X_BED_SIZE 200
#define Y_BED_SIZE 200

// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS -20 
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS 190
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 200


M218 T1 X20.00 Y0.00 Z0.000 ; set hotend offset

Test sequence:

Boot up
Activate E0
G28 ; Z_Probe in center of bed.
G1 X0 Y100 ; E0 moves to physical position X=0
G30 X0 ; Move X+10, ZProbe now at physical pos X=0. Thats OK
G1 X0 100 ; Move X-10, E0 now at physical pos X=0. Thats OK
Activate E1 ; Move X-20, E1 now at physical pos X=0. Thats OK
G30 X0 Y100 ; Move X+10, but I expected it to move x+30

For this Movement the offset difference between E0 and E1, 20mm, seems to be forgotten.

Version of Marlin Firmware

bugfix-2.0.x

Printer model

self made cartesian

Electronics

Rumba32

Add-ons

BLTouch

Bed Leveling

ABL Bilinear mesh

Your Slicer

Prusa Slicer

Host Software

Repetier Host

Additional information & file uploads

configuration files.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions