#define preset2_checksum CHECKSUM("preset2")
#define runaway_range_checksum CHECKSUM("runaway_range")
-#define runaway_timeout_checksum CHECKSUM("runaway_timeout")
#define runaway_heating_timeout_checksum CHECKSUM("runaway_heating_timeout")
TemperatureControl::TemperatureControl(uint16_t name, int index)
// Runaway parameters
this->runaway_range = THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, runaway_range_checksum)->by_default(0)->as_number();
- this->runaway_timeout = THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, runaway_timeout_checksum)->by_default(0)->as_number();
this->runaway_heating_timeout = THEKERNEL->config->value(temperature_control_checksum, this->name_checksum, runaway_heating_timeout_checksum)->by_default(0)->as_number();
// Max and min temperatures we are not allowed to get over (Safety)
if(this->active) {
// required so temp change happens in order
- THEKERNEL->conveyor->wait_for_empty_queue();
+ THEKERNEL->conveyor->wait_for_idle();
float v = gcode->get_value('S');
if( this->target_temperature <= 0 ){ // If we are not trying to heat, state is NOT_HEATING
this->runaway_state = NOT_HEATING;
- this->runaway_timer = 0;
}else{
switch( this->runaway_state ){
case NOT_HEATING: // If we were previously not trying to heat, but we are now, change to state WAITING_FOR_TEMP_TO_BE_REACHED
case TARGET_TEMPERATURE_REACHED: // If we are in state TARGET_TEMPERATURE_REACHED, check for thermal runaway
// If the temperature is outside the acceptable range
if( fabs( this->get_temperature() - this->target_temperature ) > this->runaway_range && this->runaway_range != 0 ){
- // Increase the timer, aka « One more second with a problem maybe occuring »
- this->runaway_timer++;
-
- // If the timer has a too large value ( we have been too long outside the desired temperature range )
- if( this->runaway_timer > this->runaway_timeout && this->runaway_timeout != 0 ){
- THEKERNEL->streams->printf("Error : Temperature runaway on %s, HALT asserted, TURN POWER OFF IMMEDIATELY - reset or M999 required\n", designator.c_str());
- THEKERNEL->call_event(ON_HALT, nullptr);
- }
- }else{
- // The temperature was inside the acceptable range, reset the timer
- this->runaway_timer = 0;
+ THEKERNEL->streams->printf("Error : Temperature runaway on %s, HALT asserted, TURN POWER OFF IMMEDIATELY - reset or M999 required\n", designator.c_str());
+ THEKERNEL->call_event(ON_HALT, nullptr);
}
break;
}