G And M Codes
“G” stands for Geometry; hence, the G-Code commands are responsible for the movements of the machine that create the geometry of the part.
“M” stands for Machine (or Miscellaneous), and the M-Codes are responsible for Machine commands that cause particular operations of the equipment. Unlike G-codes, which can appear multiple times on the same line, M-Code is limited to one code per line.
| G-CODE | GROUP | FUNCTION |
|---|---|---|
| G01 | 1 | Linear Interpolation Motion (X,Y,Z,A,B,F) |
| G02 | 1 | Circular Interpolation Motion CW (X,Y,Z,A,I,J,K,R,F) |
| G03 | 1 | Circular Interpolation Motion CCW (X,Y,Z,A,I,J,K,R,F) |
| G04 | 0 | Dwell (P) (P =seconds"."milliseconds) |
| G09 | 0 | Exact Stop, Non-Modal |
| G10 | 0 | Programmable Offset Setting (X,Y,Z,A,L,P,R) |
| G12 | 0 | Circular Pocket Milling CW (Z,I,K,Q,D,L,F) |
| G13 | 0 | Circular Pocket Milling CCW (Z,I,K,Q,D,L,F) |
| G17* | 2 | Circular Motion XY Plane Selection (G02 or G03) (Setting 56) |
| G18 | 2 | Circular Motion ZX Plane Selection (G02 or G03) |
| G19 | 2 | Circular Motion YZ Plane Selection (G02 or G03) |
| G20* | 6 | Verify Inch Coordinate Positioning (Setting 9 will need to be INCH) (Setting 56) |
| G21 | 6 | Verify Metric Coordinate Positioning (Setting 9 will need to be METRIC) |
| G28 | 0 | Machine Zero Return Thru Reference Point (X,Y,Z,A,B) (Setting 108) |
| G29 | 0 | Move to location Thru G28 Reference Point (X,Y,Z,A,B) |
| G31** | 0 | Feed Until Skip Function (X,Y,Z,A,B,F) |
| G35** | 0 | Automatic Tool Diameter Measurement (D,H,Z,F) |
| G36** | 0 | Automatic Work Offset Measurement (X,Y,Z,A,B,I,J,K,F) |
| G37** | 0 | Automatic Tool Offset Measurement (D,H,Z,F) |
| G40* | 7 | Cutter Compensation Cancel G41/G42/G141 (X,Y) (Setting 56) |
| G41 | 7 | 2D Cutter Compensation Left (X,Y,D) (Setting 43, 44, 58) |
| G42 | 7 | 2D Cutter Compensation Right (X,Y,D) (Setting 43, 44, 58) |
| G43 | 8 | Tool Length Compensation + (H,Z) (Setting 15) |
| G44 | 8 | Tool Length Compensation - (H,Z) (Setting 15) |
| G47 | 0 | Text Engraving (X,Y,Z,R,I,J,P,E,F) (Macro Variable #599 to Change Serial number) |
| G49* | 8 | Tool Length Compensation Cancel G43/G44/G143 (Setting 56) |
| G50* | 11 | Scaling G51 Cancel (Setting 56) |
| G51** | 11 | Scaling (X,Y,Z,P) (Setting 71) |
| G52 | 12 | Select Work Coordinate System G52 (Setting 33, YASNAC) |
| G52 | 0 | Global Work Coordinate System Shift (Setting 33, FANUC) |
| G52 | 0 | Global Work Coordinate System Shift (Setting 33, HAAS) |
| G53 | 0 | Machine Zero XYZ Positioning, Non-Modal |
| G54* | 12 | Work Offset Positioning Coordinate #1 (Setting 56) |
| G55 | 12 | Work Offset Positioning Coordinate #2 |
| G56 | 12 | Work Offset Positioning Coordinate #3 |
| G57 | 12 | Work Offset Positioning Coordinate #4 |
| G58 | 12 | Work Offset Positioning Coordinate #5 |
| G59 | 12 | Work Offset Positioning Coordinate #6 |
| G60 | 0 | Uni-Directional Positioning (X,Y,Z,A,B) (Setting 35) |
| G61 | 13 | Exact Stop, Modal (X,Y,Z,A,B) |
| G64* | 13 | Exact Stop G61 Cancel (Setting 56) |
| G65** | 0 | Macro Sub-Routine Call |
| G66** | 0 | Modal Mode for Macro Sub-Routine Call |
| G67** | 0 | Cancel Modal Mode for Macro Sub-Routine Call |
| G68** | 16 | Rotation (G17,G18,G19,X,Y,Z,A,R) (Setting 72, 73) |
| G69* | 16 | Rotation G68 Cancel (Setting 56) |
| G70 | 0 | Bolt Hole Circle with a Canned Cycle (,I,J,L) |
| G71 | 0 | Bolt Hole Arc with a Canned Cycle (,I,J,K,L) |
| G72 | 0 | Bolt Holes Along an Angle with a Canned Cycle (,I,J,L) |
| G73 | 9 | High Speed Peck Drill Canned Cycle (X,Y,A,B,Z,I,J,K,Q,P,R,L,F) (Setting 22) |
| G74 | 9 | Reverse Tapping Canned Cycle (X,Y,A,B,Z,R,J,L,F) (Setting 130, 133) |
| G76 | 9 | Fine Boring Canned Cycle (X,Y,A,B,Z,I,J,P,Q,P,R,L,F) (Setting 27) |
| G77 | 9 | Back Bore Canned Cycle(X,Y,A,B,Z,I,J,Q,R,L,F) (Setting 27) |
| G80* | 9 | Cancel Canned Cycle (Setting 56) |
| G81 | 9 | Drill Canned Cycle (X,Y,A,B,Z,R,L,F) |
| G82 | 9 | Spot Drill / Counterbore Canned Cycle (X,Y,A,B,Z,P,R,L,F) |
| G83 | 9 | Peck Drill Deep Hole Canned Cycle (X,Y,A,B,Z,I,J,K,Q,P,R,L,F) (Setting 22, 52) |
| G84 | 9 | Tapping Canned Cycle (X,Y,A,B,Z,R,J,L,F) (Setting 130, 133) |
| G85 | 9 | Bore in~Bore out Canned Cycle (X,Y,A,B,Z,R,L,F) |
| G86 | 9 | Bore in~Stop~Rapid out Canned Cycle (X,Y,A,B,Z,R,L,F) |
| G87 | 9 | Bore in~Manual Retract Canned Cycle (X,Y,A,B,Z,R,L,F) |
| G88 | 9 | Bore~Dwell~Manual Retract Canned Cycle (X,Y,A,B,Z,P,R,L,F) |
| G89 | 9 | Bore~Dwell~Bore out Canned Cycle (X,Y,A,B,Z,R,L,F) |
| G90* | 3 | Absolute Positioning Command (Setting 56) |
| G91 | 3 | Incremental Positioning Command (Setting 29) |
| G92 | 0 | Set Work Coordinate Value (Fanuc) (HAAS) |
| G92 | 0 | Global Work Coordinate System Shift (Yasnac) |
| G93 | 5 | Inverse Time Feed Mode ON |
| G94* | 5 | Inverse Time Feed Mode OFF/Feed Per Minute ON (Setting 56) |
| G95 | 5 | Feed Per Revolution |
| G98* | 10 | Canned Cycle Initial Point Return (Setting 56) |
| G99 | 10 | Canned Cycle "R" Plane Return |
| G100 | 0 | Mirror Image Cancel |
| G101 | 0 | Mirror Image (X,Y,Z,A,B) (Setting 45, 46, 47, 48, 80) |
| G102 | 0 | Programmable Output to RS-232 (X,Y,Z,A,B) |
| G103 | 0 | Limit Block Look-a-head (P0-P15 for number of lines control looks ahead) |
| G107 | 0 | Cylindrical Mapping (X,Y,Z,A,Q,R) |
| G110 | 12 | Work Offset Positioning Coordinate #7 |
| G111 | 12 | Work Offset Positioning Coordinate #8 |
| G112 | 12 | Work Offset Positioning Coordinate #9 |
| G113 | 12 | Work Offset Positioning Coordinate #10 |
| G114 | 12 | Work Offset Positioning Coordinate #11 |
| G115 | 12 | Work Offset Positioning Coordinate #12 |
| G116 | 12 | Work Offset Positioning Coordinate #13 |
| G117 | 12 | Work OffsetPositioning Coordinate #14 |
| G118 | 12 | Work Offset Positioning Coordinate #15 |
| G119 | 12 | Work Offset Positioning Coordinate #16 |
| G120 | 12 | Work Offset Positioning Coordinate #17 |
| G121 | 12 | Work Offset Positioning Coordinate #18 |
| G122 | 12 | Work Offset Positioning Coordinate #19 |
| G123 | 12 | Work Offset Positioning Coordinate #20 |
| G124 | 12 | Work Offset Positioning Coordinate #21 |
| G125 | 12 | Work Offset Positioning Coordinate #22 |
| G126 | 12 | Work Offset Positioning Coordinate #23 |
| G127 | 12 | Work Offset Positioning Coordinate #24 |
| G128 | 12 | Work Offset Positioning Coordinate #25 |
| G129 | 12 | Work Offset Positioning Coordinate #26 |
| G136** | 0 | Automatic Work Offset Center Measurement |
| G141 | 7 | 3D+ Cutter Compensation (X,Y,Z,I,J,K,D,F) |
| G143** | 8 | 5 Axis Tool Length Compensation+ (X,Y,Z,A,B,H) (Setting 117) |
| G150 | 0 | General Purpose Pocket Milling (X,Y,P,,Z,I,J,K,Q,D,R,L,S,F) |
| G153** | 9 | 5 Axis High Speed Peck Drill Canned Cycle (X,Y,A,B,Z,I,J,K,Q,P,E,L,F) (Setting 22) |
| G154 | 9 | Select Work Offset Positioning Coordinate P1-99 |
| G155** | 9 | 5 Axis Reverse Tapping Canned Cycle (X,Y,A,B,Z,J,E,L,F) |
| G161** | 9 | 5 Axis Drill Canned Cycle (X,Y,A,B,Z,E,L,F) |
| G162** | 9 | 5 Axis Spot Drill/Counterbore Canned Cycle (X,Y,A,B,Z,P,E,L,F) |
| G163** | 9 | 5 Axis Peck Drill Canned Cycle (X,Y,A,B,Z,I,J,K,Q,E,L,F) (Setting 22) |
| G164** | 9 | 5 Axis Tapping Canned Cycle (X,Y,A,B,Z,J,E,L,F) |
| G165** | 9 | 5 Axis Bore in, Bore out Canned Cycle (X,Y,A,B,Z,E,L,F) |
| G166** | 9 | 5 Axis Bore in, Stop, Rapid out Canned Cycle (X,Y,A,B,Z,E,L,F) |
| G169** | 9 | 5 Axis Bore, Dwell, Bore out Canned Cycle (X,Y,A,B,Z,P,E,L,F) |
| G174 | 0 | Special Purpose Non-Vertical Rigid Tapping CCW (X,Y,Z,F) |
| G184 | 0 | Special Purpose Non-Vertical Rigid Tapping CW (X,Y,Z,F) |
| G187 | 0 | Accuracy Control for High Speed Machining (E) |
| G188 | 0 | Get Program From PST (Program Schedule Table) |
| * = Defaults | ||
| ** = Optional | ||
| M-CODES | FUNCTION | |
| M00 | The M00 code is used for a Program Stop command on the machine. It stops the spindle, turns off coolant and stops look-a-head processing. Pressing CYCLE START again will continue the program on the next block of the program. | |
| M01 | The M01 code is used for an Optional Program Stop command. | |
| Pressing the OPT STOP key on the control panel signals the machine toperform a stop command when the control reads an M01 command. It will then perform like an M00. | ||
| M03 | Starts the spindle CLOCKWISE. Must have a spindle speed defined. | |
| M04 | Starts the spindle COUNTERCLOCKWISE. Must have a spindle speed defined. | |
| M05 | STOPS the spindle. | |
| M06 | Tool change command along with a tool number will execute a tool change for that tool. This command will automatically stop the spindle, Z-axis will move up to the machine zero position and the selected tool will be put in spindle. The coolant pump will turn off right before executing the tool change. | |
| M08 | Coolant ON command. | |
| M09 | Coolant OFF command. | |
| M30 | Program End and Reset to the beginning of program. | |
| M97 | Local Subroutine call | |
| M98 | Subprogram call | |
| M99 | Subprogram return (M98) or Subroutine return (M97), or a Program loop. | |
NOTE: Only one "M" code can be used per line. And the M-codes will be the last command to be executed in a line, regardless of where it's located in that line.


