mirror of
https://github.com/Klipper3d/klipper.git
synced 2026-02-08 09:10:56 -07:00
Merge 0dccc7e02d into 0c2c1dd13b
This commit is contained in:
commit
5506b3c5c5
6 changed files with 68 additions and 30 deletions
|
|
@ -506,7 +506,7 @@ gcode:
|
|||
{% if printer["gcode_macro SELECT_TOOL"].tool_selected|int != -1 %}
|
||||
M118 Loading filament to PINDA ...
|
||||
MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0
|
||||
MANUAL_STEPPER STEPPER=gear_stepper MOVE={printer["gcode_macro VAR_MMU2S"].pinda_load_length} STOP_ON_ENDSTOP=2
|
||||
MANUAL_STEPPER STEPPER=gear_stepper MOVE={printer["gcode_macro VAR_MMU2S"].pinda_load_length} STOP_ON_ENDSTOP=try_home
|
||||
MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0
|
||||
MANUAL_STEPPER STEPPER=gear_stepper MOVE=10
|
||||
IS_FILAMENT_IN_PINDA
|
||||
|
|
@ -579,7 +579,7 @@ gcode:
|
|||
M118 Unloading filament from extruder to PINDA ...
|
||||
MANUAL_STEPPER STEPPER=gear_stepper SET_POSITION=0
|
||||
{% if printer["gcode_macro VAR_MMU2S"].enable_5in1 == 0 %}
|
||||
MANUAL_STEPPER STEPPER=gear_stepper MOVE=-{printer["gcode_macro VAR_MMU2S"].bowden_unload_length} SPEED=120 ACCEL=80 STOP_ON_ENDSTOP=-2
|
||||
MANUAL_STEPPER STEPPER=gear_stepper MOVE=-{printer["gcode_macro VAR_MMU2S"].bowden_unload_length} SPEED=120 ACCEL=80 STOP_ON_ENDSTOP=try_inverted_home
|
||||
IS_FILAMENT_STUCK_IN_PINDA
|
||||
{% else %}
|
||||
MANUAL_STEPPER STEPPER=gear_stepper MOVE=-{printer["gcode_macro VAR_MMU2S"].bowden_unload_length} SPEED=120 ACCEL=80
|
||||
|
|
@ -792,7 +792,7 @@ gcode:
|
|||
{% if printer["gcode_macro VAR_MMU2S"].enable_5in1 == 0 %}
|
||||
M118 Homing selector
|
||||
MANUAL_STEPPER STEPPER=selector_stepper SET_POSITION=0
|
||||
MANUAL_STEPPER STEPPER=selector_stepper MOVE=-76 STOP_ON_ENDSTOP=1
|
||||
MANUAL_STEPPER STEPPER=selector_stepper MOVE=-76 STOP_ON_ENDSTOP=home
|
||||
MANUAL_STEPPER STEPPER=selector_stepper SET_POSITION=0
|
||||
{% endif %}
|
||||
MANUAL_STEPPER STEPPER=idler_stepper MOVE=0
|
||||
|
|
|
|||
|
|
@ -8,6 +8,12 @@ All dates in this document are approximate.
|
|||
|
||||
## Changes
|
||||
|
||||
20260207: The `MANUAL_STEPPER` G-Code command `STOP_ON_ENDSTOP`
|
||||
parameter has changed. See the
|
||||
[MANUAL_STEPPER](G-Codes.md#manual_stepper) documentation for
|
||||
details. Using the previously supported integer values (-2, -1, 1, 2)
|
||||
is deprecated and will be removed in the near future.
|
||||
|
||||
20260109: The status value `{printer.probe.last_z_result}` is
|
||||
deprecated; it will be removed in the near future. Use
|
||||
`{printer.probe.last_probe_position}` instead, and note that this new
|
||||
|
|
|
|||
|
|
@ -990,22 +990,34 @@ enabled.
|
|||
|
||||
#### MANUAL_STEPPER
|
||||
`MANUAL_STEPPER STEPPER=config_name [ENABLE=[0|1]]
|
||||
[SET_POSITION=<pos>] [SPEED=<speed>] [ACCEL=<accel>] [MOVE=<pos>
|
||||
[STOP_ON_ENDSTOP=[1|2|-1|-2]] [SYNC=0]]`: This command will alter the
|
||||
state of the stepper. Use the ENABLE parameter to enable/disable the
|
||||
stepper. Use the SET_POSITION parameter to force the stepper to think
|
||||
it is at the given position. Use the MOVE parameter to request a
|
||||
movement to the given position. If SPEED and/or ACCEL is specified
|
||||
then the given values will be used instead of the defaults specified
|
||||
in the config file. If an ACCEL of zero is specified then no
|
||||
acceleration will be performed. If STOP_ON_ENDSTOP=1 is specified then
|
||||
the move will end early should the endstop report as triggered (use
|
||||
STOP_ON_ENDSTOP=2 to complete the move without error even if the
|
||||
endstop does not trigger, use -1 or -2 to stop when the endstop
|
||||
reports not triggered). Normally future G-Code commands will be
|
||||
scheduled to run after the stepper move completes, however if a manual
|
||||
stepper move uses SYNC=0 then future G-Code movement commands may run
|
||||
in parallel with the stepper movement.
|
||||
[SET_POSITION=<pos>] [SPEED=<speed>] [ACCEL=<accel>] [MOVE=<pos>]
|
||||
[SYNC=0]]`: This command will alter the state of the stepper. Use the
|
||||
ENABLE parameter to enable/disable the stepper. Use the SET_POSITION
|
||||
parameter to force the stepper to think it is at the given
|
||||
position. Use the MOVE parameter to request a movement to the given
|
||||
position. If SPEED and/or ACCEL is specified then the given values
|
||||
will be used instead of the defaults specified in the config file. If
|
||||
an ACCEL of zero is specified then no acceleration will be
|
||||
performed. Normally future G-Code commands will be scheduled to run
|
||||
after the stepper move completes, however if a manual stepper move
|
||||
uses SYNC=0 then future G-Code movement commands may run in parallel
|
||||
with the stepper movement.
|
||||
|
||||
`MANUAL_STEPPER STEPPER=config_name [SPEED=<speed>] [ACCEL=<accel>]
|
||||
MOVE=<pos> STOP_ON_ENDSTOP=<check_type>`: If STOP_ON_ENDSTOP is
|
||||
specified then the move will end early if an endstop event occurs. The
|
||||
`STOP_ON_ENDSTOP` parameter may be set to one of the following values:
|
||||
|
||||
* `probe`: The movement will stop when the endstop reports triggered.
|
||||
* `home`: The movement will stop when the endstop reports triggered
|
||||
and the final position of the manual_stepper will be set such that
|
||||
the trigger position matches the position specified in the `MOVE`
|
||||
parameter.
|
||||
* `inverted_probe`, `inverted_home`: As above, however, the movement
|
||||
will stop when the endstop reports it is in a non-triggered state.
|
||||
* `try_probe`, `try_inverted_probe`, `try_home`, `try_inverted_home`:
|
||||
As above, but no error will be reported if the movement fully
|
||||
completes without an endstop event stopping the move early.
|
||||
|
||||
`MANUAL_STEPPER STEPPER=config_name GCODE_AXIS=[A-Z]
|
||||
[LIMIT_VELOCITY=<velocity>] [LIMIT_ACCEL=<accel>]
|
||||
|
|
|
|||
|
|
@ -468,8 +468,9 @@ class PrinterConfig:
|
|||
self.autosave = ConfigAutoSave(printer)
|
||||
self.validate = ConfigValidate(printer)
|
||||
self.deprecated = {}
|
||||
self.runtime_warnings = []
|
||||
self.deprecate_warnings = []
|
||||
self.runtime_warned = {}
|
||||
self.runtime_warnings = []
|
||||
self.status_raw_config = {}
|
||||
self.status_warnings = []
|
||||
def get_printer(self):
|
||||
|
|
@ -497,10 +498,13 @@ class PrinterConfig:
|
|||
self.validate.check_unused(config.fileconfig)
|
||||
# Deprecation warnings
|
||||
def runtime_warning(self, msg):
|
||||
if msg in self.runtime_warned:
|
||||
return
|
||||
logging.warning(msg)
|
||||
res = {'type': 'runtime_warning', 'message': msg}
|
||||
self.runtime_warnings.append(res)
|
||||
self.status_warnings = self.runtime_warnings + self.deprecate_warnings
|
||||
self.runtime_warned[msg] = True
|
||||
def deprecate(self, section, option, value=None, msg=None):
|
||||
key = (section, option, value)
|
||||
if key in self.deprecated and self.deprecated[key] == msg:
|
||||
|
|
|
|||
|
|
@ -249,16 +249,18 @@ class PrinterHoming:
|
|||
gcode = self.printer.lookup_object('gcode')
|
||||
gcode.register_command('G28', self.cmd_G28)
|
||||
def manual_home(self, toolhead, endstops, pos, speed,
|
||||
triggered, check_triggered):
|
||||
probe_pos, triggered, check_triggered):
|
||||
hmove = HomingMove(self.printer, endstops, toolhead)
|
||||
try:
|
||||
hmove.homing_move(pos, speed, triggered=triggered,
|
||||
check_triggered=check_triggered)
|
||||
epos = hmove.homing_move(pos, speed, probe_pos=probe_pos,
|
||||
triggered=triggered,
|
||||
check_triggered=check_triggered)
|
||||
except self.printer.command_error:
|
||||
if self.printer.is_shutdown():
|
||||
raise self.printer.command_error(
|
||||
"Homing failed due to printer shutdown")
|
||||
raise
|
||||
return epos
|
||||
def probing_move(self, mcu_probe, pos, speed):
|
||||
endstops = [(mcu_probe, "probe")]
|
||||
hmove = HomingMove(self.printer, endstops)
|
||||
|
|
|
|||
|
|
@ -78,7 +78,8 @@ class ManualStepper:
|
|||
self.motion_queuing.note_mcu_movequeue_activity(self.next_cmd_time)
|
||||
if sync:
|
||||
self.sync_print_time()
|
||||
def do_homing_move(self, movepos, speed, accel, triggered, check_trigger):
|
||||
def do_homing_move(self, movepos, speed, accel,
|
||||
probe_pos, triggered, check_trigger):
|
||||
if not self.can_home:
|
||||
raise self.printer.command_error(
|
||||
"No endstop for this manual stepper")
|
||||
|
|
@ -87,7 +88,8 @@ class ManualStepper:
|
|||
endstops = self.rail.get_endstops()
|
||||
phoming = self.printer.lookup_object('homing')
|
||||
phoming.manual_home(self, endstops, pos, speed,
|
||||
triggered, check_trigger)
|
||||
probe_pos, triggered, check_trigger)
|
||||
self.sync_print_time()
|
||||
cmd_MANUAL_STEPPER_help = "Command a manually configured stepper"
|
||||
def cmd_MANUAL_STEPPER(self, gcmd):
|
||||
if gcmd.get('GCODE_AXIS', None) is not None:
|
||||
|
|
@ -102,14 +104,28 @@ class ManualStepper:
|
|||
self.do_set_position(setpos)
|
||||
speed = gcmd.get_float('SPEED', self.velocity, above=0.)
|
||||
accel = gcmd.get_float('ACCEL', self.accel, minval=0.)
|
||||
homing_move = gcmd.get_int('STOP_ON_ENDSTOP', 0)
|
||||
if homing_move:
|
||||
homing_move = gcmd.get('STOP_ON_ENDSTOP', None)
|
||||
if homing_move is not None:
|
||||
old_map = {'-2': 'try_inverted_home', '-1': 'inverted_home',
|
||||
'1': 'home', '2': 'try_home'}.get(homing_move)
|
||||
if old_map is not None:
|
||||
pconfig = self.printer.lookup_object('configfile')
|
||||
pconfig.runtime_warning("integer values for manual_stepper"
|
||||
" STOP_ON_ENDSTOP is deprecated")
|
||||
homing_move = old_map
|
||||
is_try = homing_move.startswith('try_')
|
||||
homing_move = homing_move[is_try*4:]
|
||||
is_inverted = homing_move.startswith('inverted_')
|
||||
homing_move = homing_move[is_inverted*9:]
|
||||
if homing_move not in ["probe", "home"]:
|
||||
raise gcmd.error("Unknown STOP_ON_ENDSTOP request")
|
||||
is_probe = (homing_move == "probe")
|
||||
movepos = gcmd.get_float('MOVE')
|
||||
if ((self.pos_min is not None and movepos < self.pos_min)
|
||||
or (self.pos_max is not None and movepos > self.pos_max)):
|
||||
raise gcmd.error("Move out of range")
|
||||
self.do_homing_move(movepos, speed, accel,
|
||||
homing_move > 0, abs(homing_move) == 1)
|
||||
is_probe, not is_inverted, not is_try)
|
||||
elif gcmd.get_float('MOVE', None) is not None:
|
||||
movepos = gcmd.get_float('MOVE')
|
||||
if ((self.pos_min is not None and movepos < self.pos_min)
|
||||
|
|
@ -207,8 +223,6 @@ class ManualStepper:
|
|||
drip_completion)
|
||||
# Clear trapq of any remaining parts of movement
|
||||
self.motion_queuing.wipe_trapq(self.trapq)
|
||||
self.rail.set_position([self.commanded_pos, 0., 0.])
|
||||
self.sync_print_time()
|
||||
def get_kinematics(self):
|
||||
return self
|
||||
def get_steppers(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue