As you know, certain offsets must be entered before a job can be run. For machining centers, these offsets include fixture offsets, tool length compensation offsets, and cutter radius compensation offsets. For turning centers, they include geometry offsets, wear offsets, and tool nose radius compensation offsets.
In most CNC applications, setup people are responsible for entering offsets manually - during the setup. Indeed, one of the main benefits of most compensation types is that they allow the separation of programming tasks from setup tasks. For those tooling-related variables a programmer won't know when programming (like a cutting tool's exact length or radius), a setup person will handle them at the time the setup for the job is made.
While compensation types do, in most cases, make life easier for programmers, there are times when you will know (or will find out) what the values of certain offsets will be long before a setup is made. We make a very important statement about this: Any time you know the values of offsets prior to running a job, you can probably reduce the time a machine is down between production runs (setup time) by programming the offset settings.
Tool length compensation offsets
Consider, for example, a company that measures tool length compensation values for tools used on machining centers off line. A tool setter (probably in the company's tool crib) assembles and measures these values. They probably write tool length values down on a piece of paper for the setup person to copy into the machine during setup.
Instead of writing down the offset settings, the tool setter could be entering (or modifying) a tool offset entry program as long as they have a computer with a simple text editor close by.
Consider this template program:
O1000 (Offset entry template program)
G90 G10 L1 P1 R20.0000
G90 G10 L1 P2 R20.0000
G90 G10 L1 P3 R20.0000
G90 G10 L1 P4 R20.0000
G90 G10 L1 P5 R20.0000
G90 G10 L1 P6 R20.0000
G90 G10 L1 P7 R20.0000
G90 G10 L1 P8 R20.0000
G90 G10 L1 P9 R20.0000
G90 G10 L1 P10 R20.0000
G90 G10 L1 P11 R20.0000
G90 G10 L1 P12 R20.0000
G90 G10 L1 P13 R20.0000
G90 G10 L1 P14 R20.0000
G90 G10 L1 P15 R20.0000
G90 G10 L1 P16 R20.0000
G90 G10 L1 P17 R20.0000
G90 G10 L1 P18 R20.0000
G90 G10 L1 P19 R20.0000
G90 G10 L1 P20 R20.0000
M30 (End of program)
Notice all the G10 commands. These are data setting commands. G90 tells the control to overwrite the current offset register value with the one included in this command. The L word tells the control the kind of data to be set (L1 specifies tool offset data for most Fanuc controls). The P word specifies the offset number. We've included twenty tools in this template program. If the job doesn't require twenty tools, the tool setter will simply delete the unneeded commands. The R word specifies the value to be entered into the offset. Note that with this template program, the tool setter must simply modify the R word in each command.
In our template program, we've included a value of 20.0000 for all R words, which is longer than any tool the company uses. If the tool setter doesn't have all the needed components to assemble a given tool, they'll leave the value as 20.000 and the setup person will easily see which tool/s have not been assembled and measured. (Note that if the setup person accidentally runs the program with an offset set to 20.0000, the tool will be run well above the setup.)
Again, as the tool setter assembles and measures a given tool, they will edit the appropriate R word in this program. After loading all cutting tools in the machine, the setup person will simply load this program and run it once. Doing so will enter all tool offsets. While this assumes your company has a pretty good distributive numerical control (DNC) system, this can be done within seconds. Entering twenty offsets manually will take much more time and is an error-prone task.
Note that there are tool length measuring devices that will actually create the program shown above (or one much like it). Go to the Parlec website to see one. This eliminates the need for the tool setter to type the offset value, and also eliminates the possibility for typing mistakes.
Tool nose radius compensation offsets
Again, any time you know the value of offsets prior to making a setup, it is wise to program offset entries. Another example has to do with tool nose radius compensation for turning centers.
As you know, the setup person must enter the tool type (a code number) and the tool nose radius for any single point cutting tool that uses tool nose radius compensation. If the setup person forgets to do so (and current values are zero), the control will behave just as if tool nose radius compensation is not being used - and the workpiece will not be machined correctly.
Most programmers will specify the tool nose radius to be used for each tool right on the setup sheet, meaning they do know the value of tool nose radius compensation offsets as the program is written. Consider this program.
O0001 (Program including tnr compensation offsets)
N005 G10 P2 R0.0312 T3
N010 G10 P5 R0.0156 T2
N015 T0101 M41
N020 G96 S600 M03
N025 G00 X3.2 Z0.005
Notice that this program begins with two G10 commands. In line N005, the R register of offset number two is set to 0.0312 and the T is set to a value of 3 (a turning tool). Offset four's R is set to 0.0156 and T is set two 2 (a boring bar). These commands keep the setup person from having to enter the offset values manually (saving time) and eliminate the possibility of forgetting them - or entry mistakes.
One last example we'll mention is related to fixture offsets. If you make qualified setups that are repeated on a regular basis, the program zero location/s will be in exactly the same location every time the setup is made. For the first time the setup is made, it may be necessary to actually measure these values and manually enter them. But for every subsequent time the setup is made, these same numbers must be re-entered.
Again, if you know the values of offsets, why would you force a setup person to manually enter them? Consider this program:
O0001 (Program including fixture offsets)
N005 G90 G10 L2 P1 X-12.1127 Y-10.2124 Z-13.1323
N010 G10 L2 P2 X-13.2140 Y-12.0144 Z-12.0147
N015 T01 M06
For many Fanuc controls, L2 specifies that you're setting fixture offsets. The P word specifies which fixture offset is being set. And X, Y, and Z specify the values going into the fixture offset registers.