What are Work
Offsets G54 to G59
To understand Work offsets you must first understand the CNC machine coordinate system.
These coordinate systems are built up on layers with each layer dependant on the layer below it
Machine Coordinates
The first layer is the Machine coordinate system.
This defines the table’s physical limits of the machine and forms the basis of all coordinates that come after it. These coordinates are used to define the physical location of machine hardware such as tool changers, the tool setter and anything else that is fixed to the table
A typical CNC machine will have Machine coordinate X0 Y0 at the front left of the machine as shown in the diagram below. In the example below the Tool setter is at Machine coordinate X550 Y50 and this is a fixed location. No matter what work offset you apply, the Machine coordinates never change. If MASSO wants to find the tool setter it just needs to move to that machine coordinate and it will be there.

The Machine coordinates are displayed on the MASSO F2 screen

In the bottom right corner of the image above you can see the Machine coordinates after the machine has been homed. You can see they are all zero but take note of the X, Y & Z coordinates in the left hand side of the screen. These are the work coordinates and are a direct result of the work offsets. The Work offsets are automatically saved when you Zero the axis and are remembered even after the power has been turned off.
Work coordinates
When you draw your project in CAD and export your Gcode in CAM you nominate an origin point for X, Y & Z and these are your X0, Y0 & Z0 point but it would be highly unusual if the origin point exactly aligned with the Machine X0, Y0 & Z0 coordinates so we have work coordinates to compensate for this.

Note How after moving the spindle to the origin point and Zeroing the X Y & Z axes the Machine coordinates now show X200 Y 250 and Z-63 in the screen capture below.

Note also that the Work offset shown at the top of the Screen is G54 which is the default work offset at power on. ![]()
Here is the F4 Tool Works off set table.

There are 2 things to note here.
Machine coordinate – Work offset = Work coordinate
Machine X200 – Work offset X200 = 0
Here is another example

The X & Y axis were moved and now the Machine and Work coordinates have changed. If we calculate it again this is what we get.
Machine coordinate – Work offset = Work coordinate
Machine X248 – Work offset X200 = 48
Machine Y270 – Work offset X200 = 20
This is True of the X, Y, A & B Axis
Z is special as it includes the tool length in its calculated work offset so while it works the same it includes values that you cannot see which makes the figures look strange. The principle is the same and If the tool length was 0 the figures would look the same as the other axis.
How are work offsets generated.
Work offsets are created and put into the appropriate works offset table each time you Zero an axis. When you Zero an axis the machine coordinate is stored into the Work offset table or in the case of the Z axis a calculated offset is stored based on the Z machine coordinate and the tool length. The Value remains in the offset table until it is over written next time you Zero an axis.
G54 to G59
The simplest explanation for a work offset is it stores the X,Y,Z A & B zero point. The default work offset when you turn on the machine is G54 and it will remain in this offset unless you change it be selecting a new work offset in MDI eg G56 [RUN]
You can also change offset in your Gcode program by including a line with the work offset number
G56
You can also select a new work offset from the Probing screen by pressing the offset button of your choice. This is a good way to do it if you are using a probe to set up the X, Y or Z zero points.

IMPORTANT: You must select the work offset you will be using before zeroing the various axes or the origin point will be stored in the wrong work offset in the F4 tool table.
Why have 6 Work offsets?
Work offsets store the X,Y,Z,A & B axis zero points and allow you to recall them during a program or even weeks later.
The primary use of Work offsets is with fixtures. Imagine you have 2 jigs on the table and they hold your widget in the correct position for machining. You want to load each jig with a widget and you want to machine the first one them move to the 2nd one. While it is machining the 2nd widget you want to swap out the first jig with a new widget and once it finished the 2nd one it will move back to the first.
This could be done using a special Gcode file that has a duplicate of the machining program and you can spend a lot of time aligning the jigs to make sure they are exactly in the right place to suit your program or you can use Work offsets. This way you only need one machining program for one widget and you can use work offsets to shift it to the 2nd location. This greatly simplifies programming and machine setup and you are no longer limited to having the jigs in any particular location on the table.
- Put the first jig on the able and leaving the machine in G54 zero the X,Y & Z axis as normal
- Put the 2nd Jig on the table and change to Work offset G55 then zero the X,Y & Z axis to the 2nd jig as normal.
- The widget program will be stored as a subroutine called 10.nc
Your program will now be very simple
G54 – select the location of the first jig
M98 P10 – This call Gcode program 10,nc and machines the widget.
G55 – Select the location of the 2nd jig
M98 P10 – This call Gcode program 10,nc and machines the widget.
M30 L20 – Do this 20 times and stop
If you had more jigs you could add them to the table and assign a work offset to them allowing you a maximum of 6 jigs on the table at one time with just a few more lines of Gcode.
This makes Work offsets a very powerful tool.
Another use for work offsets is you can clamp a project down to a large table and if it is something you want to work on over a couple of days or sessions you can use a work offset for it eg G59 and you can recall it at any time and continue working without losing the origin point for the project.
In the meantime you can use another work offset like G54 and start another project in a different part of the table without losing the zero point of the original project
Practical Exercise
Setting the Work offsets
- Power on your machine and home the axis
- The machine starts in G54 so we will use this as our first work offset
- Jog to any spot on the table and zero the X Y & Z axis
- Place a coin on the table directly under the spindle to mark the spot
- In MDI type G55 and press the [Run] button You will see G55 at the top of the screen
- Move to another random spot on the table and Zero the X, Y & Z axis
- Place a coin on the table to mark this spot
- Repeat this as many times as you like up to G59
Retrieving the Work offsets
- You can power off and power on the machine and re-home it or continue without repowering in which case re-homing is not required.
- Check the top of the screen and if it says G54 move to step 3 In MDI type G54 and press the [Run] button You will see G54 at the top of the screen
- In the F2 screen press the Go to Work Origin button
- The machine will move the spindle above the first coin
- In MDI type G55 and press the [Run] button You will see G55 at the top of the screen
- In the F2 screen press the Go to Work Origin button
- The machine will move the spindle above the 2nd coin
- Repeat this for as many offsets you previously created up to G59
MASSO can locate these positions even after the machine is powered off and will continue to remember them until you overwrite them by zeroing the axis.
Regards Peter

