-
-
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
Better support for "infinite" axes: Enable G92.9 (directly set current position) for rotational axes #26174
Better support for "infinite" axes: Enable G92.9 (directly set current position) for rotational axes #26174
Conversation
565fcfc
to
1e8a400
Compare
1e8a400
to
810187a
Compare
75903da
to
95634bb
Compare
95634bb
to
8803c5b
Compare
c624e13
to
e6f1b07
Compare
Marlin/src/lcd/marlinui.cpp
Outdated
@@ -850,6 +854,16 @@ void MarlinUI::init() { | |||
if (axis != NO_AXIS_ENUM && ELAPSED(millis(), start_time) && !planner.is_full()) { | |||
|
|||
const feedRate_t fr_mm_s = (axis < LOGICAL_AXES) ? manual_feedrate_mm_s[axis] : XY_PROBE_FEEDRATE_MM_S; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ideally the manual feed rate for rotational axes will already be expressed in degrees-per-second. And then, rotational axes will not be affected by the mode being "inches" or "mm" because the axes are rotational. This is distinct from an axis that is part of a kinematic system (SCARA) where we convert mm to degrees behind the scenes.
6cc8fe8
to
c18c6de
Compare
c18c6de
to
4b1efd7
Compare
The general problem remains that G-code commands only supply a single feed rate in terms of current units per second, but not all axes have a meaningful conversion from degrees to linear units. So a move that only involves a rotational axis and no others should be able to get its feed rate in terms of degrees-per-second (or radians-per-second if the machine is in Radians Mode). And on the LCD display an axis rotational position should be shown in degrees/radians too, or in some unit that is more pertinent to the application. It's challenging to devise a general approach to this. |
9c65146
to
4f65466
Compare
Indeed, I would say that #24334 is the more complete solution regarding the feedrate for linear moves vs. rotation. I have not tested that PR in a while but it was working at some point. With PR 24334 merged, this PR would be simplified to just add G92.9 for machines with rotational axes. |
I agree that PR has the completeness advantage, but this PR can still be merged first and then we can take another look at #24334 and decide how best to apply it. With #24334 I was mainly stuck on how janky our support for rotational axes is in the planner, and I wonder if we could come up with a superior design. This PR is largely non-disruptive and should only affect code size when there's one or more rotational axes and/or inches units support is turned on. |
Description
//#define NO_WORKSPACE_OFFSETS
. In this scenario there was no way for the user to prevent overflow of the position variables. With this PR,G92.9 A0
can be used to directly zero the positions of the rotational axes (A axis in this example).Requirements
Best to be used with an axis that can rotate infinitely.
For rotational axes without a homing switch, this is required in addition:
For full testing, use a display with MarlinUI and also this:
Benefits
allow rotational axes to rotate without end
Configurations
Config.zip
Related Issues