Which parts of your program can be computed, and which cannot, is worth knowing before you drop a file in.
Each row below is one thing a machine does; each column is one control. Where they
write it differently (G43.4, TRAORI and M128, say), it is one row.
The HEIDENHAIN column shows the ISO codes; the Klartext form is computed the same way (G200 is CYCL DEF 200).
| Mark | Meaning |
|---|---|
| ✓ | Computed, and counted towards the cycle time with its normal meaning. Next to the mark is how that control writes it. |
| ✗ | Recognised, but its behaviour depends on something we have not confirmed, so it is not counted. No number is invented; a diagnostic in the report explains what happens to that stretch instead. |
| — | This control does not have it. |
Nothing in the second group is quietly skipped — when your program actually uses one, the report names it and gives the line number. Need one of them? Tell us and it will affect what gets built next.
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| Rapid positioning | ✓G00 | ✓G00 | ✓G00 |
| Linear interpolation | ✓G01 | ✓G01 | ✓G01 |
| Circular / helical interpolation (CW) | ✓G02 | ✓G02 | ✓G02 |
| Circular / helical interpolation (CCW) | ✓G03 | ✓G03 | ✓G03 |
| Thread cutting with constant lead | ✓G33 | ✓G33 | — |
| Dwell | ✓G04 | ✓G04 | ✓G04 |
| Polar coordinate command cancel | ✓G15 | — | — |
| Polar coordinate command | ✓G16 | — | — |
| Cylindrical interpolation | ✗G07.1 | — | — |
| Tangential arc | — | ✓CT | ✓G06 |
| Thread cutting with increasing lead | — | ✓G34 | — |
| Thread cutting with decreasing lead | — | ✓G35 | — |
| Rigid tapping | — | ✓G331 | — |
| Tapping retract | — | ✓G332 | — |
| Tapping with a compensating chuck | — | ✓G63 | — |
| Circle through an intermediate point | — | ✓CIP | — |
| Circular arc with the last direction of rotation | — | — | ✓G05 |
| Current position as circle centre / pole (Klartext: CC without coordinates) | — | — | ✓G29 |
| Paraxial straight line | — | — | ✗G07 |
| Polar straight line at rapid traverse (Klartext: LP … FMAX) | — | — | ✓G10 |
| Polar straight line (Klartext: LP) | — | — | ✓G11 |
| Polar arc, clockwise (Klartext: CP … DR-) | — | — | ✓G12 |
| Polar arc, counter-clockwise (Klartext: CP … DR+) | — | — | ✓G13 |
| Polar arc with the last direction of rotation | — | — | ✓G15 |
| Polar arc with tangential transition (Klartext: CTP) | — | — | ✓G16 |
| Chamfer (Klartext: CHF) | — | — | ✗G24 |
| Corner rounding (Klartext: RND) | — | — | ✗G25 |
| Tangential approach to the contour | — | — | ✗G26 |
| Tangential departure from the contour | — | — | ✗G27 |
| Approach the contour (LT, LN, CT, LCT…) | — | — | ✓APPR |
| Depart from the contour (LT, LN, CT, LCT…) | — | — | ✓DEP |
| FK free contour: free straight line | — | — | ✗FL |
| FK free contour: tangential free straight line | — | — | ✗FLT |
| FK free contour: free circular arc | — | — | ✗FC |
| FK free contour: tangential free circular arc | — | — | ✗FCT |
| FK free contour: pole | — | — | ✗FPOL |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| XY plane | ✓G17 | ✓G17 | ✓G17 |
| ZX plane | ✓G18 | ✓G18 | ✓G18 |
| YZ plane | ✓G19 | ✓G19 | ✓G19 |
| Inch input | ✓G20✗G70 | ✓G70✓G700 | ✓G70 |
| Metric input | ✓G21✗G71 | ✓G71✓G710 | ✓G71 |
| Absolute command | ✓G90 | ✓G90 | ✓G90 |
| Incremental command | ✓G91 | ✓G91 | ✓G91 |
| Diameter programming | — | ✗DIAMON | — |
| Radius programming | — | ✗DIAMOF | — |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| Inverse time feed | ✓G93 | ✓G93 | — |
| Feed per minute (mm/min) | ✓G94 | ✓G94 | — |
| Feed per revolution (mm/rev) | ✓G95 | ✓G95 | — |
| Constant surface speed control | ✓G96 | ✓G96✓G961✓G962 | — |
| Cancel constant surface speed control | ✓G97 | ✓G97✓G971✓G972✓G973 | — |
| Constant feed (the default) | — | ✓FNORM | — |
| Linearly changing feed | — | ✓FLIN | — |
| Feed following a cubic spline | — | ✓FCUB | — |
| Spindle speed limit (for constant cutting rate) | — | ✓LIMS | — |
| Reference axis for constant cutting rate | — | ✓SCC | — |
| Feed referenced to arc length (the default) | — | ✓SPATH | — |
| Feed referenced to the curve parameter | — | ✗UPATH | — |
| Feed rate factor for plunging | — | — | ✗M103 |
| Feed rate in mm/min on rotary axes | — | — | ✗M116 |
| Feed rate per spindle revolution | — | — | ✗M136 |
| Feed rate from the TOOL CALL block | — | — | ✓F AUTO |
| Feed per revolution | — | — | ✗FU |
| Feed per tooth | — | — | ✗FZ |
| Cutting speed (m/min) | — | — | ✗VC |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| Programmable zero offset | ✓G52 | ✓TRANS | — |
| Machine coordinates (one block) | ✓G53 | — | ✓M91 |
| Work coordinate system 1 | ✓G54 | ✓G54 | — |
| Work coordinate system 2 | ✓G55 | ✓G55 | — |
| Work coordinate system 3 | ✓G56 | ✓G56 | — |
| Work coordinate system 4 | ✓G57 | ✓G57 | — |
| Work coordinate system 5 | ✓G58 | — | — |
| Work coordinate system 6 | ✓G59 | — | — |
| Additional work coordinate systems | ✓G54.1 | — | — |
| Coordinate system setting | ✓G92 | — | — |
| Coordinate system preset | ✓G92.1 | — | — |
| Coordinate rotation | ✓G68 | ✓ROT | ✓G73 |
| Scaling cancel | ✓G50 | — | — |
| Scaling | ✗G51 | ✓SCALE | ✓G72 |
| Mirror image | — | ✓MIRROR | ✓G28 |
| Cancel settable zero offset | — | ✗G500 | — |
| Work offsets 5 to 99 | — | ✗G505 | — |
| Suppress frames for one block | — | ✓G53 | — |
| Suppress all frames including the channel basic frame | — | ✓G153 | — |
| Suppress all frames and offsets (non-modal) | — | ✓SUPA | — |
| Programmable zero offset (additive) | — | ✓ATRANS | — |
| Programmable rotation (additive) | — | ✓AROT | — |
| Programmable scale factor (additive, multiplies) | — | ✓ASCALE | — |
| Programmable mirroring (additive) | — | ✓AMIRROR | — |
| Datum shift from a datum table | — | — | ✗G53 |
| Datum shift (note: not Fanuc's work coordinate system) | — | — | ✓G54 |
| Presetting | — | — | ✗G247 |
| Coordinates referenced to a position defined by the machine manufacturer | — | — | ✓M92 |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| Cutter compensation cancel | ✓G40 | ✓G40 | ✓G40 |
| Cutter compensation left | ✓G41 | ✓G41 | ✓G41 |
| Cutter compensation right | ✓G42 | ✓G42 | ✓G42 |
| Tool length compensation (+) | ✓G43 | — | — |
| Tool length compensation (−) | ✓G44 | — | — |
| Tool length compensation cancel | ✓G49 | — | — |
| Tool change | ✓M06 | ✓M06 | — |
| Radius compensation: extend a paraxial line | — | — | ✓G43 |
| Radius compensation: shorten a paraxial line | — | — | ✓G44 |
| Tool definition (Klartext: TOOL DEF … L… R…) | — | — | ✓G99 |
| Prepare the next tool | — | — | ✓G51 |
| Tool definition / prepare the next tool | — | — | ✓TOOL DEF |
| Tool length oversize (TOOL CALL) | — | — | ✓DL |
| Tool radius oversize (TOOL CALL) | — | — | ✓DR |
| Tool radius 2 oversize (TOOL CALL) | — | — | ✓DR2 |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| High-speed peck drilling cycle | ✓G73 | — | — |
| Left-hand tapping cycle | ✓G74 | — | — |
| Cancel canned cycle | ✓G80 | ✓MCALL | — |
| Drilling | ✓G81 | ✓CYCLE81 | ✓G200 |
| Drilling with dwell | ✓G82 | ✓CYCLE82 | — |
| Peck drilling | ✓G83 | ✓CYCLE83 | ✓G205 |
| Tapping | ✓G84 | ✓CYCLE84 | ✓G206✓G207 |
| Boring, feed out | ✓G85 | ✓CYCLE85 | ✓G201 |
| Boring cycle, spindle stop then retract | ✓G86 | — | — |
| Boring cycle with dwell, feed out | ✓G89 | — | — |
| Return to initial level after cycle | ✓G98 | — | — |
| Return to R point level after cycle | ✓G99 | — | — |
| Fine boring cycle | ✗G76 | — | — |
| Back boring cycle | ✗G87 | — | — |
| Boring cycle with manual intervention | ✗G88 | — | — |
| Cycle call (Klartext: CYCL CALL) | — | — | ✓G79 |
| Spindle orientation (cycle 13) | — | — | ✗G36 |
| Boring (cycle 202) | — | — | ✓G202 |
| Universal drilling (cycle 203) | — | — | ✓G203 |
| Back boring (cycle 204) | — | — | ✗G204 |
| Bore milling (cycle 208) | — | — | ✗G208 |
| Tapping with chip breaking (cycle 209) | — | — | ✗G209 |
| Centering (cycle 240) | — | — | ✓G240 |
| Polar pattern (cycle 220) | — | — | ✗G220 |
| Cartesian pattern (cycle 221) | — | — | ✗G221 |
| Face milling (cycle 233) | — | — | ✗G233 |
| Rectangular pocket (cycle 251) | — | — | ✗G251 |
| Circular pocket (cycle 252) | — | — | ✗G252 |
| Slot milling (cycle 253) | — | — | ✗G253 |
| Circular slot (cycle 254) | — | — | ✗G254 |
| Rectangular stud (cycle 256) | — | — | ✗G256 |
| Circular stud (cycle 257) | — | — | ✗G257 |
| Thread milling (cycle 262) | — | — | ✗G262 |
| Modal cycle call (after every positioning block, until M99 or a new CYCL DEF) | — | — | ✓M89 |
| Blockwise cycle call (moves to the position, then runs the cycle) | — | — | ✓M99 |
| Cycle definition (parameters in Q200 onwards) | — | — | ✓CYCL DEF |
| Cycle call (once, at the last position) | — | — | ✓CYCL CALL |
| Cycle call at every point of a pattern or point table | — | — | ✗CYCL CALL PAT |
| Cycle call at a given position | — | — | ✗CYCL CALL POS |
| Pattern definition | — | — | ✗PATTERN DEF |
| Touch probe cycle | — | — | ✗TCH PROBE |
| Contour declaration (SL cycles) | — | — | ✗DECLARE |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| Tool centre point control (RTCP) | ✓G43.4✓G43.5 | ✓TRAORI | ✓M128✓FUNCTION TCPM |
| Cancel tool centre point control | ✓G49 | ✓TRAFOOF | ✓M129✓FUNCTION RESET |
| Tool axis direction control | ✓G53.1 | — | — |
| Tool axis direction control retaining the tool centre point | ✓G53.6 | — | — |
| Tilted working plane | ✓G68.2 | ✗CYCLE800(…) | ✗G80✗PLANE |
| Cancel tilted working plane | ✓G69 | ✓CYCLE800() | ✓PLANE RESET |
| Tilted plane indexing by tool axis direction | ✗G68.3 | — | — |
| Incremental tilted plane indexing | ✗G68.4 | — | — |
| Shorter-path traverse of rotary axes | — | — | ✗M126 |
| LN tool axis direction, X component | — | — | ✗TX |
| LN tool axis direction, Y component | — | — | ✗TY |
| LN tool axis direction, Z component | — | — | ✗TZ |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| Return to the 1st reference position via an intermediate point | ✓G28 | — | — |
| Return from the reference position | ✓G29 | — | — |
| Return to the 2nd–4th reference position (selected by P) | ✓G30 | — | — |
| Return to the 1st reference position without the in-position check | ✓G28.2 | — | — |
| Return to the 2nd–4th reference position without the in-position check | ✓G30.2 | — | — |
| Reference point approach | — | ✗G74 | — |
| Fixed point approach | — | ✗G75 | — |
| Retraction along the tool axis (MB distance, MB MAX to the travel limit) | — | — | ✓M140 |
| Retraction distance of M140 (MB distance, MB MAX) | — | — | ✓MB |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| Exact stop (this block only) | ✓G09 | ✓G09 | — |
| Exact stop mode | ✓G61 | ✓G60 | — |
| Cutting mode | ✓G64 | ✓G64 | — |
| Tapping mode | ✓G63 | — | — |
| Exact stop window: fine | — | ✓G601 | — |
| Exact stop window: coarse | — | ✓G602 | — |
| Exact stop: end of interpolation | — | ✓G603 | — |
| Continuous path with smoothing by distance | — | ✓G641 | — |
| Continuous path with smoothing within tolerance | — | ✓G642 | — |
| Continuous path with smoothing inside the block | — | ✓G643 | — |
| Continuous path with smoothing to the dynamic limit | — | ✓G644 | — |
| Continuous path with tangential smoothing | — | ✓G645 | — |
| Corner deceleration at inside corners under cutter compensation | — | ✗G62 | — |
| Corner deceleration at all corners | — | ✗G621 | — |
| High-speed settings (tolerance and machining mode) | — | ✓CYCLE832 | — |
| Jerk-limited path acceleration | — | ✓SOFT | — |
| Path acceleration without jerk limiting | — | ✓BRISK | — |
| Velocity-dependent path acceleration | — | ✗DRIVE | — |
| Standard dynamics (set 1) | — | ✓DYNNORM | — |
| Positioning and tapping dynamics (set 2) | — | ✓DYNPOS | — |
| Roughing dynamics (set 3) | — | ✓DYNROUGH | — |
| Semi-finishing dynamics (set 4) | — | ✓DYNSEMIFIN | — |
| Finishing dynamics (set 5) | — | ✓DYNFINISH | — |
| Block compression | — | ✗COMPON | — |
| Block compression off (the default) | — | ✓COMPOF | — |
| Corner deceleration off (the default) | — | ✓FENDNORM | — |
| Compression with continuous curvature | — | ✗COMPCURV | — |
| Compression optimised for surface quality | — | ✗COMPCAD | — |
| Preprocessing stop | — | ✗STOPRE | — |
| Contour tolerance (cycle 32) | — | — | ✗G62 |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| Macro call with arguments | ✓G65 | ✓PROC | — |
| Modal macro call | ✓G66 | — | — |
| Modal macro call cancel | ✓G67 | — | — |
| Modal macro call B (called on every block) | ✗G66.1 | — | — |
| Declare a subprogram with parameters | — | ✓EXTERNAL | — |
| Indirect subprogram call | — | ✓CALL | — |
| Subprogram call with a path | — | ✓PCALL | — |
| Call a subprogram from external memory | — | ✓EXTCALL | — |
| Extend the subprogram search path | — | ✓CALLPATH | — |
| Call a program written in ISO language | — | ✗ISOCALL | — |
| Set a label (Klartext: LBL; G98 L0 ends a subprogram) | — | — | ✓G98 |
| Program call as a cycle (cycle 12) | — | — | ✗G39 |
| Call another NC program | — | — | ✓CALL PGM |
| Call another NC program (ISO) | — | — | ✓% |
| Select a table or program (SEL TABLE, SEL PGM…) | — | — | ✗SEL |
| Q parameter functions (FN 14 onwards: error messages, output, system data, tables) | — | — | ✗FN |
| What it does | Fanuc series | Siemens series | HEIDENHAIN series |
|---|---|---|---|
| Program stop | ✓M00 | ✓M00 | ✓M00 |
| Optional stop | ✓M01 | ✓M01 | ✓M01 |
| Program end | ✓M02 | ✓M02 | ✓M02 |
| Spindle on, clockwise | ✓M03 | ✓M03 | ✓M03 |
| Spindle on, counterclockwise | ✓M04 | ✓M04 | ✓M04 |
| Spindle stop | ✓M05 | ✓M05 | ✓M05 |
| Spindle orientation | ✓M19 | ✓M19 | — |
| Rigid tapping mode | ✓M29 | — | — |
| Program end and rewind | ✓M30 | ✓M30 | ✓M30 |
| Subprogram call | ✓M98 | ✓L… | ✓CALL LBL |
| Return from subprogram | ✓M99 | ✓M17✓RET | ✓LBL 0 |
| Show a message on the operator panel | — | ✓MSG | — |
| Workpiece blank: MIN point (Klartext: BLK FORM 0.1) | — | — | ✓G30 |
| Workpiece blank: MAX point (Klartext: BLK FORM 0.2) | — | — | ✓G31 |
| Program stop (Klartext: STOP) | — | — | ✓G38 |
| Spindle on clockwise, coolant on | — | — | ✓M13 |
| Spindle on counter-clockwise, coolant on | — | — | ✓M14 |
| Workpiece blank definition (for simulation only, no motion) | — | — | ✓BLK FORM |
| Program stop | — | — | ✓STOP |
| Switch between milling and turning mode | — | — | ✓FUNCTION MODE |
| Other special functions (FUNCTION …) | — | — | ✗FUNCTION |
Beyond the three above, Mitsubishi and turning are not done — they are not a matter of filling in a config file: the macro languages and the way cycles are called differ per vendor. Tell us which control you run and it will affect which one comes first.