Disclaimer: CNC Concepts, Inc. accepts no responsibility for the use
or misuse of techniques shown in this web page. We simply publish information
we feel will be of interest to CNC users. In all cases, the reader is totally
responsible for considering the implications, good and bad, of implementing one
or more of the techniques we show.
How can I assign more than six program zero points on Fanuc controlled
machining centers?
I would like information on creating more than 6 work offsets on the older
Seiki (Fanuc compatible) controls. Any ideas how to reuse or create more
offsets? Thank you, Eugene Caton
Response:
Eugene,
As you may know, Fanuc (and most Fanuc compatibles) are quite limited when
it comes to the number of fixture offsets that come standard with the control.
While you can buy more fixture offsets as an option (Fanuc offers an extended
fixture offset feature containing 48 total fixture offsets), there is a way to
assign as many program zero points as you want with but one fixture
offset!
However, you do have to give up one important feature of fixture offsets if
you use this technique. It is the ability that fixture offsets give you to
separate program zero assignment from programs. With the technique we show,
you'll be entering program zero assignment values into sub-programs (instead of
fixture offsets).
Our technique involves using the G10 command to enter program zero
assignment values into fixture offset number one (G54). We'll just keep
overwriting this offset over and over again, meaning again, you'll only need
one fixture offset!
Here's the technique:
Program zero assigning sub-programs. We recommend using a special series of
program numbers (for example, O6001 to assign coordinate system number one,
O6002 to assign coordinate system number two, and so on). Here are a few
program zero assigning sub-programs.
O6001 (Coordinate system number one)
G90 G10 L2 P1 X-22.3837 Y-12.2827 Z-11.0387 (Assign fixture offset, this
line will be edited whenever coordinate system number one is modified)
G54 (Invoke the offset just assigned)
M99 (End of sub-program)
O6002 (Coordinate system number two)
G90 G10 L2 P1 X-15.3332 Y-11.1122 Z-11.3341 (Assign fixture offset, this
line will be edited whenever coordinate system number two is modified)
G54 (Invoke the offset just assigned)
M99 (End of sub-program)
O6003 (Coordinate system number three)
G90 G10 L2 P1 X-21.1200 Y-13.9377 Z-10.9736 (Assign fixture offset, this
line will be edited whenever coordinate system number three is modified)
G54 (Invoke the offset just assigned)
M99 (End of sub-program)
The L word (L2 in our case) specifies what kind of data is being set. For
one popular control, L2 specifies fixture offsets. You'll need to confirm the
value of the L word for the specific control's with which you'll be using this
technique. P specifies the offset number (number one in our case). We're simply
overwriting the current values stored in fixture offset number one in each of
these sub-programs. The subsequent G54 ensures that the coordinate system just
changed is instated.
You can have as many program zero sub-programs as you need. You're only
limited by how many programs your control can hold.
In the main program (or whenever you want to change coordinate systems),
simply invoke the related sub-program with an M98 command. Here's a simple
program example main program that invokes two of the previously created
coordinate systems.
O0001 (Main program)
N005 T01M06 (1/2 Drill)
N010 G90 S600 M03 T02
N015 M98 P6001 (Select coordinate system number one)
N018 G00 X1.0 Y1.0
N020 G43 H01 Z0.1 M08
N025 G81 R0.1 Z-0.3 F5.0
N030 G80 M09
N035 G91 G28 Z0 M19
N040 M01
N045 T02 M06 (1/4 drill)
N050 G90 S1000 M03 T01
N055 M98 P6002 (Select coordinate system number two)
N060 X2.0 Y2.0
N065 G43 H02 Z0.1 M08
N070 G81 R0.1 Z-0.5 F3.0
N075 G80 M09
N080 G91 G28 Z0 M19
N085 M30
Again, the one negative to this technique is that the setup person will be
modifying programs (O6001, O6002, O6003, etc.) to assign program zero points as
opposed to entering values into fixture offsets.
Follow-up question:
Thanks for your help, We basically did this by creating one sub-program but
it took too long for it to search through the program to find the code. Is
there not a way to input theses sub programs after the M30? Then when this
program is loaded it can search for that sub program inside the program? This
way, the operator does not have to load 48 sub-programs with each program? Your
thoughts are appreciated. Thanks, Eugene
Response:
Eugene,
Yes, you can include the sub-programs (the programs in the O6000 series in
the example above) right after the M30 in the main program (one big file), but
you must also confirm that the control will read all of these programs during a
program transfer. Note that a parameter controls when the control will
stop reading from a DNC device. The default setting will have the control stop
reading at the very first M02, M30, or M99 that it comes across. With this
setting, the control will NOT read the subprograms. You can set this parameter
so that it will not stop reading until it sees an end of file word
(usually a percent sign [%]). This parameter (its number and setting
information) is documented in the Fanuc Operators manual in the section on
program registration.