mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-26 21:36:21 +00:00
Replaced Kill by Stop. If the printer is stopped. Fix the error and use M999 to restart.
Moved the PID_dT in the Ki and Kd calculation from the configuration.h to temperature.cpp
This commit is contained in:
parent
8b785f75a6
commit
63aec3c56e
@ -29,6 +29,7 @@
|
||||
// Ultimaker = 7
|
||||
// Teensylu = 8
|
||||
// Gen3+ =9
|
||||
|
||||
#ifndef MOTHERBOARD
|
||||
#define MOTHERBOARD 7
|
||||
#endif
|
||||
@ -89,8 +90,8 @@
|
||||
// If you are using a preconfigured hotend then you can use one of the value sets by uncommenting it
|
||||
// Ultimaker
|
||||
#define DEFAULT_Kp 22.2
|
||||
#define DEFAULT_Ki (1.08*PID_dT)
|
||||
#define DEFAULT_Kd (114/PID_dT)
|
||||
#define DEFAULT_Ki 1.08
|
||||
#define DEFAULT_Kd 114
|
||||
|
||||
// Makergear
|
||||
// #define DEFAULT_Kp 7.0
|
||||
@ -99,8 +100,8 @@
|
||||
|
||||
// Mendel Parts V9 on 12V
|
||||
// #define DEFAULT_Kp 63.0
|
||||
// #define DEFAULT_Ki (2.25*PID_dT)
|
||||
// #define DEFAULT_Kd (440/PID_dT)
|
||||
// #define DEFAULT_Ki 2.25
|
||||
// #define DEFAULT_Kd 440
|
||||
#endif // PIDTEMP
|
||||
|
||||
//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
|
||||
|
@ -162,6 +162,9 @@ void ClearToSend();
|
||||
void get_coordinates();
|
||||
void prepare_move();
|
||||
void kill();
|
||||
void Stop();
|
||||
|
||||
bool IsStopped();
|
||||
|
||||
void enquecommand(const char *cmd); //put an ascii command at the end of the current buffer.
|
||||
void prepare_arc_move(char isclockwise);
|
||||
|
@ -110,6 +110,7 @@
|
||||
// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
|
||||
// M503 - print the current settings (from memory not from eeprom)
|
||||
// M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
|
||||
// M999 - Restart after being stopped by error
|
||||
|
||||
//Stepper Movement Variables
|
||||
|
||||
@ -135,6 +136,7 @@ float add_homeing[3]={0,0,0};
|
||||
uint8_t active_extruder = 0;
|
||||
unsigned char FanSpeed=0;
|
||||
|
||||
|
||||
//===========================================================================
|
||||
//=============================private variables=============================
|
||||
//===========================================================================
|
||||
@ -143,7 +145,7 @@ static float destination[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0};
|
||||
static float offset[3] = {0.0, 0.0, 0.0};
|
||||
static bool home_all_axis = true;
|
||||
static float feedrate = 1500.0, next_feedrate, saved_feedrate;
|
||||
static long gcode_N, gcode_LastN;
|
||||
static long gcode_N, gcode_LastN, Stopped_gcode_LastN = 0;
|
||||
|
||||
static bool relative_mode = false; //Determines Absolute or Relative Coordinates
|
||||
static bool relative_mode_e = false; //Determines Absolute or Relative E Codes while in Absolute Coordinates mode. E is always relative in Relative Coordinates mode.
|
||||
@ -174,6 +176,7 @@ static unsigned long stoptime=0;
|
||||
|
||||
static uint8_t tmp_extruder;
|
||||
|
||||
bool Stopped=false;
|
||||
|
||||
//===========================================================================
|
||||
//=============================ROUTINES=============================
|
||||
@ -415,11 +418,17 @@ void get_command()
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
if(Stopped == false) { // If printer is stopped by an error the G[0-3] codes are ignored.
|
||||
#ifdef SDSUPPORT
|
||||
if(card.saving)
|
||||
break;
|
||||
#endif //SDSUPPORT
|
||||
SERIAL_PROTOCOLLNPGM(MSG_OK);
|
||||
}
|
||||
else {
|
||||
SERIAL_ERRORLNPGM(MSG_ERR_STOPPED);
|
||||
LCD_MESSAGEPGM(MSG_STOPPED);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -547,19 +556,25 @@ void process_commands()
|
||||
{
|
||||
case 0: // G0 -> G1
|
||||
case 1: // G1
|
||||
if(Stopped == false) {
|
||||
get_coordinates(); // For X Y Z E F
|
||||
prepare_move();
|
||||
//ClearToSend();
|
||||
return;
|
||||
}
|
||||
//break;
|
||||
case 2: // G2 - CW ARC
|
||||
if(Stopped == false) {
|
||||
get_arc_coordinates();
|
||||
prepare_arc_move(true);
|
||||
return;
|
||||
}
|
||||
case 3: // G3 - CCW ARC
|
||||
if(Stopped == false) {
|
||||
get_arc_coordinates();
|
||||
prepare_arc_move(false);
|
||||
return;
|
||||
}
|
||||
case 4: // G4 dwell
|
||||
LCD_MESSAGEPGM(MSG_DWELL);
|
||||
codenum = 0;
|
||||
@ -972,6 +987,7 @@ void process_commands()
|
||||
#if (PS_ON_PIN > -1)
|
||||
case 80: // M80 - ATX Power On
|
||||
SET_OUTPUT(PS_ON_PIN); //GND
|
||||
WRITE(PS_ON_PIN, LOW);
|
||||
break;
|
||||
#endif
|
||||
|
||||
@ -1236,7 +1252,11 @@ void process_commands()
|
||||
EEPROM_printSettings();
|
||||
}
|
||||
break;
|
||||
|
||||
case 999: // Restart after being stopped
|
||||
Stopped = false;
|
||||
gcode_LastN = Stopped_gcode_LastN;
|
||||
FlushSerialRequestResend();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1438,4 +1458,18 @@ void kill()
|
||||
while(1); // Wait for reset
|
||||
}
|
||||
|
||||
void Stop()
|
||||
{
|
||||
disable_heater();
|
||||
if(Stopped == false) {
|
||||
Stopped = true;
|
||||
Stopped_gcode_LastN = gcode_LastN; // Save last g_code for restart
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLNPGM(MSG_ERR_STOPPED);
|
||||
LCD_MESSAGEPGM(MSG_STOPPED);
|
||||
}
|
||||
}
|
||||
|
||||
bool IsStopped() { return Stopped; };
|
||||
|
||||
|
||||
|
@ -78,6 +78,7 @@
|
||||
#define MSG_NO_MOVE "No move."
|
||||
#define MSG_PART_RELEASE "Partial Release"
|
||||
#define MSG_KILLED "KILLED. "
|
||||
#define MSG_STOPPED "STOPPED. "
|
||||
#define MSG_PREHEAT_PLA " Preheat PLA"
|
||||
#define MSG_PREHEAT_ABS " Preheat ABS"
|
||||
#define MSG_STEPPER_RELEASED "Released."
|
||||
@ -116,6 +117,7 @@
|
||||
#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1\n"
|
||||
#define MSG_COUNT_X " Count X:"
|
||||
#define MSG_ERR_KILLED "Printer halted. kill() called !!"
|
||||
#define MSG_ERR_STOPPED "Printer stopped deu to errors. Fix the error and use M999 to restart!. (Temperature is reset. Set it before restarting)"
|
||||
#define MSG_RESEND "Resend:"
|
||||
#define MSG_UNKNOWN_COMMAND "Unknown command:\""
|
||||
#define MSG_ACTIVE_EXTRUDER "Active Extruder: "
|
||||
@ -221,6 +223,7 @@
|
||||
#define MSG_NO_MOVE "No move."
|
||||
#define MSG_PART_RELEASE "Partial Release"
|
||||
#define MSG_KILLED "KILLED. "
|
||||
#define MSG_STOPPED "STOPPED. "
|
||||
#define MSG_PREHEAT_PLA " Preheat PLA"
|
||||
#define MSG_PREHEAT_ABS " Preheat ABS"
|
||||
#define MSG_STEPPER_RELEASED "Released."
|
||||
@ -259,6 +262,7 @@
|
||||
#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1\n"
|
||||
#define MSG_COUNT_X " Count X:"
|
||||
#define MSG_ERR_KILLED "Printer halted. kill() called !!"
|
||||
#define MSG_ERR_STOPPED "Printer stopped deu to errors. Fix the error and use M999 to restart!"
|
||||
#define MSG_RESEND "Resend:"
|
||||
#define MSG_UNKNOWN_COMMAND "Unknown command:\""
|
||||
#define MSG_ACTIVE_EXTRUDER "Active Extruder: "
|
||||
|
@ -51,8 +51,8 @@ int current_raw_bed = 0;
|
||||
float pid_setpoint[EXTRUDERS] = { 0.0 };
|
||||
|
||||
float Kp=DEFAULT_Kp;
|
||||
float Ki=DEFAULT_Ki;
|
||||
float Kd=DEFAULT_Kd;
|
||||
float Ki=(DEFAULT_Ki*PID_dT);
|
||||
float Kd=(DEFAULT_Kd/PID_dT);
|
||||
#ifdef PID_ADD_EXTRUSION_RATE
|
||||
float Kc=DEFAULT_Kc;
|
||||
#endif
|
||||
@ -708,22 +708,28 @@ void disable_heater()
|
||||
|
||||
void max_temp_error(uint8_t e) {
|
||||
digitalWrite(heater_pin_map[e], 0);
|
||||
if(IsStopped() == false) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLN(e);
|
||||
SERIAL_ERRORLNPGM(": Extruder switched off. MAXTEMP triggered !");
|
||||
}
|
||||
}
|
||||
|
||||
void min_temp_error(uint8_t e) {
|
||||
digitalWrite(heater_pin_map[e], 0);
|
||||
if(IsStopped() == false) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLN(e);
|
||||
SERIAL_ERRORLNPGM(": Extruder switched off. MINTEMP triggered !");
|
||||
}
|
||||
}
|
||||
|
||||
void bed_max_temp_error(void) {
|
||||
digitalWrite(HEATER_BED_PIN, 0);
|
||||
if(IsStopped() == false) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLNPGM("Temperature heated bed switched off. MAXTEMP triggered !!");
|
||||
}
|
||||
}
|
||||
|
||||
#define HEAT_INTERVAL 250
|
||||
@ -956,7 +962,7 @@ ISR(TIMER0_COMPB_vect)
|
||||
max_temp_error(e);
|
||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||
{
|
||||
kill();;
|
||||
Stop();;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -965,7 +971,7 @@ ISR(TIMER0_COMPB_vect)
|
||||
min_temp_error(e);
|
||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||
{
|
||||
kill();
|
||||
Stop();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -975,7 +981,7 @@ ISR(TIMER0_COMPB_vect)
|
||||
if(current_raw_bed >= bed_maxttemp) {
|
||||
target_raw_bed = 0;
|
||||
bed_max_temp_error();
|
||||
kill();
|
||||
Stop();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user