MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.26k stars 19.23k forks source link

[BUG] Latest bugfix won't compile due to excessive Z_Probe_Zmin and Zmax values #26417

Closed rq3 closed 9 months ago

rq3 commented 11 months ago

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

Yes, and the problem still exists.

Bug Description

The latest bugfix won't successfully compile due to a minor error in configuration.h:

define PROBE_OFFSET_ZMIN -30 // (mm)

define PROBE_OFFSET_ZMAX 30 // (mm)

default values are in excess of 20, so an error is thrown because sanity check specifies nothing larger than 20 is allowed.

Bug Timeline

new

Expected behavior

I expected a clean compile.

Actual behavior

Compile throws an error due to new, excessively large z probe offset values.

Steps to Reproduce

1) Compile latest Marlin bugfix under Vscode. 2) Observe error.

Version of Marlin Firmware

latest bugfix November 11, 2023

Printer model

Anycubic Predator

Electronics

stock, Trigorilla Pro with STM32F103

LCD/Controller

stock

Other add-ons

none

Bed Leveling

None

Your Slicer

None

Host Software

None

Don't forget to include

Additional information & file uploads

Configuration.zip

ellensp commented 11 months ago

In Marlin/src/inc/SanityCheck.h

PROBE_OFFSET_ASSERT("PROBE_OFFSET_ZMIN", PROBE_OFFSET_ZMIN, -20, 20); PROBE_OFFSET_ASSERT("PROBE_OFFSET_ZMAX", PROBE_OFFSET_ZMAX, -20, 20);

Added in https://github.com/MarlinFirmware/Marlin/pull/26267 commit https://github.com/MarlinFirmware/Marlin/pull/26267/commits/9186a73fc60ec1ae4d76e50e4218aa01038a2baf

Will trigger on all these Marlin provided example Configs

config/examples/delta/FLSUN/QQS-Pro/Configuration.h:#define PROBE_OFFSET_ZMIN -25 // (mm) config/examples/delta/FLSUN/Q5-nano_v2/Configuration.h:#define PROBE_OFFSET_ZMIN -40 // (mm) config/examples/delta/FLSUN/Q5-nano_v1/Configuration.h:#define PROBE_OFFSET_ZMIN -40 // (mm) config/examples/delta/Anycubic/Predator/Configuration.h:#define PROBE_OFFSET_ZMIN -30 // (mm) config/examples/delta/Anycubic/Predator/Configuration.h:#define PROBE_OFFSET_ZMAX 30 // (mm) config/examples/delta/Anycubic/Kossel/Configuration.h:#define PROBE_OFFSET_ZMIN -40 // (mm) config/examples/delta/Anycubic/Kossel Linear Plus/Configuration.h:#define PROBE_OFFSET_ZMIN -40 // (mm) config/examples/AnyCubic/Chiron/Configuration.h:#define PROBE_OFFSET_ZMIN -30 // (mm)

defaults in Marlin source Config files are -20, 20, So do not trigger this assert

CRCinAU commented 9 months ago

For what its worth, this same problem affects the X/Y offsets too.

Multiple users require offsets greater than 50mm, and setting higher will cause a build failure.

ellensp commented 9 months ago

yes these PROBE_OFFSET min and max setting are just a PITA from a user experience point of view

In my view the defaults should be enabled and set to

define PROBE_OFFSET_XMIN -X_BED_SIZE // (mm)

define PROBE_OFFSET_XMAX X_BED_SIZE // (mm)

define PROBE_OFFSET_YMIN -Y_BED_SIZE // (mm)

define PROBE_OFFSET_YMAX Y_BED_SIZE // (mm)

define PROBE_OFFSET_ZMIN -Z_MAX_POS // (mm)

define PROBE_OFFSET_ZMAX Z_MAX_POS // (mm)

Then if you wish to tie your hands up with reducing them, you can, but it is not the default.

NB this wont work currently, as bed sizes are defined after the PROBE_OFFSETS, so a reordering of the config file would be needed

CRCinAU commented 9 months ago

Tagging @thinkyhead for awareness / input.

ellensp commented 9 months ago

actually they are in Conditionals_post.h if not set in Configs, so setting the defaults to be full size is easy

ie

#if ANY(MESH_BED_LEVELING, HAS_BED_PROBE)
  #ifndef PROBE_OFFSET_ZMIN
    #define PROBE_OFFSET_ZMIN -Z_MAX_POS
  #endif
  #ifndef PROBE_OFFSET_ZMAX
    #define PROBE_OFFSET_ZMAX  Z_MAX_POS
  #endif
#endif
#if HAS_BED_PROBE
  #ifndef PROBE_OFFSET_XMIN
    #define PROBE_OFFSET_XMIN -X_MAX_POS
  #endif
  #ifndef PROBE_OFFSET_XMAX
    #define PROBE_OFFSET_XMAX  X_MAX_POS
  #endif
  #ifndef PROBE_OFFSET_YMIN
    #define PROBE_OFFSET_YMIN -Y_MAX_POS
  #endif
  #ifndef PROBE_OFFSET_YMAX
    #define PROBE_OFFSET_YMAX  Y_MAX_POS
  #endif
github-actions[bot] commented 7 months ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.