diff options
author | David Crocker <dcrocker@eschertech.com> | 2017-06-23 01:01:47 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2017-06-23 01:02:03 +0300 |
commit | 811de41a7d1083d6871de332717117ae57daa1c5 (patch) | |
tree | 674557ac03558f90dc5f679c157814971d8893b2 /src/Movement/Kinematics/Kinematics.cpp | |
parent | e2aad9a81ab09087151f89153d506cf33ab32a63 (diff) |
Version 1.19beta7
New features:
- M291 command is provided to display a message box with options for
timeout, acknowledgement and Z jog buttons
- M292 command is provided to acknowledge M291 messages
- Manual delta calibration and bed compensation is supported (use P0 in
the M558 command to indicate that there is no Z probe)
- Minimum value for S parameter (maximum heater PWM) in M307 command is
reduced from 20% to 1%
- Core XYU kinematics are now supported (thanks Lars)
- RADDS build now supports 9 motors (thanks Tom)
- If a homing move uses parameter S3 instead of S1 then the axis minimum
or maximum value is set to the current position instead of vice versa
- M589 with no parameters now reports the Duet's own SSID
- M589 S"*" now deletes the Duet WiFi's own access point details
Bug fixes:
- Tool X offsets are now applied on the next move even if it has no Z
parameter
- The tool change restore point coordinates now take account of X axis
mapping
- M588 P"*" command (forget all access points) now works
- On the Duet WiFi, after using M589 to set up access point parameters,
when M552 S2 was sent to start the WiFi module in AP mode it reported
"WiFi reported error: invalid access point configuration". The fix also
needs DuetWiFiServer version 1.19beta7.
- On a delta printer the effector height is limited to reachable values
Areas of code refactored (so watch out for new bugs):
- G30 bed probing
- Baby stepping
- Tool offset implementation
Upgrade notes:
- SSIDs and passwords in M587, M588 and M589 commands must now be
enclosed in double quotes
- Height map filenames in G29, M374 and M375 commands must now be
enclosed in double quotes
- On a Duet WiFi you should also upgrade DuetWiFiServer.bin to version
1.19beta7. You do not need to perform a simultaneous upgrade, but M587
and M589 reporting functionality won't work correctly if your
DuetWiFiFirmware and DuetWiFiServer versions are out of step.
Diffstat (limited to 'src/Movement/Kinematics/Kinematics.cpp')
-rw-r--r-- | src/Movement/Kinematics/Kinematics.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Movement/Kinematics/Kinematics.cpp b/src/Movement/Kinematics/Kinematics.cpp index 058aef71..dd55b2ed 100644 --- a/src/Movement/Kinematics/Kinematics.cpp +++ b/src/Movement/Kinematics/Kinematics.cpp @@ -11,6 +11,7 @@ #include "CoreXYKinematics.h" #include "CoreXZKinematics.h" #include "ScaraKinematics.h" +#include "CoreXYUKinematics.h" #include "RepRap.h" #include "Platform.h" @@ -45,9 +46,10 @@ bool Kinematics::IsReachable(float x, float y) const // Limit the Cartesian position that the user wants to move to // This default implementation just applies the rectangular limits set up by M208 to those axes that have been homed. -void Kinematics::LimitPosition(float coords[], size_t numVisibleAxes, uint16_t axesHomed) const +bool Kinematics::LimitPosition(float coords[], size_t numVisibleAxes, uint16_t axesHomed) const { const Platform& platform = reprap.GetPlatform(); + bool limited = false; for (size_t axis = 0; axis < numVisibleAxes; axis++) { if ((axesHomed & (1 << axis)) != 0) @@ -56,13 +58,16 @@ void Kinematics::LimitPosition(float coords[], size_t numVisibleAxes, uint16_t a if (f < platform.AxisMinimum(axis)) { f = platform.AxisMinimum(axis); + limited = true; } else if (f > platform.AxisMaximum(axis)) { f = platform.AxisMaximum(axis); + limited = true; } } } + return limited; } // Return the initial Cartesian coordinates we assume after switching to this kinematics @@ -91,6 +96,8 @@ void Kinematics::GetAssumedInitialPosition(size_t numAxes, float positions[]) co return new CoreXZKinematics(); case KinematicsType::scara: return new ScaraKinematics(); + case KinematicsType::coreXYU: + return new CoreXYUKinematics(); } } |