kopia lustrzana https://github.com/gnea/grbl
				
				
				
			Soft limit error bug fix.
- Soft limit errors were stuck in a feed hold without notifying the user why it was in a hold. When resumed, the soft limit error would kick in. Issue should be fixed to behave as intended. To automatically hold and issue a soft limit alarm once the machine has come to a stop.pull/1/head
							rodzic
							
								
									111d28dc9a
								
							
						
					
					
						commit
						81adc202cd
					
				|  | @ -1,3 +1,23 @@ | |||
| ---------------- | ||||
| Date: 2016-03-04 | ||||
| Author: Sonny Jeon | ||||
| Subject: Applied master branch bug fixes. | ||||
| 
 | ||||
| - Planner was under-estimating maximum speeds through straight | ||||
| junctions in certain cases. The calculations have been updated to be | ||||
| more accurate. | ||||
| 
 | ||||
| - Strange sizeof() bug in the most recent releases. Manifested as an | ||||
| alarm upon a power up even when homing was disabled. Fixed by declaring | ||||
| sizeof() with struct types, rather than variable names, even though | ||||
| they were validated to give the same value. | ||||
| 
 | ||||
| - Spindle speed zero should disable the spindle. Now fixed. | ||||
| 
 | ||||
| - New configuration option for inverting certain limit pins. Handy for | ||||
| mixed NO and NC switch machines. See config.h for details. | ||||
| 
 | ||||
| 
 | ||||
| ---------------- | ||||
| Date: 2015-11-09 | ||||
| Author: Sonny Jeon | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ | |||
| 
 | ||||
| // Grbl versioning system
 | ||||
| #define GRBL_VERSION "1.0c" | ||||
| #define GRBL_VERSION_BUILD "20160304" | ||||
| #define GRBL_VERSION_BUILD "20160311" | ||||
| 
 | ||||
| // Define standard libraries used by Grbl.
 | ||||
| #include <avr/io.h> | ||||
|  |  | |||
|  | @ -317,23 +317,22 @@ void limits_go_home(uint8_t cycle_mask) | |||
| void limits_soft_check(float *target) | ||||
| { | ||||
|   uint8_t idx; | ||||
|   uint8_t soft_limit_error = false; | ||||
|   for (idx=0; idx<N_AXIS; idx++) { | ||||
|     | ||||
|     #ifdef HOMING_FORCE_SET_ORIGIN | ||||
|       // When homing forced set origin is enabled, soft limits checks need to account for directionality.
 | ||||
|       // NOTE: max_travel is stored as negative
 | ||||
|       if (bit_istrue(settings.homing_dir_mask,bit(idx))) { | ||||
|         if (target[idx] < 0 || target[idx] > -settings.max_travel[idx]) { soft_limit_error = true; } | ||||
|         if (target[idx] < 0 || target[idx] > -settings.max_travel[idx]) { sys.soft_limit = true; } | ||||
|       } else { | ||||
|         if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { soft_limit_error = true; } | ||||
|         if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { sys.soft_limit = true; } | ||||
|       } | ||||
|     #else   | ||||
|       // NOTE: max_travel is stored as negative
 | ||||
|       if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { soft_limit_error = true; } | ||||
|       if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { sys.soft_limit = true; } | ||||
|     #endif | ||||
|      | ||||
|     if (soft_limit_error) { | ||||
|     if (sys.soft_limit) { | ||||
|       // Force feed hold if cycle is active. All buffered blocks are guaranteed to be within 
 | ||||
|       // workspace volume so just come to a controlled stop so position is not lost. When complete
 | ||||
|       // enter alarm mode.
 | ||||
|  |  | |||
|  | @ -80,6 +80,7 @@ int main(void) | |||
|     sys_rt_exec_state = 0; | ||||
|     sys_rt_exec_alarm = 0; | ||||
|     sys.suspend = false; | ||||
|     sys.soft_limit = false; | ||||
|            | ||||
|     // Start Grbl main loop. Processes program inputs and executes them.
 | ||||
|     protocol_main_loop(); | ||||
|  |  | |||
|  | @ -389,7 +389,7 @@ void protocol_exec_rt_system() | |||
|       // NOTE: Bresenham algorithm variables are still maintained through both the planner and stepper
 | ||||
|       // cycle reinitializations. The stepper path should continue exactly as if nothing has happened.   
 | ||||
|       // NOTE: EXEC_CYCLE_STOP is set by the stepper subsystem when a cycle or feed hold completes.
 | ||||
|       if (sys.state & (STATE_HOLD | STATE_SAFETY_DOOR)) { | ||||
|       if ((sys.state & (STATE_HOLD | STATE_SAFETY_DOOR)) && !(sys.soft_limit)) { | ||||
|         // Hold complete. Set to indicate ready to resume.  Remain in HOLD or DOOR states until user
 | ||||
|         // has issued a resume command or reset.
 | ||||
|         plan_cycle_reinitialize(); | ||||
|  |  | |||
|  | @ -96,6 +96,7 @@ typedef struct { | |||
|   uint8_t abort;                 // System abort flag. Forces exit back to main loop for reset.
 | ||||
|   uint8_t state;                 // Tracks the current state of Grbl.
 | ||||
|   uint8_t suspend;               // System suspend bitflag variable that manages holds, cancels, and safety door.
 | ||||
|   uint8_t soft_limit;            // Tracks soft limit errors for the state machine (Boolean)
 | ||||
|   uint8_t step_control; | ||||
| 
 | ||||
|   int32_t position[N_AXIS];      // Real-time machine (aka home) position vector in steps. 
 | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Sonny Jeon
						Sonny Jeon