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 to program a bar puller
There are three categories of turning work: chucking work, shaft work, and
bar work. Turning centers vary when it comes to what kind of turning work they
do best. There are turning centers that have been specifically designed for but
one of these three categories.
CNC chuckers commonly have a three-jaw chuck for workholding and
short beds (short Z axis travel).
CNC shaft machines have a tailstock to support the right end of long
workpieces. They may also have a steady-rest to provide support in the middle
of long workpieces. Most shaft machines have a three-jaw chuck to provide
workholding. And they commonly have long beds with long Z axes.
CNC bar machines have a bar feeder to support and feed very long bars
through the spindle. Bars up to twelve or fifteen feet long can be supported
and fed. These machines commonly have a collet chuck to clamp the bar during
machining.
While there are specifically designed turning centers that perform but one
of these applications exclusively, the vast majority of CNC turning centers
being used today are more universal. That is, they're designed to perform at
least two applications. While compromises must be made (compared to having a
machine specifically designed for a given turning application), this provides
great flexibility to the machine's owner when it comes to the kind of work they
can do.
Universal CNC turning centers commonly come with a three-jaw chuck for
workholding. This will allow chucking work to be done. They'll also have a
tailstock to support long workpieces - which of course allows shaft work to be
done. But most universal turning centers don't come with anything that allows
them to perform bar work. These machines provide no way to advance the bar
during the machining cycle.
How a bar puller works
This device is mounted in the turret of the turning center and uses
axis motion to engage and advance the bar. The bar being used as raw material is
placed in the spindle. This means, of course, that the turning center must have
a hole all the way through the spindle. Note that some turning centers have a
draw bar (as opposed to a draw tube) to open and close the chuck. Machines with
draw bars cannot be used for bar work (without replacing the workholding device
with one that uses a draw tube). The entire bar must be surrounded by the
spindle. Under no circumstances should the bar be allowed to extend past
the back end of the spindle. This means that the bar must be cut to a
length that will fit in the spindle, commonly about three feet long.
There are many different styles of bar pullers. Some engage the bar from the
Z axis (from the bar end) and others engage the bar from the X axis (from above
the bar). Some are adjustable, allowing a range of bars to be pulled. Others
used fixed grippers designed for a specific bar size. For our examples, well be
using the fixed gripper style of bar puller that engages the bar from its end.
This is the bar puller made by The
Dunham Tool Company. We market this bar puller from this website.
Here are the general steps required for bar pulling.
For initial setup:
Load the bar puller in a turret station. This involves placing the
bar puller shank in a boring bar station and mounting a gripper and/or adapter
to the shank.
Load the bar in the spindle. Remember, the bar must not extend past
the back end of the spindle, meaning it must first be cut a length of about
three feet long.
Manually set the bar end to extend from the chuck jaws. The setup
person must ensure that the bar end is extending the correct amount from the
chuck jaws. This distance must be specified by the programmer on the setup
sheet. This setting is not extremely critical, since most applications require
that the bar be faced before other machining operations will be performed.
Normally a six-inch scale can be used. Most CNC users prefer to set the bar in
such a way that the first workpiece can be machined. That is, bar pulling will
not occur until after the first workpiece is machined. And when bar
pulling is done, the bar end will be nice and square due to the parting (cut
off) operation.
Determine the program zero assignment values (geometry offsets for
Fanuc) for the bar puller. Note that the X value will remain consistent for
every time the bar puller is used. For the X axis program zero assignment value
(with machines that have a turret), this will be the same value used for any
center cutting tool (like a drill). In Z, the program zero assignment value may
change from setup to setup. If you use the distance from the tool tip to
program zero in Z as the program zero assignment value (as many CNC users do),
the setup person can manually measure the distance from program zero to the
extreme Z axis end of the bar puller (end of gripper) while the machine is at
the zero return position. This will be the Z axis program zero assignment
value.
For the next bar, only steps 2 and 3 must be done.
In the program for each bar pull:
Machine the workpiece. Again, the operator has initially set the bar
to a length that allows the first workpiece to be machined. So bar pulling will
not occur until the end of the CNC cycle.
Stop the spindle. The spindle must be stopped for the bar pulling
operation.
Index to the bar puller station. With our example bar puller, this
will be a boring bar station.
Rapid the bar puller to its approach position. For our bar puller,
in X, this is spindle center (X0). In Z it is a position 0.1" from the bar
end. We'll describe how to calculate this Z position a little later.
Engage the bar. For our bar puller, this is done by feeding (using
G01) the gripper onto the bar along the Z axis. Engage by 0.25". We'll
describe how to calculate this Z position a little later.
Open the jaws. An M code is used for this purpose. You'll have to
confirm this M code's number in your machine tool builder's programming manual.
Advance the bar. Using G01, feed out the bar (now attached to the
gripper) along the Z axis to its required position. We'll describe how to
calculate this Z position a little later.
Close the jaws. An M code is used for this purpose. You'll have to
confirm this M code's number in your machine tool builder's programming manual.
Disengage the bar. For our bar puller, this is done by feeding
(using G01) the gripper off the bar along the Z axis. A movement of 0.35 in the
plus Z direction is enough.
Rapid the turret to its tool change position. The bar is now
advanced, so the turret can be sent to its index position for indexing to the
first tool to be used in the program.
Calculating Z positions for the bar pulling operation
The following drawing will be used to explain how Z positions are calculated
for bar pulling.
The drawing shows how the setup person will
initially set the bar in the chuck. The setup person must be told how far to
extend the bar from the chuck jaws in the setup documentation. In our case,
they will be told to set the bar a distance of 1.405" from the jaws (0.25
extension after cutoff plus 0.125 cutoff tool width plus 1.0 workpiece length
plus 0.03 facing stock). Notice that the program zero point (origin for all
absolute Z motions in the program) is selected as the right end of the finished
workpiece (not the end of the bar). Remember that we're programming the left
side of the gripper in Z. Also remember that when the bar pulling operation
begins, the bar will only be protruding from the chuck jaws by 0.25".
The Z approach position (step four above)
This position is calculated by adding the workpiece length (1.0") to
the cutoff tool width (0.125") and then subtracting the desired clearance
amount (0.1"). For our example, this renders a value of 1.025. But since
this position is on the negative side of program zero in Z, the position
Z-1.025 will be used in the program.
Bar engagement position (step five above)
This position is calculated by adding the workpiece length (1.0") plus
the cutoff tool width (0.125") plus the engagement amount (0.25" for
our bar puller). In our example, this totals 1.375. But since this position is
on the negative side of program zero in Z, the position Z-1.375 will be used in
the program.
Bar advance position (step seven above)
This position is calculated by subtracting the engagement amount (0.25"
for our bar puller) from the facing stock amount (0.03" in our example).
The result is minus (negative) 0.22, programmed as Z-0.22.
Bar disengage position (step nine above)
This position is calculated by Adding the facing stock amount (0.03" in
our example) to the clearance amount (0.1"). A position of Z0.13 will be
programmed.
Calculating the number of workpieces you can machine per bar
With bar pullers, you must determine how many workpieces can be machined per
bar. Your programmer will be specifying this number in the program. This is a
very important point. Bar pullers have no "end of bar" signal like
those found on fully interfaced bar feeders. With a bar feeder, the bar feeder
will stop the CNC cycle at the end of the bar. A bar puller has no such
cycle-stopping capability.
If more than one bar will be required to complete the production run, it is
very important that they be cut to consistent lengths. A short bar thrown into
the mix could result in disaster - there may not be sufficient gripping for the
last workpiece/s to be machined.
Calculating the number of workpieces that can be machined from a bar
involves knowing the workpiece length, the amount of facing stock being removed
from each workpiece, and the width of the cutoff tool. You must also know the
minimum gripping length required to secure the bar for machining. And you must
know how far the bar will extend from the chuck jaws after cutoff. Here is a
simple formula for the calculation:
Number of workpieces per bar=(total bar length - minimum gripping length -
bar extension after cutoff) divided by (workpiece length plus facing stock plus
cutoff tool width)
Say you have cut all bars to 36" long (three feet). The minimum
gripping length you're comfortable with is 2". The bar will extend
0.25" from the chuck jaws after cutoff. Your workpiece is 1" long,
the cutoff tool is 0.125" wide and you'll be facing 0.03 from every
workpiece.
First subtract 2.25" (gripping length and bar extension after cutoff)
from 36". The result is 33.75". Add 1" to 0.03" and
0.125" (workpiece length, facing stock, and cutoff tool width. The result
is 1.155". Divide 33.75" (workable material on bar) by 1.155".
The result is 29.220. Round your result down. We can machine 29
workpieces from this bar.
Minimizing redundant bar pulling commands
As you have probably figured out by now, bar pulling commands will be quite
similar from one job to the next. In reality, only the four Z coordinates
discussed above will change from program to program. You can use a subprogram
to minimize the number of commands you need for the various jobs being run.
Simply store the bar pulling commands in a subprogram. This subprogram must, of
course, be modified for each bar pulling job. Here is the bar pulling
subprogram shown in Fanuc format. Note that sequence numbers match the step
numbers shown above.
O1000 (Bar pulling subprogram)
N02 M05 (Stop spindle)
N03 T1212 (Index turret to bar puller station)
N04 G00 X0 Z-1.025 (Rapid to approach position)
N05 G98 G01 Z-1.375 F20.0 (Select ipm mode, engage bar at 20.0 ipm)
N06 M15 (Open jaws, M codes vary - you must look-up this M code)
G04 Z1.0 (Pause to allow jaws to open)
N07 Z-0.22 F30.0 (Advance bar at 30 ipm)
N08 M14 (Close jaws , M codes vary - you must look-up this M code)
Again, this subprogram will only work for the workpiece shown in the example
drawing above. For every new job, the Z coordinates in lines N04, N05, N07, and
N09 must be changed.
Why the dwell commands? These commands may not be necessary.
But many CNC turning center manufacturers do not fully interface the jaw open
and close functions. If they're not fully interfaced, the Z axis will begin
moving (in the next command) before the jaws are fully opened/closed. If your
machine has these functions fully interfaced, the machine will automatically
wait until the jaws are fully opened or closed before proceeding to the next
command. In this case, of course, you can eliminate the G04 commands.
An example bar pulling program
We're using the workpiece shown in the drawing above for this example. Note
that we're not showing the portion of the program that actually machines the
workpiece - we're only showing the bar pulling operation.
Remember that we need to execute this program a specific number of times
(the number of workpieces that can be machined from the bar). In our example,
we need 29 executions (cycles) of the program. This is easily accomplished with
sub programming techniques. The main program (which is the one you actually
execute when the cycle start button is pressed), will include a calling command
(M98 for Fanuc) to the program that actually machines the workpiece. This
machining program will machine a workpiece and then call the subprogram to
perform the bar pulling operation (shown earlier). This machining program is
also a subprogram and must end with M99 (again, for Fanuc).
Main program:
O0001 (Main program for example)
N005 M98 P500 L29 (Call machining program and execute it 29 times)
N010 M30 (End of program)
In line N005, notice the L word that specifies the number of executions for
program O500. For some Fanuc controls, this is actually part of the P word.
P029500 for these controls will execute program O500 twenty-nine times.
Subprogram to machine one workpiece and perform bar pulling
operation:
O500 (Machine one workpiece and pull bar)
.
.
.
(Commands to machine and part off one workpiece)
.
.
.
N340 M98 P1000 (Execute bar pulling program)
N345 M99 (End of subprogram)
Does your machine have custom macro B?
As stated, the bar pulling subprogram must be changed in four places for
each new job based upon the workpiece length. However, if your machine has
custom macro B (or any version of parametric programming), you can create a
universal bar pulling subprogram (the custom macro) that will work for every
workpiece you run. In essence, you can "pass" variables from the
machining program to the bar pulling custom macro. Here is the modified program
that machines one workpiece and performs the bar pulling operation:
O500 (Machine one workpiece and pull bar)
.
.
.
(Commands to machine and part off one workpiece)
.
.
.
N340 G65 P1000 F0.03 W1.0 C0.125 (Execute bar pulling program)
N345 M99 (End of subprogram)
In line N340, we've modified the M98 command, making it a G65 (call to a
custom macro). The P word still specifies the program (custom macro) being
called. What follows are variables that specify the criteria for the
current workpiece. F specifies the amount of facing stock, W specifies the
workpiece length, and C specifies the cutoff tool width. We're assuming a
clearance position of 0.1", but if you'll be changing this value from job
to job (possibly to minimize cycle time), you could make this an input variable
as well.
Before we show the modified bar pulling program (the custom macro), you must
understand how the letter addresses F, W, and C must be represented in the body
of the custom macro. The local variable #9 must be used to reference the value
specified with F. Local variable #23 is used to reference the value specified
by W. And #3 is used to reference the value specified by C. Here is the bar
pulling custom macro:
Notice that this technique has also simplified programming. There is no need
to perform calculations to determine Z positions. Instead, we're specifying the
workpiece length, the facing stock, and the cutoff tool width. The custom macro
does the needed calculations!