Fanuc / Haas (movimiento)
G91 G01 X25. Y0. F300
Cada cota es un incremento con signo desde donde está la herramienta. Al terminar el tramo incremental hay que volver a G90 explícitamente: el control no lo hace solo.
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.
G91 hace que cada cota se mida desde la posición actual de la herramienta y no desde el cero pieza: X10. en G91 significa diez milímetros más allá de donde estás, en el sentido positivo del eje. Es modal y se usa en casos concretos: la retirada segura G91 G28 Z0., los patrones repetidos con K o L y los subprogramas de geometría. Fuera de ahí, olvidarse de volver a G90 es una de las causas de choque más frecuentes.
Ver la ficha completa de la familiaFanuc / Haas (movimiento)
G91 G01 X25. Y0. F300
Cada cota es un incremento con signo desde donde está la herramienta. Al terminar el tramo incremental hay que volver a G90 explícitamente: el control no lo hace solo.
Fanuc / Haas (retirada segura)
G91 G28 Z0.
El uso más habitual de G91: sube el eje Z desde donde esté hasta el punto de referencia, sin punto intermedio. El mismo bloque en G90 pasaría antes por el Z0 del cero pieza, es decir, por la cara de la pieza.
Siemens 840D / 828D
G91 G1 X25 F300
Siemens permite además dar una cota incremental suelta dentro de un bloque absoluto con IC(): X=IC(25). Así se evita cambiar de modo para un solo eje.
Heidenhain TNC (Klartext)
L IX+25 R0 F300
No hay un G91 modal: la I delante del nombre del eje marca que esa cota concreta es incremental. Las cotas sin I siguen siendo absolutas dentro del mismo bloque.
| Letra | Qué indica | Unidad |
|---|---|---|
| X Y Z | Incremento con signo desde la posición actual. El signo marca el sentido, no el lado de la pieza. | mm / pulg |
| Z y R en ciclos fijos | Con G91, la R se mide desde la posición actual del eje y la Z es la profundidad medida desde el plano R, no cotas del cero pieza. | mm / pulg |
| K / L | Repeticiones del ciclo fijo, que solo tienen efecto en modo incremental: K en Fanuc, L en Haas. Cada repetición aplica de nuevo el incremento de X e Y. | número entero |
Fila de cinco agujeros de Ø5 separados 25 mm en X, en una placa de 14 mm. En absoluto habría que escribir las cinco cotas; en incremental basta con programar el ciclo una vez y repetirlo cuatro veces más con el paso de 25 mm. Los agujeros quedan en X20, X45, X70, X95 y X120.
| G91 G28 Z0. | ( Z a referencia en incremental antes del cambio. ) |
| T4 M06 | ( Broca de Ø5. ) |
| G90 G54 G00 X20. Y30. | ( El punto de partida siempre en absoluto: primer agujero de la fila. ) |
| G43 H04 Z25. M03 S2400 | ( Longitud de la T4 y husillo en marcha. Z25 queda como posición de partida del eje. ) |
| M08 | ( Refrigerante. ) |
| G91 G99 G81 X0. Y0. Z-18. R-23. F180 | ( Ciclo en incremental: R-23 baja 23 mm desde Z25 hasta la cota Z2, y Z-18 es la profundidad medida desde el plano R (de Z2 a Z-16). X0 Y0 taladra en la posición actual sin moverse. ) |
| X25. K4 | ( Repite el ciclo cuatro veces más desplazándose 25 mm en X cada vez. En Haas la repetición se escribe L4. En G90 este bloque repetiría el mismo agujero en el mismo sitio. ) |
| G80 G90 G00 Z25. M09 | ( Cancela el ciclo y vuelve a absoluto en el mismo bloque. Dejar G91 activo aquí es la causa clásica de un movimiento inesperado en el bloque siguiente. ) |
| G91 G28 Z0. M05 | ( Retirada segura en incremental y husillo parado. ) |
| G90 | ( Deja el control en absoluto. ) |
| M30 | ( Fin de programa. ) |
En tres situaciones concretas. La primera, la retirada segura: G91 G28 Z0. sube el eje desde donde esté sin pasar por el cero pieza. La segunda, los patrones repetidos: una fila o una matriz de agujeros se escribe una vez y se repite con K o L, que solo funcionan en incremental. La tercera, los subprogramas de geometría que se reutilizan en varias posiciones: el subprograma lleva la forma en incremental y el programa principal la coloca posicionándose en absoluto antes de cada llamada. Para todo lo demás, el absoluto es más seguro y más fácil de depurar.
En un ciclo fijo el cambio de modo cambia el significado de la R y de la Z: en incremental la R se mide desde la posición actual del eje y la Z es la profundidad desde el plano R. Por eso, al pasar un ciclo de absoluto a incremental hay que recalcular las dos, no solo copiarlas. La regla de taller que evita disgustos es cerrar siempre el tramo incremental con G80 G90 en el mismo bloque, y no dejar nunca un G91 activo al llegar a un cambio de herramienta, a un final de programa o a un salto de subprograma.
Gana en programas cortos y reutilizables: un patrón de veinte agujeros cabe en dos bloques y el mismo subprograma sirve para cuatro posiciones distintas. Pierde en trazabilidad, porque para saber dónde está la herramienta hay que sumar todos los bloques anteriores, y en precisión acumulada, porque si el plano está acotado en absoluto y tú encadenas incrementos redondeados, el último punto arrastra la suma de todos los redondeos. Por eso los planos acotados desde un origen común se programan en absoluto y solo las repeticiones se hacen en incremental.
Porque en G91 el punto intermedio es la posición actual y la máquina sube directa a referencia. En G90, ese Z0. es la cota Z0 del cero pieza, o sea la cara de la pieza: la herramienta baja hasta ahí antes de subir. Es uno de los choques más habituales en fresadora.
Para patrones repetidos con K o L, para subprogramas de geometría reutilizables y para movimientos de retirada. Para el resto del programa, el absoluto es más seguro porque un error en un bloque no se arrastra a los siguientes.
Sí, si los incrementos vienen de restar cotas redondeadas de un plano acotado en absoluto. El control calcula con más decimales que los que tú escribes, así que el error está en el programa, no en la máquina. La solución es programar en absoluto lo que el plano acota en absoluto.
En Siemens con IC() y en Heidenhain con la I delante del eje, sí, eje por eje. En Fanuc y Haas no: hay que cambiar el modo con G91 y volver con G90, y ese ida y vuelta conviene hacerlo en el mismo bloque que el resto de la cancelación.
No. El origen sigue siendo el que diga G54 o el que esté activo: lo único que cambia es desde dónde se miden las cotas de cada bloque. Eso sí, un G10 L2 escrito con G91 activo suma valores al origen en vez de sustituirlos, y eso sí desplaza el cero.
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.