andrivet / ADVi3pp

ADVi3++, an alternative and better firmware for Wanhao i3 Plus printers and clones. Fork of Marlin Firmware.
https://community.advi3pp.com
GNU General Public License v3.0
243 stars 119 forks source link

Thermal runaway error is not always displayed on the LCD screen #318

Closed andrivet closed 2 years ago

andrivet commented 2 years ago

Did you check that your report is not a duplicate?

Yes, I have checked and this is a new bug not previously reported.

Bug Description

Sometimes, the Thermal runaway error is not displayed on the LCD screen.

Expected behavior

The error should be displayed in order to troubleshooting the problem.

Actual behavior

The error is output on the serial port:

echo:busy: processing
 T:210.51 /0.00 B:50.61 /60.00 @:0 B@:127 W:?
 T:210.47 /0.00 B:50.60 /60.00 @:0 B@:127 W:?
Error:Thermal Runaway, system stopped! Heater_ID: bed

but then the printer reboots:

Error:Thermal Runaway, system stopped! Heater_ID: bed
echo:busy: processing
echo:busy: processing
start
...

Steps to Reproduce

  1. Start a print in the hardware simulator
  2. Do not raise the temperature of the bed
  3. Wait for the print to start
  4. After a while, the firmware reboots

Version of ADVi3++ Firmware

5.4.2

Printer model

Wanhao Duplicator i3 Plus

Mods

No response

Bed Leveling

No response

Your Slicer

No response

Host Software

No response

Additional information & file uploads

First reported here: https://community.advi3pp.com/t/crash-after-the-same-number-of-layers-possible-thermal-runaway-error-missing/4512/14

andrivet commented 2 years ago

So this issue (error not displayed) is a consequence of a new feature introduced in Marlin in 2021: https://github.com/MarlinFirmware/Marlin/pull/23172 This change was released with Marlin version 2.0.9.3. It is related to this issue: https://github.com/MarlinFirmware/Marlin/pull/23172

The problem is the following:

I find the choice of Marlin somewhat strange. If there is a hardware error, it is better (in my point of view) to avoid doing complicated things like moving.

The solution I have implemented in version 5.5.0 is to introduce a new flag NOZZLE_PARK_ON_ERROR in Configuration.h. This flags is used in loud_kill (Temperature.cpp) instead of NOZZLE_PARK_FEATURE and is not defined (commented) in the configuration of ADVi3++. So the change to Marlin's code is minimal.