CNC G-Codes
G-Code, or preparatory code or function, are functions in the Numerical control programming language. The G-codes are the codes that position the tool and do the actual work, as opposed to M-codes, that manages the machine; T for tool-related codes. S and F are tool-Speed and tool-Feed, and finally D-codes for tool compensation.
The programming language of Numerical Control (NC) is sometimes informally called G-code. But in actuality, G-codes are only a part of the NC-programming language that controls NC and CNC machine tools. The term Numerical Control was coined at the MIT Servomechanisms Laboratory, and several versions of NC were and are still developed independently by CNC-machine manufacturers.
The main standardized version used in the United States was settled by the Electronic Industries Alliance in the early 1960s. A final revision was approved in February 1980 as RS274D. In Europe, the ISO standard DIN 66025 is often used instead.
Due to the lack of further development, the immense variety of machine tool configurations, and little demand for interoperability, few machine tool controllers (CNCs) adhere to this standard. Extensions and variations have been added independently by manufacturers, and operators of a specific controller must be aware of differences of each manufacturers’ product. When initially introduced, CAM systems were limited in the configurations of tools supported.
Today, the main manufacturers of CNC control systems are GE Fanuc Automation (joint venture of General Electric and Fanuc), Siemens and Maho (Philips), but there still exist many smaller and/or older controller systems.
Some CNC machine manufacturers attempted to overcome compatibility difficulties by standardizing on a machine tool controller built by Fanuc. Unfortunately, Fanuc does not remain consistent with RS-274 or its own previous versions, and has been slow at adding new features, as well as exploiting increases in computing power. For example, they changed G70/G71 to G20/G21; they used parentheses for comments which caused difficulty when they introduced mathematical calculations so the use square parentheses for macro calculations; they now have nano technology recently in 32-bit mode but in the Fanuc 15MB control they introduced HPCC (high-precision contour control) which uses a 64-bit RISC (reduced instruction set computer) processor and this now has a 500 block buffer for look-ahead for correct shape contouring and surfacing of small block programs and 5-axis continuous machining.
Below is a complete listing of current NC Programming codes as per ISO (DIN 66025) and RS274:
| G-Code | Description |
|---|---|
| G00 | Rapid traverse |
| G01 | Linear interpolation with feedrate |
| G02 | Circular interpolation (clockwise) |
| G03 | Circular interpolation (counter clockwise) |
| G04 | Dwell time in milliseconds |
| G05 | Spline definition |
| G06 | Spline interpolation |
| G07 | Tangential circular interpolation / Helix interpolation / Polygon interpolation / Feedrate interpolation |
| G08 | Ramping function at block transition / Look ahead “off” |
| G09 | No ramping function at block transition / Look ahead “on” |
| G10 | Stop dynamic block preprocessing |
| G11 | Stop interpolation during block preprocessing |
| G12 | Circular interpolation (cw) with radius |
| G13 | Circular interpolation (ccw) with radius |
| G14 | Polar coordinate programming, absolute |
| G15 | Polar coordinate programming, relative |
| G16 | Definition of the pole point of the polar coordinate system |
| G17 | Selection of the X, Y plane |
| G18 | Selection of the Z, X plane |
| G19 | Selection of the Y, Z plane |
| G20 | Selection of a freely definable plane |
| G21 | Parallel axes “on” |
| G22 | Parallel axes “off” |
| G24 | Safe zone programming; lower limit values |
| G25 | Safe zone programming; upper limit values |
| G26 | Safe zone programming “off” |
| G27 | Safe zone programming “on” |
| G33 | Thread cutting with constant pitch |
| G34 | Thread cutting with dynamic pitch |
| G35 | Oscillation configuration |
| G38 | Mirror imaging “on” |
| G39 | Mirror imaging “off” |
| G40 | Path compensations “off” |
| G41 | Path compensation left of the work piece contour |
| G42 | Path compensation right of the work piece contour |
| G43 | Path compensation left of the work piece contour with altered approach |
| G44 | Path compensation right of the work piece contour with altered approach |
| G50 | Scaling |
| G51 | Part rotation; programming in degrees |
| G52 | Part rotation; programming in radians |
| G53 | Zero offset off |
| G54 | Zero offset #1 |
| G55 | Zero offset #2 |
| G56 | Zero offset #3 |
| G57 | Zero offset #4 |
| G58 | Zero offset #5 |
| G59 | Zero offset #6 |
| G63 | Feed / spindle override not active |
| G66 | Feed / spindle override active |
| G70 | Inch format active |
| G71 | Metric format active |
| G72 | Interpolation with precision stop “off” |
| G73 | Interpolation with precision stop “on” |
| G74 | Move to home position |
| G75 | Curvature function activation |
| G76 | Curvature acceleration limit |
| G78 | Normalcy function “on” (rotational axis orientation) |
| G79 | Normalcy function “off” |
| G80 - G89 | (for milling applications): |
| - G80 | - Canned cycle “off” |
| - G81 | - Drilling to final depth canned cycle |
| - G82 | - Spot facing with dwell time canned cycle |
| - G83 | - Deep hole drilling canned cycle |
| - G84 | - Tapping or Thread cutting with balanced chuck canned cycle |
| - G85 | - Reaming canned cycle |
| - G86 | - Boring canned cycle |
| - G87 | - Reaming with measuring stop canned cycle |
| - G88 | - Boring with spindle stop canned cycle |
| - G89 | - Boring with intermediate stop canned cycle |
| G81 - G88 | for cylindrical grinding applications: |
| - G81 | - Reciprocation without plunge |
| - G82 | - Incremental face grinding |
| - G83 | - Incremental plunge grinding |
| - G84 | - Multi-pass face grinding |
| - G85 | - Multi-pass diameter grinding |
| - G86 | - Shoulder grinding |
| - G87 | - Shoulder grinding with face plunge |
| - G88 | - Shoulder grinding with diameter plunge |
| G90 | Absolute programming |
| G91 | Incremental programming |
| G92 | Position preset |
| G93 | Constant tool circumference velocity “on” (grinding wheel) |
| G94 | Feed in mm / min (or inch / min) |
| G95 | Feed per revolution (mm / rev or inch / rev) |
| G96 | Constant cutting speed “on” |
| G97 | Constant cutting speed “off” |
| G98 | Positioning axis signal to PLC |
| G99 | Axis offset |
| G100 | Polar transformation “off” |
| G101 | Polar transformation “on” |
| G102 | Cylinder barrel transformation “on”; cartesian coordinate system |
| G103 | Cylinder barrel transformation “on,” with real-time-radius compensation (RRC) |
| G104 | Cylinder barrel transformation with center line migration (CLM) and RRC |
| G105 | Polar transformation “on” with polar axis selections |
| G106 | Cylinder barrel transformation “on” polar-/cylinder-coordinates |
| G107 | Cylinder barrel transformation “on” polar-/cylinder-coordinates with RRC |
| G108 | Cylinder barrel transformation polar-/cylinder-coordinates with CLM and RRC |
| G109 | Axis transformation programming of the tool depth |
| G110 | Power control axis selection/channel 1 |
| G111 | Power control pre-selection V1, F1, T1/channel 1 (Voltage, Frequency, Time) |
| G112 | Power control pre-selection V2, F2, T2/channel 1 |
| G113 | Power control pre-selection V3, F3, T3/channel 1 |
| G114 | Power control pre-selection T4/channel 1 |
| G115 | Power control pre-selection T5/channel 1 |
| G116 | Power control pre-selection T6/pulsing output |
| G117 | Power control pre-selection T7/pulsing output |
| G120 | Axis transformation; orientation changing of the linear interpolation rotary axis |
| G121 | Axis transformation; orientation change in a plane |
| G125 | Electronic gear box; plain teeth |
| G126 | Electronic gear box; helical gearing, axial |
| G127 | Electronic gear box; helical gearing, tangential |
| G128 | Electronic gear box; helical gearing, diagonal |
| G130 | Axis transformation; programming of the type of the orientation change |
| G131 | Axis transformation; programming of the type of the orientation change |
| G132 | Axis transformation; programming of the type of the orientation change |
| G133 | Zero lag thread cutting “on” |
| G134 | Zero lag thread cutting “off” |
| G140 | Axis transformation; orientation designation work piece fixed coordinates |
| G141 | Axis transformation; orientation designation active coordinates |
| G160 | ART activation |
| G161 | ART learning function for velocity factors “on” |
| G162 | ART learning function deactivation |
| G163 | ART learning function for acceleration factors |
| G164 | ART learning function for acceleration changing |
| G165 | Command filter “on” |
| G166 | Command filter “off” |
| G170 | Digital measuring signals; block transfer with hard stop |
| G171 | Digital measuring signals; block transfer without hard stop |
| G172 | Digital measuring signals; block transfer with smooth stop |
| G175 | SERCOS-identification number “write” |
| G176 | SERCOS-identification number “read” |
| G180 | Axis transformation “off” |
| G181 | Axis transformation “on” with not rotated coordinate system |
| G182 | Axis transformation “on” with rotated / displaced coordinate system |
| G183 | Axis transformation; definition of the coordinate system |
| G184 | Axis transformation; programming tool dimensions |
| G186 | Look ahead; corner acceleration; circle tolerance |
| G188 | Activation of the positioning axes |
| G190 | Diameter programming deactivation |
| G191 | Diameter programming “on” and display of the contact point |
| G192 | Diameter programming; only display contact point diameter |
| G193 | Diameter programming; only display contact point actual axes center point |
| G200 | Corner smoothing “off” |
| G201 | Corner smoothing “on” with defined radius |
| G202 | Corner smoothing “on” with defined corner tolerance |
| G203 | Corner smoothing with defined radius up to maximum tolerance |
| G210 | Power control axis selection/Channel 2 |
| G211 | Power control pre-selection V1, F1, T1/Channel 2 |
| G212 | Power control pre-selection V2, F2, T2/Channel 2 |
| G213 | Power control pre-selection V3, F3, T3/Channel 2 |
| G214 | Power control pre-selection T4/Channel 2 |
| G215 | Power control pre-selection T5/Channel 2 |
| G216 | Power control pre-selection T6/pulsing output/Channel 2 |
| G217 | Power control pre-selection T7/pulsing output/Channel 2 |
| G220 | Angled wheel transformation “off” |
| G221 | Angled wheel transformation “on” |
| G222 | Angled wheel transformation “on” but angled wheel moves before others |
| G223 | Angled wheel transformation “on” but angled wheel moves after others |
| G265 | Distance regulation – axis selection |
| G270 | Turning finishing cycle |
| G271 | Stock removal in turning |
| G272 | Stock removal in facing |
| G274 | Peck finishing cycle |
| G275 | Outer diameter / internal diameter turning cycle |
| G276 | Multiple pass threading cycle |
| G310 | Power control axes selection /channel 3 |
| G311 | Power control pre-selection V1, F1, T1/channel 3 |
| G312 | Power control pre-selection V2, F2, T2/channel 3 |
| G313 | Power control pre-selection V3, F3, T3/channel 3 |
| G314 | Power control pre-selection T4/channel 3 |
| G315 | Power control pre-selection T5/channel 3 |
| G316 | Power control pre-selection T6/pulsing output/Channel 3 |
| G317 | Power control pre-selection T7/pulsing output/Channel 3 |
Note that some of the above G-codes are not standard. Specific control features, such as laser power control, enable those optional codes.







The beginning is the most important part of the work.
If the facts don't fit the theory, change the facts.
The only way to discover the limits of the possible is to go beyond them into the impossible.