Fanuc / Haas (fresado)
G90 G54 G00 X100. Y50.
Es el bloque de seguridad típico al principio de cada herramienta: modo absoluto, origen de pieza y posicionamiento. Escribirlo en cada herramienta evita heredar un G91 de la operación anterior.
We use first-party cookies and technical storage to make the site work, Google reCAPTCHA security technology and, only if you accept, Vercel analytics (no cookies, no cross-site tracking). You can accept or reject analytics; both options are equivalent and you can change your choice at any time. More info: Cookie policy, Privacy policy, Legal notice and Terms and conditions.
Search and filter ISO commands by control, machine or function.
The CNC programming language is based on structured code blocks that control toolpaths, feeds and machine-tool functions. In this list of G and M codes you'll find a quick reference to the commands most used in turning and milling. Although an ISO standard exists, the exact execution of a canned cycle or an advanced interpolation can vary depending on the Fanuc, Heidenhain, Siemens or Haas control and the manufacturer's parameters.
G90 hace que todas las cotas X, Y y Z se midan desde el cero pieza activo (G54-G59) y no desde donde está la herramienta. Es modal y es el modo normal de trabajo en fresadora, porque permite copiar las cotas del plano tal cual. Ojo con el torno Fanuc de juego de códigos A: allí G90 no es el absoluto, es el ciclo fijo de cilindrado, y el absoluto se distingue por usar X y Z en vez de U y W.
Ver la ficha completa de la familiaFanuc / Haas (fresado)
G90 G54 G00 X100. Y50.
Es el bloque de seguridad típico al principio de cada herramienta: modo absoluto, origen de pieza y posicionamiento. Escribirlo en cada herramienta evita heredar un G91 de la operación anterior.
Fanuc (torno, juego de códigos A)
G90 X40. Z-50. F0.2
Aquí G90 es el ciclo fijo de cilindrado en una pasada, no el modo absoluto. En ese formato, el absoluto se programa con X y Z y el incremental con U y W dentro del mismo bloque. No confundas las dos cosas al convertir programas.
Siemens 840D / 828D
G90 G54 G0 X100 Y50
Siemens admite además dar una cota absoluta suelta dentro de un bloque incremental con AC(): X=AC(100). Así no hace falta cambiar de modo para un solo eje.
Heidenhain TNC (Klartext)
L X+100 Y+50 R0 FMAX
En Klartext las cotas son absolutas por defecto y no hay un G90 que escribir. La I delante del eje (IX+10) convierte esa cota concreta en incremental.
| Letra | Qué indica | Unidad |
|---|---|---|
| X Y Z | Cota del punto de destino medida desde el cero pieza activo. Con G90 son cotas del plano; con G91 serían incrementos. | mm / pulg |
| Z y R en ciclos fijos | Con G90, la Z de un ciclo fijo es la cota de fondo y la R es la cota del plano de referencia; con G91 pasan a ser distancias. | mm / pulg |
| G90.1 / G91.1 | En los controles que lo admiten, G90.1 hace absolutos los centros I, J y K de los arcos y G91.1 los devuelve a incrementales, que es el comportamiento normal. | modal, sin unidad |
Ranura en L en una placa de aluminio con fresa de Ø8. Los tres puntos del recorrido vienen acotados en el plano desde la misma esquina, así que en absoluto se copian tal cual. En los comentarios se indica qué habría que escribir en cada bloque si el mismo recorrido se programara en G91.
| G21 G17 G40 G49 G80 | ( Milímetros, plano XY y estado limpio. ) |
| G91 G28 Z0. | ( Z a referencia en incremental: este bloque concreto se hace en G91 a propósito. ) |
| T2 M06 | ( Fresa de Ø8. ) |
| G90 G54 G00 X10. Y10. | ( Vuelve a absoluto y se posiciona. Con G90, X10 Y10 es un punto fijo de la pieza; con G91 sería 10 mm más allá de donde estuviera la fresa. ) |
| G43 H02 Z50. M03 S3800 | ( Longitud de la T2 y husillo en marcha. ) |
| G00 Z2. M08 | ( Aproximación y refrigerante. ) |
| G01 Z-4. F200 | ( Entra a 4 mm bajo la cara. En G90 es una cota; en G91 sería una bajada de 6 mm desde Z2. ) |
| G01 X70. F450 | ( Primer tramo de la ranura hasta X70. En G91 este bloque sería X60. ) |
| Y45. | ( Segundo tramo hasta Y45. En G91 sería Y35. ) |
| X30. | ( Tercer tramo hasta X30. En G91 sería X-40, con el signo marcando el sentido. ) |
| G00 Z50. M09 | ( Retirada y refrigerante fuera. ) |
| G91 G28 Z0. M05 | ( Aquí sí interesa el incremental: sube desde donde esté hasta la referencia. Con G90, el bloque pasaría antes por el Z0 de la pieza. ) |
| G90 | ( Devuelve el control a absoluto antes de terminar, para que ningún bloque posterior herede el G91. ) |
| M30 | ( Fin de programa. Muchos controles restauran los modales por defecto en M30, pero eso depende de parámetros de la máquina. ) |
Prácticamente siempre en fresadora: los planos se acotan desde un origen común y en absoluto las cotas se copian sin hacer cuentas. Además, en absoluto un error en un bloque afecta solo a ese bloque, mientras que en incremental arrastra todo lo que viene detrás. Los casos en los que se cambia a incremental son puntuales y conocidos: la retirada segura con G91 G28 Z0., los patrones repetidos con K o L, y los subprogramas de geometría que se posicionan desde el bloque de llamada. Fuera de eso, lo sano es escribir G90 en el bloque de seguridad de cada herramienta.
G90 y G54 son cosas distintas y complementarias: G54 dice desde qué punto se mide y G90 dice que se mide desde ese punto y no desde la herramienta. En los ciclos fijos, el modo cambia el significado de dos direcciones: con G90 la Z es la cota del fondo y la R la cota del plano de referencia, mientras que con G91 la Z es la profundidad desde R y la R una distancia desde la posición actual. En cambio los centros I, J y K de los arcos siguen siendo incrementales en Fanuc y Haas, salvo que se active G90.1.
No cancela nada. No borra un G92 ni un G52 que hubieran quedado activos: el origen sigue desplazado y las cotas absolutas se miden desde ese origen desplazado, que es exactamente el motivo por el que un programa correcto puede mecanizar en el sitio equivocado. Tampoco garantiza que el control arranque en absoluto: el modo por defecto al encender depende de un parámetro de la máquina. Y en torno con juego de códigos A no significa absoluto en absoluto, sino un ciclo de cilindrado que mueve la herramienta al diámetro programado.
Sí, y es lo habitual: se trabaja en G90 y se cambia a G91 para bloques concretos, como la retirada G91 G28 Z0. o un patrón repetido. Lo importante es volver a G90 justo después. En Siemens y Heidenhain se puede incluso mezclar dentro de un bloque con AC() e I.
No siempre. En fresadora G90 es el modo absoluto. En torno Fanuc con juego de códigos A, G90 es el ciclo fijo de cilindrado y el absoluto se expresa usando X y Z frente a U y W. Antes de reutilizar un bloque de fresa en un torno, comprueba el juego de códigos del control.
En la pantalla de códigos modales del control, que muestra el estado de cada grupo. Es la comprobación de treinta segundos que conviene hacer antes de arrancar un programa a mitad o después de mover la máquina en manual.
En Fanuc y Haas no: los centros de arco son incrementales desde el punto de partida aunque estés en G90. Solo cambian si el control admite G90.1 y lo activas; G91.1 los devuelve al comportamiento normal.
Sí, a dos direcciones: con G90 la Z es la cota del fondo y la R la cota del plano de referencia. Con G91 la Z pasa a ser la profundidad medida desde R y la R una distancia desde la posición actual, así que el mismo ciclo hace otro agujero.
G00
MovementQuick positioning
Fast movement to a coordinate without controlling cutting advance.
G01
MovementLinear interpolation
Controlled linear movement with programmed advance.
G02
MovementHourly circular interpolation
Circular arc clockwise in the active plane.
G02.1/G03.1
InterpolationSpiral interpolation (circular threading B)
CW/CCW spiral interpolation: continuous helical motion with variable pitch; used in B threading and some lapping operations.
G02.2/G03.2
InterpolationInvolute interpolation
Interpolation along an involute circle (involute interpolation), used in gear manufacturing.
G03
MovementCounterclockwise circular interpolation
Counterclockwise circular arc in the active plane.
G04
Program controlTimed dwell
Temporarily stops execution for a defined time or number of revolutions.
G05/G05.1
High speedHigh speed / AI contour
Enables high-speed machining functions, path look-ahead or advanced contour control.
G5/G5.1/G5.2
Advanced interpolationSplines and NURBS
Interpolations by cubic spline, quadratic spline or NURBS in controls that support it.
G05.4
High speedHRV3/HRV4 on/off
Enables or disables HRV3/HRV4 (High Response Vector) current control to improve servo precision at high speed.
G06.2
High speedNURBS interpolation
Interpolation of NURBS (Non-Uniform Rational B-Spline) curves directly in the control, reducing block points and improving smoothness.
G07
InterpolationHypothetical axis interpolation
Defines a hypothetical (virtual) axis for interpolation; used when machining symmetrical parts or to coordinate non-physical moves.
G7/G8
LatheDiameter/radius mode around lathe
Selects whether lathe X coordinates are read as diameter or radius depending on the control.
G08/G09
ToolpathSmoothing and block-wise exact stop
Functions used to activate/deactivate smoothing or require exact stopping in a specific block according to control.
G10
OffsetsOffset writing
Lets you write tool offsets, work offsets or other data from the program.
G12/G13
Milling cyclesCircular pocket
Circular interpolation cycle to machine pockets or circular patterns according to control.
G15/G16
CoordinatesPolar coordinates
Activates or cancels programming in polar coordinates, usually radius and angle.
G17/G18/G19
DrawingPlane selection
Defines the active plane for arcs and offsets.
G20/G21
UnitsUnits inches/millimeters
Select programming in inches or millimeters.
G22/G23
SafetyProgrammed stroke limits
Activates or deactivates zone checking/stored limits according to control.
G codes prepare and govern tool movement: rapid traverses, linear interpolation, circular interpolation, canned cycles, working planes and compensations. M codes control auxiliary machine functions such as spindle, coolant, stop, tool change or program end.
G00 is used for rapid positioning, G01 for linear cutting feed and G02/G03 for clockwise or counterclockwise circular interpolation. They are the basis of most CNC programs on milling machines and lathes.
Canned cycles simplify repetitive operations such as drilling, tapping, boring or roughing. Their syntax varies a lot between controls, so it's always wise to check the machine manual.
G codes (preparatory) define the geometry and tool movement, such as linear interpolations or roughing cycles. M codes (miscellaneous or auxiliary) control the machine hardware, such as starting the spindle (M03), the coolant (M08) or the end of program (M30).
Not entirely. Although basic moves such as G00, G01, G02 and G03 are universal, complex canned cycles like G71 for roughing or G83 for peck drilling have different syntax and parameters depending on whether you use Fanuc, Haas, Siemens or Heidenhain.
G01 is the linear interpolation code. It tells the tool to move in a straight line to a given coordinate at a controlled cutting feed programmed with the letter F.
G90 sets absolute positioning, where every coordinate is measured from the part zero (origin). G91 activates incremental positioning, where each new move is calculated from the tool's current position.
These codes activate tool or insert radius compensation. G41 offsets the path to the left of the programmed contour relative to the feed direction, G42 to the right. They are used to machine profiles, chamfers and radii to exact size without gouging.
To avoid crashes you must cancel modal functions once they are no longer needed. G80 cancels any active canned cycle, such as drilling cycles. G40 cancels tool radius compensation, and G49 cancels length compensation, widely used on milling machines.
The most standardised hardware codes are M03 (spindle clockwise), M04 (spindle counter-clockwise), M05 (spindle stop), M08 (coolant on), M09 (coolant off) and M30 (end of program, axes stop and rewind).
No. Although interpolation moves (G00 to G03) are a widely adopted ISO standard, the syntax of complex cycles differs. For example, the lathe roughing cycle is G71 on Fanuc, but Siemens requires a different parameter structure such as CYCLE95.
Alongside the G and M codes, the letter F (feed) sets the cutting feed, the letter S (speed) sets the spindle rpm or cutting speed, and the letter T (tool) calls the tool number and its offset in the turret or magazine.
CNC IDE: editing with G/M tooltips, line inspector, conversion between controls and 2D/3D toolpath.
CNC Alarms and Solutions Guide. Enter the error code or symptom to find the cause and how to repair it at the machine.
Estimate the cycle time of a CNC program: cutting, rapids, canned cycles, dwells and tool changes. Parts/hour and breakdown by item.