Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2019-06-13 18:59:05 +0300
committerDavid Crocker <dcrocker@eschertech.com>2019-06-13 18:59:05 +0300
commit11a51e9669a92cc6e03683aa9e0d2dade94aa36d (patch)
treec56be56453d135305fece95ec845d5dd242c5d27
parent0e8d585ac18513b086a79e9ea1b7c8c64a0c3400 (diff)
Release 2.03 provisional
When disabling Telnet or HTTP or disabling networking, set the number of sessons to zero Added virtual extruder position to M114 response for Octoprint Added M566 P parameter (jerk policy) Increased pulsed filament monitor pulses/mm displayed value from 2 to 3 decimal places
-rw-r--r--src/BugList.txt6
-rw-r--r--src/FilamentMonitors/PulsedFilamentMonitor.cpp2
-rw-r--r--src/GCodes/GCodes.cpp5
-rw-r--r--src/GCodes/GCodes2.cpp13
-rw-r--r--src/Movement/DDA.cpp12
-rw-r--r--src/Movement/Move.cpp15
-rw-r--r--src/Movement/Move.h4
-rw-r--r--src/Networking/HttpResponder.cpp3
-rw-r--r--src/Networking/TelnetResponder.cpp3
-rw-r--r--src/Version.h6
10 files changed, 50 insertions, 19 deletions
diff --git a/src/BugList.txt b/src/BugList.txt
index 3e5274e6..7b5c18cd 100644
--- a/src/BugList.txt
+++ b/src/BugList.txt
@@ -176,6 +176,12 @@ In 2.03RC5:
- [done] Duet Maestro build now supports laser cutters
- [done] SCARA bug: when attempting to move beyond arm limits the cached X and Y are inconsistent with the cached theta and psi
+For 2.03 release:
+- Add virtual extruder position to M114 response for Octoprint, https://forum.duet3d.com/topic/10821/returning-virtual-extruder-position-in-m114/3
+- When disabling network or a protocol, set the number of active HTTP and/or Telnet clients to 0
+- Added jerk policy, P parameter to M566
+- Pulse-type filament monitor now reports mm/pulse to 3 decimal places instead of 2
+
Outstanding issues:
- Running out of output buffers and not freeing them up, https://forum.duet3d.com/post/96586
- Inconsistent Z0 position, https://forum.duet3d.com/user/caveman
diff --git a/src/FilamentMonitors/PulsedFilamentMonitor.cpp b/src/FilamentMonitors/PulsedFilamentMonitor.cpp
index 8221f34b..ed97d4bf 100644
--- a/src/FilamentMonitors/PulsedFilamentMonitor.cpp
+++ b/src/FilamentMonitors/PulsedFilamentMonitor.cpp
@@ -81,7 +81,7 @@ bool PulsedFilamentMonitor::Configure(GCodeBuffer& gb, const StringRef& reply, b
}
else
{
- reply.printf("Pulse-type filament monitor on endstop input %u, %s, sensitivity %.2fmm/pulse, allowed movement %ld%% to %ld%%, check every %.1fmm, ",
+ reply.printf("Pulse-type filament monitor on endstop input %u, %s, sensitivity %.3fmm/pulse, allowed movement %ld%% to %ld%%, check every %.1fmm, ",
GetEndstopNumber(),
(comparisonEnabled) ? "enabled" : "disabled",
(double)mmPerPulse,
diff --git a/src/GCodes/GCodes.cpp b/src/GCodes/GCodes.cpp
index 0e859064..257394f6 100644
--- a/src/GCodes/GCodes.cpp
+++ b/src/GCodes/GCodes.cpp
@@ -3605,6 +3605,9 @@ void GCodes::GetCurrentCoordinates(const StringRef& s) const
s.catf("%c:%.3f ", axisLetters[axis], HideNan(GetUserCoordinate(axis)));
}
+ // Now the virtual extruder position, for Octoprint
+ s.catf("E:%.3f ", (double)virtualExtruderPosition);
+
// Get the live machine coordinates, we'll need them later
float liveCoordinates[MaxTotalDrivers];
reprap.GetMove().LiveCoordinates(liveCoordinates, reprap.GetCurrentXAxes(), reprap.GetCurrentYAxes());
@@ -3617,7 +3620,7 @@ void GCodes::GetCurrentCoordinates(const StringRef& s) const
// Print the axis stepper motor positions as Marlin does, as an aid to debugging.
// Don't bother with the extruder endpoints, they are zero after any non-extruding move.
- s.cat(" Count");
+ s.cat("Count");
for (size_t i = 0; i < numVisibleAxes; ++i)
{
s.catf(" %" PRIi32, reprap.GetMove().GetEndPoint(i));
diff --git a/src/GCodes/GCodes2.cpp b/src/GCodes/GCodes2.cpp
index dc32574f..0b111189 100644
--- a/src/GCodes/GCodes2.cpp
+++ b/src/GCodes/GCodes2.cpp
@@ -3245,7 +3245,14 @@ bool GCodes::HandleMcode(GCodeBuffer& gb, const StringRef& reply)
platform.SetInstantDv(numTotalAxes + e, eVals[e] * multiplier1);
}
}
- else if (!seen)
+
+ if (code == 566 && gb.Seen('P'))
+ {
+ seen = true;
+ reprap.GetMove().SetJerkPolicy(gb.GetUIValue());
+ }
+
+ if (!seen)
{
const float multiplier2 = (code == 566) ? MinutesToSeconds : 1.0;
reply.printf("Maximum jerk rates (mm/%s): ", (code == 566) ? "min" : "sec");
@@ -3260,6 +3267,10 @@ bool GCodes::HandleMcode(GCodeBuffer& gb, const StringRef& reply)
reply.catf("%c%.1f", sep, (double)(platform.GetInstantDv(extruder + numTotalAxes) * multiplier2));
sep = ':';
}
+ if (code == 566)
+ {
+ reply.catf(", jerk policy: %u", reprap.GetMove().GetJerkPolicy());
+ }
}
}
break;
diff --git a/src/Movement/DDA.cpp b/src/Movement/DDA.cpp
index 1830f102..b863de5d 100644
--- a/src/Movement/DDA.cpp
+++ b/src/Movement/DDA.cpp
@@ -473,12 +473,7 @@ bool DDA::InitStandardMove(DDARing& ring, GCodes::RawMove &nextMove, bool doMoto
// 7. Calculate the provisional accelerate and decelerate distances and the top speed
endSpeed = 0.0; // until the next move asks us to adjust it
- if (prev->state != provisional || flags.isPrintingMove != prev->flags.isPrintingMove || flags.xyMoving != prev->flags.xyMoving)
- {
- // There is no previous move that we can adjust, so this move must start at zero speed.
- startSpeed = 0.0;
- }
- else
+ if (prev->state == provisional && (move.GetJerkPolicy() != 0 || (flags.isPrintingMove == prev->flags.isPrintingMove && flags.xyMoving == prev->flags.xyMoving)))
{
// Try to meld this move to the previous move to avoid stop/start
// Assuming that this move ends with zero speed, calculate the maximum possible starting speed: u^2 = v^2 - 2as
@@ -486,6 +481,11 @@ bool DDA::InitStandardMove(DDARing& ring, GCodes::RawMove &nextMove, bool doMoto
DoLookahead(ring, prev);
startSpeed = prev->endSpeed;
}
+ else
+ {
+ // There is no previous move that we can adjust, so start at zero speed.
+ startSpeed = 0.0;
+ }
RecalculateMove(ring);
state = provisional;
diff --git a/src/Movement/Move.cpp b/src/Movement/Move.cpp
index 9695f989..70d79f4f 100644
--- a/src/Movement/Move.cpp
+++ b/src/Movement/Move.cpp
@@ -66,10 +66,16 @@ DEFINE_GET_OBJECT_MODEL_TABLE(Move)
#endif
-Move::Move() : active(false)
+Move::Move()
+ : active(false),
+ drcEnabled(false), // disable dynamic ringing cancellation
+ maxPrintingAcceleration(10000.0), maxTravelAcceleration(10000.0),
+ drcPeriod(0.025), // 40Hz
+ drcMinimumAcceleration(10.0),
+ jerkPolicy(0)
{
// Kinematics must be set up here because GCodes::Init asks the kinematics for the assumed initial position
- kinematics = Kinematics::Create(KinematicsType::cartesian); // default to Cartesian
+ kinematics = Kinematics::Create(KinematicsType::cartesian); // default to Cartesian
mainDDARing.Init1(DdaRingLength);
DriveMovement::InitialAllocate(NumDms);
}
@@ -78,11 +84,6 @@ void Move::Init()
{
mainDDARing.Init2();
- maxPrintingAcceleration = maxTravelAcceleration = 10000.0;
- drcEnabled = false; // disable dynamic ringing cancellation
- drcMinimumAcceleration = 10.0;
- drcPeriod = 50.0;
-
// Clear the transforms
SetIdentityTransform();
tanXY = tanYZ = tanXZ = 0.0;
diff --git a/src/Movement/Move.h b/src/Movement/Move.h
index 972f3fb5..4bbd90c2 100644
--- a/src/Movement/Move.h
+++ b/src/Movement/Move.h
@@ -165,6 +165,9 @@ public:
uint32_t ExtruderPrintingSince() const { return mainDDARing.ExtruderPrintingSince(); } // When we started doing normal moves after the most recent extruder-only move
+ unsigned int GetJerkPolicy() const { return jerkPolicy; }
+ void SetJerkPolicy(unsigned int jp) { jerkPolicy = jp; }
+
#if HAS_SMART_DRIVERS
uint32_t GetStepInterval(size_t axis, uint32_t microstepShift) const; // Get the current step interval for this axis or extruder
#endif
@@ -203,6 +206,7 @@ private:
float drcPeriod; // the period of ringing that we don't want to excite
float drcMinimumAcceleration; // the minimum value that we reduce acceleration to
+ unsigned int jerkPolicy; // When we allow jerk
unsigned int idleCount; // The number of times Spin was called and had no new moves to process
uint32_t longestGcodeWaitInterval; // the longest we had to wait for a new GCode
uint32_t numHiccups; // How many times we delayed an interrupt to avoid using too much CPU time in interrupts
diff --git a/src/Networking/HttpResponder.cpp b/src/Networking/HttpResponder.cpp
index 85c4d96f..29945acc 100644
--- a/src/Networking/HttpResponder.cpp
+++ b/src/Networking/HttpResponder.cpp
@@ -1353,6 +1353,9 @@ void HttpResponder::Diagnostics(MessageType mt) const
/*static*/ void HttpResponder::Disable()
{
MutexLocker lock(gcodeReplyMutex);
+
+ clientsServed = 0;
+ numSessions = 0;
gcodeReply.ReleaseAll();
}
diff --git a/src/Networking/TelnetResponder.cpp b/src/Networking/TelnetResponder.cpp
index 8d23f491..7fc01310 100644
--- a/src/Networking/TelnetResponder.cpp
+++ b/src/Networking/TelnetResponder.cpp
@@ -301,6 +301,9 @@ void TelnetResponder::ProcessLine()
/*static*/ void TelnetResponder::Disable()
{
MutexLocker lock(gcodeReplyMutex);
+
+ clientsServed = 0;
+ numSessions = 0;
OutputBuffer::ReleaseAll(gcodeReply);
}
diff --git a/src/Version.h b/src/Version.h
index 423b0f97..60983f3e 100644
--- a/src/Version.h
+++ b/src/Version.h
@@ -11,16 +11,16 @@
#ifndef VERSION
#ifdef RTOS
-# define MAIN_VERSION "2.03RC5"
+# define MAIN_VERSION "2.03"
#else
-# define MAIN_VERSION "1.24RC5"
+# define MAIN_VERSION "1.24"
#endif
# define VERSION MAIN_VERSION
#endif
#ifndef DATE
-# define DATE "2019-06-05b5"
+# define DATE "2019-06-13b2"
#endif
#define AUTHORS "reprappro, dc42, chrishamm, t3p3, dnewman, printm3d"