From ebdf5d6d837fd8c8dc5ed7d50bc6fcb14aa10c11 Mon Sep 17 00:00:00 2001
From: KevinOConnor See example-generic-cartesian.cfg
+for an example generic Cartesian kinematics config file. This printer kinematic class allows a user to define in a pretty flexible
+manner an arbitrary Cartesian-style kinematics. In principle, the regular
+cartesian, corexy, hybrid_corexy can be defined this way too. However,
+more importantly, various otherwise unsupported kinematics such as
+inverted hybrid_corexy or corexyuv can be defined using this kinematic. Notably, the definition of a generic Cartesian kinematic deviates
+significantly from the other kinematic types. It follows the following
+convention: a user defines a set of carriages with certain range of motion
+that can move independently from each other (they should move over the
+Cartesian axes X, Y, and Z, hence the name of the kinematic) and
+corresponding endstops that allow the firmware to determine the position
+of carriages during homing, as well as a set of steppers that move those
+carriages. The Then a user must define the following three carriages: Afterwards, a user specifies the stepper motors that move these carriages,
+for instance See stepper section for more information on the regular
+stepper parameters. The More than a single stepper motor can be defined to drive the same axis
+or belt. For example, on a CoreXY AWD setups two motors driving the same
+belt can be defined as with There are situations when a user wants to have more than one endstop
+per axis. Examples of such configurations include Y axis driven by
+two independent stepper motors with belts attached to both ends of the
+X beam, with effectively two carriages on Y axis each having an
+independent endstop, and multi-stepper Z axis with each stepper having
+its own endstop (not to be confused with the configurations with
+multiple Z motors but only a single endstop). These configurations
+can be declared by specifying additional carriage(s) with their endstops: and the corresponding stepper motors, for example: Notably, an For the references on how to configure IDEX setups, see the
+dual carriage section. It is possible to define a special "none" kinematics to disable
kinematic support in Klipper. This may be useful for controlling
@@ -5969,8 +6138,8 @@ for an example configuration. Support for cartesian and hybrid_corexy/z printers with dual carriages
-on a single axis. The carriage mode can be set via the
+ Support for cartesian, generic_cartesian and hybrid_corexy/z printers with
+dual carriages on a single axis. The carriage mode can be set via the
SET_DUAL_CARRIAGE extended g-code command. For example,
"SET_DUAL_CARRIAGE CARRIAGE=1" command will activate the carriage defined
in this section (CARRIAGE=0 will return activation to the primary carriage).
@@ -5995,7 +6164,7 @@ typically be achieved with
"SYNC_EXTRUDER_MOTION MOTION_QUEUE=extruder EXTRUDER= See sample-idex.cfg for an example
-configuration.[printer]
kinematics:
# The type of printer in use. This option may be one of: cartesian,
-# corexy, corexz, hybrid_corexy, hybrid_corexz, rotary_delta, delta,
-# deltesian, polar, winch, or none. This parameter must be specified.
+# corexy, corexz, hybrid_corexy, hybrid_corexz, generic_cartesian,
+# rotary_delta, delta, deltesian, polar, winch, or none.
+# This parameter must be specified.
max_velocity:
# Maximum velocity (in mm/s) of the toolhead (relative to the
# print). This value may be changed at runtime using the
@@ -4622,6 +4637,160 @@ anchor_z:
# These parameters must be provided.
Generic Cartesian Kinematics¶
+[printer]
section must specify the kinematic and
+other printer-level settings same as the regular Cartesian kinematic:[printer]
+kinematics: generic_cartesian
+max_velocity:
+max_accel:
+#minimum_cruise_ratio:
+#square_corner_velocity:
+#max_accel_to_decel:
+#max_z_velocity:
+#max_z_accel:
+
[carriage x]
,
+[carriage y]
, and [carriage z]
, e.g.[carriage x]
+endstop_pin:
+# Endstop switch detection pin. If this endstop pin is on a
+# different mcu than the stepper motor(s) moving this carriage,
+# then it enables "multi-mcu homing". This parameter must be provided.
+#position_min: 0
+# Minimum valid distance (in mm) the user may command the carriage to
+# move to. The default is 0mm.
+position_endstop:
+# Location of the endstop (in mm). This parameter must be provided.
+position_max:
+# Maximum valid distance (in mm) the user may command the stepper to
+# move to. This parameter must be provided.
+#homing_speed: 5.0
+# Maximum velocity (in mm/s) of the carriage when homing. The default
+# is 5mm/s.
+#homing_retract_dist: 5.0
+# Distance to backoff (in mm) before homing a second time during
+# homing. Set this to zero to disable the second home. The default
+# is 5mm.
+#homing_retract_speed:
+# Speed to use on the retract move after homing in case this should
+# be different from the homing speed, which is the default for this
+# parameter
+#second_homing_speed:
+# Velocity (in mm/s) of the carriage when performing the second home.
+# The default is homing_speed/2.
+#homing_positive_dir:
+# If true, homing will cause the carriage to move in a positive
+# direction (away from zero); if false, home towards zero. It is
+# better to use the default than to specify this parameter. The
+# default is true if position_endstop is near position_max and false
+# if near position_min.
+
[stepper my_stepper]
+carriages:
+# A string describing the carriages the stepper moves. All defined
+# carriages can be specified here, as well as their linear combinations,
+# e.g. x, x+y, y-0.5*z, x-z, etc. This parameter must be provided.
+step_pin:
+dir_pin:
+enable_pin:
+rotation_distance:
+microsteps:
+#full_steps_per_rotation: 200
+#gear_ratio:
+#step_pulse_duration:
+
carriages
parameter defines how the stepper
+affects the motion of the carriages. For example, x+y
indicates that
+the motion of the stepper in the positive direction by the distance d
+moves the carriages x
and y
by the same distance d
in the positive
+direction, while x-0.5*y
means the motion of the stepper in the positive
+direction by the distance d
moves the carriage x
by the distance d
+in the positive direction, but the carriage y
will travel distance d/2
+in the negative direction.[carriage x]
+endstop_pin: ...
+...
+
+[carriage y]
+endstop_pin: ...
+...
+
+[stepper a0]
+carriages: x-y
+step_pin: ...
+dir_pin: ...
+enable_pin: ...
+rotation_distance: ...
+...
+
+[stepper a1]
+carriages: x-y
+step_pin: ...
+dir_pin: ...
+enable_pin: ...
+rotation_distance: ...
+...
+
a0
and a1
steppers having their own control pins, but
+sharing the same carriages
and corresponding endstops.[extra_carriage my_carriage]
+primary_carriage:
+# The name of the primary carriage this carriage corresponds to.
+# It also effectively defines the axis the carriage moves over.
+# This parameter must be provided.
+endstop_pin:
+# Endstop switch detection pin. This parameter must be provided.
+
[extra_carriage y1]
+primary_carriage: y
+endstop_pin: ...
+
+[stepper sy1]
+carriages: y1
+...
+
[extra_carriage]
does not define parameters such as
+position_min
, position_max
, and position_endstop
, but instead
+inherits them from the specified primary_carriage
, thus sharing
+the same range of motion with the primary carriage.None Kinematics¶
[dual_carriage]¶
-
[dual_carriage]
axis:
# The axis this extra carriage is on (either x or y). This parameter
@@ -6007,7 +6176,7 @@ axis:
# error. If safe_distance is not provided, it will be inferred from
# position_min and position_max for the dual and primary carriages. If set
# to 0 (or safe_distance is unset and position_min and position_max are
-# identical for the primary and dual carraiges), the carriages proximity
+# identical for the primary and dual carriages), the carriages proximity
# checks will be disabled.
#step_pin:
#dir_pin:
@@ -6021,6 +6190,59 @@ axis:
# See the "stepper" section for the definition of the above parameters.
For an example of dual carriage configuration with generic_cartesian
+kinematic, see the following configuration
+sample.
+Please note that in this case the [dual_carriage]
configuration deviates
+from the configuration described above:
[dual_carriage my_dc_carriage]
+primary_carriage:
+# Defines the matching primary carriage of this dual carriage and
+# the corresponding IDEX axis. Valid choices are x, y, z.
+# This parameter must be provided.
+#safe_distance:
+# The minimum distance (in mm) to enforce between the dual and the primary
+# carriages. If a G-Code command is executed that will bring the carriages
+# closer than the specified limit, such a command will be rejected with an
+# error. If safe_distance is not provided, it will be inferred from
+# position_min and position_max for the dual and primary carriages. If set
+# to 0 (or safe_distance is unset and position_min and position_max are
+# identical for the primary and dual carriages), the carriages proximity
+# checks will be disabled.
+endstop_pin:
+#position_min:
+position_endstop:
+position_max:
+#homing_speed:
+#homing_retract_dist:
+#homing_retract_speed:
+#second_homing_speed:
+#homing_positive_dir:
+...
+
Refer to generic cartesian section for more information
+on the regular carriage
parameters.
Then a user must define one or more stepper motors moving the dual carriage +(and other carriages as appropriate), for instance
+[carriage x]
+...
+
+[carriage y]
+...
+
+[dual_carriage u]
+primary_carriage: x
+...
+
+[stepper dc_stepper]
+carriages: u-y
+...
+
It is worth noting that generic_cartesian
kinematic can support two
+dual carriages for X and Y axes. For reference, see for instance a
+sample of CoreXYUV configuration.
Support for additional steppers synchronized to the movement of an extruder (one may define any number of sections with an diff --git a/G-Codes.html b/G-Codes.html index adbd4b8ec..dae9fc389 100644 --- a/G-Codes.html +++ b/G-Codes.html @@ -1484,6 +1484,26 @@ + + +
SET_DUAL_CARRIAGE CARRIAGE=[0|1] [MODE=[PRIMARY|COPY|MIRROR]]
:
+
SET_DUAL_CARRIAGE CARRIAGE=<carriage> [MODE=[PRIMARY|COPY|MIRROR]]
:
This command will change the mode of the specified carriage.
-If no MODE
is provided it defaults to PRIMARY
. Setting the mode
-to PRIMARY
deactivates the other carriage and makes the specified
-carriage execute subsequent G-Code commands as-is. COPY
and MIRROR
-modes are supported only for CARRIAGE=1
. When set to either of these
-modes, carriage 1 will then track the subsequent moves of the carriage 0
-and either copy relative movements of it (in COPY
mode) or execute them
-in the opposite (mirror) direction (in MIRROR
mode).
MODE
is provided it defaults to PRIMARY
. <carriage>
must
+reference a defined primary or dual carriage for generic_cartesian
+kinematics or be 0 (for primary carriage) or 1 (for dual carriage)
+for all other kinematics supporting IDEX. Setting the mode to PRIMARY
+deactivates the other carriage and makes the specified carriage execute
+subsequent G-Code commands as-is. COPY
and MIRROR
modes are supported
+only for dual carriages. When set to either of these modes, dual carriage
+will then track the subsequent moves of its primary carriage and either
+copy relative movements of it (in COPY
mode) or execute them in the
+opposite (mirror) direction (in MIRROR
mode).
SAVE_DUAL_CARRIAGE_STATE [NAME=<state_name>]
: Save the current positions
of the dual carriages and their modes. Saving and restoring DUAL_CARRIAGE
@@ -5443,6 +5486,41 @@ be issued to move back to the previous XYZ position. If "MOVE_SPEED"
is specified then the toolhead move will be performed with the given
speed (in mm/s); otherwise the toolhead move will use the restored
g-code speed.
The commands in this section become automatically available when
+kinematics: generic_cartesian
is specified as the printer kinematics.
SET_STEPPER_CARRIAGES STEPPER=<stepper_name> CARRIAGES=<carriages>
+[DISABLE_CHECKS=[0|1]]
: Set or update the stepper carriages.
+<stepper_name>
must reference an existing stepper defined in printer.cfg
,
+and <carriages>
describes the carriages the stepper moves. See
+Generic Cartesian Kinematics
+for a more detailed overview of the carriages
parameter in the
+stepper configuration section. Note that it is only possible
+to change the coefficients or signs of the carriages with this
+command, but a user cannot add or remove the carriages that the stepper
+controls.
SET_STEPPER_CARRIAGES
is an advanced tool, and the user is advised
+to exercise an extreme caution using it, since specifying incorrect
+configuration may physically damage the printer.
Note that SET_STEPPER_CARRIAGES
performs certain internal validations
+of the new printer kinematics after the change. Keep in mind that if it
+detects an issue, it may leave printer kinematics in an invalid state.
+This means that if SET_STEPPER_CARRIAGES
reports an error, it is unsafe
+to issue other GCode commands, and the user must inspect the error message
+and either fix the problem, or manually restore the previous stepper(s)
+configuration.
Since SET_STEPPER_CARRIAGES
can update a configuration of a single
+stepper at a time, some sequences of changes can lead to invalid
+intermediate kinematic configurations, even if the final configuration
+is valid. In such cases a user can pass DISABLE_CHECKS=1
parameters to
+all but the last command to disable intermediate checks. For example,
+if stepper a
and stepper b
initially have x-y
and x+y
carriages
+correspondingly, then the following sequence of commands will let a user
+effectively swap the carriage controls:
+SET_STEPPER_CARRIAGES STEPPER=a CARRIAGES=x+y DISABLE_CHECKS=1
+and SET_STEPPER_CARRIAGES STEPPER=b CARRIAGES=x-y
, while
+still validating the final kinematics state.
The following commands are available when the tsl1401cl filament width sensor config section diff --git a/Status_Reference.html b/Status_Reference.html index bbb9b44d0..5f102bedf 100644 --- a/Status_Reference.html +++ b/Status_Reference.html @@ -2653,6 +2653,13 @@ on a cartesian, hybrid_corexy or hybrid_corexz robot
carriage_1
: The mode of the carriage 1. Possible values are:
"INACTIVE", "PRIMARY", "COPY", and "MIRROR".On a generic_cartesian
kinematic, the following information is
+available in dual_carriage
:
carriages["<carriage>"]
: The mode of the carriage <carriage>
. Possible
+ values are "INACTIVE" and "PRIMARY" for the primary carriage and "INACTIVE",
+ "PRIMARY", "COPY", and "MIRROR" for the dual carriage.The following information is available in the virtual_sdcard object:
diff --git a/_klipper3d/__pycache__/mkdocs_hooks.cpython-38.pyc b/_klipper3d/__pycache__/mkdocs_hooks.cpython-38.pyc index 7424a4a780bcac38078765598b6622cfd3c8da2a..ac84d4dc1ebf2151363d88d91cead99f3f83affb 100644 GIT binary patch delta 20 acmcc4ex02=l$V!_0SLagOKs#n!wdj7X$52e delta 20 acmcc4ex02=l$V!_0SK&uBsX%OVFmy&`vh?S diff --git a/fr/_klipper3d/__pycache__/mkdocs_hooks.cpython-38.pyc b/fr/_klipper3d/__pycache__/mkdocs_hooks.cpython-38.pyc index 7424a4a780bcac38078765598b6622cfd3c8da2a..ac84d4dc1ebf2151363d88d91cead99f3f83affb 100644 GIT binary patch delta 20 acmcc4ex02=l$V!_0SLagOKs#n!wdj7X$52e delta 20 acmcc4ex02=l$V!_0SK&uBsX%OVFmy&`vh?S diff --git a/fr/sitemap.xml.gz b/fr/sitemap.xml.gz index dd27e77526d07de5c1ad67815ffc7a7b3871f45c..a960d61437d5fe43979156711222895c919245a3 100644 GIT binary patch delta 15 WcmaFL_>_@dzMF$Xs6%QZ`#k_AE(Ev$ delta 15 WcmaFL_>_@dzMF$1JV