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:
		| @@ -29,6 +29,7 @@ | |||||||
| // Ultimaker = 7 | // Ultimaker = 7 | ||||||
| // Teensylu = 8 | // Teensylu = 8 | ||||||
| // Gen3+ =9 | // Gen3+ =9 | ||||||
|  |  | ||||||
| #ifndef MOTHERBOARD | #ifndef MOTHERBOARD | ||||||
| #define MOTHERBOARD 7 | #define MOTHERBOARD 7 | ||||||
| #endif | #endif | ||||||
| @@ -89,8 +90,8 @@ | |||||||
| // If you are using a preconfigured hotend then you can use one of the value sets by uncommenting it | // If you are using a preconfigured hotend then you can use one of the value sets by uncommenting it | ||||||
| // Ultimaker | // Ultimaker | ||||||
|     #define  DEFAULT_Kp 22.2 |     #define  DEFAULT_Kp 22.2 | ||||||
|     #define  DEFAULT_Ki (1.08*PID_dT)   |     #define  DEFAULT_Ki 1.08   | ||||||
|     #define  DEFAULT_Kd (114/PID_dT)   |     #define  DEFAULT_Kd 114   | ||||||
|  |  | ||||||
| // Makergear | // Makergear | ||||||
| //    #define  DEFAULT_Kp 7.0 | //    #define  DEFAULT_Kp 7.0 | ||||||
| @@ -99,8 +100,8 @@ | |||||||
|  |  | ||||||
| // Mendel Parts V9 on 12V     | // Mendel Parts V9 on 12V     | ||||||
| //    #define  DEFAULT_Kp 63.0 | //    #define  DEFAULT_Kp 63.0 | ||||||
| //    #define  DEFAULT_Ki (2.25*PID_dT)   | //    #define  DEFAULT_Ki 2.25 | ||||||
| //    #define  DEFAULT_Kd (440/PID_dT) | //    #define  DEFAULT_Kd 440 | ||||||
| #endif // PIDTEMP | #endif // PIDTEMP | ||||||
|  |  | ||||||
| //this prevents dangerous Extruder moves, i.e. if the temperature is under the limit | //this prevents dangerous Extruder moves, i.e. if the temperature is under the limit | ||||||
|   | |||||||
| @@ -162,6 +162,9 @@ void ClearToSend(); | |||||||
| void get_coordinates(); | void get_coordinates(); | ||||||
| void prepare_move(); | void prepare_move(); | ||||||
| void kill(); | void kill(); | ||||||
|  | void Stop(); | ||||||
|  |  | ||||||
|  | bool IsStopped(); | ||||||
|  |  | ||||||
| void enquecommand(const char *cmd); //put an ascii command at the end of the current buffer. | void enquecommand(const char *cmd); //put an ascii command at the end of the current buffer. | ||||||
| void prepare_arc_move(char isclockwise); | 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. | // 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) | // M503 - print the current settings (from memory not from eeprom) | ||||||
| // M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C) | // M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C) | ||||||
|  | // M999 - Restart after being stopped by error | ||||||
|  |  | ||||||
| //Stepper Movement Variables | //Stepper Movement Variables | ||||||
|  |  | ||||||
| @@ -135,6 +136,7 @@ float add_homeing[3]={0,0,0}; | |||||||
| uint8_t active_extruder = 0; | uint8_t active_extruder = 0; | ||||||
| unsigned char FanSpeed=0; | unsigned char FanSpeed=0; | ||||||
|  |  | ||||||
|  |  | ||||||
| //=========================================================================== | //=========================================================================== | ||||||
| //=============================private variables============================= | //=============================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 float offset[3] = {0.0, 0.0, 0.0}; | ||||||
| static bool home_all_axis = true; | static bool home_all_axis = true; | ||||||
| static float feedrate = 1500.0, next_feedrate, saved_feedrate; | 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 = 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. | 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; | static uint8_t tmp_extruder; | ||||||
|  |  | ||||||
|  | bool Stopped=false; | ||||||
|  |  | ||||||
| //=========================================================================== | //=========================================================================== | ||||||
| //=============================ROUTINES============================= | //=============================ROUTINES============================= | ||||||
| @@ -415,11 +418,17 @@ void get_command() | |||||||
|           case 1: |           case 1: | ||||||
|           case 2: |           case 2: | ||||||
|           case 3: |           case 3: | ||||||
|  |             if(Stopped == false) { // If printer is stopped by an error the G[0-3] codes are ignored. | ||||||
| 	      #ifdef SDSUPPORT | 	      #ifdef SDSUPPORT | ||||||
|               if(card.saving) |               if(card.saving) | ||||||
|                 break; |                 break; | ||||||
| 	      #endif //SDSUPPORT | 	      #endif //SDSUPPORT | ||||||
|               SERIAL_PROTOCOLLNPGM(MSG_OK);  |               SERIAL_PROTOCOLLNPGM(MSG_OK);  | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |               SERIAL_ERRORLNPGM(MSG_ERR_STOPPED); | ||||||
|  |               LCD_MESSAGEPGM(MSG_STOPPED); | ||||||
|  |             } | ||||||
|             break; |             break; | ||||||
|           default: |           default: | ||||||
|             break; |             break; | ||||||
| @@ -547,19 +556,25 @@ void process_commands() | |||||||
|     { |     { | ||||||
|     case 0: // G0 -> G1 |     case 0: // G0 -> G1 | ||||||
|     case 1: // G1 |     case 1: // G1 | ||||||
|  |       if(Stopped == false) { | ||||||
|         get_coordinates(); // For X Y Z E F |         get_coordinates(); // For X Y Z E F | ||||||
|         prepare_move(); |         prepare_move(); | ||||||
|         //ClearToSend(); |         //ClearToSend(); | ||||||
|         return; |         return; | ||||||
|  |       } | ||||||
|       //break; |       //break; | ||||||
|     case 2: // G2  - CW ARC |     case 2: // G2  - CW ARC | ||||||
|  |       if(Stopped == false) { | ||||||
|         get_arc_coordinates(); |         get_arc_coordinates(); | ||||||
|         prepare_arc_move(true); |         prepare_arc_move(true); | ||||||
|         return; |         return; | ||||||
|  |       } | ||||||
|     case 3: // G3  - CCW ARC |     case 3: // G3  - CCW ARC | ||||||
|  |       if(Stopped == false) { | ||||||
|         get_arc_coordinates(); |         get_arc_coordinates(); | ||||||
|         prepare_arc_move(false); |         prepare_arc_move(false); | ||||||
|         return; |         return; | ||||||
|  |       } | ||||||
|     case 4: // G4 dwell |     case 4: // G4 dwell | ||||||
|       LCD_MESSAGEPGM(MSG_DWELL); |       LCD_MESSAGEPGM(MSG_DWELL); | ||||||
|       codenum = 0; |       codenum = 0; | ||||||
| @@ -972,6 +987,7 @@ void process_commands() | |||||||
|     #if (PS_ON_PIN > -1) |     #if (PS_ON_PIN > -1) | ||||||
|       case 80: // M80 - ATX Power On |       case 80: // M80 - ATX Power On | ||||||
|         SET_OUTPUT(PS_ON_PIN); //GND |         SET_OUTPUT(PS_ON_PIN); //GND | ||||||
|  |         WRITE(PS_ON_PIN, LOW); | ||||||
|         break; |         break; | ||||||
|       #endif |       #endif | ||||||
|        |        | ||||||
| @@ -1236,7 +1252,11 @@ void process_commands() | |||||||
|       EEPROM_printSettings(); |       EEPROM_printSettings(); | ||||||
|     } |     } | ||||||
|     break; |     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 |   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_NO_MOVE "No move." | ||||||
| 	#define MSG_PART_RELEASE "Partial Release" | 	#define MSG_PART_RELEASE "Partial Release" | ||||||
| 	#define MSG_KILLED "KILLED. " | 	#define MSG_KILLED "KILLED. " | ||||||
|  |         #define MSG_STOPPED "STOPPED. " | ||||||
| 	#define MSG_PREHEAT_PLA " Preheat PLA" | 	#define MSG_PREHEAT_PLA " Preheat PLA" | ||||||
| 	#define MSG_PREHEAT_ABS " Preheat ABS" | 	#define MSG_PREHEAT_ABS " Preheat ABS" | ||||||
| 	#define MSG_STEPPER_RELEASED "Released." | 	#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_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_COUNT_X " Count X:" | ||||||
| 	#define MSG_ERR_KILLED "Printer halted. kill() called !!" | 	#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_RESEND "Resend:" | ||||||
| 	#define MSG_UNKNOWN_COMMAND "Unknown command:\"" | 	#define MSG_UNKNOWN_COMMAND "Unknown command:\"" | ||||||
| 	#define MSG_ACTIVE_EXTRUDER "Active Extruder: " | 	#define MSG_ACTIVE_EXTRUDER "Active Extruder: " | ||||||
| @@ -221,6 +223,7 @@ | |||||||
| 	#define MSG_NO_MOVE "No move." | 	#define MSG_NO_MOVE "No move." | ||||||
| 	#define MSG_PART_RELEASE "Partial Release" | 	#define MSG_PART_RELEASE "Partial Release" | ||||||
| 	#define MSG_KILLED "KILLED. " | 	#define MSG_KILLED "KILLED. " | ||||||
|  | 	#define MSG_STOPPED "STOPPED. " | ||||||
| 	#define MSG_PREHEAT_PLA " Preheat PLA" | 	#define MSG_PREHEAT_PLA " Preheat PLA" | ||||||
| 	#define MSG_PREHEAT_ABS " Preheat ABS" | 	#define MSG_PREHEAT_ABS " Preheat ABS" | ||||||
| 	#define MSG_STEPPER_RELEASED "Released." | 	#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_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_COUNT_X " Count X:" | ||||||
| 	#define MSG_ERR_KILLED "Printer halted. kill() called !!" | 	#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_RESEND "Resend:" | ||||||
| 	#define MSG_UNKNOWN_COMMAND "Unknown command:\"" | 	#define MSG_UNKNOWN_COMMAND "Unknown command:\"" | ||||||
| 	#define MSG_ACTIVE_EXTRUDER "Active Extruder: " | 	#define MSG_ACTIVE_EXTRUDER "Active Extruder: " | ||||||
|   | |||||||
| @@ -51,8 +51,8 @@ int current_raw_bed = 0; | |||||||
|   float pid_setpoint[EXTRUDERS] = { 0.0 }; |   float pid_setpoint[EXTRUDERS] = { 0.0 }; | ||||||
|    |    | ||||||
|   float Kp=DEFAULT_Kp; |   float Kp=DEFAULT_Kp; | ||||||
|   float Ki=DEFAULT_Ki; |   float Ki=(DEFAULT_Ki*PID_dT); | ||||||
|   float Kd=DEFAULT_Kd; |   float Kd=(DEFAULT_Kd/PID_dT); | ||||||
|   #ifdef PID_ADD_EXTRUSION_RATE |   #ifdef PID_ADD_EXTRUSION_RATE | ||||||
|     float Kc=DEFAULT_Kc; |     float Kc=DEFAULT_Kc; | ||||||
|   #endif |   #endif | ||||||
| @@ -708,22 +708,28 @@ void disable_heater() | |||||||
|  |  | ||||||
| void max_temp_error(uint8_t e) { | void max_temp_error(uint8_t e) { | ||||||
|   digitalWrite(heater_pin_map[e], 0); |   digitalWrite(heater_pin_map[e], 0); | ||||||
|  |   if(IsStopped() == false) { | ||||||
|     SERIAL_ERROR_START; |     SERIAL_ERROR_START; | ||||||
|     SERIAL_ERRORLN(e); |     SERIAL_ERRORLN(e); | ||||||
|     SERIAL_ERRORLNPGM(": Extruder switched off. MAXTEMP triggered !"); |     SERIAL_ERRORLNPGM(": Extruder switched off. MAXTEMP triggered !"); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| void min_temp_error(uint8_t e) { | void min_temp_error(uint8_t e) { | ||||||
|   digitalWrite(heater_pin_map[e], 0); |   digitalWrite(heater_pin_map[e], 0); | ||||||
|  |   if(IsStopped() == false) { | ||||||
|     SERIAL_ERROR_START; |     SERIAL_ERROR_START; | ||||||
|     SERIAL_ERRORLN(e); |     SERIAL_ERRORLN(e); | ||||||
|     SERIAL_ERRORLNPGM(": Extruder switched off. MINTEMP triggered !"); |     SERIAL_ERRORLNPGM(": Extruder switched off. MINTEMP triggered !"); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| void bed_max_temp_error(void) { | void bed_max_temp_error(void) { | ||||||
|   digitalWrite(HEATER_BED_PIN, 0); |   digitalWrite(HEATER_BED_PIN, 0); | ||||||
|  |   if(IsStopped() == false) { | ||||||
|     SERIAL_ERROR_START; |     SERIAL_ERROR_START; | ||||||
|     SERIAL_ERRORLNPGM("Temperature heated bed switched off. MAXTEMP triggered !!"); |     SERIAL_ERRORLNPGM("Temperature heated bed switched off. MAXTEMP triggered !!"); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| #define HEAT_INTERVAL 250 | #define HEAT_INTERVAL 250 | ||||||
| @@ -956,7 +962,7 @@ ISR(TIMER0_COMPB_vect) | |||||||
|           max_temp_error(e); |           max_temp_error(e); | ||||||
|           #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE |           #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE | ||||||
|           { |           { | ||||||
|             kill();; |             Stop();; | ||||||
|           } |           } | ||||||
|           #endif |           #endif | ||||||
|        } |        } | ||||||
| @@ -965,7 +971,7 @@ ISR(TIMER0_COMPB_vect) | |||||||
|           min_temp_error(e); |           min_temp_error(e); | ||||||
|           #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE |           #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE | ||||||
|           { |           { | ||||||
|             kill(); |             Stop(); | ||||||
|           } |           } | ||||||
|           #endif |           #endif | ||||||
|        } |        } | ||||||
| @@ -975,7 +981,7 @@ ISR(TIMER0_COMPB_vect) | |||||||
|     if(current_raw_bed >= bed_maxttemp) { |     if(current_raw_bed >= bed_maxttemp) { | ||||||
|        target_raw_bed = 0; |        target_raw_bed = 0; | ||||||
|        bed_max_temp_error(); |        bed_max_temp_error(); | ||||||
|        kill(); |        Stop(); | ||||||
|     } |     } | ||||||
| #endif | #endif | ||||||
|   } |   } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user