|
|
|
|
|
 |
The Collected Wisdom
of the Haas
Answer Man |
| |
|
|
Higher Productivity Made Easy |
|
|
|
Counting Parts per Bar
(early
2005
vol 9 #
32) |
 |
|
Dear
Applications:
I’m using a bar
puller with my SL-20, and each bar gives me 32 parts. I have a main
program and a sub-program, and the sub-program ends with M99. Is
there a page or screen on the control that shows what the part count
is at any point in the M98 L32 loop? I found the M30 count in
Current Commands, but that doesn’t tell me where I’m at in my
32-piece bar. Setting 118, M99 Bumps M30 Counters, doesn’t work when
the M99 is in a sub-program. Can you help me? Thanks.
Mike Hernandez
Dear Mike:
Page up to the
Tool Life screen in Current Commands, and monitor the USAGE count
for the bar puller tool number. If you don’t have the Macro option
on your SL-20, you’ll need to manually zero out the Usage column for
this tool number at the beginning of each bar (cursor onto it and
press the ORIGIN key). With macro variables, you could do that via
the part program – or you could program an instruction that will
bump the M30 counter at a sub-program M99.
Here’s a sample
program, using macros, that we have used to count parts on M30
counter #1 and count bars on M30 counter #2. Setting 118 may be
either on or off.
|
% |
|
|
O00001
|
(Main
program) |
|
#1=0 |
|
|
N1 |
|
|
M98 P100 |
(sub-program call) |
|
#3901=#1 |
(tells
machine to count M99s on counter #1) |
|
#1=#1+1 |
(add 1 to
the counter every time program is run) |
|
IF [ #1 EQ
32 ] GOTO2 |
(repeat
program 32 times) |
|
GOTO1 |
(go to N1
until #1 = 32) |
|
N2 |
|
|
M30 |
(these
will be counted on counter #2) |
|
% |
|
|
N10
G28
T101
G97 S500 M03
G00 X2.0 Z.1
Z0
G01 X1.9 F.010
G00 Z1.0 M05
G28
M99
% |
 |
Sincerely,
Haas Applications
|
• • •
|
Haas
Servo Bar 300
–
Programming
(Fall
’04
vol 8 #
31) |
 |
|
Dear Applications:
We just got an SL-20
lathe with a Servo Bar 300. I set macro variables 3100, 3101 and 3102 to
zero, because a coworker told me I should remove the bar feeder settings
so that we won’t have any problems with our existing programs. Are these
the only variables I need to worry about? Enclosed is the first program I
want to run. What else do I need to check or verify before I run it?
Rick Schumacher
Dear Rick:
You’re using I, J and
K commands on the G105 (Servo Bar Command) line in your program. These IJK
codes will override the macro variables, so – although it certainly
doesn’t hurt – it is not necessary to set the variables to zero.
Please check the
numbers in your program, however. Macro variable 3100 corresponds to the
letter J, variable 3101 corresponds to the I value, and 3102 is the letter
K. Make sure that these values are in the right order.
Regardless of whether
you use macro variables or IJK values, you still need to use G105 Q4 and
G105 Q2 commands to set a reference position. The best method for setting
a reference position uses a known location such as the chuck or collet
face. Before you begin, check for proper spindle liner size, bar clamp
adjustments and transfer tray alignment.
Macro variable #3112,
Reference Position, is established during setup but is not entered by the
operator. Once the reference position is set, it remains the same for any
other bar diameter or part length. It only needs to be reset if the bar
feeder is moved or if it must be changed to fit a new collet or chuck
setup.
You must enter values
for the three bar feeder macro variables described below. (You can zero
them later if you want to.) You’ll find them in the Current Commands
display; PAGE DOWN to the “Haas Servo Bar” screen, then use the up or down
arrow keys to highlight the variable. Type in the value and press
WRITE/ENTER.
|
#3100, Part Length +
Cutoff, is the bar length pushed out at each G105 command after the bar is
loaded. It’s equal to finished part length plus cut-off and face clean-up
allowance.
#3101, Initial Push
Length, is the distance past the reference position to which each new bar
will be pushed when it is loaded.
#3102, Min Clamping
Length, is the bar length required to support the
|
 |
|
length that will be
pushed out past the
chuck or
collet face. This depends on bar diameter, part length and initial push
length.
|
Here are the steps for
setting reference position.
| 1. |
Enter a value
for macro variable #3101. |
| 2. |
Enter a value
for macro variable #3102. |
| 3. |
Place a bar on
the charging tray. |
| 4. |
In MDI mode,
enter G105 Q4 and then press CYCLE START. The machine will load the
bar, pushing it into the lathe so the lead end is about 4 inches
away from the cutting area. |
| 5. |
Press RESET, to
enable bar feed using the jog handle. |
| 6. |
Select the V
axis by pressing the V key; then press HAND JOG. Using the jog
handle, push the bar up to the chuck face or collet face to be used
as the reference point. |
| 7. |
Clamp the bar. |
| 8. |
In MDI mode,
enter G105 Q2 and then press CYCLE START. The machine will use the
bar position to enter a value in macro variable #3112, unclamp the
bar, push it out by the amount set in variable #3101, and reclamp. |
Please read your Servo
Bar Operator’s Manual for more detailed instructions.
Sincerely,
Haas Applications
|
• • •
|
Haas
Servo Bar 300
–
Alternating Pushes
(Summer
’04
vol 8 #
30) |
 |
|
Dear Applications:
We need to know about
your bar feeder. Can it make two different, alternating pushes? I need to
turn 2-inch–long and 3-inch–long pieces from the same bar stock. Can I
alternate them?
Clark Crenshaw
|
|
Dear Clark:
Yes, you can do
multiple bar pushes with the Haas Servo Bar 300. The I, J, and K commands
will override the macro variables for the program line in which they occur
(the
|
 |
|
macro values in
Current Commands will not change). The J code is for part length plus
cut-off, so to feed 2.0 inches of bar stock would require the line G105
J2.0.
Sincerely,
Haas Applications
|
|
• • •
|
Engraving with Macros
(reprise)
(Winter
’04
vol 8 #
28) |
 |
|
Dear Applications:
I want to use the G47 (Text Engraving) command for two
different jobs. I’m having trouble getting the text placed exactly where I
want it. On the first one, the specified start position is X0 Y0, but
there is an X axis move before engraving takes place. The first character
is an M, and the first line it does is an X0.2197 move. Why is this? On
the other job I need to center the engraved text on the workpiece. What’s
the best way to do that? Thanks.
Lee Ward
Dear Lee:
Graphics mode and the single-block function are very useful
for engraving jobs. Be sure that Settings 74 and 75 are both turned on.
The macro program for engraving allows a small amount of
space before and after each character. The X0.2197 move occurs when the
default size characters (1.0" tall) are being engraved. If you use a J
value in the G47 line to change the size, you’ll find that the spacing
between characters is reduced or enlarged in proportion to the text size.
To start the characters exactly at X0 Y0, run the program in Graphics to
see what the first space allowed for the character size is, then program a
negative X value in the G47 line. This will compensate for the initial
spacing.
For the centered engraving, again, run the program in
Graphics mode and in single-block. Start in the X0 position (on the G47
line) in your work offset. Take note of the work coordinate readings when
the last character of your engraving has been completed. That gives you
the exact length of the engraving. Subtract this from the width of your
part, divide by two, and the result is your starting point on the X axis
for perfect centering. Enter this X axis value in the G47 line. This will
work with any size font.
Sincerely,
Haas Applications
|
|
Engraving with Macros
(Fall
’03
vol 7 #
27) |
 |
|
Dear Applications:
I’ve been using G47
(Text Engraving) for sequential serial number engraving on my VF-4. What
causes the machine to increase the number by 1? Is it the M30 at the end
of the program? I ran 50 pieces several months ago and numbered them 1-50,
and now I want to run another 50 pieces and start numbering them at 51.
How do I do this? Do I need to change Macro #599
to 51?
Curt Olsen
Dear Curt:
The G47 cycle itself
is what triggers the counter; after each engraving operation, the counter
(macro #599) advances.
You are absolutely
correct about setting Macro Variable 599 (in Current Commands) to the
serial number you want to start with. The other option you have is to
program the initial serial number: In MDI, enter G47 P1(51) to start at SN
51. The engraving section in the operator’s manual has more details about
this function.
Sincerely,
Haas
Applications
|
• • •
|
SL-30 Tailstock
(Fall
’03
vol 7 #
27) |
 |
|
Dear Applications:
We’re using the tailstock on our SL-30 lathe for the first time. We can’t
get the tailstock to hold the part tight – it keeps backing off. It stays
tight for about 1 minute or less. We’ve been using the soft key JOG button
to move it. Is this the right way to do it? If we try to use the foot
pedal, it alarms. What are we doing wrong? Any help on how to use the
tailstock would be great.
Bryan Marshall
Dear Bryan,
The best way to use the tailstock in automatic operation is with the M21
(Tailstock Advance) and M22 (Tailstock Retract) commands. Also, Setting
107 (TS Hold Point) is crucial – you’re getting an alarm when you use the
foot pedal because there is either a positive value or the wrong value in
Setting 107. You’ll need to enter a negative value here that is about
0.500" past the hold point.
To find this value, press HANDLE JOG, then the B button, then
HANDLE JOG again. Using the Jog Handle, manually move the B axis
(tailstock) toward the workpiece that has already been center drilled.
When you make contact with the center-drilled part, go to the POS-MACH
display and find the negative number that is associated with the B axis.
Subtract 0.500" more for this move into the part, and enter the resulting
negative value in Setting 107. This will cause the tailstock to apply
constant pressure on your workpiece when you call an M21. You should also
use Settings 105 and 106 for tailstock retract/advance distances. Finally,
note that the recommended hydraulic operating pressure is above 120 psi
(tailstock pressure gauge is on the front of the machine).
The Haas Operator’s Manual has a very good diagram and
explanation of how this works. It’s on pages 94-95 of the current (January
2003) version; if you have an older manual, check the table of contents
for “Hydraulic Tailstock Settings.”
Sincerely,
Haas Applications
|
• • •
|
Quick Code & Visual Quick Code
(Summer
’03
vol 7 #
26) |
 |
|
Dear Applications:
We’ve had a Mini
Mill for a couple of years, and recently we got two more. The first one
had Quick Code as a source program in the list of programs. I was able to
make some nice modifications to this file for our own specific shop use.
The two newer machines have a different version of Quick Code and also
Visual Quick Code. How would I edit the new Quick Code programs in the
newer machines if it’s not in the list of programs? Also, I don’t know
where to change the settings or parameters to run the version I loaded in
the new machines.
Frank Huszar
Dear Frank:
Check to see if
Setting 23, “9xxx Progs Edit Lock,” is on. If it is on, you will not be
able to see the Quick Code or Visual Quick Code (VQC) source program
files, since they are defined as 9xxx numbers, O09999 and O09997. You will
still be able to use Quick Code or VQC, but you won’t be able to select
the source program files to edit the menus and program format. If you turn
this setting off, these programs should then be visible, so you can create
your own custom menus and program formats.
If you decide to
edit your Quick Code source file, you should first save the original
program under a different program number (or onto a floppy disk) as a
back-up. Then go ahead and modify program O09999 for your custom version
of Quick Code. Be sure to back up your customized version after it’s
created.
For your own version
of Visual Quick Code, edit and customize O09997 (after making a back-up
copy). Note that when learning to edit the source program files, it’s
easier if you start with Quick Code and progress to VQC later.
You can then load
your customized Quick Code or VQC source files on any of your Haas
machines that are equipped with the Quick Code options.
Sincerely,
Haas Applications
|
• • •
|
TL-15 B Command
(Spring
’03
vol 7 #
25) |
 |
|
Dear Applications:
I have been going through the programming
examples for our new TL-15 twin-spindle lathe. Each process has a B-2.0
command. Where does this number come from? Will it be a constant in any
program involving the sub-spindle?
Gerry Bennett
Dear Gerry:
The B-2.0 in the program examples is to
position the sub-spindle (the B axis). The B command or “address” is where
the sub-spindle will be when you set offsets for the second operation on
the workpiece. Part size is what dictates the B-axis starting point, so
this number will be a constant in programs for similar-size parts, where
you want to start the sub-spindle work at the same point every time. If B
were set to 0 in the program, all of the second-op machining would be done
at the far end of the machine. Moving the second-op starting point closer
to the main spindle (2 inches closer in this example) reduces cycle time
by reducing the distance the turret has to move.
Sincerely,
Haas Applications
|
• • •
|
Increasing Output
(Summer
’02)
vol 6 #
22) |
 |
|
Dear Applications:
We’re currently making
small numbers of a fairly simple part on a three-axis vertical mill. We’d like
to increase production to at least 2,000 parts a month, but we’re not sure
what kind of equipment and process planning we need. Ditto for a more
intricate part: a multi-faced piece that we need to turn out in batches of 20.
Lynne Little
Dear Lynne:
To increase the
production level of your current machine, first look at how many operations
each part requires, and then try to consolidate the operations into a single
setup. Depending on the size and configuration of the part – and the size of
the machine – you may be able to use multiple vises/fixtures, or a rotary
table with a multi-sided tooling block, to increase the number of parts
machined per load cycle. This will also reduce the number of tool changes
considerably (more parts are machined per tool change), and thus shorten your
cycle times.
For the multi-faced
part, again, you should try to consolidate the operations into the least
number of setups. A 4th-axis rotary table will allow you to position the parts
for machining on up to four sides in a single setup, which will reduce part
handling, cut the number of tool changes and eliminate the tolerance stack-up
associated with refixturing.
You should also think
about potential bottlenecks in the production flow. Can the part be completed
in one setup, or will it require additional work? Establish batch-size and
part-transit flow charts that list all of the processes needed to complete the
part. Consider part weight and size, the number of parts that can be processed
at the same time (including processes such as heat treatment or black oxide)
and how many parts can be loaded at a time.
If these jobs will be
ongoing, consider investing in a machine designed for higher production, such
as a Haas VF-3APCQ Mini FMS with dual automatic pallet changers, or a Haas
HS-1RP horizontal machining center with built-in 4th axis and pallet changer.
A machine with a 10,000-rpm spindle and programmable coolant nozzle will also
speed things up.
Sincerely,
Haas Applications
|
• • •
|
Pallet Changers
(Spring
’02
vol 6 #
21)
|
 |
|
Dear
Applications:
I’m
running two different parts on my HS-1RP – each pallet has a different
part. How can I be sure that the correct program runs on the correct
pallet?
Brandon
Hollister
Dear
Brandon:
In
the Haas pallet-changing machines – both horizontal and vertical mills
– it is often useful for the CNC program to test which of two pallets is
loaded into the workspace. It has always been possible to do this, but it
is not obvious to some users. The following can be used to conditionally
execute G-code programs based on which pallet (1 or 2) is loaded into a
machine. This can be done even if the user does not have macros.
The
code M96 (JUMP IF NO SIGNAL) is used to determine whether a pallet is
loaded. M96 allows the G-code program to “jump” to a specific line
number (N), based on a test of an input signal to the control. Address
codes P and Q are used with M96; P is a subprogram call and Q is the
variable being checked (in this case, whether the pallet is loaded).
The
following line will cause a jump to N100 if pallet 1 is loaded:
M96 Q22 P100;
The
following line will cause a jump to N200 if pallet 2 is loaded:
M96 Q23 P200;
If
you’re interested, here are the high-tech details. The Diagnostics page
is where the control keeps track of which pallet is active. The first bit
listed = bit 0; on a horizontal, bit (or input) number 22 is 0 if pallet 1
is loaded, and input number 23 is 0 if pallet 2 is loaded.
Vertical
mills may have one or neither pallet loaded. Input number 27 is 0 if
pallet 1 is loaded; input number 26 is 0 if pallet 2 is loaded. Both bits
will be 1 if neither pallet is loaded.
On
a vertical, the following program line will cause a jump to N100 if pallet
1 is loaded:
M96 Q27 P100;
and
the following program line will cause a jump to N200 if pallet 2 is
loaded:
M96 Q26 P200;
Sincerely,
Haas Applications
|

|
Family-of-Parts Macros
(Summer
’99
vol 3 # 10) |
 |
|
Dear Applications,
I own a small machine shop with two Haas HL-2 lathes. I
manufacture plugs for the medical industry. Many of my
products are members of large families (each having the same
shape, but with variable dimensions). I don’t want to write a
separate program for each part because the control is limited
to 200 programs in memory. Is there a way to write a single
parametric program for an entire family of parts? Are
parametric macro variables compatible with G71?
|

|
I have enclosed a drawing of a
typical part.
Sincerely,
Jack Hall
Dear Jack,
Haas recently released an
upgrade to lathe control software that allows use of macro
variables in G71 and G70 canned cycles. Only one program is
required per family. In the example below, the operator simply
changes the values for #1 to #6.
%
O00001 (G71 G70 PARAMETRIC EXAMPLE) (FANUC
COORDINATE)
#1= 3.25
#2= 5.45
#3= 6.
#4= -1.25
#5= -1.5
#6= 0.05 (CORNER BRK + TOOL NOSE RADIUS)
G20 (INCH)
G00 G54 G40
G50 S5000
G96 S1000 M03
T101 M08
X [ #3 + 0.05 ] Z0.01
G71 P1 Q2 D0.2 U0.02 W0.005 I0.03 K0.002
F0.015
N1 G00 X0
G01 Z0 F0.005
X [ #1 - [ #6 * 2 ] ]
G03 X#1 Z - #6 K - [ #6 ]
G01 Z [ #4 + #6 ]
G02 X [ #1 + [ #6 * 2 ] ] Z#4 R#6
G01 X [ #2 - [ #6 * 2 ] ]
G03 X#2 Z [ #4 - #6 ] R#6
G01 Z#5
G01 X[#3 + 0.1]
N2
G70 P1 Q2
G28
M30
%
Sincerely,
Haas Applications
|
• • •
• • •
|
Tool Life Macros
(Summer
’99
vol 3 # 10) |
 |
|
Dear Applications,
I am interested in using a
macro statement to test the tool life variables to see if my
inserts need to be changed. When the tool can only make one
more part, I want to sound a siren to let the operator know he
has to attend to the machine and change tooling.
Sincerely,
Carlos Garcia
Dear Carlos,
Variable #5701 is the tool
usage counter, which will accumulate each time Tool #1 is
called and used in a program. Variable #5601 is the tool life
usage alarm limit that can be set by the operator. The
following macro program will accomplish what you want:
%
…
T1 M06
G103 P1
(BLANK LINE)
#1 = #5601 - #5701
(This is setting what you want #1
to represent)
IF[#1 LT 2] GOTO2
(Program will advance to N2 when
you have one usage left)
N1
(Main
program)
G55 G90 G00 X6.215 Y-4.
G103
(Program continues …)
…
M30
N2 (This sub-routine is going to activate an M function relay
that could be wired to a siren)
IF[#1 LT 2] THEN #1126 = 1
(#1126 is a spare M function in the
machine control)
M00
M99 P1
%
Sincerely,
Haas Applications
|
• • •
[ Home ] [ MachineCare ] [ Communicate ] [ FeaturesOptions ] [ MiniMachines ] [ MiscTopics ] [ Offsets ] [ Productivity ] [ Programming ] [ Rotary ] [ Thread/Tap ]
Search CNC Machining On-line!
|
|