Skip to content

Commit 67ab928

Browse files
committed
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.
1 parent 30c0f79 commit 67ab928

File tree

7 files changed

+57
-38
lines changed

7 files changed

+57
-38
lines changed

doc/csv/error_codes_en_US.csv

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,36 @@
1-
"Error Code in v1.1+ ","Error Message in v1.0-"," 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."
1+
Error Code in v1.1+ ,Error Message in v1.0-, 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.

doc/log/commit_log_v1.1.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
----------------
2+
Date: 2017-01-03
3+
Author: Sonny Jeon
4+
Subject: Spindle enable pin with variable spindle option fix.
5+
6+
- [fix] When USE_SPINDLE_DIR_AS_ENABLE_PIN is enabled in config.h, the
7+
enable pin was not being set when spindle speed is zero. This behavior
8+
should now be fixed.
9+
10+
111
----------------
212
Date: 2016-12-19
313
Author: Sonny Jeon

doc/markdown/interface.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ Every G-code block sent to Grbl and Grbl `$` system command that is terminated w
174174
| **`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.|
175175
| **`36`** | There are unused, leftover G-code words that aren't used by any command in the block.|
176176
| **`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.|
177+
| **`38`** | Tool number greater than max supported value.|
177178

178179

179180
----------------------
@@ -567,6 +568,8 @@ Feedback messages provide non-critical information on what Grbl is doing, what i
567568
568569
- 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.
569570
571+
- 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.
572+
570573
- 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.
571574
572575
- This data field appears:

grbl/cpu_map.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898
#define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3
9999
#define COOLANT_MIST_DDR DDRC
100100
#define COOLANT_MIST_PORT PORTC
101-
#define COOLANT_MIST_BIT 4 // Uno Analog Pin 3
101+
#define COOLANT_MIST_BIT 4 // Uno Analog Pin 4
102102

103103
// Define user-control controls (cycle start, reset, feed hold) input pins.
104104
// NOTE: All CONTROLs pins must be on the same port and not on a port with other input pins (limits).

grbl/gcode.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
// arbitrary value, and some GUIs may require more. So we increased it based on a max safe
2626
// value when converting a float (7.2 digit precision)s to an integer.
2727
#define MAX_LINE_NUMBER 10000000
28+
#define MAX_TOOL_NUMBER 255 // Limited by max unsigned 8-bit value
2829

2930
#define AXIS_COMMAND_NONE 0
3031
#define AXIS_COMMAND_NON_MODAL 1
@@ -310,7 +311,10 @@ uint8_t gc_execute_line(char *line)
310311
// case 'Q': // Not supported
311312
case 'R': word_bit = WORD_R; gc_block.values.r = value; break;
312313
case 'S': word_bit = WORD_S; gc_block.values.s = value; break;
313-
case 'T': word_bit = WORD_T; break; // gc.values.t = int_value;
314+
case 'T': word_bit = WORD_T;
315+
if (value > MAX_TOOL_NUMBER) { FAIL(STATUS_GCODE_MAX_VALUE_EXCEEDED); }
316+
gc_block.values.t = int_value;
317+
break;
314318
case 'X': word_bit = WORD_X; gc_block.values.xyz[X_AXIS] = value; axis_words |= (1<<X_AXIS); break;
315319
case 'Y': word_bit = WORD_Y; gc_block.values.xyz[Y_AXIS] = value; axis_words |= (1<<Y_AXIS); break;
316320
case 'Z': word_bit = WORD_Z; gc_block.values.xyz[Z_AXIS] = value; axis_words |= (1<<Z_AXIS); break;

grbl/grbl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
// Grbl versioning system
2525
#define GRBL_VERSION "1.1e"
26-
#define GRBL_VERSION_BUILD "20170103"
26+
#define GRBL_VERSION_BUILD "20170114"
2727

2828
// Define standard libraries used by Grbl.
2929
#include <avr/io.h>

grbl/report.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
#define STATUS_GCODE_NO_OFFSETS_IN_PLANE 35
5858
#define STATUS_GCODE_UNUSED_WORDS 36
5959
#define STATUS_GCODE_G43_DYNAMIC_AXIS_ERROR 37
60+
#define STATUS_GCODE_MAX_VALUE_EXCEEDED 38
6061

6162
// Define Grbl alarm codes. Valid values (1-255). 0 is reserved.
6263
#define ALARM_HARD_LIMIT_ERROR EXEC_ALARM_HARD_LIMIT

0 commit comments

Comments
 (0)