-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add option for Z_SAFE_HOMING position to be unaffected by M206 #23069
Add option for Z_SAFE_HOMING position to be unaffected by M206 #23069
Conversation
I'd prefer that the safe homing position be set in machine (aka "native" or "raw") coordinates that are unaffected by workspace offsets, home offsets, etc., and that this should be consistent across builds. I don't really like adding an option that breaks consistency, especially for a behavior that should be well-defined. |
CC: @InsanityAutomation — Let's talk about reverting #19423 and finding a better solution for your use cases. |
I 1,000% disagree as a home offset should be a persistent home offset and a workspace / tool offset should be something different... I still firmly believe that the original function of applying it directly on homing to persist everywhere transparently was the correct application. The home offset is intended to be exactly what it says, You're offsetting the actual zero of the machine and everything should honor that. What people keep describing wanting is a tooling / workspace offset which is absolutely not the same as a home offset. A home offset should be used for example when a persistent fixed mounted plate is changed that modifies the trigger point of the end stop. It would be in the case of replacing the end stop itself and offsetting by the small difference to get to the exact same positioning that was there before, or in the case of a new hot end plate being mounted to get the tool exactly where it was before as a fixed permanent item. A tooling / workspace offset however is not expecting the trigger point for home to have changed, however is intending to offset the workspace based on the current application which is typical when finding your material zero on a CNC machine or laser etchers. This offset should honor existing soft end stops in the absolute positioning based on the physical switch as it is not expecting that there has been a physical underlying change that the offset is correcting. The inconsistent behavior and the lack of enforcing it to follow standards over the years has caused confusion on what they are supposed to be and I believe that is causing people to look forward to do something it's not. My belief is the correct resolution is to have M206 100% enforced to everything, and better document use of G54 / implement G52 in order to cover these situations. |
I was suspecting that I am using M206 wrong, and the explanation kinda makes sense. However:
CNC coordinate systems, if enabled, look like they should do the job, since G54 et al moved by G92 can be saved to EEPROM. They may even be more convenient if switching beds often, provided that LCD menu entries are added to switch between them, plus one to call What I'm saying, things could work the way InsanityAutomation described, and it probably would be for the best, but we aren't there yet. |
I just saw i never submitted what i started to type out the other day... M206 may or may not be desired to affect soft endstop position on the opposing end. That depends on the situation. We may be best off looking to modify the auto retract feature in order to get in line with some other standards (eg G10) and match RRF on M208 to configure the soft endstops. |
Note that https://marlinfw.org/docs/gcode/M206.html says about M206:
That seems wrong as for this use case there is G10/G54. I agree with InsanityAutomation: M206 should have a well defined purpose: to overwrite a single setting in the configuration. in this case probably
|
Notes on @DerAndere1 's post:
Just saying, universality and compatibility is a huge can of worms, not even specifically with Marlin but in general. I've long lost count of cases where some feature that I need is just a few lines of code (that I often write for myself when sources are available, like in this PR) but making it available to everyone is a huge pain or makes no sense. |
cc92a7a
to
2ded50b
Compare
80cd234
to
3d2b2ca
Compare
At this time, we could add an option to completely revert As for defining the safe home position and other calibration-related positions, we first need to say in the configuration whether a position is defined in terms of Native Machine Space or in terms of Cartesian Space. We then need to define whether the First, consider that the endstop positions are relative to a 0,0 bed corner, and they define the outermost bounds for motion. The 0,0 position is the outermost position for printing, and the bed size defines the other corners. All of these are defined in Native Machine Space, and workspace offsets don't move their physical positions, only their logical positions. If an endstop is moved, you should use That is worth a try, and may help with some leveling issues if |
627f8ef
to
20dea22
Compare
97117d0
to
5979aab
Compare
43e0584
to
6ad5711
Compare
52a9e5e
to
7e60d15
Compare
a71a62c
to
250fd60
Compare
40e1292
to
339773d
Compare
… into feature/bugfix-2.1.x * 'bugfix-2.1.x' of https://github.com/MarlinFirmware/Marlin: (252 commits) 🐛 Fix Anet ET4 SD_SS_PIN (MarlinFirmware#25492) [cron] Bump distribution date (2023-03-11) ✨ BTT Octopus Max EZ 1.0, SKR 3.0 / 3.0 EZ (MarlinFirmware#25387) [cron] Bump distribution date (2023-03-10) ✨ Z_SAFE_HOMING_POINT_ABSOLUTE (MarlinFirmware#23069) [cron] Bump distribution date (2023-03-09) 🔨 VSCode + Devcontainer support (MarlinFirmware#22420) 🔧 Update some config.ini options ✨ Extra Z Servo Probe options (MarlinFirmware#21427) [cron] Bump distribution date (2023-03-08) 🔧 Add DGUS_LCD_UI RELOADED conditions 🌐 DGUS Reloaded non-accented French (MarlinFirmware#25443) [cron] Bump distribution date (2023-03-07) 🌐 Update Turkish language 🧑💻 Script to make non-accented languages [cron] Bump distribution date (2023-03-06) 🌐 Update Turkish language (MarlinFirmware#25447) 🐛 Fix Flash EEPROM for STM32G0B1CB (MarlinFirmware#25469) 🐛 Fix apply_power for SPINDLE_SERVO (MarlinFirmware#25465) [cron] Bump distribution date (2023-03-05) ... Signed-off-by: Nick Snyder <nick@nicksnyder.is> # Conflicts: # config/ncksnydr/narungol/2.1/Configuration_adv.h
* [cron] Bump distribution date (2023-03-05) * 🐛 Fix apply_power for SPINDLE_SERVO (MarlinFirmware#25465) * 🐛 Fix Flash EEPROM for STM32G0B1CB (MarlinFirmware#25469) * 🌐 Update Turkish language (MarlinFirmware#25447) * [cron] Bump distribution date (2023-03-06) * 🧑💻 Script to make non-accented languages * 🌐 Update Turkish language Followup to MarlinFirmware#25447 * [cron] Bump distribution date (2023-03-07) * 🌐 DGUS Reloaded non-accented French (MarlinFirmware#25443) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🔧 Add DGUS_LCD_UI RELOADED conditions * [cron] Bump distribution date (2023-03-08) * ✨ Extra Z Servo Probe options (MarlinFirmware#21427) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🔧 Update some config.ini options * 🔨 VSCode + Devcontainer support (MarlinFirmware#22420) * [cron] Bump distribution date (2023-03-09) * ✨ Z_SAFE_HOMING_POINT_ABSOLUTE (MarlinFirmware#23069) * [cron] Bump distribution date (2023-03-10) * ✨ BTT Octopus Max EZ 1.0, SKR 3.0 / 3.0 EZ (MarlinFirmware#25387) BTT Octopus Max EZ V1.0 (STM32H723VE/ZE), SKR V3.0 / V3.0 EZ (STM32H723VG) * [cron] Bump distribution date (2023-03-11) * 🐛 Fix Anet ET4 SD_SS_PIN (MarlinFirmware#25492) * [cron] Bump distribution date (2023-03-12) * BTT Octopus … followup (MarlinFirmware#25495) Followup to MarlinFirmware#25387 * ⚡️ Exit from ISR on AVR already does sei Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * 🎨 Cosmetic stepper updates Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * ✨ MAX7219_DEBUG_MULTISTEPPING Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * ⚡️ Use hal_timer_t for timing vars Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * ⚡️ Use cached la_active state Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * ⚡️ Use AxisFlags for step_needed Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * [cron] Bump distribution date (2023-03-13) * ⚡️ Major shaper optimization Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * ⚡️ Set steps_per_isr in calc_multistep_timer_interval Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * 🔧 Expose MULTISTEPPING_LIMIT option Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * ⚡️ Optimize speed lookup for AVR Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * ⚡️ Update ISR cycle counts Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com> * 📺 DGUS_RELOADED 1.03 (MarlinFirmware#25490) * [cron] Bump distribution date (2023-03-14) * 🐛 Fix Polargraph without Z (MarlinFirmware#25514) * 🐛 Fix long filename read/report (MarlinFirmware#25509) * 🩹 Fix IA_CREALITY float, startup (MarlinFirmware#25493) Followup to MarlinFirmware#25440 * [cron] Bump distribution date (2023-03-15) * 🎨 Misc. formatting * 🎨 Misc. tramming menu cleanup (MarlinFirmware#25519) * 🩹 Fan Menu / Status fixes Followup to MarlinFirmware#21888 * 🩹 Fix DWIN MarlinUI Fan/E/XY (MarlinFirmware#25502) * [cron] Bump distribution date (2023-03-16) * 🔧 Safer default for Z_MIN_PROBE_PIN override (MarlinFirmware#25524) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * ♻️ Refactor PROBE_PT_[123] * ♻️ Refactor UBL 'G29 J' * [cron] Bump distribution date (2023-03-17) * 🚸 Refinements for UBL G29 J (tilt mesh) (MarlinFirmware#25486) * [cron] Bump distribution date (2023-03-18) * 🔧 Optional MPC_AUTOTUNE to save 5.5 - 5.8KB * ✨ Sovol v1.3.1 (Sovol SV06) (MarlinFirmware#25267) * 🧑💻 More IntelliSense-friendly declares * 🎨 Clean up IA_CREALITY includes (MarlinFirmware#25530) * 🎨 Suppress warning (MarlinFirmware#25529) * 🔧 SQUARE_WAVE_STEPPING => EDGE_STEPPING (MarlinFirmware#25526) Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🚸 Improve Z-Probe raise for deploy (MarlinFirmware#25498) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🐛 Fix LVGL / MKS WiFi long filename (MarlinFirmware#25483) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🔨 Fix STM32H723Vx_btt for case-sensitive (MarlinFirmware#25535) * 🐛 Fix FYSETC Cheetah v2.0 Servo/Probe pins (MarlinFirmware#24635) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🐛 Prevent MPC E-permm overrun in Load Filament (MarlinFirmware#25531) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🚸 Fix / improve LCD_BED_TRAMMING (MarlinFirmware#25425) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🔧 Sanity-check PRINTCOUNTER_SAVE_INTERVAL + ESP32 I2S Exp (MarlinFirmware#25527) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * ⚡️ Smart Adaptive Multi-Stepping (MarlinFirmware#25474) * 🚸 Temperature Variance Monitor tweaks (MarlinFirmware#23571) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🩹 Fix Ender 2 stock LCD (MarlinFirmware#25538) * ⚡️ Misc. optimizations * [cron] Bump distribution date (2023-03-19) * ✨ REPORT_ADAPTIVE_FAN_SLOWING (MarlinFirmware#25537) * 🩹 Fix a serial_ternary * ✨ Z_SERVO_DEACTIVATE_AFTER_STOW (MarlinFirmware#24215) * 🐛 Avoid step rate overflow (MarlinFirmware#25541) * [cron] Bump distribution date (2023-03-20) * ✨ PROBING_TOOL (MarlinFirmware#24411) * [cron] Bump distribution date (2023-03-22) * ✨ FILAMENT_SWITCH_AND_MOTION (MarlinFirmware#25548) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🧑💻 ExtUI::onSetPowerLoss * [cron] Bump distribution date (2023-03-23) * 🎨 calibration_stage => stage * [cron] Bump distribution date (2023-03-24) * 🩹 Reset touch screen calibration on failure (MarlinFirmware#25334) Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com> * 🎨 TMC SPI Pins Co-Authored-By: Martin Turski <turningtides@outlook.de> * 🎨 Pins header comments Co-Authored-By: Martin Turski <turningtides@outlook.de> * 🎨 Wrap font includes Co-Authored-By: Martin Turski <turningtides@outlook.de> * 🎨 LPC_SOFTWARE_SPI => SOFTWARE_SPI Co-Authored-By: Martin Turski <turningtides@outlook.de> * 🔨 INI Updates Co-Authored-By: Martin Turski <turningtides@outlook.de> * 🎨 Misc. fixes, cleanup Co-Authored-By: Martin Turski <turningtides@outlook.de> * 🩹 Update TRONXY_V10 SPI_FLASH pins * [cron] Bump distribution date (2023-03-25) * 🩹 Fix Chitu3D V6 default probe pin (MarlinFirmware#25552) * 🔧 Remove TVPM warning (MarlinFirmware#25551) * 🐛 Fix MKS Gen L 2.1 MOSFET pins (MarlinFirmware#25542) * 🩹 Refine MKS boards with a dedicated FAN port (MarlinFirmware#25567) * 🎨 Rename FAN_PIN to FAN0_PIN (MarlinFirmware#25568) * 📝 Fix spelling (MarlinFirmware#25563) * [cron] Bump distribution date (2023-03-26) * 🎨 Timer tweaks * 🔧 Refactor endstop state config (MarlinFirmware#25574) * ✨ AnyCubic Vyper / Vyper LCD (MarlinFirmware#25405) * 🩹 Fix Touch Calibration first point (MarlinFirmware#25298) * 🧑💻 Auto Fan / Cooler Fan updates (MarlinFirmware#25554) * 🐛 Prevent divide-by-zero in calc_timer_interval (MarlinFirmware#25557) * 🔧 Sanity-check for endstop inverting Followup to MarlinFirmware#25574 * 🔧 Clarify axis disable / timeout (MarlinFirmware#25571) * [cron] Bump distribution date (2023-03-27) * 🔨 Fix thread-unsafe deque iteration * 🐛 Fix AnyCubic Vyper ProcessPanelRequest Followup to MarlinFirmware#25405 * 🎨 Suppress a type warning (MarlinFirmware#25575) * ⚡️ Improve TFT DMA for STM32 (MarlinFirmware#25359) * 🐛 Fix M23 long filename support (MarlinFirmware#25540) * [cron] Bump distribution date (2023-03-28) * 🎨 Misc. cleanup * 🔧 Fix up WiFi options (MarlinFirmware#25586) * 🔨 Update config.ini endstop states Followup to MarlinFirmware#25574 * [cron] Bump distribution date (2023-03-29) * 🔧 Impose Hephestos 2 Bed Kit requirements (MarlinFirmware#25585) * 🎨 Remove unused ProUI : UBLValidMesh (MarlinFirmware#25591) * 🔨 Improve Docker local tests support (MarlinFirmware#25583) * 🔨 MarlinSimUI updates (MarlinFirmware#25589) * [cron] Bump distribution date (2023-03-30) * 🩹 Update Trigorilla V006 fan pin Followup to MarlinFirmware#25568 * 🩹 Fix Ender-3 V2 with no fan * 🐛 Fix _HAS_FAN for fan on Pin 0 * 🎨 Refine probe, more debug * 🩹 Fix displayed mix percentages * [cron] Bump distribution date (2023-03-31) * 🔧 DGUS_LCD_UI selectable options * 🔧 Fix SENSORLESS hit state error (MarlinFirmware#25604) * 🧑💻 CardReader adjustments (MarlinFirmware#25611) * [cron] Bump distribution date (2023-04-01) * 🎨 HAS_SHAPING => HAS_ZV_SHAPING * ✨ Fixed-Time Motion with Input Shaping by Ulendo (MarlinFirmware#25394) Co-authored-by: Ulendo Alex <alex@ulendo.io> * 🐛 Fix Long FIlename lookup (MarlinFirmware#25598) * 🌐 Update Italian language (MarlinFirmware#25587) * 🔨 Move Docker local test script Followup to MarlinFirmware#25583 * 🩹 FT_MOTION Followup * 🐛 Ensure root for 'M503 C' * 🐛 Clean up DELTA babystep Z * 🐛 INVERT_*_DIR for FT_MOTION (MarlinFirmware#25637) * 🔧 Move DOGLCD options * 🧑💻 Update pinsformat.js * 📝 Update Ender # labels * [cron] Bump distribution date (2023-04-07) * 🚸 Support CoreXY without Z (MarlinFirmware#25630) * 🎨 Apply const (MarlinFirmware#25643) * update `pins_Aquila_X2.h` to new format --------- Co-authored-by: thinkyhead <thinkyhead@users.noreply.github.com> Co-authored-by: Hans-Christian Ebke <ebke@cs.rwth-aachen.de> Co-authored-by: alextrical <35117191+alextrical@users.noreply.github.com> Co-authored-by: Abdullah YILMAZ <h.abdullahyilmaz@hotmail.com> Co-authored-by: albatorsssx <albator_ssx@hotmail.com> Co-authored-by: Kurt Haenen <Misterke@users.noreply.github.com> Co-authored-by: Sion Williams <sion5@hotmail.co.uk> Co-authored-by: Evgeniy Zhabotinskiy <evg-zhabotinsky@users.noreply.github.com> Co-authored-by: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com> Co-authored-by: tombrazier <68918209+tombrazier@users.noreply.github.com> Co-authored-by: Neo2003 <Neo2003@users.noreply.github.com> Co-authored-by: jbubik <jbubik@centrum.cz> Co-authored-by: Eduard Sukharev <sukharev.eh@gmail.com> Co-authored-by: Davide Rombolà <davide.rombola@gmail.com> Co-authored-by: dwzg <50058606+dwzg@users.noreply.github.com> Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com> Co-authored-by: jamespearson04 <jamespearson04@hotmail.co.uk> Co-authored-by: Michael Hill <mhill@hillsoftware.com> Co-authored-by: James Gilliland <neclimdul@gmail.com> Co-authored-by: Liam Powell <liam+github@liampwll.com> Co-authored-by: George Fu <nailao_5918@163.com> Co-authored-by: Piotr Paczyński <ppaczyn@gmail.com> Co-authored-by: Farva42 <100859196+Farva42@users.noreply.github.com> Co-authored-by: John Robertson <john@cirtech.co.uk> Co-authored-by: John Lagonikas <39417467+zeleps@users.noreply.github.com> Co-authored-by: StevilKnevil <stevilknevil@hotmail.co.uk> Co-authored-by: FilippoR <filippo.rossoni@gmail.com> Co-authored-by: BIGTREETECH <38851044+bigtreetech@users.noreply.github.com> Co-authored-by: Martin Turski <turningtides@outlook.de> Co-authored-by: Giuliano Zaro <3684609+GMagician@users.noreply.github.com> Co-authored-by: Bob Kuhn <bob.kuhn@att.net> Co-authored-by: Alexander Gavrilenko <jmz52@users.noreply.github.com> Co-authored-by: Andrew <18502096+classicrocker883@users.noreply.github.com> Co-authored-by: John Unland <junland.foss@gmail.com> Co-authored-by: Chris Pepper <p3p@p3psoft.co.uk> Co-authored-by: Ulendo Alex <alex@ulendo.io>
Description
Scenario:
Using
M206
to set XY home offsets whileZ_SAFE_HOMING
is enabled.Observed behavior:
Point defined by
Z_SAFE_HOMING_[XY]_POS
respects those offsets and moves, even failing withecho:Z Probe Past Bed
during homing if it tries to go beyond soft endstops.Possible desired behavior:
The safe homing point stays in the same position relative to physical endstops, regardless of
M206
offsets.Solution:
Implement an option to enable either behabior:
Z_SAFE_HOMING_POINT_ABSOLUTE
.That is what this PR does.
Requirements
Any non-delta printer, as
M206
is unavailable on deltas.Benefits
An option to decouple "safety" of Z homing from
M206
. Depending on how you use them, that might be useful.In my specific case, I use
M206
to define the actual printable area, and useZ_SAFE_HOMING
to home Z at (0,0), outside the build plate, with an endstop that is below bed level. The reason for off-bed homing is to avoid both hitting the bed with the nozzle and releveling the bed every time I use a surface of different thickness. (I don't have a Z probe currently, so I can't automate that.) As is easy to see, moving (0,0) position onto the bed withM206
crashes the nozzle without this fix.An alternative scenario is when homing with a Z probe to always use the same point for consistency, even if
M206
is used to change XY offsets. In extreme scenarios, like moving (0,0) to the center to imitate a delta, the current behavior might even result in trying to home with the probe outside the build plate, resulting in a crash and/or grinding.Configurations
None. Just enable
Z_SAFE_HOMING
and try withZ_SAFE_HOMING_POINT_ABSOLUTE
both disabled (default) and enabled to test. UseM206
with XY offsets to observe effects.Related Issues
#23021 might be related, or it might not. Found nothing else.