mirror of
https://github.com/Klipper4FlashForge/firmware.git
synced 2026-10-22 05:12:16 -05:00
Drop the PARK= opt-out from TOOL_LOCATE_SENSOR
The station pass needs an empty carriage, so with a toolchanger it always parks: PARK=0 only said "I docked it by hand", which the sensor check right below already decides for itself. Without [ff_toolchange] there is no TOOLCHANGE_PARK to call and no sensor to ask, so the pass just runs -- where it used to demand PARK=0 before it would. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UfsqVZ3aXL3qxr3BFDS35x
This commit is contained in:
1 parent
af16ea0cb5
commit
01e53aa3f6
2 files changed
+13
-14
No files matched your search
@@ -86,9 +86,9 @@ difference between a first layer that sticks and one that does not.
|
||||
|
||||
#### `TOOL_LOCATE_SENSOR` — the reference
|
||||
|
||||
`[PARK=1] [SAVE=1]`
|
||||
`[SAVE=1]`
|
||||
|
||||
1. Parks the mounted tool (`PARK=0` if you docked it by hand) and verifies
|
||||
1. Homes if any axis is unhomed, parks the mounted tool, and verifies
|
||||
the carriage really is empty, from the dock and grab sensors.
|
||||
2. Plate check: probes station Z with the bare carriage, then sideways for
|
||||
the bore edge.
|
||||
@@ -107,8 +107,9 @@ carriage** — select the tool first.
|
||||
|
||||
`[SAVE=1]`
|
||||
|
||||
1. Plate check. It needs an empty carriage, so it parks your tool and picks
|
||||
it straight back up — that is expected, not a fault.
|
||||
1. Homes if any axis is unhomed, then the plate check. Both need an empty
|
||||
carriage, so your tool is parked and picked straight back up — that is
|
||||
expected, not a fault.
|
||||
2. Zeroes the G-code offset and works in raw machine coordinates.
|
||||
3. Same two passes as above, from `cylinder_x − 12.5` (16.0 stock), with the
|
||||
nozzle doing the touching.
|
||||
|
||||
@@ -785,20 +785,18 @@ class FFToolOffset:
|
||||
|
||||
cmd_TOOL_LOCATE_SENSOR_help = (
|
||||
"Locate the station with an EMPTY carriage (station_x/y/z) "
|
||||
"([PARK=1] [SAVE=1] [PLATE_CHECK=1] [SAMPLES=] [SAMPLES_TOLERANCE=]"
|
||||
"([SAVE=1] [PLATE_CHECK=1] [SAMPLES=] [SAMPLES_TOLERANCE=]"
|
||||
" [SAMPLES_TOLERANCE_RETRIES=] [SAMPLES_RESULT=]"
|
||||
" [SAMPLE_RETRACT_DIST=] [PROBE_SPEED=])")
|
||||
|
||||
def cmd_TOOL_LOCATE_SENSOR(self, gcmd):
|
||||
park = gcmd.get_int('PARK', 1, minval=0, maxval=1)
|
||||
save = gcmd.get_int('SAVE', 1, minval=0, maxval=1)
|
||||
try:
|
||||
self._check_homed(gcmd)
|
||||
if self.toolchange is not None:
|
||||
if park:
|
||||
# releaseFourExtruder: the carriage must be empty for TS.
|
||||
self._run('TOOLCHANGE_PARK')
|
||||
self._wait_moves()
|
||||
# releaseFourExtruder: the carriage must be empty for TS.
|
||||
self._run('TOOLCHANGE_PARK')
|
||||
self._wait_moves()
|
||||
carriage = self.toolchange.get_status(self.reactor.monotonic())
|
||||
if carriage.get('current_tool', -1) != -1 \
|
||||
or not carriage.get('state_ok'):
|
||||
@@ -806,10 +804,10 @@ class FFToolOffset:
|
||||
"%s: carriage is not verifiably empty (%s) -- the"
|
||||
" station pass must run with no tool mounted"
|
||||
% (self.name, carriage.get('state_reason')))
|
||||
elif park:
|
||||
raise gcmd.error("%s: [ff_toolchange] not loaded -- park"
|
||||
" the tool by hand and pass PARK=0."
|
||||
% self.name)
|
||||
# With no [ff_toolchange] there is no TOOLCHANGE_PARK to call and
|
||||
# no sensor that can confirm the carriage is empty. Emptying it is
|
||||
# the operator's job then, as it is on any printer without a
|
||||
# toolchanger.
|
||||
self._run_plate_check(gcmd)
|
||||
cylinder_x, cylinder_y = self._cylinder()
|
||||
gcmd.respond_info("station calibration, start %.3f, %.3f"
|
||||
|
||||
Reference in new issue
Block a user