Tool number bug fix. Updated documentation.
- [fix] Tool numbers were not being tracked and reported correctly. Now shows tool number values in $G when programmed. - [fix] Added a max tool number value check to the g-code parser. - [doc] Added a new error code for invalid tool number. Updated CSV and interface documents. - [doc] Added a implementation note for buffer state in status reports. Don’t rely on this data for streaming.
This commit is contained in:
		@@ -1,35 +1,36 @@
 | 
			
		||||
"Error Code in v1.1+ ","Error Message in v1.0-"," Error Description"
 | 
			
		||||
"1","Expected command letter","G-code words consist of a letter and a value. Letter was not found."
 | 
			
		||||
"2","Bad number format","Missing the expected G-code word value or numeric value format is not valid."
 | 
			
		||||
"3","Invalid statement","Grbl '$' system command was not recognized or supported."
 | 
			
		||||
"4","Value < 0","Negative value received for an expected positive value."
 | 
			
		||||
"5","Setting disabled","Homing cycle failure. Homing is not enabled via settings."
 | 
			
		||||
"6","Value < 3 usec","Minimum step pulse time must be greater than 3usec."
 | 
			
		||||
"7","EEPROM read fail. Using defaults","An EEPROM read failed. Auto-restoring affected EEPROM to default values."
 | 
			
		||||
"8","Not idle","Grbl '$' command cannot be used unless Grbl is IDLE. Ensures smooth operation during a job."
 | 
			
		||||
"9","G-code lock","G-code commands are locked out during alarm or jog state."
 | 
			
		||||
"10","Homing not enabled","Soft limits cannot be enabled without homing also enabled."
 | 
			
		||||
"11","Line overflow","Max characters per line exceeded. Received command line was not executed."
 | 
			
		||||
"12","Step rate > 30kHz","Grbl '$' setting value cause the step rate to exceed the maximum supported."
 | 
			
		||||
"13","Check Door","Safety door detected as opened and door state initiated."
 | 
			
		||||
"14","Line length exceeded","Build info or startup line exceeded EEPROM line length limit. Line not stored."
 | 
			
		||||
"15","Travel exceeded","Jog target exceeds machine travel. Jog command has been ignored."
 | 
			
		||||
"16","Invalid jog command","Jog command has no '=' or contains prohibited g-code."
 | 
			
		||||
"20","Unsupported command","Unsupported or invalid g-code command found in block."
 | 
			
		||||
"21","Modal group violation","More than one g-code command from same modal group found in block."
 | 
			
		||||
"22","Undefined feed rate","Feed rate has not yet been set or is undefined."
 | 
			
		||||
"23","Invalid gcode ID:23","G-code command in block requires an integer value."
 | 
			
		||||
"24","Invalid gcode ID:24","More than one g-code command that requires axis words found in block."
 | 
			
		||||
"25","Invalid gcode ID:25","Repeated g-code word found in block."
 | 
			
		||||
"26","Invalid gcode ID:26","No axis words found in block for g-code command or current modal state which requires them."
 | 
			
		||||
"27","Invalid gcode ID:27","Line number value is invalid."
 | 
			
		||||
"28","Invalid gcode ID:28","G-code command is missing a required value word."
 | 
			
		||||
"29","Invalid gcode ID:29","G59.x work coordinate systems are not supported."
 | 
			
		||||
"30","Invalid gcode ID:30","G53 only allowed with G0 and G1 motion modes."
 | 
			
		||||
"31","Invalid gcode ID:31","Axis words found in block when no command or current modal state uses them."
 | 
			
		||||
"32","Invalid gcode ID:32","G2 and G3 arcs require at least one in-plane axis word."
 | 
			
		||||
"33","Invalid gcode ID:33","Motion command target is invalid."
 | 
			
		||||
"34","Invalid gcode ID:34","Arc radius value is invalid."
 | 
			
		||||
"35","Invalid gcode ID:35","G2 and G3 arcs require at least one in-plane offset word."
 | 
			
		||||
"36","Invalid gcode ID:36","Unused value words found in block."
 | 
			
		||||
"37","Invalid gcode ID:37","G43.1 dynamic tool length offset is not assigned to configured tool length axis."
 | 
			
		||||
Error Code in v1.1+ ,Error Message in v1.0-, Error Description
 | 
			
		||||
1,Expected command letter,G-code words consist of a letter and a value. Letter was not found.
 | 
			
		||||
2,Bad number format,Missing the expected G-code word value or numeric value format is not valid.
 | 
			
		||||
3,Invalid statement,Grbl '$' system command was not recognized or supported.
 | 
			
		||||
4,Value < 0,Negative value received for an expected positive value.
 | 
			
		||||
5,Setting disabled,Homing cycle failure. Homing is not enabled via settings.
 | 
			
		||||
6,Value < 3 usec,Minimum step pulse time must be greater than 3usec.
 | 
			
		||||
7,EEPROM read fail. Using defaults,An EEPROM read failed. Auto-restoring affected EEPROM to default values.
 | 
			
		||||
8,Not idle,Grbl '$' command cannot be used unless Grbl is IDLE. Ensures smooth operation during a job.
 | 
			
		||||
9,G-code lock,G-code commands are locked out during alarm or jog state.
 | 
			
		||||
10,Homing not enabled,Soft limits cannot be enabled without homing also enabled.
 | 
			
		||||
11,Line overflow,Max characters per line exceeded. Received command line was not executed.
 | 
			
		||||
12,Step rate > 30kHz,Grbl '$' setting value cause the step rate to exceed the maximum supported.
 | 
			
		||||
13,Check Door,Safety door detected as opened and door state initiated.
 | 
			
		||||
14,Line length exceeded,Build info or startup line exceeded EEPROM line length limit. Line not stored.
 | 
			
		||||
15,Travel exceeded,Jog target exceeds machine travel. Jog command has been ignored.
 | 
			
		||||
16,Invalid jog command,Jog command has no '=' or contains prohibited g-code.
 | 
			
		||||
20,Unsupported command,Unsupported or invalid g-code command found in block.
 | 
			
		||||
21,Modal group violation,More than one g-code command from same modal group found in block.
 | 
			
		||||
22,Undefined feed rate,Feed rate has not yet been set or is undefined.
 | 
			
		||||
23,Invalid gcode ID:23,G-code command in block requires an integer value.
 | 
			
		||||
24,Invalid gcode ID:24,More than one g-code command that requires axis words found in block.
 | 
			
		||||
25,Invalid gcode ID:25,Repeated g-code word found in block.
 | 
			
		||||
26,Invalid gcode ID:26,No axis words found in block for g-code command or current modal state which requires them.
 | 
			
		||||
27,Invalid gcode ID:27,Line number value is invalid.
 | 
			
		||||
28,Invalid gcode ID:28,G-code command is missing a required value word.
 | 
			
		||||
29,Invalid gcode ID:29,G59.x work coordinate systems are not supported.
 | 
			
		||||
30,Invalid gcode ID:30,G53 only allowed with G0 and G1 motion modes.
 | 
			
		||||
31,Invalid gcode ID:31,Axis words found in block when no command or current modal state uses them.
 | 
			
		||||
32,Invalid gcode ID:32,G2 and G3 arcs require at least one in-plane axis word.
 | 
			
		||||
33,Invalid gcode ID:33,Motion command target is invalid.
 | 
			
		||||
34,Invalid gcode ID:34,Arc radius value is invalid.
 | 
			
		||||
35,Invalid gcode ID:35,G2 and G3 arcs require at least one in-plane offset word.
 | 
			
		||||
36,Invalid gcode ID:36,Unused value words found in block.
 | 
			
		||||
37,Invalid gcode ID:37,G43.1 dynamic tool length offset is not assigned to configured tool length axis.
 | 
			
		||||
38,Invalid gcode ID:38,Tool number greater than max supported value.
 | 
			
		||||
		
		
			
  | 
@@ -1,3 +1,13 @@
 | 
			
		||||
----------------
 | 
			
		||||
Date: 2017-01-03
 | 
			
		||||
Author: Sonny Jeon
 | 
			
		||||
Subject: Spindle enable pin with variable spindle option fix.
 | 
			
		||||
 | 
			
		||||
- [fix] When USE_SPINDLE_DIR_AS_ENABLE_PIN is enabled in config.h, the
 | 
			
		||||
enable pin was not being set when spindle speed is zero. This behavior
 | 
			
		||||
should now be fixed.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----------------
 | 
			
		||||
Date: 2016-12-19
 | 
			
		||||
Author: Sonny Jeon
 | 
			
		||||
 
 | 
			
		||||
@@ -174,6 +174,7 @@ Every G-code block sent to Grbl and Grbl `$` system command that is terminated w
 | 
			
		||||
| **`35`** | A `G2` or `G3` arc, traced with the offset definition, is missing the `IJK` offset word in the selected plane to trace the arc.|
 | 
			
		||||
| **`36`** | There are unused, leftover G-code words that aren't used by any command in the block.|
 | 
			
		||||
| **`37`** | The `G43.1` dynamic tool length offset command cannot apply an offset to an axis other than its configured axis. The Grbl default axis is the Z-axis.|
 | 
			
		||||
| **`38`** | Tool number greater than max supported value.|
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----------------------
 | 
			
		||||
@@ -567,6 +568,8 @@ Feedback messages provide non-critical information on what Grbl is doing, what i
 | 
			
		||||
        
 | 
			
		||||
        - The usage of this data is generally for debugging an interface, but is known to be used to control some GUI-specific tasks. While this is disabled by default, GUIs should expect this data field to appear, but they may ignore it, if desired.
 | 
			
		||||
        
 | 
			
		||||
        	- IMPORTANT: Do not use this buffer data to control streaming. During a stream, the reported buffer will often be out-dated and may be incorrect by the time it has been received by the GUI. Instead, please use the streaming protocols outlined. They use Grbl's responses as a direct way to accurately determine the buffer state.
 | 
			
		||||
        	        
 | 
			
		||||
        - NOTE: The buffer state values changed from showing "in-use" blocks or bytes to "available". This change does not require the GUI knowing how many block/bytes Grbl has been compiled with.
 | 
			
		||||
 | 
			
		||||
        - This data field appears:
 | 
			
		||||
 
 | 
			
		||||
@@ -98,7 +98,7 @@
 | 
			
		||||
  #define COOLANT_FLOOD_BIT   3  // Uno Analog Pin 3
 | 
			
		||||
  #define COOLANT_MIST_DDR   DDRC
 | 
			
		||||
  #define COOLANT_MIST_PORT  PORTC
 | 
			
		||||
  #define COOLANT_MIST_BIT   4  // Uno Analog Pin 3
 | 
			
		||||
  #define COOLANT_MIST_BIT   4  // Uno Analog Pin 4
 | 
			
		||||
 | 
			
		||||
  // Define user-control controls (cycle start, reset, feed hold) input pins.
 | 
			
		||||
  // NOTE: All CONTROLs pins must be on the same port and not on a port with other input pins (limits).
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,7 @@
 | 
			
		||||
// arbitrary value, and some GUIs may require more. So we increased it based on a max safe
 | 
			
		||||
// value when converting a float (7.2 digit precision)s to an integer.
 | 
			
		||||
#define MAX_LINE_NUMBER 10000000
 | 
			
		||||
#define MAX_TOOL_NUMBER 255 // Limited by max unsigned 8-bit value
 | 
			
		||||
 | 
			
		||||
#define AXIS_COMMAND_NONE 0
 | 
			
		||||
#define AXIS_COMMAND_NON_MODAL 1
 | 
			
		||||
@@ -310,7 +311,10 @@ uint8_t gc_execute_line(char *line)
 | 
			
		||||
          // case 'Q': // Not supported
 | 
			
		||||
          case 'R': word_bit = WORD_R; gc_block.values.r = value; break;
 | 
			
		||||
          case 'S': word_bit = WORD_S; gc_block.values.s = value; break;
 | 
			
		||||
          case 'T': word_bit = WORD_T; break; // gc.values.t = int_value;
 | 
			
		||||
          case 'T': word_bit = WORD_T; 
 | 
			
		||||
					  if (value > MAX_TOOL_NUMBER) { FAIL(STATUS_GCODE_MAX_VALUE_EXCEEDED); }
 | 
			
		||||
            gc_block.values.t = int_value;
 | 
			
		||||
						break;
 | 
			
		||||
          case 'X': word_bit = WORD_X; gc_block.values.xyz[X_AXIS] = value; axis_words |= (1<<X_AXIS); break;
 | 
			
		||||
          case 'Y': word_bit = WORD_Y; gc_block.values.xyz[Y_AXIS] = value; axis_words |= (1<<Y_AXIS); break;
 | 
			
		||||
          case 'Z': word_bit = WORD_Z; gc_block.values.xyz[Z_AXIS] = value; axis_words |= (1<<Z_AXIS); break;
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
 | 
			
		||||
// Grbl versioning system
 | 
			
		||||
#define GRBL_VERSION "1.1e"
 | 
			
		||||
#define GRBL_VERSION_BUILD "20170103"
 | 
			
		||||
#define GRBL_VERSION_BUILD "20170114"
 | 
			
		||||
 | 
			
		||||
// Define standard libraries used by Grbl.
 | 
			
		||||
#include <avr/io.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -57,6 +57,7 @@
 | 
			
		||||
#define STATUS_GCODE_NO_OFFSETS_IN_PLANE 35
 | 
			
		||||
#define STATUS_GCODE_UNUSED_WORDS 36
 | 
			
		||||
#define STATUS_GCODE_G43_DYNAMIC_AXIS_ERROR 37
 | 
			
		||||
#define STATUS_GCODE_MAX_VALUE_EXCEEDED 38
 | 
			
		||||
 | 
			
		||||
// Define Grbl alarm codes. Valid values (1-255). 0 is reserved.
 | 
			
		||||
#define ALARM_HARD_LIMIT_ERROR      EXEC_ALARM_HARD_LIMIT
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user