diff options
author | David Crocker <dcrocker@eschertech.com> | 2018-08-31 22:13:17 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2018-08-31 22:13:17 +0300 |
commit | a9ac37f4ab515e3fea12cecb7850eedf362b253e (patch) | |
tree | 4f8fb0d39319f6a0a81e8cc21a63486a6334338a | |
parent | 295e8a0cad9b1e8f0b1cdf3da005a0b241d98769 (diff) |
Version 2.02RC12.02RC1
Reduced default stealthChop/spreadCycle crossover speed
Increased length of stepper driver open load timer to avoid false open load reports#If heater failes due to bad curve fit, report gani/time constant/dead time as A, C and D as in M307
When pausing, inclucde the pause coordinates in the "Print paused" message
-rw-r--r-- | src/BugList.txt | 2 | ||||
-rw-r--r-- | src/Configuration.h | 2 | ||||
-rw-r--r-- | src/GCodes/GCodes.cpp | 61 | ||||
-rw-r--r-- | src/Heating/Pid.cpp | 7 | ||||
-rw-r--r-- | src/RepRapFirmware.cpp | 4 | ||||
-rw-r--r-- | src/Version.h | 4 |
6 files changed, 67 insertions, 13 deletions
diff --git a/src/BugList.txt b/src/BugList.txt index cb8ead50..4123907b 100644 --- a/src/BugList.txt +++ b/src/BugList.txt @@ -41,6 +41,8 @@ Remaining: - [done, ok on DuetM, test on Duet2] No warning messages when TMC2224 drivers overheat, https://forum.duet3d.com/topic/6309/little-monster-s-hort-to-ground/13 - [done] Different numbers of endstop inputs and motor drivers - [done, ok] Support mixed stealthchop/spread cycle mode on Maestro via TPWMTHRS register, https://forum.duet3d.com/topic/6512/duet-2-maestro-stealthchop-default/7 +- [done, test] Add paused coordinates to 'printing paused' message? https://reprap.org/forum/read.php?416,832303,832440#msg-832440 +- [done] If a bad curve fit occurs during tuning, display the values as A, C and D instead of G, tc and td to better relate to M307 - Add check digit to serial number - check DAA working as intended, results are inconsistent - chrishamm's watchdog issue, see his email oif 2018-08-01 diff --git a/src/Configuration.h b/src/Configuration.h index ff09ac51..be15ebfd 100644 --- a/src/Configuration.h +++ b/src/Configuration.h @@ -32,7 +32,7 @@ constexpr float ROOM_TEMPERATURE = 21.0; // Celsius // Timeouts constexpr uint32_t FanCheckInterval = 500; // Milliseconds -constexpr uint32_t OpenLoadTimeout = 500; // Milliseconds +constexpr uint32_t OpenLoadTimeout = 5000; // Milliseconds. A value of 500 resulted in lots of spurious detections in the SCARA extruder. Even 2000 resulted in a couple. constexpr uint32_t MinimumWarningInterval = 4000; // Milliseconds, must be at least as long as FanCheckInterval constexpr uint32_t LogFlushInterval = 15000; // Milliseconds constexpr uint32_t DriverCoolingTimeout = 4000; // Milliseconds diff --git a/src/GCodes/GCodes.cpp b/src/GCodes/GCodes.cpp index aca91dfe..f3ca91a2 100644 --- a/src/GCodes/GCodes.cpp +++ b/src/GCodes/GCodes.cpp @@ -679,8 +679,12 @@ void GCodes::RunStateMachine(GCodeBuffer& gb, const StringRef& reply) case GCodeState::pausing2: if (LockMovementAndWaitForStandstill(gb)) { - reply.copy("Printing paused"); - platform.Message(LogMessage, "Printing paused\n"); + reply.printf("Printing paused at"); + for (size_t axis = 0; axis < numVisibleAxes; ++axis) + { + reply.catf(" %c%.1f", axisLetters[axis], (double)pauseRestorePoint.moveCoords[axis]); + } + platform.MessageF(LogMessage, "%s\n", reply.c_str()); gb.SetState(GCodeState::normal); } break; @@ -1735,6 +1739,13 @@ void GCodes::DoPause(GCodeBuffer& gb, PauseReason reason, const char *msg) } } +#if SUPPORT_LASER + if (machineType == MachineType::laser) + { + moveBuffer.laserPwmOrIoBits.laserPwm = 0; // turn off the laser when we start moving + } +#endif + SaveFanSpeeds(); pauseRestorePoint.toolNumber = reprap.GetCurrentToolNumber(); @@ -2382,9 +2393,18 @@ const char* GCodes::DoStraightMove(GCodeBuffer& gb, bool isCoordinated) #if SUPPORT_LASER else if (machineType == MachineType::laser) { - moveBuffer.laserPwmOrIoBits.laserPwm = (moveBuffer.moveType == 0 && isCoordinated && gb.Seen('S')) - ? ConvertLaserPwm(gb.GetFValue()) - : 0; + if (!isCoordinated || moveBuffer.moveType != 0) + { + moveBuffer.laserPwmOrIoBits.laserPwm = 0; + } + else if (gb.Seen('S')) + { + moveBuffer.laserPwmOrIoBits.laserPwm = ConvertLaserPwm(gb.GetFValue()); + } + else + { + // leave the laser PWM alone because this is what LaserWeb expects + } } #endif #if SUPPORT_IOBITS @@ -2696,6 +2716,37 @@ const char* GCodes::DoArcMove(GCodeBuffer& gb, bool clockwise) LoadExtrusionAndFeedrateFromGCode(gb); +#if SUPPORT_LASER + if (machineType == MachineType::laser) + { + if (gb.Seen('S')) + { + moveBuffer.laserPwmOrIoBits.laserPwm = ConvertLaserPwm(gb.GetFValue()); + } + else + { + // leave the laser PWM alone because this is what LaserWeb expects + } + } +# if SUPPORT_IOBITS + else +# endif +#endif +#if SUPPORT_IOBITS + { + // Update the iobits parameter + if (gb.Seen('P')) + { + moveBuffer.laserPwmOrIoBits.ioBits = (IoBits_t)gb.GetIValue(); + } + else + { + // Leave moveBuffer.ioBits alone so that we keep the previous value + } + } +#endif + + moveBuffer.usePressureAdvance = moveBuffer.hasExtrusion; arcRadius = sqrtf(iParam * iParam + jParam * jParam); diff --git a/src/Heating/Pid.cpp b/src/Heating/Pid.cpp index 152bdd40..10eacbd4 100644 --- a/src/Heating/Pid.cpp +++ b/src/Heating/Pid.cpp @@ -749,7 +749,7 @@ void PID::DoTuningStep() const int peakIndex = GetPeakTempIndex(); if (peakIndex < 0) { - if (millis() - tuningPhaseStartTime < 60 * 1000) // allow 1 minute for the bed temperature reach peal temperature + if (millis() - tuningPhaseStartTime < 60 * 1000) // allow 1 minute for the bed temperature reach peak temperature { return; // still waiting for peak temperature } @@ -898,7 +898,8 @@ void PID::CalculateModel() { DisplayBuffer("At completion"); } - const float tc = (float)((tuningReadingsTaken - 1) * tuningReadingInterval)/(1000.0 * logf((tuningTempReadings[0] - tuningStartTemp)/(tuningTempReadings[tuningReadingsTaken - 1] - tuningStartTemp))); + const float tc = (float)((tuningReadingsTaken - 1) * tuningReadingInterval) + /(1000.0 * logf((tuningTempReadings[0] - tuningStartTemp)/(tuningTempReadings[tuningReadingsTaken - 1] - tuningStartTemp))); const float heatingTime = (tuningHeatingTime - tuningPeakDelay) * 0.001; const float gain = (tuningHeaterOffTemp - tuningStartTemp)/(1.0 - expf(-heatingTime/tc)); @@ -925,7 +926,7 @@ void PID::CalculateModel() } else { - platform.MessageF(WarningMessage, "Auto tune of heater %u failed due to bad curve fit (G=%.1f, tc=%.1f, td=%.1f)\n", heater, (double)gain, (double)tc, (double)td); + platform.MessageF(WarningMessage, "Auto tune of heater %u failed due to bad curve fit (A=%.1f, C=%.1f, D=%.1f)\n", heater, (double)gain, (double)tc, (double)td); } } diff --git a/src/RepRapFirmware.cpp b/src/RepRapFirmware.cpp index 87a70d3e..929001a1 100644 --- a/src/RepRapFirmware.cpp +++ b/src/RepRapFirmware.cpp @@ -209,10 +209,10 @@ bool MillisTimer::Check(uint32_t timeoutMillis) const return running && millis() - whenStarted >= timeoutMillis; } -// Check whether a timeout has expired and don't stop the timer if it has, else leave it running if it was +// Check whether a timeout has expired and stop the timer if it has, else leave it running if it was running bool MillisTimer::CheckAndStop(uint32_t timeoutMillis) { - const bool ret = running && millis() - whenStarted >= timeoutMillis; + const bool ret = Check(timeoutMillis); if (ret) { running = false; diff --git a/src/Version.h b/src/Version.h index 9762aaa2..938e6eec 100644 --- a/src/Version.h +++ b/src/Version.h @@ -12,7 +12,7 @@ #ifndef VERSION #ifdef RTOS # define RTOSVER "(RTOS)" -# define MAIN_VERSION "2.02beta2" +# define MAIN_VERSION "2.02RC1" #else # define MAIN_VERSION "1.22" # define RTOSVER @@ -22,7 +22,7 @@ #endif #ifndef DATE -# define DATE "2018-08-30b3" +# define DATE "2018-08-31b4" #endif #define AUTHORS "reprappro, dc42, chrishamm, t3p3, dnewman, printm3d" |