You are on page 1of 12

Productivity

1 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

SEARCH

Answers to Your Questions

The Collected
Wisdom
MachineCare
Communicate
FeaturesOptions
MiniMachines
MiscTopics
Offsets
Productivity
Programming
Rotary
Thread/Tap

of the Haas Answer Man

Higher Productivity Made Easy

Counting Parts per Bar


(early 2005
vol 9 # 32)

Dear Applications:

Vols 9-12
Vols 6-8
Vols 4-5
Vols 1-3
All Answer Man

Im 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 doesnt tell me where Im at in my
32-piece bar. Setting 118, M99 Bumps M30 Counters, doesnt 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 dont have the
Macro option on your SL-20, youll 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.
Heres 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.

18.12.2007 07:37

Productivity

2 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

%
O00001
#1=0
N1
M98 P100
#3901=#1

(Main program)

(sub-program call)
(tells machine to count M99s on counter #1)
(add 1 to the counter every time program is
#1=#1+1
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)
%
%
O00100
N10
G28
T101
G97 S500 M03
G00 X2.0 Z.1
Z0
G01 X1.9 F.010
G00 Z1.0 M05
G28
M99
%

(Sub-program)

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 wont 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:

18.12.2007 07:37

Productivity

3 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

Youre 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 doesnt 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.) Youll 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. Its 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.
2.
3.
4.

Enter a value for macro variable #3101.


Enter a value for macro variable #3102.
Place a bar on the charging tray.
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.

18.12.2007 07:37

Productivity

4 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

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.
6.

Please read your Servo Bar Operators 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-inchlong and
3-inchlong 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. Im having trouble getting the text placed exactly where I want it.

18.12.2007 07:37

Productivity

5 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

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. Whats 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, youll 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:
Ive 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.

18.12.2007 07:37

Productivity

6 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

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 operators
manual has more details about this function.
Sincerely,
Haas Applications

SL-30 Tailstock
(Fall 03
vol 7 # 27)

Dear Applications:
Were using the tailstock on our SL-30 lathe for the first time. We cant
get the tailstock to hold the part tight it keeps backing off. It stays
tight for about 1 minute or less. Weve 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 youre getting an alarm when
you use the foot pedal because there is either a positive value or the
wrong value in Setting 107. Youll 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 Operators Manual has a very good diagram and explanation
of how this works. Its 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.

18.12.2007 07:37

Productivity

7 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

Sincerely,
Haas Applications

Quick Code & Visual Quick Code


(Summer 03
vol 7 # 26)
Dear Applications:
Weve 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 its not in the list of programs? Also, I
dont 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 wont 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
its 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, its 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

18.12.2007 07:37

Productivity

8 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

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:
Were currently making small numbers of a fairly simple part on a three-axis
vertical mill. Wed like to increase production to at least 2,000 parts a
month, but were 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

18.12.2007 07:37

Productivity

9 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

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:
Im 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).

18.12.2007 07:37

Productivity

10 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

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 youre 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
dont 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.

18.12.2007 07:37

Productivity

11 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

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,

18.12.2007 07:37

Productivity

12 of 12

http://www.cncmagazine.com/Answers/Productivity.htm

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
represent)
IF[#1 LT 2] GOTO2
usage left)

(This is setting what you want #1 to


(Program will advance to N2 when you have one

(Main

N1
program)
G55 G90 G00 X6.215 Y-4.
G103
)

M30

(Program continues

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!

18.12.2007 07:37

You might also like