Resolved parking accessory handling issue.
- Yikes. Totally borked the last parking “fix”. Testing shows that all accessories are now properly handled when retracting and restoring. It was caused by not accounting for the planner re-factoring correctly in the parking code.
This commit is contained in:
parent
f8ca08ad66
commit
a6f6431515
@ -1,3 +1,24 @@
|
|||||||
|
----------------
|
||||||
|
Date: 2016-10-24
|
||||||
|
Author: Sonny Jeon
|
||||||
|
Subject: Minor re-factoring. Fix an issue with parking and spindle restore.
|
||||||
|
|
||||||
|
- Altered the report counters to be count down, rather than count up.
|
||||||
|
Simplified some of the logic.
|
||||||
|
|
||||||
|
- Fixed an issue with parking restore. The spindle state would disable
|
||||||
|
then reenable.
|
||||||
|
|
||||||
|
- Clarified some of the config.h descriptions.
|
||||||
|
|
||||||
|
- Moved the compile-time checks from config.h to grbl.h. They don’t
|
||||||
|
belong in the config.h file.
|
||||||
|
|
||||||
|
- Refactored the initialization of the system variables in main.c.
|
||||||
|
System position and probe position were undefined when power cycled,
|
||||||
|
but were zero anyway. Added clear vector code to make it explicit.
|
||||||
|
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
Date: 2016-10-23
|
Date: 2016-10-23
|
||||||
Author: Sonny Jeon
|
Author: Sonny Jeon
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
// Grbl versioning system
|
// Grbl versioning system
|
||||||
#define GRBL_VERSION "1.1d"
|
#define GRBL_VERSION "1.1d"
|
||||||
#define GRBL_VERSION_BUILD "20161024"
|
#define GRBL_VERSION_BUILD "20161025"
|
||||||
|
|
||||||
// Define standard libraries used by Grbl.
|
// Define standard libraries used by Grbl.
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#define PL_COND_FLAG_SPINDLE_CCW bit(5)
|
#define PL_COND_FLAG_SPINDLE_CCW bit(5)
|
||||||
#define PL_COND_FLAG_COOLANT_FLOOD bit(6)
|
#define PL_COND_FLAG_COOLANT_FLOOD bit(6)
|
||||||
#define PL_COND_FLAG_COOLANT_MIST bit(7)
|
#define PL_COND_FLAG_COOLANT_MIST bit(7)
|
||||||
|
#define PL_COND_ACCESSORY_MASK (PL_COND_FLAG_SPINDLE_CW|PL_COND_FLAG_SPINDLE_CCW|PL_COND_FLAG_COOLANT_FLOOD|PL_COND_FLAG_COOLANT_MIST)
|
||||||
|
|
||||||
|
|
||||||
// This struct stores a linear movement of a g-code block motion with its critical "nominal" values
|
// This struct stores a linear movement of a g-code block motion with its critical "nominal" values
|
||||||
|
@ -506,12 +506,17 @@ void protocol_exec_rt_system()
|
|||||||
static void protocol_exec_rt_suspend()
|
static void protocol_exec_rt_suspend()
|
||||||
{
|
{
|
||||||
#ifdef PARKING_ENABLE
|
#ifdef PARKING_ENABLE
|
||||||
// Declare parking local variables
|
// Declare and initialize parking local variables
|
||||||
float restore_target[N_AXIS];
|
float restore_target[N_AXIS];
|
||||||
float parking_target[N_AXIS];
|
float parking_target[N_AXIS];
|
||||||
float retract_waypoint = PARKING_PULLOUT_INCREMENT;
|
float retract_waypoint = PARKING_PULLOUT_INCREMENT;
|
||||||
plan_line_data_t plan_data;
|
plan_line_data_t plan_data;
|
||||||
plan_line_data_t *pl_data = &plan_data;
|
plan_line_data_t *pl_data = &plan_data;
|
||||||
|
memset(pl_data,0,sizeof(plan_line_data_t));
|
||||||
|
pl_data->condition = (PL_COND_FLAG_SYSTEM_MOTION|PL_COND_FLAG_NO_FEED_OVERRIDE);
|
||||||
|
#ifdef USE_LINE_NUMBERS
|
||||||
|
pl_data->line_number = PARKING_MOTION_LINE_NUMBER;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
plan_block_t *block = plan_get_current_block();
|
plan_block_t *block = plan_get_current_block();
|
||||||
@ -554,13 +559,6 @@ static void protocol_exec_rt_suspend()
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
// Initialize planner state data
|
|
||||||
memset(pl_data,0,sizeof(plan_line_data_t));
|
|
||||||
pl_data->condition = (PL_COND_FLAG_SYSTEM_MOTION|PL_COND_FLAG_NO_FEED_OVERRIDE);
|
|
||||||
#ifdef USE_LINE_NUMBERS
|
|
||||||
pl_data->line_number = PARKING_MOTION_LINE_NUMBER;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Get current position and store restore location and spindle retract waypoint.
|
// Get current position and store restore location and spindle retract waypoint.
|
||||||
system_convert_array_steps_to_mpos(parking_target,sys_position);
|
system_convert_array_steps_to_mpos(parking_target,sys_position);
|
||||||
if (bit_isfalse(sys.suspend,SUSPEND_RESTART_RETRACT)) {
|
if (bit_isfalse(sys.suspend,SUSPEND_RESTART_RETRACT)) {
|
||||||
@ -581,7 +579,12 @@ static void protocol_exec_rt_suspend()
|
|||||||
if (parking_target[PARKING_AXIS] < retract_waypoint) {
|
if (parking_target[PARKING_AXIS] < retract_waypoint) {
|
||||||
parking_target[PARKING_AXIS] = retract_waypoint;
|
parking_target[PARKING_AXIS] = retract_waypoint;
|
||||||
pl_data->feed_rate = PARKING_PULLOUT_RATE;
|
pl_data->feed_rate = PARKING_PULLOUT_RATE;
|
||||||
|
// NOTE: Retain accessory state for retract motion, then clear for remaining parking motions.
|
||||||
|
pl_data->condition |= (restore_condition & PL_COND_ACCESSORY_MASK);
|
||||||
|
pl_data->spindle_speed = restore_spindle_speed;
|
||||||
mc_parking_motion(parking_target, pl_data);
|
mc_parking_motion(parking_target, pl_data);
|
||||||
|
pl_data->condition = (PL_COND_FLAG_SYSTEM_MOTION|PL_COND_FLAG_NO_FEED_OVERRIDE);
|
||||||
|
pl_data->spindle_speed = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
spindle_set_state(SPINDLE_DISABLE,0.0); // De-energize
|
spindle_set_state(SPINDLE_DISABLE,0.0); // De-energize
|
||||||
@ -677,7 +680,7 @@ static void protocol_exec_rt_suspend()
|
|||||||
// NOTE: If retract is restarted, spindle and coolant states will be cleared in
|
// NOTE: If retract is restarted, spindle and coolant states will be cleared in
|
||||||
// the beginning of the retract routine.
|
// the beginning of the retract routine.
|
||||||
pl_data->feed_rate = PARKING_PULLOUT_RATE;
|
pl_data->feed_rate = PARKING_PULLOUT_RATE;
|
||||||
pl_data->condition = restore_condition;
|
pl_data->condition |= (restore_condition & PL_COND_ACCESSORY_MASK);
|
||||||
pl_data->spindle_speed = restore_spindle_speed;
|
pl_data->spindle_speed = restore_spindle_speed;
|
||||||
mc_parking_motion(restore_target, pl_data);
|
mc_parking_motion(restore_target, pl_data);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user