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:
Sonny Jeon 2017-01-14 13:54:14 -07:00
parent 30c0f79afd
commit 67ab9280d9
7 changed files with 57 additions and 38 deletions

View File

@ -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 Error Code in v1.1+ Error Message in v1.0- Error Description Error Description
2 1 Expected command letter G-code words consist of a letter and a value. Letter was not found.
3 2 Bad number format Missing the expected G-code word value or numeric value format is not valid.
4 3 Invalid statement Grbl '$' system command was not recognized or supported.
5 4 Value < 0 Negative value received for an expected positive value.
6 5 Setting disabled Homing cycle failure. Homing is not enabled via settings.
7 6 Value < 3 usec Minimum step pulse time must be greater than 3usec.
8 7 EEPROM read fail. Using defaults An EEPROM read failed. Auto-restoring affected EEPROM to default values.
9 8 Not idle Grbl '$' command cannot be used unless Grbl is IDLE. Ensures smooth operation during a job.
10 9 G-code lock G-code commands are locked out during alarm or jog state.
11 10 Homing not enabled Soft limits cannot be enabled without homing also enabled.
12 11 Line overflow Max characters per line exceeded. Received command line was not executed.
13 12 Step rate > 30kHz Grbl '$' setting value cause the step rate to exceed the maximum supported.
14 13 Check Door Safety door detected as opened and door state initiated.
15 14 Line length exceeded Build info or startup line exceeded EEPROM line length limit. Line not stored.
16 15 Travel exceeded Jog target exceeds machine travel. Jog command has been ignored.
17 16 Invalid jog command Jog command has no '=' or contains prohibited g-code.
18 20 Unsupported command Unsupported or invalid g-code command found in block.
19 21 Modal group violation More than one g-code command from same modal group found in block.
20 22 Undefined feed rate Feed rate has not yet been set or is undefined.
21 23 Invalid gcode ID:23 G-code command in block requires an integer value.
22 24 Invalid gcode ID:24 More than one g-code command that requires axis words found in block.
23 25 Invalid gcode ID:25 Repeated g-code word found in block.
24 26 Invalid gcode ID:26 No axis words found in block for g-code command or current modal state which requires them.
25 27 Invalid gcode ID:27 Line number value is invalid.
26 28 Invalid gcode ID:28 G-code command is missing a required value word.
27 29 Invalid gcode ID:29 G59.x work coordinate systems are not supported.
28 30 Invalid gcode ID:30 G53 only allowed with G0 and G1 motion modes.
29 31 Invalid gcode ID:31 Axis words found in block when no command or current modal state uses them.
30 32 Invalid gcode ID:32 G2 and G3 arcs require at least one in-plane axis word.
31 33 Invalid gcode ID:33 Motion command target is invalid.
32 34 Invalid gcode ID:34 Arc radius value is invalid.
33 35 Invalid gcode ID:35 G2 and G3 arcs require at least one in-plane offset word.
34 36 Invalid gcode ID:36 Unused value words found in block.
35 37 Invalid gcode ID:37 G43.1 dynamic tool length offset is not assigned to configured tool length axis.
36 38 Invalid gcode ID:38 Tool number greater than max supported value.

View File

@ -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

View File

@ -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:

View File

@ -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).

View File

@ -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;

View File

@ -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>

View File

@ -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