MFG-CNC14-04 · Lesson 3 · 12 clock hours · theory
Coordinate Systems: Absolute, Incremental, and Work Offsets
Objective. Students calculate target coordinates in both G90 absolute and G91 incremental modes and correctly set up G54–G59 work-coordinate-system offsets on paper and in a simulator.
⚠ Pending professional review
This lesson, its worked examples and its practice questions has not yet been verified by a licensed engineer or certified journey-level tradesperson or by a certification or approval body. It is a study draft and may contain errors. Do not use it as instructions for work on a job site or on live equipment. Always follow your instructor, your supervising professional, and current official references and regulations.
VoTechWorks program approval and accreditation are still in progress. Credentials are issued only by the certifying bodies named in each program, after their own exams.
Why Coordinate Systems Matter
Every CNC program is a set of instructions that tells the machine where to move. Before the machine can follow those instructions, both the programmer and the control need to agree on where zero is and how distances are measured. Get that wrong and the cutter goes to the wrong place — at best you scrap a part, at worst you crash the spindle into the workholding. Understanding coordinate systems is therefore one of the most fundamental — and most safety-critical — skills in CNC machining.
The Two Ways to State a Position: G90 and G91
G90 — Absolute mode tells the machine to move to a position measured from a fixed origin point (called the program zero or workpiece origin). Every coordinate in absolute mode is a direct address from that single reference point. If your program zero is the lower-left corner of a part and you command `G90 G01 X2.000 Y1.500`, the tool moves to exactly 2.000 inches right and 1.500 inches up from that corner — regardless of where the tool was before.
G91 — Incremental mode tells the machine to move a stated distance and direction from wherever the tool currently is. If the tool sits at X2.000 Y1.500 and you command `G91 G01 X0.500 Y-0.750`, the tool moves an additional 0.500 right and 0.750 down, arriving at X2.500 Y0.750 in absolute terms.
Both modes are legal and useful. Absolute (G90) is the default and the safer choice for most programmed moves because an error in one block does not carry forward into the next. Incremental (G91) is handy for repeated patterns, drilling cycles, and moves relative to a current position. Many shops use G90 for the bulk of a program and switch to G91 only where it genuinely simplifies the math.
Key rule: Always know which modal code is active. A G90 or G91 stays in effect until the other is commanded — it does not reset itself. Confirm modal state at the start of every program and after any manual intervention.
Machine Zero vs. Workpiece Zero
The machine itself has a fixed reference called machine home or machine zero (sometimes written G53). Home is set by the builder and is typically a corner of the machine's travel envelope. You almost never program from machine zero directly because the workpiece is never sitting exactly at machine home.
Instead, you define a workpiece coordinate system (WCS) — a new zero point located on or relative to the part. On Haas controls (and most other FANUC-compatible controls), you store this offset in one of the work offset registers: G54 through G59. Each register holds an X, Y, and Z value that describes where the workpiece origin is located relative to machine home.
When your program calls `G54`, the control reads those stored values and shifts its internal reference frame. Every subsequent X, Y, Z coordinate in the program is then measured from the G54 origin, not from machine home.
G54–G59: Six Standard Work Offsets
The six standard work offsets let you store up to six different workpiece positions without rewriting your program. Common uses include:
- G54 — First part, or the only part on a simple setup.
- G55 / G56 — A second or third part on a fixture, or a second operation datum.
- G57–G59 — Additional setups, sub-plates, or fixture positions.
To use a work offset you must measure where the workpiece origin is in machine coordinates and enter those values into the offset table on the control. On a Haas mill this is done through the Offset page, Work tab. Typical methods to find the offset values include using an edge finder, a 3-D probe, or a test indicator — the result is a set of X, Y, Z machine-coordinate values you type into the correct G54–G59 row.
Setting Up Offsets: Step-by-Step Logic
1. Decide where the program zero will be on the part (common choices: lower-left corner of stock, center of a bore, or a datum called out on the print).
2. With the machine at home and the part in the fixture, find the machine-coordinate position of that chosen point using an edge finder or probe.
3. Enter those machine-coordinate values into the G54 (or G55, etc.) offset table.
4. In your program, call `G54` before any cutting moves.
5. The control subtracts the stored offset from machine home so that all programmed coordinates are now relative to your chosen workpiece origin.
Safety Points
- Verify before you cut. After entering offset values, use the machine's dry-run or single-block mode with the feed-rate override turned down and the spindle off. Watch the tool path carefully before allowing any actual cutting.
- Lockout/tagout (LOTO). Whenever you reach inside the machine envelope to set an edge finder or adjust workholding, follow your facility's LOTO procedure. The machine must be in a safe state — not simply paused.
- PPE. Safety glasses are required at all times on the shop floor. When indicating a part by hand, keep fingers away from spindle tooling.
- Never assume a modal code. If a previous operator or program left the machine in G91, your absolute-mode moves will produce wrong positions. Always open a new program with a known modal state (`G90`, `G17`, `G20` or `G21`, etc.).
- Check the Z offset carefully. An incorrect Z offset in G54 is the most common cause of a tool crashing into the part or the vise jaw. Double-check Z before the first approach move.
Key terms8
G90 (Absolute mode)A modal G-code that instructs the control to interpret all axis coordinates as distances measured from the active workpiece origin.
G91 (Incremental mode)A modal G-code that instructs the control to interpret all axis coordinates as distances measured from the tool's current position.
Machine zero (machine home)The fixed reference position of the CNC machine established by the builder, typically at a corner of the machine's travel; referenced by G53.
Workpiece coordinate system (WCS)A programmer-defined coordinate system whose origin is placed on or relative to the part; stored in a work offset register such as G54.
Work offset (G54–G59)One of six standard registers that store the X, Y, and Z distance from machine zero to a chosen workpiece origin; calling the register shifts the control's reference frame to that origin.
Program zero (workpiece origin)The point on or relative to the part that the programmer designates as X0, Y0, Z0; must match the datum called out on the engineering drawing.
Modal codeA G-code or M-code that remains active once commanded until a canceling or replacement code is issued; G90 and G91 are modal codes.
Edge finderA precision tool held in the spindle and used at low RPM to locate the edge of a workpiece so the machine's position readout can be recorded and entered into a work offset register.
Worked examples4
1. A mill program zero is at the lower-left corner of a rectangular part. The tool is currently at X0.000 Y0.000 (program zero). In G90 mode, calculate the X and Y coordinates to command the tool to move to a hole located 3.250 inches to the right and 2.000 inches up from program zero.
- G90 mode: all coordinates are measured from program zero (X0.000, Y0.000).
- The hole is 3.250 in. right of X0, so X = 0.000 + 3.250 = 3.250.
- The hole is 2.000 in. up from Y0, so Y = 0.000 + 2.000 = 2.000.
- Command: G90 G01 X3.250 Y2.000
Answer: X3.250 Y2.000
2. Using the same setup (program zero at lower-left corner), the tool is currently positioned at X3.250 Y2.000 after drilling the first hole. A second hole is located 1.500 inches to the right and 0.750 inches down from the first hole. Write the incremental move (G91) to reach the second hole, and then state the absolute position of the second hole.
- G91 mode: coordinates are distances from the current tool position, not from program zero.
- Move right 1.500 in.: incremental X = +1.500.
- Move down 0.750 in.: incremental Y = -0.750.
- Incremental command: G91 G01 X1.500 Y-0.750
- Absolute position of second hole: X = 3.250 + 1.500 = 4.750; Y = 2.000 + (-0.750) = 1.250.
- Absolute position: X4.750 Y1.250.
Answer: Incremental command: G91 G01 X1.500 Y-0.750; Absolute position of second hole: X4.750 Y1.250
3. A technician uses an edge finder to locate the front-left corner of a vise jaw. The machine position display reads X-8.4375, Y-5.1250, Z-2.0000 (in machine coordinates) when the edge finder is centered on the workpiece corner. The programmer wants to use this corner as G54 program zero. What values should be entered into the G54 offset table?
- The workpiece origin in machine coordinates is the position displayed when the edge finder was centered on the chosen corner.
- G54 X offset = -8.4375 (the machine X coordinate of the workpiece origin).
- G54 Y offset = -5.1250 (the machine Y coordinate of the workpiece origin).
- G54 Z offset = -2.0000 (the machine Z coordinate of the workpiece origin, typically set to the top surface of the part).
- Enter these three values into the G54 row of the Work Offset table on the control.
Answer: G54 X = -8.4375, Y = -5.1250, Z = -2.0000
4. A lathe program uses G90 (absolute mode for turning). The part centerline is Z0 at the right face. The tool is at X1.500 Z0.100. Calculate the incremental move (G91) needed to position the tool to the absolute location X1.000 Z-1.250.
- Target absolute position: X1.000, Z-1.250.
- Current absolute position: X1.500, Z0.100.
- Incremental X change = target X − current X = 1.000 − 1.500 = -0.500.
- Incremental Z change = target Z − current Z = -1.250 − 0.100 = -1.350.
- Incremental command: G91 G01 X-0.500 Z-1.350
Answer: G91 G01 X-0.500 Z-1.350
In class: Complete a 20-point coordinate-math worksheet where students convert between absolute and incremental values for mill toolpaths plotted on graph paper, checking answers with a classmate. · Using CNCSimulator Pro (free tier), enter G54 work offset values for a simulated part, run a program that references G54, and confirm the simulated cutter starts at the correct workpiece origin. · Role-play a setup scenario: one student reads blueprint datum callouts aloud while the partner enters matching G54–G56 values into the simulator offset table, then they swap roles.
Materials: CNCSimulator Pro (PC lab, free tier); coordinate-math worksheet; graph paper; Haas operator manual Work Offsets section; blueprint with multiple datum references
Check: Coordinate-math worksheet: ≥18/20 correct (90%); simulator offset setup verified by instructor confirming simulated tool starts within 0.001 in. of intended workpiece origin.
Practice check8
Answer each question, then check it. Nothing is recorded; this is your own practice.
Record this lesson on my transcript. Sign in with your key and enrollment email to record lessons (enroll free if you have no key). This page stays open to read and practise.