English Vs Series Operator's Manual Supplement 2002
English Vs Series Operator's Manual Supplement 2002
June 6, 2013
Haas Technical Publications
• Historic machine Service Manuals are posted here to provide information for Haas machine owners.
• Publications are intended for use only with machines built at the time of original publication.
• As machine designs change the content of these publications can become obsolete.
• You should not do mechanical or electrical machine repairs or service procedures unless you are qualified
and knowledgeable about the processes.
• Only authorized personnel with the proper training and certification should do many repair procedures.
.
Manual_Archive_Safety_Pages Rev A
Haas Technical Publications June 6, 2013
.
READ BEFORE OPERATING THIS MACHINE:
♦ Only authorized personnel should work on this machine. Untrained personnel present a hazard to themselves and the
machine, and improper operation will void the warranty.
♦ Use appropriate eye and ear protection while operating the machine. ANSI approved impact safety goggles and OSHA
approved ear protection are recommended to reduce the risks of sight damage and hearing loss.
♦ Do not operate the machine unless the doors are closed and the door interlocks are functioning properly. Rotating cut-
ting tools can cause severe injury. When a program is running, the mill table and spindle head can move rapidly at any
time in any direction.
♦ The Emergency Stop button is the large, circular red switch located on the Control Panel. Pressing the Emergency Stop
button will instantly stop all motion of the machine, the servo motors, the tool changer, and the coolant pump. Use the
Emergency Stop button only in emergencies to avoid crashing the machine.
♦ The electrical panel should be closed and the key and latches on the control cabinet should be secured at all times
except during installation and service. At those times, only qualified electricians should have access to the panel. When
the main circuit breaker is on, there is high voltage throughout the electrical panel (including the circuit boards and logic
circuits) and some components operate at high temperatures. Therefore, extreme caution is required. Once the ma-
chine is installed, the control cabinet must be locked and the key available only to qualified service personnel.
♦ Consult your local safety codes and regulations before operating the machine. Contact you dealer anytime safety is-
sues need to be addressed.
♦ DO NOT modify or alter this equipment in any way. If modifications are necessary, all such requests must be handled by
Haas Automation, Inc. Any modification or alteration of any Haas Milling or Turning Center could lead to personal injury
and/or mechanical damage and will void your warranty.
♦ It is the shop owner’s responsibility to make sure that everyone who is involved in installing and operating the machine
is thoroughly acquainted with the installation, operation, and safety instructions provided with the machine BEFORE
they perform any actual work. The ultimate responsibility for safety rests with the shop owner and the individuals who
work with the machine.
♦ This machine can cause bodily injury.
♦ Do not operate with the door open.
♦ Do not operate without proper training.
♦ Always wear safety goggles.
♦ The machine is automatically controlled and may start at any time.
♦ The electrical power must meet the specifications in this manual. Attempting to run the machine from any other
source can cause severe damage and will void the warranty.
♦ Do not press POWER UP/RESTART on the control panel until after the installation is complete.
♦ Do not attempt to operate the machine before all of the installation instructions have been completed.
♦ Never service the machine with the power connected.
♦ Improperly clamped parts machine at high feeds/feed may be ejected and puncture the safety door. Machining
oversized or marginally clamped parts is not safe.
♦ Windows must be replaced if damaged or severely scratched - Replace damaged windows immediately.
♦ The spindle head can drop without notice. Personnel must avoid the area directly under the spindle head.
♦ Do not reset a circuit breaker until the reason for the fault is investigated. Only Haas-trained service personnel
should troubleshoot and repair the equipment.
Manual_Archive_Safety_Pages Rev A
Haas Technical Publications June 6, 2013
Unattended Operation
Fully enclosed Haas CNC machines are designed to operate unattended; however, your machining process may not be
safe to operate unmonitored.
As it is the shop owner’s responsibility to set up the machines safely and use best practice machining techniques, it is
also their responsibility to manage the progress of these methods. The machining process must be monitored to pre-
vent damage if a hazardous condition occurs.
For example, if there is the risk of fire due to the material machined, then an appropriate fire suppression system must
be installed to reduce the risk of harm to personnel, equipment and the building. A suitable specialist must be contacted
to install monitoring tools before machines are allowed to run unattended.
It is especially important to select monitoring equipment that can immediately perform an appropriate action without
human intervention to prevent an accident, should a problem be detected.
DO NOT modify or alter this equipment in any way. If modifications are necessary, all such requests must be handled by
Haas Automation, Inc. Any modification or alteration of any Haas machining center could lead to personal injury and/or
mechanical damage and will void your warranty.
Manual_Archive_Safety_Pages Rev A
Haas Technical Publications June 6, 2013
SAFETY DECALS
To help ensure that CNC tool dangers are quickly communicated and understood, hazard symbol decals are placed on
Haas Machines in locations where hazards exist. If decals become damaged or worn, or if additional decals are needed
to emphasize a particular safety point, contact your dealer or the Haas factory.
Never alter or remove any safety decal or symbol.
Each hazard is defined and explained on the general safety decal, located at the front of the machine. Particular loca-
tions of hazards are marked with warning symbols. Review and understand the four parts of each safety warning,
explained below, and familiarize yourself with the symbols on the following pages.
.
Manual_Archive_Safety_Pages Rev A
Haas Technical Publications June 6, 2013
Other decals may be found on your machine, depending on the model and options installed:
..
June 2002 MAINTENANCE
1. MAINTENANCE
ELECTRICITY REQUIREMENTS
WARNING!
A separate earth ground wire of the same conductor size as the input power is required to be connected to
the chassis of the machine. This ground wire is required for operator safety and for proper operation. This
ground must be supplied from the main plant ground at the service entrance, and should be routed in the
same conduit as the input power to the machine. A local cold water pipe, or ground rod adjacent to the
machine cannot be used for this purpose.
Input power to the machine must be grounded. For wye power, the neutral must be grounded. For delta
power, a central leg ground or one leg ground should be used. The machine will not function properly on
ungrounded power.
The rated horsepower of the machine may not be achieved if the imbalance of the incoming voltage is
beyond an acceptable limit. The machine may function properly, yet may not deliver the advertised power.
This is noticed more often when using phase converters. A phase converter should only be used if all other
methods cannot be used.
The maximum voltage leg-to-leg or leg-to-ground should not exceed 260 volts.
The high voltage requirements shown reflect the Internal 400V option which is available only in Europe.
Domestic and all other users must use the External 480V option.
The current requirements shown in the table reflect the circuit breaker size internal to the machine. This
breaker has an extremely slow trip time. It may be necessary to size the external service breaker up by
20-25%, as indicated by power supply, for proper operation.
96-0103 rev E 1
MAINTENANCE June 2002
AIR REQUIREMENTS
The VMC requires a minimum of 100 PSI at 4 scfm at the input to the pressure regulator on the back of the
machine. This should be supplied by at least a two horsepower compressor, with a minimum 20-gallon
tank, that turns on when the pressure drops to 100 PSI.
The recommended method of attaching the air hose is to the barb fitting at the back of the machine with a
hose clamp. If a quick coupler is desired, use at least a 3/8".
NOTE: Excessive oil and water in the air supply will cause the machine to malfunction.
The air filter/regulator has an automatic bowl dump that should be empty
before starting the machine. This must be checked for proper operation
monthly. Also, excessive contaminants in the air line may clog the dump valve
and cause oil and/or water to pass into the machine.
NOTE: The nipple between the air filter/regulator and the Bijur oil lubricator (See
illustration in "Air Connection" section) reservoir tank below the control box on
the back of the machine is for the optional rotary table. DO NOT use this as a
connection for an auxiliary air line. Auxiliary connections should be made on
the left side of the air filter/regulator.
WARNING!
When the machine is operating and the pressure gauge (on the ma-
chine regulator) drops by more than 10 psi during tool changes or
pallet changes, insufficient air is being supplied to the machine.
2 96-0103 rev E
June 2002 MAINTENANCE
The following is a list of required regular maintenance for the HAAS VS Series Vertical Machining Centers.
Listed are the frequency of service, capacities, and type of fluids required. These required specifications
must be followed in order to keep your machine in good working order and protect your warranty.
WEEKLY ü Check Through the Spindle Coolant (TSC) filters. Clean or replace element if
needed.
ü Check for proper operation of auto drain on filter regulator.
ü On machines with the TSC option, clean the chip basket on the coolant tank.
Remove the tank cover and remove any sediment inside the tank. Be careful
to disconnect the coolant pump from the controller and POWER OFF the
control before working on the coolant tank. Do this MONTHLY for machines
without the TSC option.
ü Check air gauge/regulator for 85 psi.
ü For machines with the TSC option, place a dab of grease on the V-flange of
tools. Do this MONTHLY for machines without the TSC option.
ü Clean exterior surfaces with mild cleaner. DO NOT use solvents.
ü Check the hydraulic counterbalance pressure according to the machines
specifications.
MONTHLY ü Check oil level in gear box. Check oil level in sightglass. Add from side of
gearbox if necessary.
ü Inspect way covers for proper operation and lubricate with light oil, if neces-
sary.
SIX MONTHS ü Replace coolant and thoroughly clean the coolant tank.
ü Check all hoses and lubrication lines for cracking.
ANNUALLY ü Replace the gearbox oil. Drain the oil from the bottom of the gearbox.
Remove inspection cover beneath spindle head. Add oil from the side of the
transmission.
ü Check oil filter and clean out residue at bottom of filter.
ü Replace air filter on control box every (2) years.1.1 Through the Spindle
Coolant (TSC) Maintenance
ü Check SMTC oil level in sight glass, (see Side Mount Tool Changer Oil Level
in this section).
96-0103 rev E 3
MAINTENANCE June 2002
Check dirt indicator on 100 micron filter with TSC system running and no tool in the spindle. Change
element when the indicator reaches the red zone.
Clean pump intake filter when indicator is in red zone. Reset indicator with button. All intake filters can
be cleaned with a wire brush.
After changing or cleaning filter elements, run TSC system with no tool in spindle for at least one
minute to prime system.
Figure 2-1. TSC coolant pump assembly. Figure 2-2. Cleaning the intake filter.
4 96-0103 rev E
June 2002 MAINTENANCE
* Mineral cutting oils will damage rubber components throughout the machine.
WARNING!
The TSC pump is a precision gear pump and will wear out faster and lose pressure if abrasive particles are
present in the coolant.
Use of coolants with extremely low lubricity can damage the TSC coolant tip and pump.
When machining castings, sand from the casting process and the abrasive properties of cast aluminum
and cast iron will shorten pump life unless a special filter is used in addition to the 100 mesh suction filter.
Contact Haas Automation for recommendations.
Machining of ceramics and the like voids all warranty claims for wear and is done entirely at the customer's
risk. Increased maintenance schedules are absolutely required with abrasive swarf. The coolant must be
changed more often, and the tank thoroughly cleaned of sediment on the bottom. A larger coolant tank is
recommended.
Shortened pump life, reduction of pressure and increased maintenance are normal and to be expected in
abrasive environments and is not covered by warranty.
96-0103 rev E 5
MAINTENANCE June 2002
All machine lubrication is supplied by the external lubrication system. The reservoir is located on the lower
rear of the machine (see Figure below). Current lube level is visible in the reservoir. If additional lube needs
to be added, remove the cap from the fill port and add lube to proper level.
WARNING!
DO NOT ADD LUBE ABOVE THE HIGH LINE MARKED ON THE RESERVOIR.
DO NOT ALLOW THE LUBE LEVEL TO GO BELOW THE LOW LINE MARKED
ON THE RESERVOIR AS MACHINE DAMAGE COULD RESULT.
To lubricate the system, pull up on the primer pull-tab located next to the fill port. The primer will automati-
cally send 3cc of lube through the system.
MAINTENANCE
During normal operation, most chips are discharged from the machine at the discharge tube. However, very
small chips may flow through the drain and collect in the coolant tank strainer. To prevent drain blockage,
clean this trap regularly. Should the drain become clogged and cause coolant to collect in the machines
pan, stop the machine, loosen the chips blocking the drain, and allow the coolant to drain. Empty the
coolant tank strainer, then resume operation.
6 96-0103 rev E
June 2002 MAINTENANCE
Carousel
Number Disc
12 1
14
3 10 11
97 8
1
5
16
6
17
5
18 19
4
3
20 2
2
22 23 24 1
1
Disc Mounting
BHCS (6)
The SMTC is factory filled with the appropriate level of oil and does not need to be changed under normal
conditions. As a precaution, check the oil level annually. Oil will not need to be added as long as the level
remains viewable in the sight glass as shown above. Should the level drop below the sight glass, call the
HAAS service department.
96-0103 rev E 7
MAINTENANCE June 2002
A periodic maintenance page has been added to the control, it is found on the Current Commands screens
titled SCHEDULED MAINTENANCE and accessed by pressing PAGE UP or PAGE DOWN which allows
the operator to activate and deactivate a series of checks (see list below).
An item on the list can be selected by pressing the up and down arrow keys. The selected item is then
activated or deactivated by pressing ORIGIN. If an item is active, the remaining hours will be displayed to
the right. If an item is deactivated, will be displayed instead. Items are tracked either by the time
accumulated while power is on (ON-TIME) or by cycle-start time (CS-TIME). When power is applied, and
every hour thereafter, the remaining time for each item is decremented. When it reaches zero (or has gone
negative) the message MAINTENANCE DUE is displayed at the bottom of the screen. A negative number of
hours indicates the hours past expiration. The maintenance item can have its time adjusted by using the
left and right arrows. One hour is added or subtracted for each keypress, upto a maximum of 10,000 hours,
and a minimum of 1 hour. Pressing the Origin key will reinstate the default time.
This message is not an alarm and does not interfere with machine operation in any way. The intent is to
warn the operator that one of the items on the list requires attention. After the necessary maintenance has
been performed, the operator can select that item on the SCHEDULED MAINTENANCE screen, press
ORIGIN to deactivate it, then press ORIGIN again to reactivate it, and the countdown begins again with a
default number of hours remaining (this value is determined by the software and cannot be altered by the
operator.) Items available for checking are:
Polycarbonate windows and guarding can be weakened by exposure to cutting liquids and chemicals that
contain amines. It is possible to loose up to 10% of the remaining strength annually. If degradation is
suspected, window replacement should occur at no more than a six year interval.
8 96-0103 rev E
June 2002 OPERATION
2. OPERATION
The Information contained in this manual is constantly being updated. The latest updates and other helpful information can be
downloaded in .pdf format from the Haas website. Go to www.HaasCNC.com and click on Manual Updates under the Customer
Services drop-down menu on the navigation bar.
Additional technical information is available in the Haas Reference Manual. The Reference Manual contains definitions of param-
eters and alarms, machine installation instructions, and explanations of the machines mechanical and electrical subassemblies.
The Haas Reference Manual is available online as a free download in .pdf format (go to www.HaasCNC.com and click on Manual
Updates under the customer services drop-down menu in the navigation bar), or may be purchased through the Haas Service
Department.
This section provides the basic programming and operation principles necessary to begin operating the ma-
chine. The remainder of this manual is divided into more detailed Programming and Operation sections.
In an NC (Numerically Controlled) machine, the tool is controlled by a code system that enables it to be
operated with minimal supervision and with a great deal of repeatability. CNC (Computerized Numerical
Control) is the same type of operating system, with the exception that the machine tool is monitored by a
computer.
The same principles used in operating a manual machine are used in programming an NC or CNC machine.
The main difference is that instead of cranking handles to position a slide to a certain point, the dimension is
stored in the memory of the machine control once. The control will then move the machine to these positions
each time the program is run.
The operation of the VS-Series Vertical Machining Center requires that a part program be designed, written,
and entered into the memory of the control. The most common way of writing part programs is off-line, that is,
away from the CNC in a facility that can save the program and send it to the CNC control. The most common
way of sending a part program to the CNC is via an RS-232 interface. The HAAS VS-Series Vertical Machining
Center has an RS-232 interface that is compatible with most existing computers and CNCs.
In order to operate and program a CNC controlled machine, a basic understanding of machining practices and a
working knowledge of math is necessary. It is also important to become familiar with the control console and
the placement of the keys, switches, displays, etc., that are pertinent to the operation of the machine.
This manual can be used as both an operators manual and as a programmers manual. It is intended to give a
basic understanding of CNC programming and its applications. It is not intended as an in-depth study of all
ranges of machine use, but as an overview of common and potential situations facing CNC programmers. Much
more training and information is necessary before attempting to program on the machine.
The programming section of this manual is meant as a supplementary teaching aid to users of the HAAS
Vertical Machining Center. The information in this section may apply in whole or in part to the operation of other
CNC machines. Its use is intended only as an aid in the operation of the HAAS Vertical Machining Center.
96-0103 rev E 9
OPERATION June 2002
We use positive and negative along with the increments value to indicate its relationship to zero on
the line. In the case of the previous line, if we choose to move to the third increment on the minus (-)
3 side of zero, we would call for -3. If we choose the second increment in the plus range, we would call
for 2. Our concern is with distance and direction from zero.
2
Remember that zero may be placed at any point along the line, and that once placed, one side of zero
1 has negative increments and the other side has positive increments.
0 The next illustration shows the three directions of travel on a vertical machining center. To carry the
number line idea a little further, imagine such a line placed along each axis of the machine.
-1
-2
-3
The final axis of travel on our machine is the up-and-down, or Z, axis. When we place a number line on the Z
travel, the positive increments are up above zero and the negative values are down below zero.
Remember, when we are moving the machine, we are concerned with positioning the spindle. Although the
machine table is the moving part, we have to keep in mind our coordinates are based off our theoretical spindle
movement.
Keep in mind that the zero position may be placed at any point along each of the three number lines, and in
fact will probably be different for each setup of the machine. It is noteworthy to mention here that the Z-axis is
usually set with the machine zero position in the full upward position, or the tool change position. This will
place all the Z moves in a negative range of travel. However, the work zero in the Z-axis is usually set at the top
of the part surface, and this will be entered in the tool length offset as a negative value.
10 96-0103 rev E
June 2002 OPERATION
The diagram shows a top view of the grid as it would appear on the machine tool. This view shows the X and Y
axes as the operator faces the machine tool. Note that at the intersection of the two lines, a common zero
point is established. The four areas to the sides and above and below the lines are called QUADRANTS and
make up the basis for what is known as rectangular coordinate programming.
-X, +Y +X, +Y
2
1
-3 -2 -1 1 2 3
-1
-X, -Y -2 +X, -Y
-3
OPERATOR
Whenever we set a zero somewhere on the X-axis and somewhere on the Y-axis, we have automatically
caused an intersection of the two lines. This intersection where the two zeros come together will automatically
have the four quadrants to its sides, above, and below it. How much of a quadrant we will be able to access is
determined by where we placed the zero within the travel of the machine axis.
96-0103 rev E 11
OPERATION June 2002
The principal may be seen when doing a manual reference return of all machine axes. When a zero return
(ZERO RET) is performed at machine start up, all three axes are brought to the extreme positive direction until
the limit switch is reached. When this condition is satisfied, the only way to move any of the three axes is in
the negative direction. This is because a new zero was set for each of the three axes automatically when the
machine was brought Home. This is placed at the edge of each axes travel. In effect, now the positive quad-
rants cannot be reached, and all the X and Y moves will be found to be in the X-, Y- quadrant. It is only by
setting a new part zero somewhere within the travel of each axis that other quadrants are able to be reached.
-X, +Y +X, +Y
XO, YO
-X, -Y +X,- Y
Sometimes it is useful in the machining of a part to utilize more than one of the X,Y quadrants. A good example
of this is a round part that has its datum lines running through the center. The setup of such a part may look
like the previous figure.
These are just some examples of how to make use of the four quadrants of the X and Y axes on the machine.
As more experience is gained in the machine tool programming and setup techniques, each programmer and
setup person develops their own methods and style. Some methods will be faster than others, but each
individual will have to determine the needs of each job in question, and reflect back on notes and the previous
jobs completed.
Up to this point, we have dealt with a system of positioning the tool that is known as absolute programming. In
absolute, all coordinate points are given with regard to their relationship to the origin, a fixed zero point, or
considered as part zero. This is the most common type of positioning.
Another type of positioning is called incremental positioning. Incremental positioning concerns itself with
distance and direction. A new coordinate is entered in terms of its relationship to the previous position, and not
from a fixed zero or origin. In other words, after a block of information has been executed, the position that the
tool is now at is the new zero point for the next move to be made.
An example of the use of the incremental system is below. Note that to move from X 4.25 to X 2.025 on the
scale, an incremental move of X -2.225 was made, even though the move still places the tool on the plus side
of the scale. Therefore the move was determined from the last point, with no regard for the zero position. The +
and - signs are used in terms of direction, and not in regard to the position of zero.
X0 4 5 6
X -2.225
X 2.025 X 4.250
12 96-0103 rev E
June 2002 OPERATION
A program is written as a set of instructions given in the order they are to be performed. The instructions, if
given in English, might look like this:
and so on. But our machine control understands only these messages when given in machine G code.
Before considering the meaning and the use of codes, it is helpful to lay down a few guidelines:
1) Codes come in groups. Each group has an alphabetical address. The rule here is that except for G
codes and macro calls, Codes with the same alphabetical address cannot be used more than
once on the same line.
2) G codes come in groups. Each G code group has a specific group number. G codes from the
same group cannot be used more than once on the same line.
3) There are modal G codes groups which, once established, remain effective until replaced with
another code from the same group.
4) There are non-modal G codes groups which, once called, are effective only in the calling block, and
are immediately forgotten by the control.
96-0103 rev E 13
OPERATION June 2002
A default is an automatic function of the machine tool control. When powering up the machine, the control
looks for the home position of all axes, then will read the default values or the preset G codes. If you have ever
wondered why the machine went to the part zero that was entered in the G54 when it was never specified in the
actual program, it is because the machine automatically reads G54 upon start-up. That is a default.
The defaults for the Haas mill are indicated by an asterisk ( * ) in the "Preparatory Functions (G Codes)"
section of this manual.
The control automatically reads these G codes when power is turned on:
There is no default FEED RATE (F code), but once an F code is programmed, it will apply until another is
entered or the machine is turned off.
14 96-0103 rev E
June 2002 OPERATION
Program format, or style, is an important part of CNC machining. Each individual will format their programs
differently and, in most cases, a programmer could not identify a program written by themselves. The point is
that a programmer needs to be consistent and efficient, writing code in the way it is listed and in the order it
appears in the program. For example:
X, Y, Z is in order of appearance. The machine will read X, Y, or Z in any order, but we want to be consistent.
Write X first, Y second, Z third.
The first line or block in a program using active G codes should be a tool number and tool change command.
This would be a good safety measure.
The second line or block will contain a rapid command (G00), an absolute or incremental command (G90,
G91), a work zero for X and Y (G54), a positioning X and Y coordinate, a spindle speed command (S____), and
a spindle ON clockwise command (M03).
The third line or block will contain a Read tool length offset command (G43), a tool length offset number (H01),
a Z-axis positioning move (Z.1), and an optional coolant ON command (M08).
T1 M06;
G00 G90 G54 X0 Y0 S2500 M03;
G43 H01 Z.1 M08;
All the necessary codes for each operation are listed above. This format is a good practice and will separate
your style from other programmers.
Table G4
3+ Spindle
H01
Cutting Tool
Part Surface
Tool number should always remain numerically matched with the tool length offset number. Setting 15 (the H &
T agreement) will ensure the tool number and tool length offset will match. (Ex. T1 in line #1 should have H01 in
line #3, and T2 should have H02 in line #3.)
96-0103 rev E 15
OPERATION June 2002
A canned cycle is used to simplify programming of a part. Canned cycles are defined for most common Z-axis
repetitive operations such as drilling, tapping, and boring. Once selected, a canned cycle is active until can-
celed with the G80 code. There are six operations involved in every canned cycle:
A canned cycle is presently limited to operations in the Z-axis; that is, only the G17 plane is allowed. This
means the canned cycle will be executed in the Z-axis whenever a new position is selected in the X or Y axis.
The operation of a canned cycle will vary according to whether incremental (G91) or absolute (G90) is active.
Incremental motion in a canned cycle is often useful as a loop count (L) and can be used to repeat the opera-
tion with an incremental X and/or Y move. G98 and G99 are modal commands which change the way the
canned cycles operate. When G98 (the system default) is active, the Z-axis will be returned to the starting
position at the completion of the canned cycle. When G99 is active, the Z-axis will be returned to the reference
plane when the canned cycle is completed.
NOTE: If an L0 is in the canned cycle line, the cycle will not execute until the control
reads an X or Y location.
For more detailed information on canned cycles, refer to the "G Codes" section of this manual.
The following sequence of operations is strongly recommended for setting up this machine:
1) Load a program into memory. This is either manually entered or downloaded from a CAM
package via the RS-232 interface.
3) Use a vise or fixture to hold the part and mount it on the mill.
16 96-0103 rev E
June 2002 OPERATION
4) Locate the X and Y zero points of your program on the part. Usually these points will coincide with
the print reference point where dimensioning begins and needs to be clearly indicated by the
programmer. Use an edge finder or indicator to locate this point with the handle function. After
locating the programmed zero point, push the display offset key and page down until the work zero
offset page appears. Cursor down to G54 X, the work zero offset. Push the PART ZERO SET
button and the X-axis machine value will be stored at this location. Cursor to the G54 Y location
and repeat the above. You have now told the machine where part zero is located. Usually Z and A
values will not have to be set and should be zero.
5) Remove any tools from changer and MDI a T1 M6 command to install tool #1 into spindle (it should
be empty). Put your tool #1 into the spindle using the TOOL RELEASE button. Push the OFSET
key and page down to get to the tool offset page and cursor to tool #1. Do not install any tools
directly into the carousel. Use MDI or ATC FWD/REV to retrieve tools.
6) Push the Z- JOG key until you are close to the top of your part. (The top of your part should be
Z0). Use the Handle to accurately position the tool edge to Z0. Push the TOOL OFSET MESUR
key and the Z machine value will be stored in tool offset #1. Note that this automatic offset mea-
surement works with G43 only and the work Z offset must be zero.
7) Push the NEXT TOOL key and the Z-axis will retract to tool change position and tool #2 (empty)
will be installed in the spindle. Put your tool #2 into the spindle and jog to Z zero as you did for
tool #1. The cursor will automatically be on offset #2. Push TOOL OFSET MESUR.
8) Repeat this procedure until all tools are measured and installed.
11) Please note that in order to load and measure all of your tools, you do not need to use any keys
other than JOG, TOOL OFSET MESUR, and NEXT TOOL. Also note that this automatic offset
measurement works with G43 only.
96-0103 rev E 17
OPERATION June 2002
In operation, it is important to be aware of the operating mode selected for the CNC. There are six operating
modes and one simulation mode in this control. The operating mode is selected with the six buttons labeled:
MDI / DNC To directly run manually entered program or to select DNC mode
The Graphics simulation mode is entered with the DISPLAY select buttons.
In MEM or MDI mode, a program can be started with the CYCLE START button. While a program is running,
you cannot change to another mode; you must wait until it finishes or press RESET to stop the program.
18 96-0103 rev E
June 2002 OPERATION
When already in MDI, a second push of the MDI button will select DNC if the DNC mode is enabled by settings
and parameters in your machine.
In any of the above modes, you can select any of the following displays using the eight DISPLAY buttons:
In addition to the above displays, when a program is already running, you may press LIST PROG to select a
list of the programs in memory. This is useful to determine what programs can be edited in BACKGROUND
EDIT. BACKGROUND EDIT is selected from the PROGRAM DISPLAY.
All operation of the CNC is controlled from the operators panel. The control panel is composed of the CRT
display, the keypad, On/Off switch, Load meter, Handle, EMERGENCY STOP, CYCLE START, and FEED
HOLD buttons.
The keypad is a flat membrane type that requires approximately eight (8) ounces of pressure. The SHIFT
button replaces the function of the numeric buttons with the white characters in the upper left corner. The
SHIFT button must be pressed once before each shifted character. Pressing the SHIFT button twice will turn
off shift.
The jog handle is used to jog one of the axes. Each step of the crank can be set to 0.0001, 0.001, 0.01 or 0.1
inch (0.001, 0.01, 0.1, or 1.0 degree per step for a rotary axis). When using metric units, the smallest handle
step is 0.001 mm and the largest is 1.0 mm. The handle has 100 steps per rotation. It can also be used to
move the screen cursor while in EDIT mode, or to change feed/spindle overrides by +/-1%.
The EMERGENCY STOP button will instantly stop all motion of the machine including the servo motors, the
spindle, the tool changer, and the coolant pump. It will also stop any auxiliary axes.
CYCLE START will start a program running in MEM or MDI mode, continue motion after a FEED HOLD, or
continue after a SINGLE BLOCK stop. The CYCLE START button on the optional remote jog handle performs
exactly the same functions.
FEED HOLD will stop all axis motion until the CYCLE START is pressed. The FEED HOLD button on the
optional remote jog handle will perform exactly the same functions.
WARNING!
FEED HOLD will not stop the spindle, the tool changer, or the coolant
pump. It will not stop motion of any auxiliary axes.
96-0103 rev E 19
OPERATION June 2002
The optional Memory Lock Key Switch will prevent the operator from editing programs and from altering
settings when turned to the locked position.
The following describes the hierarchy of locks:
Key switch locks Settings and all programs
Setting 7 locks parameters - parameters 57, 209 and 278 lock other features
Setting 8 locks all programs
Setting 23 locks 9xxx programs
Setting 119 locks offsets
Setting 120 locks macro variables
The SINGLE BLOCK button on the keypad will turn on and off the SINGLE BLOCK condition. When in SINGLE
BLOCK, the control will operate one block and stop. Every press of the START button will then operate one
more block.
The RESET button on the keypad will always stop motion of the servos, the spindle, the coolant pump, and
tool changer. It will also stop the operation of a running program. This is not, however, a recommended method
to stop the machine as it may be difficult to continue from that point. SINGLE BLOCK and FEED HOLD provide
for continuation of the program. RESET will not stop motion of any auxiliary axes but they will stop at the end
of any motion in progress.
Function Buttons
F1 In EDIT mode and PROGRAM DISPLAY, this will start a block definition.
In LIST PROG mode, F1 will duplicate a program already stored and give it a new name from the command
line. In offsets display, F1 will set the entered value into the offsets.
F3 In EDIT and MDI modes, the F3 key will copy the highlighted circular help line into the data entry line at the
bottom of the screen. This is useful when you want to use the solution developed for a circular motion. Push
INSERT to add that circular motion command line to your program. In the calculator Help function, this button
copies the value in the calculator window to the highlighted data entry for Trig, Circular, or Milling Help.
F4 In MEM mode and PROGRAM DISPLAY, this will select either BACKGROUND EDIT or PROGRAM
REVIEW. BACKGROUND EDIT is selected by entering Onnnnn with the program number to edit. Program
review is selected with just F4. Program review shows the running program on the left half of the screen and
allows the operator to review the program on the right half of the screen. In the Calculator Help function, this
button uses the highlighted Trig, Circular, or Milling data value to load, add, subtract, multiply, or divide with the
calculator.
Included in the software is a real time clock. The current date and time are displayed on the diagnostics
screen. The date and time are also applied to any alarms that are generated. The alarm history will display the
alarm, the date and time that it occured (see the alarms section on how to access the alarm history). Floppy
disk directory contains file creation date and time. When files are saved to the floppy disk, the directory will
now show the file creation date and time. Note that this feature also requires floppy disk driver software rev. 2.0
or later. When outputting a parameter file to a floppy disk or the serial port, it will contain two comments near
the top containing the current date and time.
Macro variables are used to set the date and time. Macro variable #3011 contains the date in the format
yymmdd (two digit year* 10000+ month* 100+ day). Macro variable #3012 contains the time in the format
hhmmss (hours* 10000 + minutes* 100 + seconds).
20 96-0103 rev E
June 2002 OPERATION
Remove plug to access the brightness adjustment knob. Be sure to replace plug.
2.11 K EYBOARD
The control panel keyboard is divided into nine separate regions. They are:
The following are short descriptions of the control panel keys usage.
RESET KEYS: The RESET keys are in the upper left corner of the control panel.
RESET Stops all machine motion and places the program pointer to the top of the
current program.
POWER UP/ Automatically initializes the machine at power up. After initial power up, when
RESTART this key is pressed, the axes zero return and tool one is put in the spindle.
TOOL CHANGER Restores the tool changer to normal operation after the tool changer has
RESTORE encountered an interruption during a tool change. The button initiates a user
prompt screen to assist the operator in recovering from a tool changer crash.
A flow chart showing the steps to restore the side mount tool changer is shown
in the Programming section.
96-0103 rev E 21
OPERATION June 2002
FUNCTION KEYS: Below the reset keys are the function keys. There are eight function keys. They are
used to execute special functions implemented throughout the control software.
F1-F4 Used in editing, graphics, background edit, and the help/calculator to execute
special functions.
TOOL OFSET Used to record tool length offsets in the offset page during part setup.
MESUR
NEXT TOOL Used to select the next tool during part setup.
TOOL RELEASE Releases the tool from the spindle when in MDI mode, zero return, or handle jog.
(The remote TOOL RELEASE button is located on the front of the cover to the
spindle head. It operates the same as the one on the keypad. It must be held for
½ second before the tool will be released, and the tool will remain released for
½ second after the button is released. While the tool is unclamped, air is forced
down the spindle to clear chips, oil, or coolant away from the tool holder.
PART ZERO SET Used to automatically set work coordinate offsets during part setup.
JOG KEYS: The jog keys are on the left below the function keys. These keys select which
axes the jog handle sends signals to and provides for continuous jogging. When a
key is pressed briefly, that axis is selected for use by the jogging handle. When a
key ispressed and held down, that axis is moved as long as the key is held down.
If a + key is pressed and held, the axis is moved so that the tool position is
changed in a positive direction relative to the work coordinates. If a - key is
pressed and held, the axis is moved so that the tool position is changed in a
negative direction relative to the work coordinates. The jog keys are locked out if
the machine is running.
+A, -A Selects the A axis. Selects the B axis when used with the shift key and control
is configured with a fifth-axis option.
JOG LOCK When pressed prior to one of the above keys, the axis is moved in a continuous
motion without the need to hold the axis key depressed. Another press of the JOG
LOCK key stops jogging motion.
To the left side of the jog keys are three keys to control the chip auger. If the auger is enabled
with Parameter 209, these keys perform the following functions:
CHIP FWD Turns the auger in a direction that removes chips from the work cell.
CHIP STOP Stops auger movement.
CHIP REV Turns the chip auger in the reverse direction.
To the right side of the jog keys are three keys to control the optional automatic spigots. If the spigot
is enabled with Parameter 57, these keys perform the following functions:
CLNT UP Pressing this key positions the coolant stream direction one position higher, if
possible.
22 96-0103 rev E
June 2002 OPERATION
CLNT DOWN Pressing this key positions the coolant stream direction one position lower, if
possible.
AUX CLNT Pressing this key while in MDI mode will turn on the Through the Spindle Coolant
system, and pressing it again will shut off the system.
OVERRIDES: The overrides are at the lower left of the control panel. They give the user the
ability to override the speed of rapid traverse motion, as well as programmed feeds
and spindle speeds.
HANDLE CONTROL Allows jog handle to be used to control feedrate in +/-1% increments (from 0 to
FEEDRATE 999%).
PRGRM / CONVRS Displays the currently selected program. Also used in Quick Code applications.
POSIT Displays the position of the machine axes. Pressing PAGE UP and PAGE DOWN
will show operator, machine, work, and distance-to-go formats in large letter
format.
OFSET Displays the tool length and radius offsets. PAGE UP will display the values of
the axes' work offsets. If the ORIGIN button is pressed while the offsets are dis-
played, the control will promp the user: ZERO ALL (Y/N)? Entering Y will zero all
the offsets, in the section displayed.
96-0103 rev E 23
OPERATION June 2002
CURNT COMDS Displays the current program, modal program values, and position during run
time. Succeeding presses of the PAGE DOWN key will display modal values,
system timers, macro variables, tool life and tool load information.
ALARM / MESGS Shows the full text of an alarm when the alarm message is flashing. Pressing
the left or right arrow keys will display an alarm history. Pressing PAGE DOWN
will display a page for user messages and notes.
PARAM / DGNOS Displays and allows changing of parameters that define machine character.
Pressing PAGE UP will display lead screw compensation values. Successive
PAGE DOWN presses will display general parameters as well as the X, Y, Z, A
and B parameters. A second press of the PARAM key will display the first page
of diagnostic data. The first page of diagnostic data is discrete inputs and
outputs. Pressing PAGE DOWN will display the second page of diagnostic data
that consists of additional inputs and analog data.
SETNG / GRAPH Displays and allows changing of user settings. Pressing the SETNG key twice
enables graphics mode where the user can debug the current program and view
the programs generated tool path.
HELP / CALC Displays a brief, on-line manual. Pressing HELP a second time will display the
help calculator. There are three pages of calculator help. Pressing the PAGE
DOWN key will display milling and tapping help, trigonometry help, or circle
help.
CURSOR KEYS: The cursor keys are in the center of the control panel. They give the user the
ability to move to various screens and fields in the control. They are used exten
sively for editing of CNC programs.
HOME Context-sensitive key that generally moves the cursor to the topmost item on
the screen. In editing, this is the top block of the program. In graphics zoom,
it will select full view.
(UP ARROW) The up arrow moves up one item, block, or field. In graphics, the zoom
window is moved up.
PAGE UP Used to change displays, move up one page in the editor, or zoom out when in
graphics.
(LEFT ARROW) Used to select individually editable items within the editor, moves cursor to the
left. It selects optional data in fields of the settings page and moves the zoom
window left when in graphics.
(RIGHT ARROW) Used to select individually editable items within the editor, moves cursor to the
right. It selects optional data in fields of the settings page and moves the zoom
window right when in graphics.
END Context-sensitive key that generally moves the cursor to the bottom most item
on the screen. In editing, this is the last block of the program.
24 96-0103 rev E
June 2002 OPERATION
(DOWN ARROW) The down arrow moves down one item, block, or field. In graphics, the zoom
window is moved down.
PAGE DOWN Used to change displays, move down one page in the editor, or zoom closer
when in graphics.
ALPHA KEYS: The alpha keys allow the user to enter the 26 letters of the alphabet along with some
special characters.
SHIFT The shift key provides access to the white characters on the keyboard.
Pressing SHIFT and then the white character will cause that character to be
sent to the control. When entering text, UPPER CASE is the default. To access
lower case characters, press and hold the SHIFT key while pressing the appropri
ate characters. The SHIFT key can also be continuously held down while
a number of other keys are pressed.
When a control has a fifth-axis installed, the B axis is selected for jogging by
pressing SHIFT and then the +,-A keys.
EOB This is the END-OF-BLOCK character. It is displayed as a semicolon on the screen and it
signifies the end of a programming block. It is the same as a carriage return and then a
line feed.
() The parenthetical brackets are used to separate CNC program commands from
user comments. They must always be entered as a pair and may or may not
have additional characters separating them. Any time an invalid line of code is
received through the RS-232 port while receiving a program, it is added to the
program between these two brackets.
/ The right slash is used as a block delete flag. If this symbol is the first symbol
in a block and a BLOCK DELETE is enabled, then that block is ignored at run
time. The symbol is also used for division in macro expressions.
In some FANUC compatible controls, the block delete symbol can be used to
choose between two options when the "/" symbol is not at the beginning of the
line. For instance, in the following line, T2 is executed when the block delete
option is off, and when the block delete option is on, T1 is executed.
T1 / T2;
N1 G54
A coding method for acheiving the same results on a HAAS control is given
below:
96-0103 rev E 25
OPERATION June 2002
MODE KEYS: The mode keys are in the upper right part of the control panel. These keys change the
operational state of the CNC machine tool. There are six major operation modes. The
user can enter a specific mode by pressing the desired arrow shaped key on the left.
The keys in the same row as the pressed mode key are then made available to the user.
Otherwise, these keys are not available. The current mode is always displayed on the
top line just to the right of the current display on the video screen.
ALTER Changes the item that the cursor is on to the text in the input buffer.
Places an MDI program in the program list.
DRY RUN Used to check actual machine movement without cutting a part. Programmed
feeds are replaced by the speed keys in the handle jog row.
OPT STOP Turns on optional stops. If an M01 code is encountered in the program and OPT
STOP is on, a stop is executed. Depending on the lookahead function, it may not
stop immediately. If the program has been interpreted many blocks ahead, and
OPT STOP is pressed, then the nearest M01 may not be commanded. See G103.
1. OPT STOP will take effect on the line after the highlighted line when OPT
STOP is pressed.
2. M01 is not allowed during cutter compensation. Alarm 349 will be gener-
ated in this case, as for M02, M30, and M00.
BLOCK Blocks with a slash ("/") as the first item are ignored or not executed when this
DELETE option is enabled. If a slash is within a block, address codes after the slash will
be ignored until after the block, if this option is enabled.
1. When not in cutter compensation, block delete will take effect two lines
after BLOCK DELETE is pressed.
2 When in cutter compensation, blocks must be processed earlier. There-
fore, block delete will not take effect until at least four lines after the
highlighted line when BLOCK DELETE is pressed.
3 If BLOCK DELETE changes state during the processing of the first block
of a chamfering/rounding pair, and at least one of the pair is block-
deleted, the behavior is undefined.
4 Processing will slow down for paths containing block deletes during
high-speed machining, because the lookahead queue will be emptied
as processing approaches the block-deleted line(s). This limits the
speed at which the previous blocks can run.
26 96-0103 rev E
June 2002 OPERATION
ORIENT Rotates the spindle to a known position and then locks the spindle.
SPINDLE Can be used during setup to indicate parts.
ATC FWD Rotates the tool turret forward to the next sequential tool. If Tnn is in
the input buffer, the turret will advance to tool nn. Except on CE machines.
ATC REV Rotates the tool turret backwards to the previous tool. If Tnn is in the
input buffer, the turret will advance to tool nn. Except on CE machines.
.001, 1. .001 inches or .01 mm for each division on the jog handle. For dry run
1. inches/min.
.01, 10. .01 inches or .1 mm for each division on the jog handle. For dry run
10. inches/min.
.1, 100. 0.1 inches or 1.0 mm for each division on the jog handle. For dry run
100. inches/min.
ZERO SINGL AXIS Searches for machine zero on the axis that is specified in the input buffer.
HOME G28 Returns all axes to machine zero in rapid motion. Does not search.
SINGLE AXIS Either the X, Y, Z, A, or B axis can be returned to zero alone. The
HOME G28 operator enters 'X','Y','Z','A' or 'B', then presses the HOME G28 key.
Pressing HOME G28 without first entering an axis letter will cause all
enabled axes to be returned to zero.
If the chosen axis is disabled, the message DISABLED AXIS will be
generated.
96-0103 rev E 27
OPERATION June 2002
SECOND HOME This is an optional feature. When this button is pressed, the control will rapid all
axes (which have the 2ND HOME BTN bit =1) to the coordinates specified in
Work Offset G129. The sequence is as follows: First, assuming the X or Y axis
need to be moved, the Z axis is returned to zero, then the X and Y axes are moved
to their final positions, then the Z axis is moved to its final position. G129 Work
Offsets must be set to the desired values for this feature to work correctly. This
feature will work in any mode except DNC, just like the HOME G28 button.
LIST PROG Selects Program List mode and displays a list of the programs in the
control.
SELECT PROG Makes the highlighted program on the program list the current program.
The current program will have an asterisk preceding it in the program list.
SEND RS232 Transmits programs out the RS-232 serial port. If ALL is highlighted, all
the programs will be sent with one % at the beginning and one at the
end of the stream.
RECV RS232 Receives programs from the RS-232 serial port. Unless ALL is high-
lighted, enter a valid program name in the form Onnnnn before pressing
RECV RS232. If ALL is highlighted, do not enter a program name. The
program names will be entered automatically from the input stream data.
ERASE PROG Erases the highlighted program or the program specified in the input buffer.
NUMERIC KEYS: The numeric keys give the user the ability to enter numbers and a few special characters
into the control.
CANCEL The Cancel key is used to delete the last character entered during editing or field input.
SPACE This is a space and can be used to format comments placed into programs.
WRITE / This acts as the general purpose enter key. Any time that user needs to change any
ENTER information in the control, this key is pressed.
+, =, These symbols are accessed by first pressing the SHIFT key and then the key with these
#, and * symbols. They are used in macro expressions.
?, %, $, These are additional symbols, accessed by pressing the SHIFT key. They can be used
!, &, @, in program comments.
and :
28 96-0103 rev E
June 2002 OPERATION
2.12 P OWER O N / O FF
P OWER O N
There is only one way to turn on this CNC. This is by pressing the green On button at the top left of the
control panel. The main breaker at the rear of the mill must be on before this button will turn on the mill. Any
interruption to power will turn the mill off and this button must be used to turn power back on again.
Upon power up, the machine must find its fixed reference point before any operations can occur. After power
on, pressing the POWER UP/RESTART will establish this point. The ZERO RET mode and AUTO ALL AXES
button may also be used to initialize the system after all alarms are cleared. A single axis can be selected by
first pushing the X, Y, Z, A, or B key and then the ZERO SINGL AXIS key. The position thus found is used as
machine zero. Note that the Z-axis will shift downwards about five inches as the search for zero is finished; so,
keep clear.
CAUTION !!!! After power on, the machine does not know its home position or stored stroke limits until it has
been zero returned by the POWER UP/RESTART key or the ZERO RET/AUTO ALL AXES key. It is possible to
jog the machine with the handle or jog keys at the lower feeds. If it is jogged unchecked in either direction, you
may damage the sheet metal covers or overload the ball screws. To avoid this, always properly ZERO RET the
machine immediately after power on before doing anything else.
NOTE: Tool changer goes to tool #1 first, then to tool designated in Setting 81. After
initializing, all machine position displays are reset to zero.
The HOME G28 key should be used any time after the initial power up. This will return the Z-axis first and then
the X, Y, A, and B axes all at rapid rate. If the Z-axis is positioned above the machine zero, the X, Y, A, and B
axes are moved first. This key will work in any of the operating modes. The manual G28 button does not use
any intermediate return point the way the programmed G28 does. Any auxiliary axes (C, U, ...) are returned to
home after X, Y, Z, A, and B.
NOTE: Repairs to the motor, ball screw, or home switch will affect the zero return point
and must be done only by a factory trained technician. Serious damage to the
ball screw, way covers, linear guides, or tool changer may occur if the zero
return point is not properly set.
POWER OFF
Pressing the red POWER OFF button will remove power to the machine instantly. The machine can also be
programmed to turn off at an end of cycle (M30) or after a preset amount of time that the machine sees no
activity. These are Settings 1 and 2.
A sustained overvoltage condition or sustained overheat condition will also shut this machine off automatically.
If either of these conditions exists for 4.5 minutes, the machine will start the 30 second auto-shutdown. Alarm
176 is displayed when an overheat shutdown begins and Alarm 177 is displayed when an overvoltage shutdown
begins.
Any power interruption, including the rear cabinet main circuit breaker, will also turn this machine off. Power
must be restored and the POWER ON button pressed to restore operation.
96-0103 rev E 29
OPERATION June 2002
MDI
Manual data input allows you to enter data that can be executed on a line by line basis instantly without having
to use the EDIT and MEM modes. In this control, MDI is actually a scratch pad memory that can execute
many lines of instruction without having to disturb your main program in memory. The data in MDI will be
retained even when switching modes or in power off.
The MDI mode also allows for manual operation of coolant, spindle, and tool changer.
A program in MDI can be saved as a normal named program in memory by placing the cursor at the beginning
of the first line (HOME), typing Onnnnn (new program number), then pushing ALTER. This will add that name
to the program list and clear MDI.
The entire MDI program may be cleared by pressing the ERASE PROG key while in MDI.
A fast way to select a tool is to type Tnn and, instead of INSERT, press either ATC FWD or ATC REV. This will
directly select that tool.
When DNC is enabled with Setting 55, a second push of the MDI button will put the control into DNC mode.
When the Parameter 57 flag DOOR STOP SP is set to 1, the maximum spindle speed is 750 RPM with the
doors open.
HANDLE/JOG
Manually moving the axes is accomplished by pressing the mode button labeled HANDLE JOG and then by
using the JOG keys or the Handle to move the axis. Both the JOG buttons and the Handle are enabled simulta-
neously without needing to select between them. The display is changed to the Position Display and the
currently selected axis for jogging will blink.
Jog feed rate or handle resolution is selected by the four keys to the right of the HANDLE JOG key. Jog feeds
from .1 inch per minute to 100 inch per minute or handle divisions from .0001 inch to .1 inch are selectable.
Auxiliary axes can be manually jogged from the front panel.
During jogging, the FEED RATE override buttons will adjust the rates selected from the keypad. This allows for
very fine control of the jog speed. It does not change the handle step size.
In the center of the jog buttons is a key labeled JOG LOCK. This key will cause the axis you are jogging to
continue jogging even after you release the key. Press this key and then press the selected axis motion key to
start. Motion will stop as soon as the JOG LOCK button is pressed again, or RESET is pressed.
This feature is handy, for example, when you are slow milling the soft jaws of a vise.
In order to select another axis for jogging while using the handle, use +/- X, Y, Z, or A buttons. When one of
these buttons is pressed, that axis is selected for HANDLE JOG but does not move unless the button is held
down for more than ½ second. After ½ second, that axis is moved in the selected direction and at the selected
feed rate.
30 96-0103 rev E
June 2002 OPERATION
All aspects of handle jogging for the fifth axis work as they do for the other axes. The exception is the method
of selecting jog between axis A and axis B. By default the +A and -A keys will select the A axis for jogging.
The display will show JOGGING A AXIS HANDLE .01 while you are jogging the A axis. The B axis can be
selected by pressing the SHIFT key, and then either the +A or -A key. When this is done the control will
switch to jogging the B axis and the display will change to JOGGING B AXIS HANDLE .01.
The axis assigned to the +A and -A keys will remain selected for jogging even if the operating mode is
changed or if the machine is turned off. The selected axis for +A and -A can be toggled by pressing the shift
key prior to pressing the +A or -A keys.
CAUTION: Do not move the table with the doors folded down.
96-0103 rev E 31
OPERATION June 2002
OPERATION MODE
There are six modes of operation of the VF Series CNC Mill. They are:
HANDLE/JOG Used to move the axes with the handle or JOG buttons.
ZERO RET Used to search for machine zero and to return to machine zero automatically.
Changes to the mode are made by pressing of the buttons on the top right quadrant of the keypad that have the
above labels. If an operation is started, such as running a program, you cannot change modes until the opera-
tion is stopped (motion is stopped by pressing feed hold or reset). The six mode selection buttons are arranged
vertically and, generally, the keys to their right apply only in that selected mode.
PROGRAM SELECTION
Program selection is done from the LIST PROG mode. This mode will list all of the programs stored in memory
and allow you to select one as the current program. This is the program that will be run when you press START
in MEM mode. It is the program with the * on the LIST PROG display. It is also the one that you will see on
the EDIT display.
To select an existing program, press the CURSOR up or down buttons until the program you want is high-
lighted and then press the SELECT PROG button. The * will move to that program.
To select a new program (create a new program) or to select an existing program, you may also enter Onnnnn
from the keyboard and then press SELECT PROG button.
Before you can run a program, it must be loaded in the current memory. To select a program, push the LIST
PROG mode key. Use the cursor to find the desired program and then push SELECT PROG. The program list
includes the program name and the first comment. If the control was turned off while running, that program will
automatically be in current memory and selected.
If the machine has just powered up, you need to first push the POWER UP / RESTART key. This will initialize
all axes and the tool changer, display the Current Commands, and go to MEM mode with the control ready to
run. Pushing the CYCLE START button in the lower left of the control panel will begin execution.
To start a program other than at the beginning, scan to the block number using the down arrow or PAGE
DOWN until you reach the desired starting place. Push the MEM key and CYCLE START to begin. The
Program Restart function, selected from Setting 36, will change the way a program operates if you start from
other than the first block. The setting called Program restart ON will ensure that the correct tool and axis
positions are selected when you start from part way through a program.
32 96-0103 rev E
June 2002 OPERATION
Any errors in your program will cause an alarm and stop the running of the program. Typical alarms are travel
limits and missing I, J, and Q codes. Attempts to move outside of the limits of travel will also cause an alarm.
At any time that a program is running, the bottom left corner of the CRT will show RUNNING. If it does not show
this, the program has completed, has been stopped by the operator, or has been stopped by a fault condition.
PROGRAM RESTART
Program Restart is designed to help the operator start a program from the middle while still properly interpreting
all of the preceding lines of the program. To use program restart, turn on setting 36, move the cursor pointer to
where you want to start (the restart point), and press Cycle Start. You do this by using the CURSOR up and
down keys in MEM mode. The control will begin "invisible" interpretation of the program from the beginning and
you will see the cursor move through the program. When it gets to the line you wanted to start on, the control
will establish all of the conditions that would normally have been true at the end of the previous line and then
execute the highlighted line and the rest of your program. Most program interpretation alarms which you might
have gotten in the invisible phase will not occur until after the line at your restart point is complete.
As an example, if the following program were to restart at the T2 line, the control would change to T1 and then
change to T2 before start axes motion. If the H and T agreement setting (15) was on, you would still not get an
alarm. The double tool change is probably the most difficult to understand. The control does that because it
insures that everything that must be true on the previous line is established and that means go tool 1. It then
executes the restart line which says go to tool 2
O0123 ;
T1 M06 :
G00 G90 G54 X0 Y0 :
G01 F20. Z-2. ;
T2 M06 H03 ; (RESART HERE)
G00 G90 G54 X0 Y0 ;
G01 F20. Z-2 ;
G28 ;
M30 ;
There are several ways a program can be stopped. They include both normal stops and abnormal, or alarm
caused, stops. The normal stops are:
2) A FEED HOLD stop by the operator. The program is continued by pressing CYCLE START again.
3) A SINGLE BLOCK stop when operator selected. The program is continued by pressing CYCLE
START again.
4) Door Hold stop caused by operator opening the enclosure doors. The program continues when the
doors are closed.
96-0103 rev E 33
OPERATION June 2002
1) Operator Reset
This stops all axes motion, stops the tool changer, turns off the spindle, and turns off the coolant
pump. Program operation cannot be continued from the stopping point. If Setting 31 is On, the
program pointer is reset to the beginning.
2) Emergency Stop
This stops all axes motion, disables the servos, stops the tool changer, turns off the spindle, and
turns off the coolant pump. Program operation cannot be continued from the stopping point. This
will also stop any auxiliary axes motion. RESET must be used at least twice to remove the alarms
and start again.
3) Alarm condition
This can occur any time an alarm comes on during program operation. Since a program cannot be
restarted until RESET is pressed, a program execution cannot be continued from the stopping
point. Alarms can be caused by programming errors or machine faults. Use the Graphics simula-
tion mode to test your program first for errors.
4) Power-off
This will stop all motors within one second but does not guarantee any conditions when the
machine is powered-on again.
The EMERGENCY STOP switch is normally closed. If the switch opens or is broken, power to the servos will
be removed instantly. This will also shut off the tool changer, spindle drive, and coolant pump. The EMER-
GENCY STOP switch will shut down motion even if the switch opens for as little 0.005 seconds.
Be careful of the fact that Parameter 57 contains a status switch that, if set, will cause the control to be
powered down when EMERGENCY STOP is pressed.
You should not normally stop a tool change with EMERGENCY STOP as this will leave the tool changer in an
abnormal position that takes special action to correct.
Note the tool changer alarms can be easily corrected by first correcting any mechanical problem, pressing
RESET until the alarms are clear, selecting ZERO RETURN mode, and selecting AUTO ALL AXES.
If the shuttle should become jammed, the control will automatically come to an alarm state. To correct this,
push the EMERGENCY STOP button and remove the cause of the jam. Push the RESET key to clear any
alarms. Push the ZERO RETURN and the AUTO ALL AXES keys to reset the Z-axis and tool changer. Never
put your hands near the tool changer when powered unless the EMERGENCY STOP button is pressed.
34 96-0103 rev E
June 2002 OPERATION
WORK BEACONS
The red and green work beacons located directly on top of the control arm allow the operator to monitor the
machine status.
The beacon will flash GREEN if: - the operator selects FEEDHOLD or SINGLE BLOCK stop.
- the control is in a M00, M01, M02, M30. It will stop flashing when
RESET is pressed. If the control is in an M02 or M30, and door
hold overide is not on, the beacon will stop flashing when the door
is opened.
The beacon will flash RED if: - the control encounters an alarm, such as when EMERGENCY
STOP is pressed. It will stop flashing when RESET is pressed
to clear all alarms.
96-0103 rev E 35
OPERATION June 2002
When using anything other than HELP or Messages function, alphanumeric key entries are displayed along the
bottom line of the CRT. This is called the data entry line. When the line contains what you want to enter, press
the WRITE, ALTER, or INSERT key as appropriate.
When the HELP display is selected, the alphanumeric keys are used to select one of the topics; so they are
not displayed on the data entry line of the CRT.
When the Message function is selected, the cursor is positioned on the screen and you type directly into the
display.
CREATING PROGRAMS
To create a new program, you must be in the PRGRM/CONVRS display and LIST PROG mode. Enter O (letter,
not number) and a five digit program number and press SELECT PROG key or ENTER. The selected program
is the Main program and is the one you will see in the MEM and EDIT modes. Press EDIT to show the new
program. A new program will begin and consist of only the Onnnnn and an EOB (;). All further entries are made
by typing a letter followed by a numeric value and pressing INSERT, ALTER, or WRITE. All items entered into a
program are either addressed data (a letter of the alphabet followed by a number), or a comment (text sur-
rounded by parenthesis), or the End-Of-Block (EOB or ;).
The CURSOR up and down keys can be used to search for the entered value. Simply enter the value to
search for on the bottom line and press the CURSOR up or down keys. The CURSOR up key will search for
the entered item backwards to the start of the program. The CURSOR down key will search forward to the end
of the program. Searching also works in MEM mode. If you enter a letter without a number, the search will stop
on the first use of that letter with any value.
NOTE : When INSERT is pressed, the new data is put in after the highlighted data. The
CURSOR up, down, left, and right keys are used to select the highlighted item.
The PAGE UP and PAGE DOWN keys move farther distances and the HOME
and END keys go to the start or end of the program. All of these keys work in
EDIT, MEM, and MDI modes.
A comment can be edited without entering the entire comment again. Simply highlight the characters you wish
to change, enter the new characters, and press ALTER. To add characters move the cursor to where text is to
be added, enter the new characters, and press INSERT. To remove characters highlight the characters and
press DELETE. Use the UNDO button to reverse any changes. The UNDO button will work for the last nine
entries.
After creating a program, the name can be very easily changed by simply altering the Onnnnn on the first line.
If the maximum number of programs are already present, the message DIR FULL will be displayed and the
program cannot be created.
EDITING PROGRAMS
The EDIT mode is used to make changes to a program already in memory or use the LIST PROG mode to
create a new one. A newly created program contains only the program Onnnnn name and an EOB.
To enter the EDIT mode, press the EDIT mode key. The screen will display the current program. If no program
file exists, program O0000 will be displayed. To change a program name, move the cursor to the existing
Onnnnn, type in the letter O followed by a five digit number, such as O12345, and press the ALTER key. The
upper right hand screen will display the new program number. Your data will first appear in the lower left screen
and will be input to the upper screen upon pressing INSERT, ALTER, or WRITE.
36 96-0103 rev E
June 2002 OPERATION
To enter a program from the keypad, type in the data you wish and press the INSERT key. More than one
code, such as X, Y, and Z, can be entered before you press INSERT. After a program is entered, you may wish
to change the data. Highlight the characters you wish to change, enter the new characters, and press ALTER.
To add characters move the cursor to where text is to be added, enter the new characters, and press INSERT.
To remove characters highlight the characters and press DELETE. Use the UNDO button to reverse any
changes. The UNDO button will work for the last nine entries.
The CURSOR up and down keys can be used to search for the entered value. Simply enter the value being
searched for on the bottom line and press the CURSOR up or down keys. The CURSOR up key will search for
the entered item backwards to the start of the program. The CURSOR down key will search forward to the end
of the program. Searching also works in MEM mode. If you enter a letter without a number, the search will stop
on the first use of that letter with any value.
You can change to a different program while in the EDIT or MEM mode by using the CURSOR up and down
keys, enter Onnnnn on the input line and then press the CURSOR up and down keys or the F4 key. Onnnnn
is the program you wish to change to.
The jog handle can be used to move the cursor during editing. Parameter 57 is used to enable this function. If
enabled, the handle will act like the CURSOR left and right buttons.
Background editing is also possible with this machine and is now a standard feature. If background editing is
available on your control, all of the above editing functions can be used while a program is running in MEM.
Guarded Code You tried to remove the Onnnnn from start of a program.
Bad Code A line contained invalid data or comment over 80 characters.
Editing Error Some previous edit was not completed; fix the problem or press UNDO.
Bad Name Program name Onnnnn is invalid or missing.
Invalid Number The number with an alphabet code was invalid.
Block Too Long A block may only be 256 characters.
No Code An insert was done without any data to insert.
Cant Undo May only use undo for previous nine changes.
End Of Prg End of prog EOB cannot be deleted.
BACKGROUND EDIT
With BACKGROUND EDIT, you may edit a program in memory while any other program is being run. BACK-
GROUND EDIT can be enabled and disabled by Parameter 57.
BACKGROUND EDIT is selected from MEM mode when in PROGRAM DISPLAY by typing Onnnnn for the
program you want to edit and pressing F4. If you do not enter the Onnnnn, you will instead get the PROGRAM
REVIEW display.
While in BACKGROUND EDIT, you may perform any of the operations available in the EDIT mode. The last five
lines of the CRT will, however, display the status of the running program and the top line will show the name
and line number of the running program.
Selecting any other display or pressing F4 will exit from BACKGROUND EDIT. In order to list the programs that
are in memory, a display function is available to view the program memory list while a program is running. This
display is called LIST. It is selected by pressing the LIST PROG button while a program is running. The display
is just like the LIST PROG mode display but it does not allow any send, receive, copy, select, or erase func-
tions.
The CYCLE START button may not be used while in BACKGROUND EDIT. If the program contains an M00
stop, you must exit BACKGROUND EDIT and then press CYCLE START to resume the program.
96-0103 rev E 37
OPERATION June 2002
All of the changes made during BACKGROUND EDIT are saved in a different memory area until the running
program stops. This means that you can even edit the program that is running, or any of its subprograms, and
those changes will not affect the running program.
The first time you select a program for BACKGROUND EDIT, you will get the message PROG EXISTS if the
program is already in memory or NEW PROG if it is not. The NEW PROG message means that the program is
being created and will be initially empty. In either case, you will then be able to edit that program. The second
time you select a program for BACKGROUND EDIT without stopping the running program, you will get the
message SECOND EDIT.
When you are in BACKGROUND EDIT and the running program finishes, the display will automatically change
to the PROGRAM DISPLAY and will show the program that just finished running. To continue editing your
program, you must select it with LIST PROG and then display it in EDIT mode.
BACKGROUND EDIT is not available from MDI or from DNC operating modes
DELETING PROGRAMS
To delete an existing program, you must be in LIST PROG mode. The programs will be listed here by program
number. Use the CURSOR up or down keys to highlight the program number, or type in the program number
at the blinking cursor, then press the ERASE PROG key.
All the programs in the list may be deleted by selecting ALL at the end of the list and pressing the ERASE
PROG key. Use caution when deleting single programs, and read all prompts, to ensure that ALL programs are
not selected. The UNDO key will not recover programs that are deleted.
The F1, F2, F3, and F4 buttons perform different functions depending on what display and mode is selected.
The following is a quick summary of the Fn buttons:
F1 In EDIT mode and PROGRAM DISPLAY, this will start a block definition.
In LIST PROG mode, F1 will duplicate a program already stored and give it a new name from
the command line. In OFSET display, F1 will set the entered value into the offsets.
F3 In EDIT and MDI modes, the F3 key will copy the highlighted circular help line into the data entry
line at the bottom of the screen. This is useful when you want to use the solution developed for a
circular motion. Push INSERT to add that circular motion command line to your program. In the
calculator HELP function, this button copies the value in the calculator window to the highlighted
data entry for Trig or Circular Help.
F4 When in EDIT mode with no program running, entering Onnnnn in the input line and pressing
F4 will change the program being edited to Onnnnn.
When in MEM mode and PROGRAM DISPLAY, F4 can be pressed to select either BACKGROUND EDIT or
PROGRAM REVIEW. BACKGROUND EDIT is selected by entering the program number at the input line and
pressing F4. BACKGROUND EDIT can only be selected when a program is running. PROGRAM REVIEW can
be selected whether or not a program is running, simply by pressing F4. If a program is running, PROGRAM
REVIEW will show the running program on the left half of the screen, and allows the operator to review the
program on the right half of the screen.
In the calculator HELP function, F4 uses the highlighted Trig, Circular, or Milling data value to
load, add, subtract, multiply or divide with the calculator.
38 96-0103 rev E
June 2002 OPERATION
T HE UNDO K EY
A very powerful keyboard button available in this control is the UNDO button. When editing, this button will
allow you to basically undo any changes or edits you have made but wish you had not. Any time you use the
INSERT, ALTER, or DELETE buttons, the condition of the original block is saved and can be restored with the
UNDO button. In fact, the previous nine changes can be undone in the opposite order that they were entered by
pressing the UNDO button for each change that is to be backed out.
The UNDO button can be used in EDIT, BACKGROUND EDIT, and MDI. But if you change operating modes
between EDIT and MDI, you cannot use the UNDO button as the list of saved data is cleared.
BLOCK OPERATIONS
Block operations can be performed on a group of one or more blocks of the program. These operations include
BLOCK DUPLICATE, BLOCK MOVE, and BLOCK DELETE. Prior to a block being defined, the bottom right of
the screen shows how to define a block; the F1 key is pressed when the cursor is on the first line of the block
and the F2 key is pressed when the cursor is on the last line of the block.
Once a block is defined, the lower right of the screen shows how to manipulate the block; the INSERT key is
used to duplicate the defined block wherever the cursor is positioned, the DELETE key is used to delete the
block, the ALTER key is used to move the block, and the UNDO key cancels the block definition.
When a block is defined, the cursor is indicated by the > symbol and is always at the beginning of a line.
When a block is copied or moved, the lines are added after the block with the cursor. Only whole command
lines may be moved with the block functions.
Parts of programs can be copied from one program to another with the block copy feature. This is done by
highlighting the section of code that is to be copied using the F1 and F2 keys. Once a section of code is
highlighted, you then change to another program by selecting an existing program or create a new one. Cursor
to the location that the previously defined block is to be inserted and press the INSERT or write key. A copy of
the defined block will be inserted into the current program and the copied code segment becomes the cur-
rently-defined block. Press the UNDO key to exit the BLOCK COPY mode.
Blocks of code can be copied into an MDI program, but blocks of code cannot be copied from an MDI program
into another program. You can always rename the MDI program and then copy its text to any other program in
the manner described above.
96-0103 rev E 39
OPERATION June 2002
Programs are sent or received through the first RS-232 port located on the rear control box pendant side. All
data sent or received is ASCII. In order to use this port, you will need to obtain a cable and connectors with the
following wiring:
The following lists baud rate and the respective maximum cable length. This list assumes proper cable shield-
ing and no signal boost.
It is possible to use RS-232 to RS-422 converters on each end of the cable to accomplish longer cables at up
to 115,200 baud. Proper twisted pair wire greatly improves reliability and increases maximum distance. A
pentium processor should be used for baud speed of 115,200.
25-25 Pin
40 96-0103 rev E
June 2002 OPERATION
9-25 Pin
1 Pin 7n
2 Pinund Pin 3 ee
P in 3 Pin d G ro P in 2 Black Gr
Re Pin 1d Red
Pin 5n Black
n
Gree Grou
4
Pin
9 Pin 1 1
5 ru
1 thru 1 3 th
Pins Pins
5
Pin 2 Pin 1
ru 9 E
6 th FEMAL ru 14 E
Pins 2 5 th 3 MAL
P in 1 Pins Pin 1
All other pins are optional and are not usually used. The RS-232 connector is a DB-25 and is wired as a DTE.
This means that we send data on the TXD wire and receive data on the RXD wire. If you do not understand this,
your dealer will be glad to help. The simplest connection would be to an IBM PC that can be done with a
standard cable made up of a DB-25 male on one end and a DB-25 female on the other. Pin 2 at one end is
wired to pin 3 at the other end, pin 3 to pin 2 and pin 7 is wired to pin 7.
All RS-232 data is ASCII but the number of bits, parity and speed can be changed from settings. The number of
data bits is selected with Setting 37 for either 7 or 8. Parity is selected with Setting 12 and is none, even, odd,
or zero. Zero parity will always set the parity bit to 0. The data speed is selected with Setting 11.
Once the connection to your computer has been made and verified, go to the Setting page and set the baud
rate, parity, number of stop bits, end of block (EOB) format, and leader parameters to match your require-
ments.
All programs sent to the control must begin with a line containing a single % and must end with a line contain-
ing a single %. All programs sent by the control will have these % symbols.
To receive a program, push the LIST PROG key. Move the cursor to the word ALL and push the RECV RS-232
key and the control will receive all main and sub programs until it receives a % sign indicating end of input.
Please note that when using ALL, all your programs must have an address Oxxxxx to be filed. If you do not
have a program number, type in a program number before you push RECV RS-232 and the program will be
stored under that number. You can also select an existing program for input and it will be replaced. An ASCII
EOF character (code 04) will also terminate input. The colon character (:) may be used in place of the O for a
program name, but it is always displayed as O.
When receiving RS-232 data, there is a status message at the bottom of the screen. It will update as follows:
96-0103 rev E 41
OPERATION June 2002
To send a program, use the cursor as above to select the program and push the SEND RS-232 key. You can
select ALL to send all of the programs in memory. A setting can be turned on to add spaces to the RS-232
output and improve the readability of your programs.
The synchronization protocol used to send data to slower computers is selected from the Setting 14. Setting
14 may be set to XON/XOFF, RTS/CTS, DC CODES, or XMODEM. Transmission can be stopped with either
the XON/XOFF characters or the RTS/CTS wires.
Parameters, settings, offsets, and macro variables pages may also be sent individually via RS-232 by selecting
the LIST PROG mode, selecting the desired display screen, and pushing the SEND key. They can be re-
ceived by pushing the RECV key.
11 BAUD RATE
12 PARITY
13 STOP BITS
14 SYNCHRONIZATION
24 LEADER TO PUNCH
25 EOB PATTERN
37 NUMBER DATA BITS
The EOB (semicolon) character is not normally sent by the RS-232 port. If it is received by the input port, it will
cause a blank line in the program.
The format of data sent and received for parameters, settings, and offsets is the following:
%
N0 Vnnnnnn
N1 Vnnnnnn
N2 Vnnnnnn
.
.
.
%
The following table shows the use of the N numbers in the output file when offsets are saved to RS-232 or disk.
Tool length:
Tool/function length wear diameter wear
1 001 201 401 601
2 002 202 402 602
3 003 203 403 603
: : : : :
200 200 400 600 800
42 96-0103 rev E
June 2002 OPERATION
Offset/axis X Y Z A B
G52 801 802 803 804 805
G54 806 807 808 809 810
G55 811 812 813 814 815
: : : : : :
G59 831 832 833 834 835
G110 836 837 838 839 840
G111 841 842 843 844 845|
: : : : : :
G128 926 927 928 929 930
G129 931 932 933 934 935
1 936
2 937
3 938
: :
200 1135
The format of data sent and received for macro variables is the same as above except there is a line N9999,
and no line N0. The N number is the data number and V is the value. N0 is a CRC code that is computed by
the control prior to sending the data. The N0 value is mandatory with parameters but is optional with settings
and offsets. If you make a change to some saved data value and leave the old CRC, you will get an alarm when
you try to load that data. With settings and offsets, you should delete the N0 line if you make changes to the
saved data.
NOTE: Data will be loaded even though an alarm has been generated.
Data that is received garbled is usually converted into a comment and stored into your program while an alarm
is generated. In addition, any parity errors or framing errors will generate an alarm and they will also stop the
receive operation.
At the end of a send or receive function, the bottom left corner of the display will show either: RS232 DONE
for normal completion or RS232 ABORT if any errors cause it to stop. The actual errors are listed in the
ALARM display.
The Haas CNC serial ports optionally support the full DC1, DC2, DC3, DC4 code sequence that is compatible
with paper tape readers and punches. Setting 14 is used to select this mode of operation. Setting 14 can be
set to DC CODES. When this setting is selected, the following occurs:
1) When sending out of the serial port, a DC2 (0x12) will precede all other data. This code is used to
turn on a paper punch.
2) When sending out of the serial port, a DC4 (0x14) will follow all other data. This code is used to
turn off a paper tape punch.
3) When receiving from the serial port, a DC1 (0x11 Xon) is sent first. This code is used to turn on a
paper reader.
4) When receiving from the serial port, a DC3 (0x13 Xoff) is sent after the last % is received. This
code is used to turn off a paper tape reader.
96-0103 rev E 43
OPERATION June 2002
Note that the Setting 14 selection XON/XOFF is similar to the DC CODES selection. Both of these settings
use the DC1/DC3 XON/XOFF codes to start/stop the sender when data is received too fast. When DC CODES
is selected for Setting 14 (synchronization), serial port #1 will transmit an XON (DC1) if a character has not
been received for five (5) seconds.
XMODEM may also be selected in setting 14. It is a receiverdriven communications protocol that sends data
in blocks of 128 bytes. Setting synchronization to XMODEM gives your RS-232 communication an added
level of reliability because each block is checked for integrity. If the receiver determines that the most recently
sent block is in error, it will request that the sender try to send the block again.
In order to use XMODEM, parity must be none, and RS-232 data bits must be set to 8. Also, the computer that
is sending the data must be equipped with a communications package that supports the XMODEM protocol. It
must be set to XMODEM to operate.
This version of XMODEM supports checksum verification only. Also, 512 bytes of memory must be available
before using XMODEM with DNC. XMODEM must use 8 data bits and no parity.
WARNING!
One of the biggest causes of electronic damage is a lack of a good
earth ground on both the CNC and the computer that is connected by
RS-232. A ground fault condition (i.e., a lack of good ground on both)
will damage the CNC or the computer, or both.
As a standard feature, this machine is shipped with a DNC capability. With DNC, there is no limit to the size of
your CNC programs. The programs are directly executed by the control as they are sent over the RS-232
interface. Note, that this is the first serial port or the top connector. Do not confuse DNC with RS-232 uploading
and downloading.
NOTE: Floppy disk DNC is selected by entering the floppy disk file name and pressing
MDI a second time when already in MDI mode. Do not press MDI three
consecutive times or a DISK ABORT will result.
When enabled, DNC is selected by pressing MDI a second time when already in MDI. DNC mode will not be
enabled unless there is a minimum of 512 bytes of user memory available. When DNC is selected, the PRO-
GRAM DISPLAY will show:
This means that no DNC data has been received yet and you may begin sending data. You must start sending
the program to the control before the CYCLE START button can be pushed. After the beginning of the program
is seen by the control, the display will show part of the program and a message at the bottom, left of the CRT
will show DNC PROG FOUND. After the program is found, you may push CYCLE START just like running any
other program from Memory.
44 96-0103 rev E
June 2002 OPERATION
If you try to press CYCLE START before receiving a program, you will get the message: NO DNC PROG YET.
The reason for not allowing the command of CYCLE START before receiving the DNC program is for safety. If
the operation is allowed to start from a remote location, the operator may not be present to ensure that the
machine is operating safely.
While a DNC program is executing, you are not allowed to change modes. You must first press RESET to stop
the program.
When the end of the DNC program is received, the message DNC END FOUND is displayed. When the DNC
program is finished running, the PROGRAM DISPLAY will show the last few lines of the program. You must
press RESET or exit the DNC mode before you can run any other programs. If you try to press CYCLE START
before RESET of the previous DNC, you will get the message: RESET FIRST.
DNC supports Dripmode. The control will execute one block at a time from the RS-232 port. Each block
entered will be executed immediately with no block lookahead buffering. The exception is that Cutter Compen-
sation requires three blocks of motion commands to be buffered prior to a compensated block being executed.
There are several restrictions on what can be in a DNC program. An M30 is not allowed as it is not possible to
start over at the beginning. Canned cycles G70, G71, G72, and G73 cannot be programmed while in DNC,
since they require the control to look ahead.
The program must begin with a % just like any other program sent over RS-232 and the program must end with
a %. The data rate selected for the RS-232 port by settings must be fast enough to keep up with the rate of
block execution of your program. If the data rate is too slow, the tool may be stopped in a cut when you might
otherwise expect continuous cutter motion. The highest standard RS-232 data rate available is 115,200 bits per
second.
It is recommended that DNC be run with Xmodem or parity selected because an error in transmission will then
be detected and will stop operation of the DNC program without crashing. The settings page is used to select
parity. The recommended RS-232 settings for DNC are:
Full duplex communication during DNC is possible by using the G102 command or DPRNT to output axes
coordinates back to the controlling computer. When DNC is running, BACKGROUND EDIT is not available.
To run DNC in graphics, you must select DNC first , then go to graphics display and send your program
to the CNC.
96-0103 rev E 45
OPERATION June 2002
All files must be on MS-DOS formatted 1.44M floppy disks and must reside in the root directory. Parameter
209 DISK ENABLE must be 1.
NOTE: In order to enable the floppy disk drive, an unlock code must be entered. If
necessary contact the Service Department for more information.
NOTE: Use an empty (containing no other files) floppy disk for faster operation.All
programs must begin with a line containing a single % and must end with a
line containing a single %. All programs saved by the control will have these
% symbols.
Programs may be loaded and saved from the floppy disk. To LOAD a program, press the LIST PROG key with
PRGM selected. Enter the floppy disk file name and press F3 and the control will receive all main and sub
programs until it receives a % sign indicating end of input. Please note that when using ALL, all your pro-
grams must have an address Oxxxx to be filed. An ASCII EOF character (code 04) will also terminate input.
The colon character (:) may be used in place of the O for a program name, but it is always displayed as O.
When loading floppy disk data, there is a status message at the bottom of the screen. It will update as follows:
To SAVE a program to floppy disk, press the LIST PROG key with PRGM selected. Enter the floppy disk file
name, use the cursor as above to select the program, and press the F2 key. You can select ALL to send all
of the programs in memory.
Parameters, Settings, Macro Variables, and Offsets may also be sent individually to the floppy disk by
selecting the LIST PROG mode, entering the floppy disk file name, selecting the desired display screen
(PARAM, SETNG, OFSET, or the Macro Variables page of CRNT CMDS), and pressing the F2 key. They can
be received by pressing the F3 key.
The format of data sent and received for settings, offsets, and parameters is the following:
%
N0 Vnnnnnn
N1 Vnnnnnn
N2 Vnnnnnn
.
.
.
%
46 96-0103 rev E
June 2002 OPERATION
The following table shows the use of the N numbers in the output file when offsets are saved to RS-232 or disk.
Tool length:
Tool/function length wear diameter wear
1 001 201 401 601
2 002 202 402 602
3 003 203 403 603
: : : : :
200 200 400 600 800
Offset/axis X Y Z A B
G52 801 802 803 804 805
G54 806 807 808 809 810
G55 811 812 813 814 815
: : : : : :
G59 831 832 833 834 835
G110 836 837 838 839 840
G111 841 842 843 844 845|
: : : : : :
G128 926 927 928 929 930
G129 931 932 933 934 935
1 936
2 937
3 938
: :
200 1135
The N number is the data number and V is the value. N0 is a CRC code that is computed by the control prior to
sending the data. The N0 value is mandatory with parameters but is optional with settings and offsets. If you
make a change to some saved data value and leave the old CRC, you will get an alarm when you load that
data. With settings and offsets, you should delete the N0 line if you make changes to the saved data.
Data that is received garbled is usually converted into a comment and stored into your program while an alarm
is generated. Errors generating an alarm may also stop the receive operation.
To get a DIRECTORY LISTING, select the PRGM/LIST PROG mode, and press F4. This will generate a Disk
Directory Listing that will be saved in program 0xxxx where xxxx is defined in parameter 227. The default value
is 8999.
On the List Prog page, type "DEL <filename>" where <filename> is the name of a file on the floppy disk. Press
write. The message "DISK DELETE" will appear, and the file will be deleted from the floppy disk.
At the end of a save or load function, the bottom left corner of the display will show either: DISK DONE for
normal completion or DISK ABORT if any errors cause it to stop. The actual errors are listed in the ALARM
display.
96-0103 rev E 47
OPERATION June 2002
Important! You must have a serial cable and serial printer that is compatible with the Haas
controller.
Setting up the Printer
Plug in the printer power cord.
Plug the printer into the control in the RS232 port.
Turn on the printer.
Make sure the following settings are correct.
Note: Write down the old settings in case you to need change them back later.
Printing Rules
The program must be in memory. A program cannot be printed in MDI.
A program cannot be printed while it is running.
Printing a Program
Make sure the printer is turned on.
Make sure there is paper in the printer.
Go to List Programs.
Highlight the program to be printed.
Push Send RS232.
To get the last page of the program out, push the paper feed button on the printer.
48 96-0103 rev E
June 2002 OPERATION
2.17 D RY R UN O PERATION
The DRY RUN function is used to check a program quickly without actually cutting parts. DRY RUN is selected
by pressing the DRY RUN button while in MEM or MDI mode. When in DRY RUN, all rapids and feeds are run
at the DRY RUN speed selected from the JOG speed buttons. The bottom of the screen will display the rate as
100, 10, 1.0 or 0.1 inches per minute.
DRY RUN cannot be turned on while a program is running. It can only be turned on or off when a program has
completely finished or is reset. The first push of the DRY RUN button turns on this function and the second
push will turn it off again. DRY RUN will still make all of the requested tool changes. The speed used in DRY
RUN can be changed at any time and the operator can then check that the motions that are programmed are
exactly what were intended. Note that Graphics mode is just as useful and may be even safer since it does not
begin moving the machine before the program is checked.
2.18 D ISPLAYS
You can select any of the following displays using the eight DISPLAY select buttons:
PRGRM / CONVRS To show or edit the program selected OR to select conversational mode
(QuickCode)
In addition, when a program is running, you may press LIST PROG to select a list of the programs in memory.
This is helpful in determining which programs can be edited in BACKGROUND EDIT, which is selected from the
PROGRAM display.
96-0103 rev E 49
OPERATION June 2002
MESSAGES
The screen will ALWAYS show some of the current conditions selected in the control. These are fixed status
displays that describe the condition of the machine. The following conditions are displayed on the screen:
The following error messages are received when the wrong button is pressed.
50 96-0103 rev E
June 2002 OPERATION
96-0103 rev E 51
OPERATION June 2002
NOT IN DRYRUN The function requested applies to DRY RUN, but control is not presently
in that mode.
ONE BIT ONLY Only 0 or 1 is accepted to alter a parameter switch.
ONE PROG ONLY Program name being selected cannot be ALL.
OPTION DISABLED Requested axis has been disabled, and cannot be jogged.
OVERWRITE (Y/N) Do you want to overwrite the file, yes or no ?
PLEASE WAIT Wait until spindle is stopped.
PROG EXISTS Cannot rename to an existing program.
PROG NOT FOUND Requested program not in memory.
PROG READY Program has been received and is ready to run.
PROGRAM END Cannot remove last EOB in program.
PROGRAM IN USE Program is already in use.
RANGE ERROR Data being entered is outside of the valid range.
RESET FIRST Must press RESET before performing this function.
RIGID TAP Rigid tapping is being performed.
RS-232 ABORT RS-232 was aborted by operator action.
RS-232 DONE RS-232 operation is complete.
RS-232 ERROR RS-232 error (shown in alarms).
SAFETY SW OPEN The door is open; some functions not allowed.
SEARCHING... Searching program for requested text or G code.
SEL HI GEAR High gear selected in program.
SEL LOW GEAR Low gear selected in program.
SENDING OFFSET Sending offsets via RS-232.
SENDING PARS Sending parameters via RS-232.
SENDING SETTING Sending settings via RS-232.
SENDING VARS Sending variables via RS-232.
SENDING... RS-232 output is in process.
SERVO IS OFF When servos are off, you cannot start a program.
SERVO IS ON! Parameter change was attempted with servo on. This is dangerous!
SHUTTLE IN Tool changer is in position for a tool change.
SHUTTLE NOT HOME The control is preventing the operator from zeroing the machine. Move the tool
shuttle to the Standby Position; this is the only safe place for the shuttle to be
when zeroing the machine.
SPEED COMD A spindle speed must be commanded.
SPINDLE CCW Spindle is turning counterclockwise.
SPINDLE CW Spindle is turning clockwise.
SPINDLE HIGH Spindle is in high gear.
SPINDLE IN USE Spindle is being controlled by program - manual controls not available
at this time.
SPINDLE LOCKED Spindle is locked in place.
SPINDLE LOW Spindle is in low gear.
SPINDLE ORI Spindle is being oriented.
SPINDLE STOP Spindle is not turning.
STRING TOO LONG The text being entered is too long.
SYSTEM ERROR Call your dealer.
TC MOTION This message is intended to let the operator know that the tool changer arm or
chain is in motion.
TOOL CH LOCKED Tool changer has been disabled by parameter 57 bit 1.
TOOL CLAMP The tool is in the spindle.
TOOL OVERLOAD Cutting tool is overloaded.
TOOL UNCLAMP The tool has been unclamped.
TURRET IN The tool changer is in position for a tool change.
TURRET OUT The tool changer is out of position for a tool change.
52 96-0103 rev E
June 2002 OPERATION
WAIT OR RESET Cannot perform requested function until program finishes or RESET is
pressed.
WAIT... Requested function is being performed.
WAITING... Waiting for RS-232 input.
WRONG MODE Function requested is available only in another mode.
In addition, the screen display can show one of the following eight types of data in the 18 lines of variable
display:
Program Displays:
The PROGRAM DISPLAY is used to show your program while in either MEM, EDIT, or MDI modes.
Position Display:
The POSITION DISPLAY is used to select the X, Y, Z, or A axes positions in any of several coordinate sys-
tems. The PAGE UP and PAGE DOWN keys select between these.
Offsets Display:
The OFFSETS DISPLAY is used to enter and display tool length offsets, tool radius offsets, coolant positions,
and work offsets. The PAGE UP and PAGE DOWN keys will scroll between these.
96-0103 rev E 53
OPERATION June 2002
PROGRAM D ISPLAYS
The PROGRAM DISPLAY is used to show a program being edited in EDIT mode or a program being run in
MEM. In MEM mode, there is also a PROGRAM REVIEW display available.
The PROGRAM DISPLAY uses 18 lines of the text display area of the CRT to show the command blocks of a
CNC program. The display is 40 positions wide and blocks that are longer than 40 positions are continued on
the next line of the display.
The PROGRAM REVIEW function is available whenever a program is being run. This allows you to review the
program that is running. This is selected by pressing F4 while in MEM mode and PROGRAM DISPLAY. The
screen is changed to an 80 column display with the normal MEM display on the left and PROGRAM REVIEW
on the right. The CURSOR and PAGE UP and PAGE DOWN keys can be used to change the display on the
right to a different part of the program. The display on the left will show the progress of the running program. To
exit PROGRAM REVIEW, select any other display.
While you are running a program, the BACKGROUND EDIT function is available as a standard feature. BACK-
GROUND EDIT allows you to edit any named program in memory while any program is being run in memory.
BACKGROUND EDIT is selected from MEM mode in PROG display by entering Onnnnn with the program
number and pressing F4. The display will change to the selected program while still running the first program.
BACKGROUND EDIT is enabled by parameters in your machine.
POSITION D ISPLAYS
Home Page
This display shows the four displays simultaneously in small characters. The other displays are shown in large
characters. The PAGE UP and PAGE DOWN keys will change displays. The coordinates displayed (operator,
work, machine, or distance to go) are selected using the cursor up and down keys. The last display selected
will be shown in CURNT COMDS and SETNG / GRAPH displays when they are selected. In this display, any
axis that is at the zero position will be highlighted. In the other four displays, the selected axis will be blinking.
Operator Display
This display is for the operator/setup person to use as desired, and is not used by the control for any position-
ing functions. In JOG mode, and with this display selected, the ORIGIN button can be used to set the zero
position. This display will then show position relative to the selected zero position.
Work Display
This display shows how far the tool is away from the X, Y and Z zero of the programmed part. On power up, it
will display the value in work offset G54 automatically. It can only be changed by G54 through G59, G110
through G129, or by a G92 command. The machine uses this coordinate system to run the part.
Machine Display
This display is the machine coordinate system that is automatically set on power up and the first ZERO RET. It
cannot be changed by the operator or any work coordinate systems, and will always show the distance from
machine zero. It can be used by a non-modal G53 command.
Distance To Go
This display is an incremental display that shows the travel distance remaining before the axes stop. When in
the ZERO RET mode, this display shows a diagnostic value. When in JOG mode, this display shows the total
distance jogged. In rigid tapping, this number decreases to zero at the bottom of the hole and then increases
again as the reverse stroke occurs.
54 96-0103 rev E
June 2002 OPERATION
O FFSETS D ISPLAY
Tool length and part zero offsets are displayed and can be entered in the Tool Offsets display. The same offset
number for both Z-axis offset (H1) and tool diameter compensation (D1) can be used because the offset
contains separate values for each. Work offsets can also be specified for the fifth axis B address, in the work
offset display. If the fifth axis is enabled (Setting 78), then additional data fields are made available for the fifth
axis.
PAGE DOWN in the OFSET display will go through all possible tool offsets and then change to the work zero
offsets. PAGE UP will go directly to work zero offsets. The jog handle can also be used to scroll through the
offsets. Work zero offsets may be entered and displayed from this page or using the PART ZERO SET key.
Refer to the "Setup Procedures" section for more information on using this key.
When entering offsets, pressing F1 will set the value to your entry. Pressing WRITE will cause the new value to
be added to the old value. This allows small adjustments to be made to the offsets. Note that entering a
negative entry and pressing WRITE will decrease the value of the offset. F2 will set the negative of the entered
value into the offsets.
There is a geometry and wear value with each offset and these are added together by the control during
operation. The initial value is entered into the geometry column by the setup person. During operation, the
operator makes minor wear changes in the wear column. This method allows the operator to see actual tool
wear by limiting it to the wear column. The geometry values can also be entered automatically by using the
TOOL OFSET MESUR key during setup procedures. Note that this automatic offset measurement works with
G43 only. Refer to the "Setup Procedures" section for more information on using the TOOL OFSET MESUR
key.
The function of the offset display page has been modified slightly to accommodate multiple axes. Only the
axes that are enabled are displayed on the work offset display. For example, if the fourth axis is enabled
(Setting 30), and the fifth axis is not, then the display will show X,Y,Z,A. In this case, all axes can be displayed
on the entire display. If only the fifth axis is enabled, then the display will show X,Y,Z,B. Since the fourth axis is
disabled, there is no need to display it.
If both the A and B axes are enabled, then the last column of the offsets display serves a dual purpose. Either
A or B can be accessed in the last column. By using the left or right arrow keys, the screen cursor can be
moved into the axis field that is to be set. When the rightmost field is highlighted by the cursor and the top of
the column indicates A, then the values in this column represent A axis offsets. If you press the right arrow
key once, the cursor stays in the same place, but the column and its values will change to B axis parameters.
You can view and modify work offsets in this manner using the left and right arrow keys when both axes are
enabled.
Setting 15, "H & T Code Agreement", may be used to force the spindle tool number and offset number to be
equal; otherwise an alarm will occur. This is the preferred setting as it avoids crashes.
Tool diameter may be entered as either radius or diameter. Setting 40 is used to select between these. The
value used for cutter compensation is the sum of the geometry and wear values. The number of flutes on each
tool can be entered. This is used in the calculation of Chip Load. The default is two, the number of flutes for
each tool will also be set to two when the ORIGIN key is pressed while this screen is displayed.
Cutter compensation is controlled by G41 and G42 and the selected tool diameter (D value). Positive values for
cutter compensation work normally. Negative values for cutter compensation cause the opposite side cutter
compensation to be used. This means that G41 with a negative number will be the same as G42 with the same
but positive number.
Offsets may be sent and received with the RS-232 port. Refer to the "Data Input / Output" section for a descrip-
tion of how to do this.
96-0103 rev E 55
OPERATION June 2002
When the COOLANT SPGT of Parameter 57 is enabled, the CLNT POS column of the offset display is acces-
sible. The spigot can be positioned when an M08 is encountered in a program. The current H code is used by
the M08 to determine where to position the coolant spigot. If offset #5 (H05) has 10 entered under the CLNT
POS column, the spigot will be moved to position 10. When the cursor is positioned on the CLNT POS column,
the current spigot position will be shown at the bottom of the display. If the spigot has not been zeroed, the
position will be blank.
The permissible values that can be entered into this column are controlled by Parameter 206, SPIGOT POSI-
TIONS. Entering a value of zero (0) indicates that the spigot will not be moved when an M08 code sequence is
encountered.
The following code sequence demonstrates how the spigot can be commanded:
NOTE: That the tool length and radius offset numbers usually are the same as the tool
number
56 96-0103 rev E
June 2002 OPERATION
The following are the seven current command displays in this control:
The PAGE UP and PAGE DOWN keys are used to select among these displays.
This display also shows the position of the axes. The coordinates displayed (operator, work, machine, or
distance to go) are selected using the cursor up and down keys.
Listed below these times are two M30 counters that are used for counting completed parts. They may be set to
zero independently to provide for the number of parts per shift and total parts. Both counters are increased
when an M30 is operated.
This display may also be used to generate an alarm when a tool has been used a specific number of times.
The last column is labeled "Alarm", and if the number for a tool is not zero, an alarm will be generated when
that count is reached. This number can be changed by the operator. Alarm 362 is generated when the count is
reached, and may be cleared with RESET.
96-0103 rev E 57
OPERATION June 2002
NOTE: Surface Feet per Minute (SFM) and Chip Load are displayed on the Current
Commands page. Note that Setting 40 selects radius or diameter for the tool
geometry. SFM is displayed as fpm (feet per minute) or mpm (meters per
minute), depending on setting 9. This is displayed in inches (typically a few
thousandths) or millimeters (typically a few hundredths).
The tool load monitor function operates whenever the machine is in a feed operation (G01, G02, or G03). The
values entered into the tool load display are checked against the actual spindle motor load. If the limit is
exceeded, the tool overload action specified in Setting 84 (alarm, feedhold, beep, or Autofeed) will be taken. If
"alarm" is selected and the limit is exceeded, Alarm 174, "Tool Load Exceeded", will be generated. This alarm
will stop the axis motors and the spindle motor, turn off the coolant, and disable the servos.
If, during a feed the load exceeds the tool limit and the AUTOFEED feature, is selected, it will automatically
override the feed rate (reduce it) down to the percentage specified by parameter 301 (i.e. 1%) at the rate
specified by parameter 300 (i.e. 0% per second). If the tool load later falls below 95% of the tool load limit
percentage, the AUTOFEED feature will automatically override the feed rate (increase it) back to the feed rate
that was in effect at the start of the feed at the rate specified by parameter 299 (i.e. 0% per second). These
adjustments will be made in 0.1 second increments.
Periodic Maintenance
A periodic maintenance page has been added to the Current Commands screens (titled SCHEDULED MAINTE-
NANCE and accessed by pressing PAGE UP or PAGE DOWN) which allows the operator to activate and
deactivate a series of checks (see Maintenance section).
The ALARMS DISPLAY can be selected at any time by pressing the ALARM / MESGS button. When there are
no alarms, the display will show NO ALARM. If there are any alarms, they will be listed with the most recent
alarm at the bottom of the list. The CURSOR and PAGE UP and PAGE DOWN buttons can be used to move
through a large number of alarms. The CURSOR right and left buttons can be used to turn on and off the
ALARM history display.
The MESSAGE DISPLAY can be selected at any time by pressing the ALARM / MESGS button a second
time. This is an operator message display and has no other effect on operation of the control. Any message
can be typed into the message display and called up later.
You may leave an electronic note to yourself or anyone else by using this feature. The note may be for the
operator to change tools after running a number of parts or it may be a diary for machine maintenance intervals
that are performed. Data is automatically stored and maintained even in a power off state. The message display
page will be come up during power up if there are no alarms present.
To enter messages, press the ALARM / MESGS button twice. You may now enter data by simply typing
directly onto the screen. The cancel and space keys can be used to remove existing messages. The DELETE
button can be used to remove an entire line.
58 96-0103 rev E
June 2002 OPERATION
The PARAMETER DISPLAY can be selected at any time by pressing the PARAM DGNOS button. Changes to
parameters can be made when in any mode except when running a program. The CURSOR up and down
buttons move to different parameters and the PAGE UP and PAGE DOWN buttons move through groups of
parameters. Parameters 1, 15, 29, 43, and 57 are displayed as a single page of discrete flags. Selecting
among the flags is done with the CURSOR left and right buttons. Parameters cannot be changed with the
servos on. The EMERGENCY STOP button can be used to turn off the servos.
For machines with the fifth axis option, the parameter display organization has been modified to accommodate
the extra axis parameters. Parameter numbers have remained the same as in a four-axis control. Additional
parameters have been added for the fifth axis.
The parameters have been reorganized, so that logically-associated parameters are grouped together. These
logical groupings are placed together into contiguous screens called pages. The most commonly changed
parameters have been placed at the beginning of the page list. The following is a list of the parameter pages
and the order of succession in the control:
The HOME key displays the first parameter page COMMON SWTCH. Pressing the PAGE DOWN key will
display the next page of parameters in the above list. The END key displays the last parameter page B
PARAMETERB. Pressing the PAGE UP key will display the preceding page of parameters in the above list. All
other features on the parameters display have remained the same. So, if you are unfamiliar with the new format
of the parameters, you can still search by parameter number. Enter the number of the parameter you want to
see or view and press the up or down arrow key. The page that the parameter is on will be displayed and the
parameter being searched for will be highlighted. Refer to the "Parameters" section for more information.
The DIAGNOSTIC DATA DISPLAY can be selected at any time by pressing the PARAM DGNOS button a
second time. There are two pages of diagnostic data and the PAGE UP and PAGE DOWN buttons are used to
select between them. After this, the current run time and the number of tool changes is displayed.
96-0103 rev E 59
OPERATION June 2002
A five-axis control has additional diagnostic data to be aware of: The first page of diagnostic data shows two
discrete outputs that control the rotary axes brakes; they are labeled Brake 4th Axis and Brake 5th Axis.
The 4th axis is synonymous with the A-axis, and the 5th axis is synonymous with the B-axis. If the Air Brake
Parameter for the axis is set to 1, the HAAS control unclamps the brake whenever motion is commanded to
the rotary axis and sets the brake back to its previous state as soon as the motion stops. The brake is acti-
vated by a relay. The two discrete outputs show the state of the brake relays. If the output is high (1) the brake
is unclamped. When the machine is first powered up the brake will be unclamped, so the output will be low (0).
When the brake is unclamped the message A UNCLMP or B UNCLMP is displayed in the message area near
the bottom of the display.
The M11 and M13 codes command the brake to be unclamped. When these codes are in effect, the axis brake
will remain unclamped even after motion has stopped.
The second page of diagnostic data shows the status of inputs from the motor interface board. Additional inputs
for the expanded motor interface board are listed under INPUTS4. These bits are monitored by the control to
determine if the interface for the B axis is working correctly.
The SETTINGS DISPLAY can be selected at any time by pressing the SETNG / GRAPH button. When the
settings are displayed, changes can be made to any of the settings. There are some special functions in the
settings; refer to the "Settings" section for a more detailed description.
The GRAPHICS FUNCTION is a visual dry run of your part program without the need to move the axes and risk
tool damage from programming errors. This function is far more powerful than using the DRY RUN mode
because all of your work offsets, tool offsets, and travel limits can be checked before any attempt is made to
move the machine. The risk of a crash during setup is greatly reduced.
After loading the program into memory, select MEM (or MDI) and press the SETNG/GRAPH key twice to
select the Graphics Simulation mode. This function operates the same as if running a program on the machine
except no physical machine action occurs.
LOCATOR WINDOW
The lower right part of the screen has two functions: it can display the whole table area and indicate
where the tool is currently located during simulation, or it can be used to display four lines of the
program that is being executed. The F4 key can be used to toggle between these two modes.
60 96-0103 rev E
June 2002 OPERATION
The tool path window can be scaled. After running a program, you can scale any portion of the tool path by
pressing F2 and then using the PAGE DOWN key and the ARROW keys to select the portion of the tool
path that you want to see enlarged. During this process, a rectangle will appear within the TOOL PATH
window and the Locator window indicating what the TOOL PATH window will represent when the zoom
process is complete. The KEY HELP AREA will flash, indicating that the user is rescaling the view. The
locator window always portrays the entire table with an outline of where the TOOL PATH window is zoomed
to. The PAGE UP key unzooms the rectangle one step. After sizing or moving the rectangle, pressing the
WRITE key will complete the zoom process and re-scale the TOOL PATH window. Pressing F2 and then
the HOME key will expand the TOOL PATH window to cover the entire table. After the TOOL PATH window
is re-scaled, the TOOL PATH window is cleared and you must rerun the program, or a portion of it, to see
the tool path. The tool path is not retained in the control.
The scale and position of the TOOL PATH window is saved in Settings 65 through 68. Any scaling per-
formed on the TOOL PATH window is retained. You can leave graphics to edit your program and when you
return, your previous scaling is still in effect.
Z AXIS WINDOW
A long window on the rightmost part of the screen shows the location of the Z-axis and indicates
spindle movement. A horizontal line in the top part of this window represents the tool change position.
CONTROL STATUS
The lower left portion of the screen displays control status. It is the same as the last four lines of all
other displays.
POSITION WINDOW
The location of all enabled axes can be viewed in this window. By default it is OFF. This window can
be opened by pressing the F3 key. Additional presses of the F3 key or the up and down arrows will display
the various position formats that the control keeps track of. This window also displays the current scale of
the tool path window and the current simulated tool number. The value represented by the vertical
dimension of the Tool Path window is labeled Y-SIZE. At power-on, this will be the full Y-axis table travel.
When you zoom into a table area, this value will become smaller, indicating that you are viewing a smaller
portion of the table.
To exit the Graphic mode, select any other display or mode. When you exit Graphics, the graphics image is
lost and must be built again by running the program.
96-0103 rev E 61
OPERATION June 2002
The HELP FUNCTION is selected by pressing the HELP display button. This will bring a mini-manual up on the
CRT. There are 26 topic areas selectable with the A-Z keys. This also includes a directory of the topics. The
areas covered are:
When the HELP display is selected, the alphanumeric keys are used to select one of the above topics; they
are not displayed on the data entry line of the screen.
The CALCULATOR FUNCTION is selected by pressing the HELP key a second time. There are three calcula-
tor pages: Trig Help, Circular Interpolation Help, and Milling/Tapping Help. All of these have a simple calculator
and an equation solver. Trig, Circular, and Milling Help are selected using the PAGE UP and PAGE DOWN
keys. The Fn keys also allow data to be moved from other displays to/from the calculator.
All of the Calculator Help functions have a calculator for simple add, subtract, multiply, and divide operations.
When one of these functions (Trig, Circular, or Milling) is selected, a calculator window appears in the upper left
corner of the screen, and below it the possible operations (LOAD + - * and /). LOAD is initially highlighted, and
the other options can be selected with the left and right cursor arrows. Numbers are entered by typing them in
at the cursor in the lower left corner of the screen and pressing the WRITE key. When a number is entered and
LOAD is selected, that number will be entered into the calculator window directly. When a number is entered
when one of the other functions (+ - * /) is selected, that calculation will be performed with the number just
entered and any number that was already in the calculator window. The calculator will also accept a math-
ematical expression such as 23*4-5.2+6/2. It will evaluate it (doing multiplication and division first) and place
the result, 89.8 in this case, in the register (the window).
F3 In EDIT and MDI modes the F3 key will copy the highlighted triangle/circular/milling/tapping value into
the data entry line at the bottom of the screen. This is useful when you want to use a solution developed for
a program input.
In the Calculator Help function, this button copies the value in the calculator window to the highlighted data
entry for Trig, Circular or Milling/Tapping calculations.
F4 In the Calculator Help function, this button uses the highlighted Trig, Circular or Milling/Tapping data value
to load, add, subtract, multiply, or divide with the calculator.
For inputs that have more than one solution, entering the last data value a second time will cause the next
possible solution to be displayed. The CW/CCW entry is changed to the other value by pressing WRITE.
Milling/Tapping Help
The Milling/Tapping Help page will help you solve three equations relating to milling and tapping. They are:
1) SFM = (CUTTER DIAMETER IN.) * RPM * 3.14159 / 12
2) (CHIP LOAD IN.) = (FEED IN./MIN.) / RPM / #FLUTES
3) (FEED IN./MIN.) = RPM / (THREAD PITCH)
With all three equations, you may enter all but one of the values and the control will compute the remaining
value and display it. Note that the RPM value for equations 1 and 2 are the same entry.
When Metric units are selected, the units displayed change to millimeters, mm per minute, threads per mm,
and meters, respectively.
Materials
The Milling calculator has been enhanced to include a new field called MATERIAL, which when highlighted,
allows the operator to select a type of material from the list below using the left and right arrow keys. Note that
one of the materials is always selected (the first in the list is the default) and the list wraps around at the end.
A recommended surface speed and chip load will be displayed based on the material chosen, as shown below
on the right.
Also, the required horsepower will be calculated and displayed as shown below on the right.
When in metric mode, the required power is displayed as KW. The remaining calculator functions are un-
changed.
96-0103 rev E 63
OPERATION June 2002
Unspecified Material
The material type displayed when the calculator is first accessed is PRESS < or > FOR MATERIALS and no
recommendations are displayed. The user can select any material from the list and the recommended data will
be displayed as before, or return to the unspecified material.
Travel limits in this machine are defined by a limit switch in the positive direction and by stroke limits set by
parameter in the negative direction. Prior to establishing the home positions with the POWER UP/RESTART or
AUTO ALL AXES buttons, there are no travel limits and the user must be careful not to run the table into the
stops and damage the screws or way covers.
Prior to establishing the home positions (POWER UP/RESTART or AUTO ALL AXES), jogging is normally not
allowed. Setting 53 can be turned on to allow jogging prior to zero return but this defeats the travel limits and
you may damage the machine running the axes into the stops.
Note that all motion is in a negative direction from machine zero except for the Z-axis that can move about 4.5
inches up from machine zero. There are no travel limits for the fourth, A, axis. Travel limits for any auxiliary
axes are set into those single axis controls.
When jogging, an attempt to move past the travel limits will not cause an alarm but the axis will stop at the
limit. The JOG handle inputs may be ignored in this case.
When running a program, an attempt to move outside of the travel limits will cause an alarm prior to starting the
motion and the program will stop. An exception is a circular motion which starts and ends inside of the travel
limits but moves outside of the limits during the motion. This will cause an alarm to occur part way through the
motion.
Travel limits apply even when running a program in Graphics mode. An alarm is generated and the program will
stop.
64 96-0103 rev E
June 2002 OPERATION
The feed rate can be varied from 10% to 200% of the programmed value while in operation. This is done with
the feed rate +10%, -10% and 100% buttons. The FEED RATE override is ineffective during G74 and G84
tapping cycles. FEED RATE override does not change the speed of any auxilliary axes. During manual jogging,
the feed rate override will adjust the rates selected from the keypad. This allows for fine control of the jog
speed.
The spindle speed can also be varied, from 10% to 150%, using the SPINDLE overrides as above. It is also
ineffective for G74 and G84. In the SINGLE BLOCK mode, the spindle may be stopped. It will automatically
start up upon continuing the program.
By pressing the HANDLE CONTROL FEEDRATE key, the jog handle can be used to control feedrate from 0%
to 999% in +/-1% increments. By pressing the HANDLE CONTROL SPINDLE key, the jog handle can be used
to control spindle speed in +-1% increments (from 0 to 999%).
Rapid moves (G00) may be limited to 5, 25, or 50 % of maximum using the keypad. If the 100% rapid is too
fast, it may be set to 50% of maximum by Setting 10.
In the Setting page, it is possible to disable the override keys so that the operator cannot select them. This is
Setting 19, 20 and 21.
The FEED HOLD button acts as an override button as it sets the rapid and feed rates to zero when it is
pressed. The CYCLE START must be pressed to proceed after a FEED HOLD. When in a FEED HOLD, the
bottom left of the screen will indicate this. The door switch on the enclosure also has a similar result but it will
display "Door Hold" when the door is opened. When the door is closed, machine operation will continue
normally. Door hold can be prevented with Setting 51. Door Hold and FEED HOLD do not stop any auxiliary
axes.
When Parameter 57 flag DOOR STOP SP is set to 1, the door switch will stop the servos and the spindle. In
addition, the maximum spindle speed is 750 RPM with the doors open.
There is also an override function for the coolant supply. This is done from the Setting 32. The "NORMAL"
setting checks the low coolant alarm and turns the pump on and off with M codes. The "OFF" setting ignores
the coolant alarm but will alarm if an attempt is made to turn the coolant on. The "IGNORE" setting is used to
ignore all coolant commands and the low coolant alarm.
At any time a program is running, the operator may override the coolant setting by pressing the MDI Coolant
button. The pump will remain either on or off until the next M command or operator action.
Overrides can now be reset through to defaults upon processing M30 and/or RESET. This feature is selected
by Setting #83.
96-0103 rev E 65
OPERATION June 2002
2.21 RUN-STOP-JOG-CONTINUE
This feature allows the operator to interrupt program execution, jog away from the part, return to the interruption
point, and then resume program execution. The following is an operation procedure:
1. While a program is running, press FEED HOLD. This will stop all motion (after any canned cycle in
process has been completed.)
2. Press X, Y or Z followed by HANDLE JOG. The control will store the current XYZ positions. Note
that axes other than X, Y, and Z cannot be jogged.
3. The control will display JOG AWAY. The operator can jog (using the jog handle, remote jog handle,
jog and jog-lock buttons) to move the tool away from part, press AUX CLNT to cycle the Through
Spindle Coolant (TSC), press COOLNT to cycle the coolant stream, press CW, CCW, STOP,
TOOL RELEASE, the jog increment buttons and use the increment switch on the remote jog
handle. Note that AUX CLNT requires that the spindle be rotated and that the door be closed. Tools
can be swapped out and the associated length and diameter offsets adjusted, however, when the
program is continued, the old offsets will still be used for the return position and any motion
commands already in the queue. It is therefore unsafe to swap out tools and adjust offsets when
the program was interrupted during a cut.
4. Jog to a position as close as possible to the stored position, or to a position where there will be an
unobstructed rapid path back to the stored position.
5. Return to the previous mode by pressing MEM, MDI, or DNC. The control will only continue
normally if the mode that was in effect at the time of the interrupt is re-entered.
6. Press CYCLE START. The control will display the message JOG RETURN and rapid X and Y at
5% to the position when FEED HOLD was pressed, then the same for Z. The rapid rate override
keys have no effect during JOG RETURN. Caution: The control will not follow the path the operator
used to jog away. Instead, it will perform simple moves without regard for obstacles. Therefore, a
crash is possible. If FEED HOLD is pressed during this motion, the control will go into a feed hold
state and display the message JOG RETURN HOLD. Pressing CYCLE START will cause the
control to resume the JOG RETURN motion. When the motion is completed, the control will again
go into a feed hold state.
7. Press CYCLE START again and the program will resume normal operation.
66 96-0103 rev E
June 2002 OPERATION
High speed machining makes it possible for an increase in the removal rate of material, improve surface finish,
and reduce cutting forces. This will reduce machining costs and extend the life of the tools. An additional
advantage to using high speed machining is to utilize the more current tool cutting edge materials and tool
coatings that are available. The only limitation to high speed machining is the need for rigid, powerful machines
capable of the required speeds and feeds, and having a fixture strong enough to hold the workpiece.
Recommended Tooling
Balanced tools and tool holders are a must to maintain excellent machining conditions. Vibrations during chip
cuttings relate directly to early tool failure, poor part finish and even possible spindle damage. Therefore the
design of the tool holder increases in importance as the speed increases.
The items necessary for proper high speed machining are toolholder taper cone accuracy, concentric relation-
ship of the cutting tool pocket to the tool holder cone, and actual size tolerance of the tool pocket. The fit
between the tool holder and the spindle is the starting point for the machining center. An improved fit for these
two items is essential for hi-speed machining success. Size and tolerance of toolholding features such as bore
or pilot size should not exceed two or three ten-thousandths of an inch. Concentricity of the toolholding feature
(bore or pilot) relative to the tapered shank this should also be within two or three thousandths of an inch.
Where possible use the minimum collet envelope relative to bore size. In other words use the largest bore size
for the smallest collet envelope to achieve high grip force with reduced tool holder mass. This also helps in
keeping the amount of centrifugal force low and will allow the highest speed possible in relation to the balance
specification limitations.
The tool assembly must be balanced to a degree of accuracy that matches the machine spindle requirement.
This means a balancing operation will have to be performed, or check the balanced condition of the assembly,
each time there is a new tool assembly created or a significant change is made to the existing tool assembly.
A significant change could be adjusting cutting tools, changing any part of the tool holder, regrinding or altering
a cutting tool, or changing to a new cutting tool or a new tool holder. In order to thoroughly balance the tool
holder the retention knob and cutting tool must be in place. Commercial balancing machines give accurate
measurement regarding the balance of the tool assembly. Such equipment would be necessary for the initial
balancing and eventual rebalancing operations.
The tool holders should be an AT-3 or better with a nylon back-up screw. The tolerances maintained in the AT-3
design are the minimum that would be recommended for a high speed process. The nylon back-up screw
increases collet grip on the tool and creates a better seal to aid in coolant transfer.
Use single angle collet chucks and collets for best grip and concentricity. These collet systems are made up of
a long single angle located in the holder. The angle per side should be eight degrees or less for best results.
Avoid double angle collet systems when maximum rigidity and close tolerance are dictated. It is recommended
that minimum engagement of 2/3 of the full length of the bore in the double split single angle collet. However for
better results 3/4 to full engagement is preferred if possible.
Collet envelope is the combination of the maximum bore size and the outside shape designation.
Consult the tool holder manufacturer for the current specifications and capabilities of their tool holders. This
would include the AT rating and maximum RPM that the tool holder is rated for.
96-0103 rev E 67
OPERATION June 2002
Options that normally require a unlock code to activate (Rigid Tap, Macros, etc.) can now be activated and
deactivated as desired simply by entering the letter 1 instead of the unlock code to turn it on. Enter a 0 to turn
off the option. An option activated in this manner will be automatically deactivated after a total of 200 power-on
hours. Note that the deactivation only occurs when power to the machine is turned off, not while it is running.
An option can be activated permanently by entering the unlock code. Note that the letter T will be displayed to
the right of the option on the parameter screen during the 200 hour period. Note that the safety circuit option is
an exception; it can be turned on and off only by unlock codes.
68 96-0103 rev E
June 2002 PROGRAMMING
3. PROGRAMMING
These machines have three linear axes named X, Y, and Z. The X axis moves the table left and right, the Y axis
moves it to and from the operator and the Z moves the milling head up and down. The machine zero position is
the upper right corner of the mill table. All moves from this point are in a negative machine direction. If a rotary
table is connected, an additional A-axis work offset is provided.
Work offsets are found in the Offset display by pushing the PAGE UP key. You can display and manually enter
work offsets from here. The work coordinate systems on a control with a fifth axis have all been expanded to
accommodate B, the fifth axis. Work coordinate offsets can be set for the B axis in the offset display. Note that
the auxiliary axes C, U, V, and W do not have any offsets; they are always programmed in machine coordi-
nates.
The Home or machine zero position is X0, Y0, Z0. Travel in the positive direction for the X and Y axes is limited
simply to values less than zero. Positive travel for the Z axis is limited to the highest position used for tool
changing (about Z4.5). In addition, positive travel for all axes is limited by the home switch, which acts as a
limit switch.
Before a tool can machine your part, the control must know where your part is. The work coordinate system
tells the control the distance from the work zero point of your part to the machine zero position. The work zero
point of the part is decided by the programmer and usually is the common point from which all print dimensions
are referenced. The machine zero position is fixed by the machine on power up and does not change. The
operator must determine this distance and enter the work zero offset value.
This control automatically chooses the G54 offset values on power-up. If you do not wish to use these, zero out
the values in the G54 X, Y, and Z columns or select another work offset.
The G54 through G59 or G110 through G129 offsets can be set by using the PART ZERO SET key. Position the
axes to the work zero point of your part. Using the cursor, select the proper axis and work offset number. Press
the PART ZERO SET key and the current machine position will be automatically stored in that address. This
will work only with the work zero offset display selected. Note that entering a nonzero Z work offset will interfere
with the operation of an automatically entered tool length offset.
Work coordinates are usually entered as positive numbers, except when Parameter 57, bit Neg. Work Offset
is set to 1. In this case, the work coordinate numbers are entered as negative numbers.
Work coordinates are entered into the display using numbers only. To enter an X value of X2.00 into G54, you
would cursor over to the X column and enter the number 2.0 only.
See the sections on G52, G92, and Setting 33 for more on work coordinate systems.
Offsets can be sent and received with the RS-232 port. See the Data Input / Output section for information on
how to do this.
96-0103 rev E 69
PROGRAMMING June 2002
A CNC part program consists of one or more blocks of commands. When viewing the program, a block is the
same as a line of text. Blocks shown on the CRT are always terminated by the ; symbol which is called an
EOB. Blocks are made up of alphabetical address codes and the / symbol. Address codes are always an
alphabetical character followed by a numeric value. For instance, the specification of the position to move the X-
axis would be a number preceded by the X symbol.
The / symbol, sometimes called a slash, is used to define an optional block. A block that contains this
symbol can be optionally deleted with the BLKDEL button when running a program.
There is no positional requirement for the address codes. They may be placed in any order within the block.
The following is a sample program as it would appear on the CRT. The words following the : are not part of the
program but are put here as further explanation.
This program will drill four holes and mill a two-inch hole in a four-inch square plate with X and Y zero at the
center. The program with comment statements would appear like this.
% :PROGRAM MUST BEGIN AND END WITH %
O1234 (OP1 SAMPLE MILL PART) :PROGRAM # AND COMMENT STATEMENT
N1 (TOOL IS A ½ INCH STUB DRILL) :(******) NOTES TO OPERATOR
N5 G40 G49 T M06 :
N100 G00 X0 Y0 Z.5 G43 H1 M3 S1400 T2 :RAPID TO POS, OFFSET 1, SPIN FWD
N101 G01 Z.2 F30. :FEED 30 INCH/MINUTE TO Z DEPTH
N102 G83 G98 Z-.625 R.03 Q.2 F5. :PECK TO Z-.625 START .03 ABOVE
N103 X1.5 Y1.5 :DRILL ANOTHER HOLE AT NEW X,Y
N104 Y-1.5 :DRILL 3RD HOLE, PECK DEPTH IS .20
N105 X-1.5 :DRILL FOURTH HOLE
N106 Y1.5 :DRILL FIFTH HOLE
N107 G00 G80 Z.5 :CANCEL CANNED CYCLE
N108 T2 M06 :TOOL CHANGE TO TOOL #2
N2 (T IS 5/8 90 DEG. COUNTERSINK) :N### ARE LINE NUMBERS
N200 G00 X0 Y0 Z.5 G43 H2 M3 S500 :OFFSET 2, SPINDLE SPEED 500 RPM
N201 G01 Z.2 F30. :FEED TO Z AT 30 INCH PER MINUTE
N202 G82 G98 Z-.27 R.0 F5. :SPOT DRILL CYCLE, DRILL AT X0 Y0
N203 X1.5 Y1.5 :SEC HOLE R=START PLANE ABOVE ZERO
N204 Y-1.5 :3RD HOLE G98=RETURN TO INIT POINT
N205 X-1.5 :FOURTH HOLE
N206 Y1.5 :FIFTH HOLE
N207 G00 G80 Z.5 :RAPID TO Z.5
N208 G28 X0 Y0 Z2.0 :ZERO RETURN AFTER MOVE TO X0, Y0
N209 T M06 :TOOL CHANGE
N3 (TOOL IS A ½ END MILL) :N # S ARE FOR YOUR CONVENIENCE
(SET DIAMETER VALUE TOOL) :COMMENTS ARE IGNORED BY CONTROL
N300 G00 X0 Y0 Z.5 G43 H3 M3 S1000 :G43 = OFFSET Z IN MINUS DIRECTION
N301 G01 Z.2 F30. :G01 CAN BE SPECIFIED AS G1
N302 Z-.625 F5. :FEED TO DEPTH
N303 G01 G41 X-1.00 :COMPENSATE CUTTER LEFT OF LINE
N304 G03 I1.0 D1 :CUT CIRCLE CCW WITH TOOL DIA D1
N305 G00 G40 X00 :RAPID TO CENTER, G40 CANCELS COMP
N306 G00 Z.5 :RAPID OUT OF PART
N307 G28 :ZERO RETURN, Z GOES FIRST THAN X,Y
M30 :RESET PROGRAM TO BEGINNING
% :END OF TAPE
70 96-0103 rev E
June 2002 PROGRAMMING
Please note that each tool is different, which shows the flexibility of the control. For example, to change tools,
all that is needed is an M06 command even without a G28 in the previous line. Also, a G28 command can be
specified as G28 X0 Y0 Z0 or simply as G28. A T command can be put in with the M06 or it can be specified
earlier in the program. This gives maximum compatibility with other controls.
More than one program can be stored in the memory of the CNC. Every program stored has an Onnnnn
program name address code to define the number of that program. Those numbers are used to identify the
program for selection as the main program being run or as a subprogram called from a main program.
The following is a list of the address codes used in programming the CNC.
E Contouring accuracy
The E address character is used, with G187, to select the accuracy required when cutting a corner during high-
speed machining operations. The range of values possible for the E code is 0.0001 to 0.25. Refer to the
Contouring Accuracy section for more information.
F Feed rate
The F address character is used to select the feed rate applied to any interpolation functions, including pocket
milling and canned cycles. It is either in inches per minute with four fractional positions or mm per minute with
three fractional positions. When G93 (Inverse Time) is programmed, F is in blocks per minute, up to a maxi-
mum of 15400.0000 inches per minute (39300.000 millimeters per minute).
96-0103 rev E 71
PROGRAMMING June 2002
N Number of block
The N address character is entirely optional. It can be used to identify or number each block of a program. It is
followed by a number between 0 and 99999. The M97 function must reference an N line number.
O Program number/name
The O address character is used to identify a program. It is followed by a number between 0 and 99999. A
program saved in memory always has an Onnnnn identification in the first block; it cannot be deleted. Altering
the O in the first block causes the program to be renamed. An Onnnnn can be placed in other blocks of a
program but will have no effect and can be confusing to the reader. A colon (:) may be used in the place of O in
a program, but is always displayed as O.
72 96-0103 rev E
June 2002 PROGRAMMING
96-0103 rev E 73
PROGRAMMING June 2002
General Tips
D Cursor Searching for a Program. When in EDIT or MEM mode, you can select and display another
program quickly by entering the program number (Onnnnn) you want and pressing either the up or down cursor
arrow or F4.
D Searching for a Program Command. Searching for a specific command in a program can be done in
either MEM or EDIT mode. Enter the address letter code (A, B, C, etc.) or address letter code with the value
(A1.23), and press the up or down cursor arrow. If you enter just the address code and no value, the search will
stop at the next use of that letter, regardless of the value
D Spindle Command. You can stop or start the spindle with CW or CCW any time youre at a Single Block
stop or a Feed Hold. When you restart the program with CYCLE START, the spindle will be turned back on to
the previously defined speed.
D Coolant Pump. The coolant pump can be turned on or off manually while a program is running, by pressing the
COOLNT button. This will override what the program is doing until another M08 or M09 coolant command is ex-
ecuted. This also applies to the chip conveyor.
D Coolant Spigot Position. The coolant spigot position can be changed manually when a program is running,
with the CLNT UP or CLNT DOWN key. This will override what the program commands until another spigot
position is commanded with an Hnn or M08 command.
D Optional Stop. Takes effect on the line after the highligted line when pressed.
D Block Delete. Takes effect four lines after that key is pressed when Cutter Compensation is in use, or two
lines later when Cutter Compensation is not in use.
D Block Look-Ahead. This control actually does look ahead for block interpretation, up to 20 blocks. This is
not needed for high-speed operation. It is instead used to ensure that DNC program input is never starved, and
to allow Cutter Compensation to have non-XY moves inserted while Cutter Compensation is On.
D Memory Lock Key Switch. This is a machine option that prevents the operator from editing programs and
from altering settings when in the locked position.
74 96-0103 rev E
June 2002 PROGRAMMING
D Chip Conveyor. The chip conveyor can be turned on or off when a program is running, either manually using
the control keys or in the program using M codes. The M code equivalent to CHIP FWD is M31, CHIP REV is
M32, and CHIP STOP is M33. You can set the Conveyor Cycle time (in minutes) with Setting 114, and the
Conveyor On-Time (in minutes) with Setting 115.
D Transferring an MDI Program. You can transfer and save a program in MDI to your list of programs. When
in the MDI display, make sure that the cursor is at the beginning of the MDI program. Enter a program number
(Onnnnn) thats not being used. Then press ALTER and this will transfer the MDI data into your list of programs
under that program number.
D To Rapid an Axis Home. You can rapid all axes to machine zero by pressing the HOME G28 key. You can
also send just one axis (X, Y, Z, A or B) to machine zero in rapid motion. Enter the letter X, Y, Z, A or B, then
press HOME G28 and that axis alone will rapid home. CAUTION! There is no warning to alert you of any possible
collision! For example, if the Z axis is down near the part or fixture on the table, and then the X or Y axis is sent
home using HOME G28, a crash may result. Care must be exercised. (Any Mill Control ver. 9.49 and above;
any Lathe Control ver. 2.24 and above.)
D Rotate Tool Carousel without Changing Tools (M39). You can rotate the tool carousel without changing
tools by using M39 and Tnn. This can be used to recover from some unusual conditions. However, it will also
tell the control you have a different tool in the spindle, which may not be the case. (Any Mill Control ver. 2.3 and
above.)
PRGRM /CONVRS
D Program Review. In the PRGRM display, Program Review allows you to cursor through and review the active
program on the right side of the display screen, while also viewing the same program as its running on the left
side of the screen. To bring up Program Review, press F4 while running a program in MEM mode and PRGRM
display.
D Background Edit. This feature allows you to edit a program in MEM mode and PRGRM display while a
program is running. Type in the program number you want to edit (Onnnnn) and press F4. You can then do
simple edits (INSERT, ALTER, DELETE and UNDO) either to an existing program, a new program or even the
program that is presently running. However, edits to the program that is running will not take effect until that
program cycle ends with an M30 or RESET.
POSIT
D Quick Zero on DIST-TO-GO Display. To clear out and get a quick zero position display, for a distance
reference move, use the DIST-TO-GO position display. When youre in the POSIT display and in HANDLE JOG
mode, press any other operation mode (EDIT, MEM, MDI, etc.) and then go back to HANDLE JOG. This will zero
out all axes on the DIST-TO-GO display and begin showing the distance moved.
D To Origin the POS-OPER Display. This display is used for reference only. Each axis can be zeroed out
independently, to then show its position relative to where you selected to zero that axis. To zero out a specific
axis, PAGE UP or PAGE DOWN in the POSIT display to the POS-OPER large-digit display page. When you
Handle Jog the X, Y or Z axis and then press ORIGIN, the axis that is selected will be zeroed. Or, you can
press an X, Y or Z letter key and then ORIGIN to zero that axis display. You can also press the X, Y or Z key
and enter a number (X2.125), then press ORIGIN to enter the number in that axis display.
D Jog Keys. The JOG keys (+X, -X, +Y, -Y, +Z, -Z, +A, -A, +B, -B) use the jog speeds of 100., 10., 1. and .1
inches per minute listed next to the HANDLE JOG key (jogging with the handwheel uses the .1, .01, .001 and
.0001 inch increments). You can also adjust feedrate using the FEED RATE OVERRIDE buttons, which allow
you to increase or decrease feedrate in 10% increments, up to 200%.
D Jog Keys. You can also select an axis for jogging by entering the axis letter on the input line and then press-
ing the HANDLE JOG button. This works for the X, Y, Z, and A axes as well as the B, C, U, and V auxiliary axes.
96-0103 rev E 75
PROGRAMMING June 2002
OFSET
D Entering Offsets. Pressing WRITE/ENTER will add the number in the input buffer to the cursor-selected
offset value. Pressing F1 will replace the selected offset with the number in the input buffer.
D Entering Offsets. Pressing OFSET again will toggle back and forth between the Tool Length Offsets and Work
Zero Offsets pages.
D Entering Offsets. In the OFSET display, F1 will set the entered value into the offsets. F2 will set the negative
of the entered value into the offsets.
D Coolant Spigot Position. The coolant spigot can be programmed to move to the location entered in the
OFSET display, on the Tool Geometery Offset page under CLNT POS. You can adjust the coolant nozzle up to
10 different positions for a tool. Position 1 is the farthest up and 10 is the farthest down. The nozzle will shift to
that position whenever an M08 or Hnn code is executed in the program. When you cursor onto the CLNT POS
column, the coolant nozzle location is displayed in the lower left corner.
D Clearing All Offsets and Macro Variables. When youre in the Tool Length Offset display, you can clear all
the offsets by pressing the ORIGIN key. The control will prompt: ZERO ALL (Y/N)? to make sure this is what
you really want to do. If Y is entered, all the offsets in the area being displayed will be zeroed. The Work Zero
Offset page and the Macro Variables page in the CURNT COMDS display will do the same thing. (Any Mill
Control ver. 10.02 and above; any Lathe Control ver. 3.00 and above.)
D The Mill Offers up to 200 Tool Offsets. Mills now offer up to 200 tool offsets. In all previous versions, the
maximum number available was 100 tool offsets. (Any Mill Control ver. 10.22 and above.)
CURNT COMDS
D Current Commands. You can see the programmed spindle speed and feedrate on the first page of the CURNT
COMDS display, by looking at PGM Fnnnn and PGM Snnnn in the column on the far right. You can verify the
actual feedrate and commanded spindle speed in the same column, with ACT Fnnnn and CMD Snnnn. The actual
speed and feed are what the spindle speed and feedrate are really operating at with any adjustments to the
OVERRIDE keys.
D Tool Life Management. In the CURNT COMDS display, you can PAGE DOWN to the Tool Life manage-
ment page. On this page the tool Usage register is added to every time that tool is called up in the spindle. You
enter the number of times you want that tool to be used in the Alarm column. When the Usage number for that
tool reaches the number of uses in the Alarm column, it will stop the machine with an alarm. This will help you
monitor tools to prevent them from breaking and parts being scrapped.
D Tool Load Management. The next PAGE DOWN in CURNT COMDS will bring you to the Tool Load page.
Spindle load condition can be defined for a particular tool, and the machine will stop if it reaches the spindle
load limit defined for that tool. A tool overload condition can result in one of four actions by the control. The
action is determined by Setting 84. ALARM will generate an alarm when overload occurs; FEEDHOLD will stop
with a Feed Hold when overload occurs; BEEP will sound an audible alarm when overload occurs; or
AUTOFEED will automatically decrease the feedrate. This will also help you monitor tools.
D Clearing Current Commands Values. The values in the CURNT COMDS display pages for Tool Life, Tool
Load and Timer registers can be cleared by cursor-selecting the one you wish to clear and pressing ORIGIN.
To clear everything in a column, cursor to the top of that column (onto the title) and press ORIGIN.
HELP
D Helpful Information. The HELP display has a list of all the G and M codes available. To see them, press
the HELP display key and then the letter C. For a listing of all the different subjects available in the Help
directory, press the letter D, then press the letter thats next to the subject area you wish to see.
76 96-0103 rev E
June 2002 PROGRAMMING
CALC
D Transferring Simple Calculations. While in the Trigonometry, Circular or Milling and Tapping calculator, the
number in the simple calculator box (in the upper left corner) can be transferred down to any cursor-selected
data line. Cursor to the register you wish to transfer the calculator number to and press F3.
D Transferring Calculated Values. You can transfer the highlighted value in a Trig, Circular, or Milling data
register into the calculator box by pressing F4. Use the up and down arrow keys to select the data registers,
including the calculator box, and the left and right arrows to select LOAD + * /. To enter a highlighted data
value into the calculator box, LOAD must be selected when you press F4. If one of the operations is selected,
pressing F4 will perform that operation using the number in the highlighted data register and the number in the
calculator box.
D Transferring to EDIT or MDI. In either EDIT or MDI mode, pressing F3 will transfer the number in the
calculator box (when the cursor is on the number in the box) to either the EDIT or MDI input buffer. You will
need to enter the letter (X, Y or Z) you wish to use with the number from the calculator.
D Circular Calculator. The Circular Calculator will list four different ways that a circular move can be pro-
grammed using the values entered for a calculated solution. Four different program lines for executing the circular
move will be listed at the bottom of the display. One of the four program lines can be transferred to either EDIT or
MDI.
1. In the circular calculator, cursor onto the program line you wish to use.
2. Press either EDIT or MDI, where you wish to insert the circular move.
3. Press the F3 key, which will transfer the circular move that you highlighted into the input buffer line
at the bottom of the EDIT or MDI display.
4. Press INSERT to add that circular command line into your program.
D One-Line Expressions. The CALC display will now accept and evaluate a simple expression. This is a new
feature; previously it was only possible to enter a number into the input line of the calculator. Now, the calcula-
tor allows you to enter a simple, one-line expression without parentheses, such as 23*45.2+6/2. It will be
evaluated when the WRITE/ENTER key is pressed and the result (89.8 in this case) displayed in the calculator
box. Multiplication and division are performed before addition and subtraction. (Any Mill Control ver. 9.49 and
above; any Lathe Control ver. 2.24 and above.)
SETNG
D Scrolling through Settings with Jog Handle. The jog handle can now be used to scroll through the
settings. (Any Mill Control ver. 10.15 and above; any Lathe Control ver. 3.05 and above.)
D There are so many settings which give the user powerful and helpful command over the control that you
should read the entire Settings section of the operators manual. Here are some of the useful settings, to give
you an idea of what is possible.
Setting 1 AUTO POWER OFF TIMER. This turns the machine off after it is idle for the number of minutes
defined in this setting.
Setting 2 POWER OFF AT M30. This will power off the machine when an M30 command is executed. In
addition, for safety reasons, the control will turn itself off if an over-voltage or overheat condition is detected for
longer than four minutes.
96-0103 rev E 77
PROGRAMMING June 2002
Setting 8 PROG MEMORY LOCK. When this is Off, control program memory can be modified. When this
setting is turned On, memory edits cannot be done and programs cannot be erased.
Setting 9 DIMENSIONING. This changes the machine control from inch to metric, which will change all offset
values and position displays accordingly. This setting will not change your program to either inch or metric.
Setting 31 RESET PROGRAM POINTER. When this is On, the RESET key will send the cursor (program
pointer) back to the beginning of the program.
Setting 77 SCALE INTEGER F. This can be used to change how the control interprets a feedrate. A feedrate
that is entered in your program can be misinterpreted if you do not enter a decimal point in the Fnn command.
The selections for this setting are Default, which assumes a 4-place decimal if no decimal point is entered (i.e.,
if you enter a 1, it assumes you mean 0.0001); Integer, which assumes a whole number (enter a 1, it assumes
1.0); or .1 (enter 1, it assumes 0.1), .01 or .001 (you get the idea), or .0001, which is the same as the Default
setting.
Setting 84 TOOL OVERLOAD ACTION. This is used to determine tool overload conditions as defined by the
Tool Load monitor page in the CURNT COMDS display (use PAGE DOWN to get there). A tool overload condi-
tion can result in one of four actions by the control, depending on Setting 84. ALARM will generate an alarm
when overload occurs; FEEDHOLD will stop with a Feed Hold when overload occurs; BEEP will sound an
audible alarm when overload occurs; or AUTOFEED will automatically decrease the feedrate.
Setting 85 MAX CORNER ROUNDING. On a Haas control, this setting is used to set the corner rounding
accuracy required by the user. The accuracy defined in Setting 85 will be maintained even at maximum
feedrate. The control will only slow at corners when it is needed. (This setting defeats all the years of discus-
sion by competitors who say you need multiple blocks of look-ahead.)
Setting 88 RESET RESETS OVERRIDE. When this is On, the RESET key sets all overrides back to 100%.
Setting 103 CYC START / FH SAME KEY. This is really good to use when youre carefully running through a
program. When this setting is On, the CYCLE START button functions as the Feed Hold key as well. When
CYCLE START is pressed and held in, the machine will run through the program; when its released, the
machine will stop in a Feed Hold. This gives you much better control when setting up a new program. When
youre done using this feature, turn it Off. This setting can be changed while running a program. It cannot be On
when Setting 104 is On. (Any Mill Control ver. 9.06 and above.)
Setting 104 JOG HANDL TO SNGL BLK. When running a program in MEM mode in the Program or Graphics
display, you can use the SINGLE BLOCK key to cycle through your program one line at a time, with each
press of the CYCLE START button, whether the machine is in operation or youre in Graphics. If you turn
Setting 104 On, then each counterclockwise click of the jog handle will step through a program line. Turning
the handle clockwise will cause a Feed Hold. This setting can be changed while running a program. It cannot
be On when Setting 103 is On. (Any Mill Control ver. 9.06 and above.)
Setting 114 CONVEYOR CYCLE (MIN). If this is set to zero, the conveyor will operate normally. If another
number is entered, it defines how long (in minutes) each cycle will be when the chip conveyor is turned on. The
chip conveyor cycle is started with either an M code (M31 or M32) or with the control CHIP FWD/REV keys. It
will stay on for the time defined in Setting 115, then turn off and not restart until the cycle time in Setting 114 has
elapsed.
Setting 115 CONVEYOR ON TIME (MIN). This setting works with Setting 114, which defines the conveyor
cycle time. Setting 115 defines how long the chip conveyor will stay on during each cycle.
78 96-0103 rev E
June 2002 PROGRAMMING
Setting 118 M99 BUMPS M30 CNTRS. When this setting is Off, the feature is disabled. When it is On, an
M99 command that is used to run a program repeatedly will activate the M30 counters that are in the CURNT
COMNDS display (PAGE DOWN twice). Note that an M99 will only activate the counters when it is used in a
loop mode in a main program, not a subprogram. An M99 thats used as a subprogram return or with a P value
to jump to another part of the program won't be counted. (Any Mill Control ver. 9.58 and above. Any Lathe
Control ver. 3.00 and above.)
Setting 130 RIG. TAP RETRACT MULT. This feature augments one introduced in version 10.13, the quick
reversal out of a G84 rigid-tapped hole. If it is set to 0 or 1, the machine behaves normally. Setting it to 2 is the
equivalent of a G84 command with a J value of 2. That is, the spindle will retract twice as fast as it went in. If
this setting is set to 3, the spindle will retract three times as fast. Note that specifying a J value in a G84
command for rigid tapping will override Setting 130. (Any Mill Control ver. 10.18 and above).
GRAPH
D Zooming in. In Graphics display, use F2 to zoom in on the graphic. After pressing F2, press PAGE DOWN
to zoom in further and PAGE UP to expand the view. Use the cursor arrows to position the zoom window over
the section of the part that you wish to view in close-up. Press WRITE/ENTER to save the new zoom window,
and CYCLE START to see the close-up graphic run. Press F2 and then HOME to get back to the original full
table view.
PARAM
D Changing Parameters. Parameters are seldom-modified values that change the operation of the machine.
These include servo motor types, gear ratios, speeds, stored stroke limits, lead screw compensations, motor
control delays and macro call selections. Modifying some of these functions will void the warranty on the
machine. If you need to change parameters, contact Haas Automation or your dealer. Parameters are protected
from being changed by Setting 7. Be sure to download and save a copy of your machine parameters so youll
have a back-up if needed (refer to the LIST PROG section to see how to save your offsets, settings and param-
eters to a floppy disk).
DGNOS
This display is used to show the status of the machine for diagnostics and servicing.
ALARM
D Alarm History Display. There is an alarm history that displays the previous 100 alarms. Pressing the right
or left cursor arrow while in the Alarm display will list the last 100 alarms, with their date and time. You will
need to use the cursor up arrow to see the alarms previous to the last one. Pressing either the left or right
arrow again will bring you back to the normal Alarm display.
D Alarm History Saved to Disk or RS232. The last 100 alarms can be saved to a floppy disk by entering a file
name and pressing F2 while on the Alarm history page. Alternately, the alarm history can be sent to a PC
using RS232 by pressing SEND RS232.
MESGS
D Leaving Messages. You can enter a message in the MESGS display for the next person, or for yourself. It
will be the first display shown when you power up the machine, if there are no alarms other than the usual 102
SERVOS OFF alarm. If the machine was powered down using EMERGENCY STOP, the MESGS display will
not show up when you turn the machine on again. Instead, the control will display the active alarm generated
by the emergency stop. In this case, you would have to press the ALARM/MESGS key to view a message.
96-0103 rev E 79
PROGRAMMING June 2002
EDIT
D The Edit Display. When you press EDIT, the first display you see is the Advanced Editor display. This
display has menus in the upper left that allow the user to access features of the Advanced Editor; the menus
are activated by pressing F1. Pressing the PRGRM/CONVRS key will bring up the (visually) larger Edit display.
Pressing PRGRM/CONVRS a second time will get you into the Quick Code editor, which can also be ac-
cessed from the Advanced Editor within the F1: HELP pull-down menu.
D Advanced Editor Menus. Pressing F1 in the Advanced Editor will activate the menus. The menu selections
are made with the jog handle, turning it either clockwise or counterclockwise, or with the cursor arrow keys.
Press the WRITE/ENTER key to activate the cursor-selected menu item.
D Advanced Editor On-line Help. In the Advanced Editor, after pressing F1 to access the menus, on-line
Help is displayed in the lower right corner of the screen. To scroll through the Help text, use the PAGE UP, PAGE
DOWN, HOME, and END keys (remember, the cursor arrows move you through the menu items, not the Help
text). In addition, if the F1 key is pressed during the use of a menu option, the Help text is likewise displayed.
Pressing F1 again will exit the Help display.
D Lower-Case Text. In the Editor, you can enter lower-case text if its between parentheses (that is, for
comments only). Press the SHIFT key first (or hold it in) and then the letter you want in lower case (remember,
this works for parenthetical comments only). When lower-case text is selected (highlighted), it will appear in
caps; deselected, it returns to lower case. To type the white symbol in the upper left corner of the numeric
keys, press SHIFT and then the key. These symbols are used for parenthetical comments or for macros.
D Editing in the Advanced Editor. In the 80-column Advanced Editor you can select a program block and
copy it to another location, move it from one location to another, or delete it. To start the block definition, press
F1 to get into the menus, use the jog handle or the cursor arrows to select to select the EDIT menu and the
SELECT TEXT menu item, then press WRITE/ENTER. Another way to begin text selection is to put the cursor
on the program line where you want the selection to begin and press F2. In either case, once youve defined
the beginning, you then use the cursor arrows to go to the line where the selection should end, and press F2 or
WRITE/ENTER. This will highlight the section you want to copy, move or delete. Then, use the EDIT menu (or
the EDIT keys) to copy (INSERT), move (ALTER) or delete (DELETE) the selected block.
D To Undo an Edit. Pressing UNDO will change back as many as the last ten simple edits (INSERT, ALTER,
DELETE) that were done. Sometimes you can even edit some code, run the program, and then if you need to
change it back after running it, it may let you do that using the UNDO key. UNDO does not undo program edits
in Block Edit. In Block Edit, it only deselects text.
D Block Editing in the Advanced Editor. You can copy a line or a block of lines from one program into
another. Select the program block you wish to transfer to another program using the method outlined above (in
the Editing in the Advanced Editor paragraph). Then press SELECT PROG (or use the PROGRAM menu),
scroll to the program you want to copy to, and press WRITE/ENTER to select it. It will open up on the right
side of the screen. Cursor to where you want the selected text to be placed and press INSERT (to deselect
text after its been moved, press UNDO). Use the EDIT key to go back and forth between two open programs
on the screen.
D Block Editing in the Larger Editor Display. You can move a block of lines from one program to another in
the (visually) larger Editor display (press EDIT and then PRGRM/CONVRS once to get to the larger editor). In
this Editor, define the first block by pressing F1, and then cursor to the last line you want in the selection and
press F2. This will highlight that section of the program. Then select another program using LIST PROG and
copy the selection into the new program by pressing INSERT.
D Exiting Block Edit. You can turn off Block Edit highlighting by pressing the UNDO key; the cursor will
remain where youre at in the program. UNDO will not change back an edit done in Block Edit. RESET will also
turn off the block highlight, but the cursor will go back to the beginning of the program.
80 96-0103 rev E
June 2002 PROGRAMMING
D Advanced Editor Searching. When the SEARCH menu FIND TEXT item is used and the text is found, the
next press of F1 to activate the menus will automatically select the FIND AGAIN option. Likewise, when the
SELECT TEXT function on the EDIT menu is used, the next activation of the menus will cause the COPY
SELECTED TEXT option to be highlighted.
D Editing Two Versions of the Same Program. In Edit mode, F4 is the hot key that displays another version
of the active program for editing. The same program will be displayed on both halves of the screen, and each
program can be edited alternately by using the EDIT key to switch from one side to the other. Both programs
will be updated with the edits done while youre switching back and forth. This is useful for editing a long
program; you can view and edit one section of the program on one side of the screen and another section on
the other side.
D A Quick Cursor Arrow in the Advanced Editor. You can call up a cursor arrow with which to scroll through
your program quickly, line by line, when youre in the Advanced Editor. For the quick cursor arrow, press F2
once; then you can use the jog handle to scroll line by line through the program. To get out of this quick-cursor
mode and remain where you are in the program, just press the UNDO key. (Any Mill Control ver. 9.49 and
above; any Lathe Control ver. 2.24 and above.)
PROGRAMMING
D Program Format at the Beginning and End. Programs written on a PC and sent to the control from a
floppy disk or through the RS-232 port must start and end with a % sign, on a line by itself. The second line in
a program received via floppy or RS-232 (which will be the first line the operator sees) must be Onnnnn, a six-
character program number that starts with the letter O followed by five digits. When you create a program on
the Haas control the percent (%) signs will be entered automatically, though you wont see them displayed.
D Program Format with M06. It is not necessary to turn off the coolant (M09), stop the spindle (M05), or
move the Z axis home (G28) prior to a tool change. The control will do these tasks for you during a tool change
M06 command. However, you may decide to program these commands anyway for convenience and timely
execution of a tool change sequence. If youre using Single Block to step through a program you will be able to
see the commands when you stop on that line.
D Tapping with G84 or G74. When tapping, you dont need to start the spindle with an M03 or M04 com-
mand. The control starts the spindle for you automatically with each G84 or G74 cycle, and it will in fact be
faster if you dont turn on the spindle with an M03 or M04. The control stops the spindle and turns it back on
again in the G84 or G74 tapping cycle to get the feed and speed in sync. The operator just needs to define the
spindle speed.
D Quick Reverse Out of a G84 Rigid Tapping Cycle. This feature for rigid tapping has the spindle back out
faster than it went into a tapped hole. The way to specify this is with a J code on the G84 command line. J2
retracts twice as fast as the entry motion; J3 retracts three times as fast, and so on, up to J9. A J code of zero
will be ignored. If a J code less than 0 or greater than 9 is specified, Alarm 306 INVALID I, J, K or Q is
generated. The J code is not modal and must be specified in each block where this effect is wanted. The J
value should not contain a decimal point. (Any Mill Control ver. 10.13 and above.)
D M19 (Orient Spindle) with a P Value. This feature works on any vector drive mill. Previously, the M19
command would simply orient the spindle to only one position that suitable for a tool change. Now, a P value
can be added that will cause the spindle to be oriented to a particular position (in degrees). If a whole number
is used for the P value, no decimal point is needed. For example, M19 P270 will orient the spindle to 270
degrees. Note that P270.001 (or any other fraction) will be truncated to P270, and P365 will be treated as P5.
(Any Mill Control ver. 9.49 and above. Any Lathe Control ver. 2.21 and above.)
96-0103 rev E 81
PROGRAMMING June 2002
D M19 (Orient Spindle) with a Fractional R Value. This feature works on any vector drive mill. An M19
R123.4567 command will position the spindle to the angle specified by the R fractional value; up to 4 decimal
places will be recognized. This R command now needs a decimal point: if you program M19 R60, the spindle will
orient to 0.060 of a degree. Previously, R commands were not used for this purpose and only integer P values
could be used. (Any Mill Control ver. 9.49 and above; any Lathe Control ver. 2.29 and above.)
D Duplicating a Program in LIST PROG. In the LIST PROG mode, you can duplicate an existing program by
cursor-selecting the program number you wish to duplicate, typing in a new program number (Onnnnn), and
then pressing F1. You can also go to the Advanced Editor menu to duplicate a program, using the PROGRAM
menu and the DUPLICATE ACTIVE PROGRAM item.
COMMUNICATIONS
D Program Format to Receive. You can receive program files from a floppy disk or the RS-232 port into the
Haas control. Each program must begin and end with a % sign on a line with nothing else on that line. There
also must be an Onnnnn program number on the line after the % sign in each program. If there is a (Program
Name), it should be entered between parentheses, either after the program number on the same line or on the
next line. The program name will appear in the program list.
D Receiving Program Files from a Floppy Disk. You can load program files from a floppy disc using the I/O
menu and the FLOPPY DIRECTORY item of the Advanced Editor. Pressing WRITE/ENTER when this menu
item is selected will display a list of the programs on the floppy disk. Use the cursor arrow keys or the
handwheel to select the file you need to load, and press WRITE/ENTER. After loading that file, the floppy
directory will remain on display to allow more files to be selected and loaded into the control. RESET or UNDO
will exit this display.
D I/O Menu SEND RS232 or SEND FLOPPY Commands. You can send programs to the RS232 port or a
floppy disk from the Advanced Editor. After selecting the menu item you want (SEND RS232 or SEND
FLOPPY), a program list will appear. Select the program you want to save, or ALL (at the end of the list) if
you wish to send all programs under one file name. You can also select any number of programs using the up
and down cursor arrow keys or the handwheel and the INSERT key to mark the specific programs to send. If no
programs are selected from the list using the INSERT key, the currently highlighted program will be sent.
D Sending Multiple Programs Under One File Name. In the Advanced Editor, you can send multiple program
files via the RS232 port or a floppy disk, using the SEND 4S232 or SEND FLOPPY commands under the I/O
menu (see the previous paragraph for how to do this). The Advanced Editor allows you to choose several pro-
grams (select them using the cursor and the INSERT key) and save them under one file name that you type in;
then press WRITE/ENTER to save and send it.
(Any Mill Control ver. 9.49 and above; any Lathe Control ver. 3.00 and above.)
D Sending Multiple Programs Using Program Numbers. The SEND FLOPPY item from the I/O menu of the
Advanced Editor allows the operator to select one or more programs to be saved to floppy disk. It will prompt
you to ENTER FLOPPY FILENAME. In previous versions, the control would insist on a file name. Now,
however, if you do not enter a file name, but simply press WRITE/ENTER, the control will save each program
(the ones you selected using the cursor and the INSERT key) to a separate file on the floppy and use the five-
digit program number as the file name. For example, if programs O00123 and O45678 are selected, the new file
names created will be O00123 and O45678. (Any Mill Control ver. 9.49 and above; any Lathe Control ver. 3.00
and above.)
82 96-0103 rev E
June 2002 PROGRAMMING
D Sending a Program File from LIST PROG Display. You can send a file or files to a floppy disk or through
the RS-232 port from the LIST PROG display. Use the cursor arrows and the INSERT key to select the
program(s) you want, or ALL if you want to send all of them under one file name. When you press F2 to send
the selected program(s), the control will ask for a floppy file name, which can be up to eight characters long
with a three-letter extension (8CHRCTRS.3XT). Then press F2 again to send it. You can also use the I/O menu
in the Advanced Editor to send and receive program files.
D Sending Multiple Programs from LIST PROG Using SEND RS232. Several programs can be sent to the
serial port by typing all the program names together on the input line without spaces (e.g.,
O12345O98765O45678) and pressing SEND RS232.
D RS-232 Communications Using X-Modem. If you are seeing occasional errors when using RS-232 commu-
nications, X-Modem (Setting 14) is a standard communications mode which is very reliable when only a few
errors occur. Our control supports this, as do almost all software communication packages for PCs.
D Haas Rotary Table Using the Serial Port and Macros. It is possible to regulate a Haas rotary table using
the serial port and macros from the Haas control, or any Fanuc-compatible control. There is a set of sample
macros available from the Haas applications department.
D Send and Receive Offsets, Settings, Parameters and Macro Variables to/from Disk. You can save
offsets, settings, and parameters to a floppy disk. Press LIST PROG first, then select an OFSET, SETNG or
PARAM display page. Type in a file name and then press F2 to write that display information to disk (or F3 to
read that file from a disk). You can also do this with the macro variables by pressing LIST PROG first, then
selecting the macro variable display page (PAGE DOWN from CURNT COMDS).
D Send and Receive Offsets, Settings, Parameters and Macro Variables to/from RS232. You can also
save offsets, settings, and parameters via the RS-232 port. Press LIST PROG first, and then select an
OFSET, SETNG, or PARAM display page. Press SEND RS232 to send that display page to the RS-232 port
under the file name that you enter. Press RECV RS232 to read the file via RS-232. You can also do this with
the macro variables by pressing LIST PROG first, then selecting the macro variable display page (PAGE
DOWN from CURNT COMDS).
D Deleting a Program File from a Floppy Disk. A file can be erased from the floppy drive. On the LIST
PROG display, type DEL file name where file name is the name of the file on the floppy disk. Do not use the
program number, unless its also the file name. Press WRITE/ENTER. The message FLOPPY DELETE will
appear, and the file will be deleted from the floppy disk. Note that this feature requires the latest floppy driver
EPROM chip version 2.11. (Any Mill Control ver. 10.02 and above; any Lathe Control ver. 3.00 and above.)
96-0103 rev E 83
PROGRAMMING June 2002
Installing a fourth axis in this machine requires that the servo control parameters be set for the type of fourth
axis that you have. Any of the HAAS servo rotary products may be used but there are different parameter
settings for each. If the fourth axis is purchased with the VS Series, the parameters will be set correctly for that
indexer. If the indexer is purchased at a later time, select Setting 30 and press the right arrow cursor until the
model of the fourth axis is shown. Then, press the WRITE button.
Once the parameters have been entered, be sure to turn PARAMETER LOCK back on (Setting 7). The fourth
axis can be disabled and re-enabled easily from the Setting 30.
WARNING !
NEVER CONNECT OR DISCONNECT THE FOURTH AXIS CABLE WHILE THE
CONTROLLER IS POWERED ON.
When turning the control on after connecting the fourth axis, be sure to enable it from Setting 30 BEFORE
doing a POWER UP/RESTART or AUTO ALL AXES. When turning the control on after disconnecting the fourth
axis, be sure to turn off Setting 30 BEFORE doing a POWER UP/RESTART or AUTO ALL AXES.
Setting 34 is used to specify the diameter of the part being turned by the rotary axis. This parameter must be
set close to the correct value in order to get the correct surface feed rate when an A-axis motion is involved in a
cut.
If the fourth axis is being set up for the first time, you will not be able to enable the fourth axis from settings if
Parameter 43 is set to disable the fourth axis. Make sure Parameter 43 is set correctly.
The tilting rotary table (TRT) is a little more complicated in its setup. One of the two axes may be the A-axis
that can be controlled in simultaneous interpolated moves but the other axis must be setup as an auxiliary (B)
axis and can only be used for positioning or single axis feeds; see "Auxiliary Axis Control" section. Depending
on which axis may be used in cutting, you can exchange these two.
Product: Comments:
Auxiliary axes are C,U,V & W, and are limited to single axis non-interpolated moves. For more information
contact your dealer.
84 96-0103 rev E
June 2002 PROGRAMMING
B+
z+
M
AD
E
IN
U.S
.A
A+
X+
Y+
B+
z+
M
AD
E
IN
U.S
.A
A+
X+
Y+
NOTE: The figures represent one of many possible machine tool and table configu-
rations. You may have different table movements for positive directions,
depending on the equipment, parameter settings, or five-axis software being
used.
96-0103 rev E 85
PROGRAMMING June 2002
M Codes
M12 Engages the fifth axis brake.
This M code waits until the M-fin signal is received through the secondary RS-232 port.
Both M12 and M13 are aliased by M10 and M11 on fourth-axis machines.
Handle/Jog
All aspects of handle jogging for the fifth axis work as they do for the other axes. The exception is the method
of selecting jog between axis A and axis B.
By default the +A and -A keys, when pressed, will select the A axis for jogging. The display will show
JOGGING A AXIS HANDLE .01 while you are jogging the A axis. The B axis can be selected for jogging by
pressing the shift key, and then pressing either the +A or -A key. When this is done the control will switch
to jogging the B axis and the display will change to JOGGING B AXIS HANDLE .01.
The axis assigned to the +A and -A keys will remain selected for jogging even if the operating mode is
changed or if the machine is turned off. The selected axis for +A and -A can be toggled by pressing the shift
key prior to pressing the +A or -A keys.
Settings
The fifth axis, or rotary table, may be disabled from the setting page and removed from the machine. Do not
connect or disconnect any cables with the control on. If you do not disable the fifth axis when it is discon-
nected, you will get an alarm.
86 96-0103 rev E
June 2002 PROGRAMMING
The settings listed here are settings that have been added to a fifth-axis control.
78 FIFTH-AXIS ENABLE
This is an on/off setting. When it is off, the fifth axis is disabled and no commands can be sent to that axis.
When it is on, the selected rotary table type parameters are called up. A change to rotary parameters is saved
under the selected table type for later recall.
79 FIFTH-AXIS DIAMETER
This is a numeric entry. It is used to set the angular feed rate of the B-axis. It must be in the range of 0.0 to
29.9999 inches. Since the feed rate specified in a program is always inches per minute (or mm per minute), the
control must know the diameter of the part being worked in the B-axis in order to compute the angular feed
rate. When this setting is set correctly, the surface feed rate on a rotary cut will be exactly the feed rate
programmed into the control. The feed rate will be correct only as long as the axis remains orthogonal (at right
angles to) to the Y axis.
Tool Offsets
Work offsets can be specified for the fifth axis B address.
The work offset display is found on the offset display page. If the fifth axis is enabled, setting 78, then addi-
tional data fields are made available for the fifth axis.
The function of the offset display page has been modified slightly to accommodate multiple axes. Only the
axes that are enabled are displayed on the work offset display. For example, if the fourth axis is enabled,
setting 30, and the fifth axis is not, then display will show X,Y,Z,A. In this case, all axes can be displayed on
the entire display. If only the fifth axis is enabled, then the display will show X,Y,Z,B. Since the fourth axis is
disabled, there is no need to display it.
If both A and B axes are enabled, then the last column of the offsets display serves a dual purpose. Either A or
B can be accessed in the last column. By using the left or right arrow keys, the screen cursor can be moved
into the axis field that is to be set. When the right most field is highlighted by the cursor and the top of the
column indicates A, then the values in this column represent A axis offsets. If you press the right arrow key
once, the cursor stays in the same place, but the column and its values will change to B axis parameters. You
can view and modify work offsets in this manner using the left and right arrow keys when both axes are en-
abled.
Parameter Display
The Parameter Display organization has been modified to accommodate the extra axis parameters. Parameter
numbers have remained the same as in a four-axis control. Additional parameters have been added for the fifth.
96-0103 rev E 87
PROGRAMMING June 2002
The parameters have been reorganized, so that logically-associated parameters are grouped together. These
logical groupings are placed together into contiguous screens called pages. The most commonly changed
parameters have been placed at the beginning of the page list. A list of the parameter pages and the order of
succession in the control are given in the following table.
The HOME key displays the first parameter page COMMON SWTCH. Pressing the PAGE DOWN key will
display the next page of parameters in the above list. The END key displays the last parameter page B
PARAMETERB. Pressing the PAGE UP key will display the preceding page of parameters in the above list. All
other features on the parameters display have remained the same. So, if you are unfamiliar with the new format
of the parameters, you can still search by parameter number. Enter the number of the parameter you want to
see or view and press the up or down arrow key. The page that the parameter is on will be displayed and the
parameter being searched for will be highlighted.
The M11 and M13 codes command the brake to be unclamped. When these codes are in effect, the axis brake
will remain unclamped even after motion has stopped.
The second page of diagnostic data show the status of inputs from the motor interface board. Additional inputs
for the expanded motor interface board are listed under INPUTS4. These bits are monitored by the control to
determine if the interface for the B axis is working correctly.
88 96-0103 rev E
June 2002 PROGRAMMING
Parameters
Additional parameters specifying the fifth axis have been added to the parameter list B axis parameter numbers
range from 151 through 175. The parameter descriptions and their number assignments are listed below in the
order that they are arranged on the B parameter pages.
B PARAMETER A
Parameter 152 B P GAIN
Parameter 153 B D GAIN
Parameter 154 B I GAIN
Parameter 155 B RATIO (STEPS/INCH)
Parameter 156 B MAX TRAVEL (STEPS)
Parameter 157 B ACCELERATION
Parameter 158 B MAX SPEED
Parameter 159 B MAX ERROR
Parameter 160 B FUSE LEVEL
Parameter 161 B BACK EMF
Parameter 162 B STEPS/REVOLUTION
Parameter 163 B BACKLASH
Parameter 164 B DEAD ZONE
Parameter 165 B IN POSITION LIMIT B
Parameter 166 B MAX CURRENT
Parameter 167 B D*D GAIN FOR B
B PARAMETER B
Parameter 168 B ACC/DEC T CONST
Parameter 169 B PHASE OFFSET
Parameter 170 B GRID OFFSET
Parameter 171 B EXACT STOP DIST
Parameter 172 B FRICTION FACTOR
Parameter 173 B ACCEL FEED FORWARD
Parameter 175 B AIR BRAKE DELAY
96-0103 rev E 89
PROGRAMMING June 2002
High Speed Machining is an option that can be added to any Haas mill. It is most often required for the machin-
ing of smoothly sculpted shapes as is typical of mold making.
High speed machining means many different things to different people. Sometimes it is taken to mean high
speed spindle; the Haas control has 7500 RPM standard and up to 15000 RPM as an option. Sometimes it is
taken to mean high feed rates; the Haas control has 500 inches per minute in G01 (linear motion) standard.
Sometimes it is taken to mean high blocks per second rate; the Haas control has 1000 blocks per second
standard. The most important feature, though, is block lookahead.
The Haas option for High Speed Machining increases the amount of lookahead to 80 blocks and allows full
speed (500 inches per minute) blending of feed strokes. Determining when you need the High Speed Machining
option can be done with the following table of stroke lengths:
To use the above table starting with your machine and feed rate, find the listed stroke length. If you are using
linear moves longer than the stroke length, you do not need high speed machining. If you are using linear
moves shorter than the stroke length, you do need high speed machining.
It is important to understand that high speed machining works best with smoothly blended shapes where the
feed rate can remain high through the blend of one stroke to the next. If there are sharp corners, the control will
always need to slow down; even if you have the high speed machining option. Sharp corners can never occur at
high speed; either rounding of the corners occurs or the control must slow the feed rate.
The affect that blending of strokes can have on feed rate is always to slow down motion. It can never speed up
motion. The programmed feed rate (F) is thus a maximum and the control will sometimes go slower than that in
order to achieve the required accuracy.
Remember that too short of a stroke length can result in too many data points and that can result in a blocks
per second demand which is above what the control can do. Check how your CAD system generates data
points to insure that you do not exceed 1000 blocks per second.
Also remember that too few data points can result in either facetting or blending angles which are so great
that the control must slow down the feed rate. Facetting is where the desired smooth path is actually made up
of short, flat, strokes that are not close enough to the desired smoothness of the path. When the angle of
blending of strokes is too large, the control must reduce the feed rate in order to get that sharp angle.
90 96-0103 rev E
June 2002 PROGRAMMING
The optional programmable coolant spigot allows the user to direct the coolant stream to the most optimum
location in order to flush out chips from the cutting area. The direction of the coolant can be changed by the
CNC program.
When the spigot is enabled it will search for home if it ever loses position. If after 3 contiguous searches for
home the spigot has not found home, then Alarm, 193 COOLANT SPIGOT FAILURE, is generated.
When the spigot is enabled, an additional field can be accessed on the tool offset display. The left column
indicates CLNT POS for coolant position. By default this column has all zeros for the coolant position. If the
position is zero, then the spigot will not be moved when the H code for that tool offset is in effect and an M08 is
encountered in the program. If a value is placed into the field, then the spigot will be moved to that value if the
corresponding H code is in effect and M08 is executed.
There are two ways that the spigot can be moved under program control. The first, as just discussed, is by
entering positional values into the CLNT POS fields on the tool offset display page. Having positional values
entered into the CLNT POS field does not mean that the spigot will move. Only when the M08 command is
executed and the current H code has a value in its CLNT POS field, will the spigot move to the designated
position.
M34 moves the spigot in a positive direction. If the spigot is at the end of travel then no spigot movement
occurs. For example, if the current spigot position is at 8 and M34 is executed, then the spigot will move to
position 9. On a vertical mill this would lower the coolant stream.
M35 moves the spigot in a negative direction. If the spigot is at home position then no spigot movement occurs.
For example, if the current spigot position is at 8 and M35 is executed, then the spigot will move to position 7.
On a vertical mill this would raise the coolant stream.
It is important to note that each programming method requires the operator to specifically program the spigot in
reference to the particular tool being used, while also taking into consideration the tool length, width and size of
the part.
SPIGOT PARAMETERS
96-0103 rev E 91
PROGRAMMING June 2002
SPIGOT M C ODES
OPERATION
The HAAS Through The Spindle Coolant (TSC) option includes an auxiliary coolant pump that is used to supply
high pressure coolant to the cutting tool. The wear surfaces of the seal are engaged only when TSC is in use.
Maximum pressure is 300 psi when using small orifice tools. Pressure will be lower when using large orifice
tools. Maximum flow is 5 gpm. The maximum spindle speed when using the TSC system is 10,000 RPM.
M88 and M89 control the TSC. M88 is used to turn the system on, and M89 is used to turn it off.
The AUX CLNT button on the control panel may also be used to control TSC. Pressing this button while in MDI
mode will turn on the TSC system, and pressing it again will shut off the system.
NOTE: Running an M04 (Spindle Reverse) command with TSC on is not recom-
mended.
Coolant will flow from the drain line during normal TSC operation. Up to 2 cups per minute flow is normal.
When the coolant system is turned off (M89), the spindle is stopped, the pump is shut off, and air flows through
the spindle and the TSC drain line for 2-1/2 seconds to purge leftover coolant.
NOTE: When using small orifice tooling, increasing the value in parameter 237 will
help purge left over coolant. For example, 1/4 twist drill - set parameter 237
to 5000 (units are in milliseconds). The minimum value is 2500.
If coolant pressure does not come on within 60 seconds, the system shuts down and gives Alarm 151 (Low
Tool Coolant), check the coolant level in the coolant tank.
When TSC is on, and RESET or EMERGENCY STOP are pressed the control turns off the TSC coolant pump,
turns on purge for the time in Parameter 237 and then turns off purge.
92 96-0103 rev E
June 2002 PROGRAMMING
S AMPLE P ROGRAM
Note that the M88 command appears before the spindle speed command in this program. This is a good
programming practice; otherwise, having the M88 after the spindle speed command will stop the spindle, start
TSC, then restart the spindle, slowing the cycle time.
T1 M6; (TSC Coolant Through Drill)
G90 G54 G00 X0 Y0;
G43 H06 Z.5;
M88; (Turn TSC on)
S4400 M3;
G81 Z-2.25 F44. R.03;
M89 G80; (Turn TSC off)
G91 G28 Z0;
M30;
G ENERAL WARNINGS
The TSC pump is a precision gear pump and will wear out faster and lose pressure if abrasive particles are
present in the coolant.
Shortened pump life, reduction of pressure and increased maintenance are normal and to be expected in
abrasive environments and are not covered by warranty.
Use of coolants with extremely low lubricity can damage the TSC coolant tip and pump.
When machining castings, sand from the casting process and the abrasive properties of cast aluminum and
cast iron will shorten pump life unless a special filter is used in addition to the 100 mesh suction filter. Contact
HAAS for recommendations.
Machining of ceramics and the like voids all warranty claims for wear and is done entirely at customer's risk.
Increased maintenance schedules are absolutely required with abrasive swarf. The coolant must be changed
more often and the tank thoroughly cleaned of sediment on the bottom. An auxiliary coolant filter is recom-
mended.
Proper tooling, with a through-hole, must be in place before using the TSC system. Failure to
use proper tooling will flood the spindle head with coolant and void the warranty.
Use a pull stud with "45 Degree, P40T Type 1, inch threads" built to JMTBA standard "MAS 403-
1982". If the machine is equipped with the optional BT tool changer, use BT tooling only. Contact
the tool manufacturer for further information. Pull studs are available through HAAS. Refer to
the Technical Reference section of the manual for the proper tool part numbers and
identification.
Coolant will be used more quickly when the TSC system is in use. Make sure to keep the coolant
level up and to check the level more frequently (check after every eight hour shift). Premature
wear of the pump can result from running with a low coolant level in the tank. The spindle
will shut off automatically if the coolant level gets too low.
96-0103 rev E 93
PROGRAMMING June 2002
TSC PARAMETERS
The following parameters (and bits) apply only to the Through The Spindle Coolant system:
WARNING!
These are factory preset parameters. Changing them may void the
warranty.
TSC M C ODES
The following M codes apply only to the Through The Spindle Coolant system:
The following pre-existing M codes perform a slightly different function when Through the Spindle Coolant is
turned ON:
94 96-0103 rev E
June 2002 PROGRAMMING
ALARM DESCRIPTION
96-0103 rev E 95
PROGRAMMING June 2002
This option adds 8 additional outputs for each 8M option. The machine can be fitted with two 8M options for a
total of 16 additional outputs. These outputs can be used to activate probes, auxiliary pumps or clamping
devices etc. The 8M relay board contains 8 relay outputs (M21- M28) and 2 terminal strips P4 and P5. Each
terminal strip has 12 positions which are Normally Open, Normally Closed and Common.
8M Relay Board
A total of 4 banks of 8 relays are possible in the Haas system. Banks 0 and 1 are internal to the I/O PCB.
Bank 1 includes the M21-25 relays at the top of the IOPCB. Bank 2 addresses the first 8M option PCB. Bank 3
addresses the second 8M option PCB.
NOTE: Bank 3 may be used for some Haas installed options and may not be available.
Contact the Haas factory for more details.
Only one bank of outputs may be addressable with M-codes at a time. This is controlled by parameter 352
Relay Bank Select. Relays in the non-activated banks are only accessible with macro variables. Parameter
352 is shipped set to 1 as standard. When either one or two 8M options are installed, the M-fin and probe
cables are moved to the first 8M option PCB and parameter 352 is set to 2. With the 8M option, M-codes
M21-28 correspond to relays labeled M21-28.
Bank addressing on the 8M PCB itself is done through selectable jumpers. Only one address should be
selected at a time. The MCD jumper should be set to JP1 for bank 1 (first 8M option). The MCD jumper should
be set to JP2 for bank 2 (second 8M option). The other positions are used by service only for installation in
older controls. See the following figure.
M51-M58 will turn on the relays and M61-M68 will turn off the relays. M51 and M61 correspond to M21, etc. on
the 8M relay board.
NOTE: Some or all of the M21-25 on the I/O PCB may be used for factory installed
options. Inspect the relays for existing wires to determine which have been
used. Contact the Haas factory for more details.
96 96-0103 rev E
June 2002 PROGRAMMING
P5 Contains:
M25 Spare
M26 Spare
M27 Spare
M28 Spare
NOTE: If the 8M option is installed, relays M21-28 become available on the secondary
board. These relays will be controlled by ouputs M21-28.
96-0103 rev E 97
FUNCTIONS June 2002
3.11 SUBROUTINES
One of the more important programming features of a CNC machine is called subroutines. Subroutines allow
the CNC programmer to define a series of commands which might be repeated several times in a program and,
instead of repeating them many times, they can be called. A subroutine call is done with M97 or M98 and a
Pnnnn. The P code is the same as the O number of the subroutine to be called.
It is important to note that there is little difference between the main program and the subroutines. In the LIST
PROG display, they all appear as numbered programs. When starting execution of a program, the LIST PROG
display is used to select the main program and any subroutines used are called from within the main program.
Local subroutines can be used with M97. This can be even easier to use than M98 because the subroutine is
part of a single main program, without the need to define a different Onnnnn program. With local subroutines,
you can code an M30 for the end of your main program, followed by a line number and a subroutine that ends
with an M99.
The subroutine call causes the blocks in the subroutine to be executed just as if they were included in the
main program. In order to return control to the main program, subroutines must end with an M99.
Another very important feature of subroutines is that the M98 call block may also include an L or repeat
count. If there is an L, the subroutine call is repeated that number of times before the main program continues
with the next block.
The most common use of subroutines is in the definition of a series of holes which must first be center-drilled,
then peck-drilled, tapped, and chamfered. If a subroutine is defined that consists only of the X-Y position of the
holes, the main program can call that subroutine after defining a canned cycle to do each of the operations.
Thus, the X-Y positions can be used several times and need not be repeated for each tool. An example follows:
98 96-0103 rev E
June 2002 FUNCTIONS
X0. Y0. ;
X1. Y0. ;
X2. Y0. ;
X0. Y1. ;
X1. Y1. ;
X2. Y1. ;
X0. Y2. ;
X1. Y2. ;
X2. Y2. ;
M99 (END OF SUBROUTINE) ;
96-0103 rev E 99
FUNCTIONS June 2002
After reviewing the canned cycle, we can get a good idea of the amount of lines of code required to produce the
five holes. The best way to conserve on program space and programming time is to use a subprogram. We can
do this by grouping the X and Y locations of the holes into a separate program and then calling up this program
when we need to tell a canned cycle the X,Y coordinates.
Instead of writing the X,Y locations once for each tool, we can write the X,Y locations once for any number of
tools.
The canned cycle program that we reviewed on the previous page could use some constructive rearranging.
% %
O1234 (Example program) O1000 (X,Y LOC. SUB)
T1 M06 X 1.115 Y-2.750
G90 G54 G00 X.565 Y-1.875 S1275 M03 X 3.365 Y-2.875
G43 H01 Z.1 M08 X 4.188 Y-3.313
G82 Z-.175 P.03 R.1 F10. X 5.0 Y-4.0
M98 P1000 M99
G80 G00 Z1.0 M09 %
T2 M06
G00 G90 G54 X.565 Y-1.875 S2500 M03
G43 H02 Z.1 M08
G83 Z-.720 Q.175 R.1 F15.
M98 P1000
G00 G80 Z1.0 M09
T3 M06
G00 G90 G54 X.565 Y-1.875 S900 M03
G43 H03 Z.2 M08
G84 Z-.600 R.2 F56.25
M98 P1000
G80 G00 Z1.0 M09
G28 G91 Y0 Z0
M30
%
So far we have learned that using subprograms with canned cycles can save programming time and help
reduce coordinate input error. Let's take this one step further. There are six vises mounted on the table. Each of
these vises will use a new X,Y zero. They will be called up in the program as G54 through G59. The machine
will have to be told where each of the vises is located on the table. By using an edge finder or an indicator, the
zero point on each part can be established. Use the part zero set key in the work coordinate offset page to
record each X,Y location. Once the X,Y zero position for each vise is in the offset page, the programming can
begin.
By looking at the next page, we can get a good idea of what this setup would look like on the machine table.
For an example, each of these six parts will need to be drilled at the center, X and Y zero.
% %
O2000 O3000
T1 M06 X0 Y0
G00 G90 G54 X0 Y0 S1500 M03 G83 Z-1.0 Q.2 R.1 F15.
G43 H01 Z.1 M08 G00 G80 Z.2
M98 P3000 M99
G55 %
M98 P3000
G56
M98 P3000
G57
M98 P3000
G58
M98 P3000
G59
M98 P3000
G00 Z1.0 M09
G28 G91 Y0 Z0
M30
%
The following figure represents a multiple-fixture setup. Each vise will have an absolute zero once it is specified
in the program. This is done by using G54 through G59 and G110 through G129, a total of 26 possible posi-
tions.
The following is an example of a program using a drilling canned cycle that is incrementally looped. Compare
the grid plate drawing to the program.
NOTE: The sequence of drilling used here is designed to save time and to follow the
shortest path from hole to hole.
In this section we will cover canned cycles that have to be customized in order to make the programming of
difficult parts easier. In result, making the machining process more efficient.
For example, we have a square part being held to the table with one inch tall table clamps. We need to write a
program to clear the table clamps.
For example, we have a six inch square aluminum block, with a one inch by one inch deep flange on each
side. The print calls for two holes centered on each side of the flange. We need to write a program to avoid
each of the corners on the block.
In this section, we will cover the special canned cycles that the Haas control offers. These canned cycles are
used in conjunction with other drilling, boring, and tapping cycles.
G70 = BOLT HOLE CIRCLE
G71 = BOLT HOLE ARC
G72 = BOLT HOLES ALONG AN ANGLE
The sample program below will show the format for using a G70 to drill a three inch diameter bolt hole pattern
combined with a G81 drilling canned cycle.
%
O5000
T1 M06
G00 G90 G54 X0 Y0 S1500 M03
G43 H01 Z.1 M08
G70 I1.5 J0 L8 G81 Z-1.0 R.1 F15.
G00 G80 Z1.0 M09
G28 G91 Y0 Z0
M30
%
RULES FOR BOLT PATTERN CANNED CYCLES:
1. The tool must be placed at the center of the bolt pattern before the canned cycle execution. The
center is usually X0, Y0.
2. The J code is the angular starting position and is always 0 to 360 degrees counterclockwise from
the three o'clock position.
In the case of conflicting address codes, You can specify a drilling cycle prior to the block that invokes the
special canned cycle. For instance:
%
05000
T1 M06
G00 G90 G54 X0 Y0 S1500 M03
G43 H01 Z.1 M08
G83 R.1 Z-1.0 I.25 J.03 K.15 F15. L0 (L0 PREVENTS DRILLING AT CENTER)
G70 I1.5 J0 L8
G00 G80 Z1. M09
G28 G91 Y0 Z0
M30
%
TNN CODE
The Tnn code is used to select the next tool to be placed in the spindle from the tool changer. The T address
does not start the tool change operation; it only selects which tool will be used next. M06 and M16 are used to
start a tool change operation. The Tnn does not need to be in a block prior to the M06 or M16; it can be in the
same block.
NOTE: There is no X or Y motion required prior to performing a tool change and it would
waste time in most cases to return X or Y to the home position. However, if your
work piece or fixture is quite large, you may need to position X or Y prior to a
tool change in order to prevent a crash between the tools and your fixture.
A tool change may be commanded with X, Y, and Z in any position and the control will bring the Z up to the
machine zero position prior to starting the tool change. The control will move the Z axis to a position above
machine zero during a tool change, but will never move below machine zero. At the end of a tool change, the Z
axis will be at machine zero.
Tools are always loaded through the spindle and should never be installed directly in the carousel in order to
avoid crashes.
The tool holders used are CT #50 taper, V flange, commonly called CT 50.
Toolholders and pull studs must be in good condition and tightened together with wrenches or they may stick in
the spindle taper. Clean the tool tapers with a lightly oiled rag to leave a film to prevent rusting. When the TOOL
RELEASE button is pressed the tool should be pushed out of the spindle by a small amount (approximately
0.07 Inch). This is an indication that the pull stud is correctly touching the release mechanism.
WARNING
Follow these guide lines to load the tool changer:
Maximum tool diameter 4
Maximum tool diameter if declared over size tool 10
Maximum tool length 16
Maximum tool weight 30 lbs.
40T
JMTBA Standard MAS 403 P40T-1
D
0.990 Kit #
5/8-11 Inch Threads
B 20-7164 PS24CT
(non-TSC)
45o
JMTBA Standard MAS 403 P40T-1
E A 1.780 0.31 Kit #
1.386
1”-8 Inch Threads
A B C D E 22-0075 TPS24CT50
(TSC) o
45
40T 2.69 2.50 .44 5/8”-11 1.75 JMTBA Standard MAS 403 P50T-1
50T
1.780 Kit #
1.386
1”-8 Inch Threads
45T 22-0039
(non-TSC) PS24CT50
50T 4.00 3.87 .44 1”-8 2.75 45o
JMTBA Standard MAS 403 P50T-1
0.172 Kit #
BT
1.104
MAS 403 M16 X 2 Threads Thru.
20-7595
(TSC) TPS24BT
C
45o
40T
1.780
1.386
Kit #
3.26 3.35 .83 .82 2.25 M24 X 3 Threads
45T 22-7170
(non-TSC) PS24E50
50T 4.00 3.94 .91 M24X3 2.75 45o
JMTBA Standard MAS 403 P50T-1
0.990 0.172
Kit #
DIN-69871 (MIKRON) M16 X 2 Threads
Thru.
20-7556
ISO-7388 (TSC) TPS24E
C 45o
40T
D 0.990 Kit #
M16 X 2 Threads
20-7164A
B (non-TSC) PS24E
o
45
JMTBA Standard MAS 403 P40T-1
1.780 0.31
E A M24 X 3 Threads
1.386 Kit #
22-7171
A B C D E (TSC) TPS24E50
45o
JMTBA Standard MAS 403 P50T-1
40T 2.69 2.50 .44 M16X2 1.75
50T
1.780
1.386 Kit #
M24 X 3 Threads
45T 3.25 3.23 .44 .82 2.25 22-7170
(non-TSC) PS24E50
50T 4.00 3.84 .44 M24X3 2.75 45
o
The tool changer is protected by fuse FU5, located on the POWER PCB. It might be blown by an overload or
jam of the tool changer. Operation of the tool changer can also be interrupted by problems with the tool clamp/
unclamp and the spindle orientation mechanism.
There are some other M codes which will also cause tool operations to occur:
NOTE: On mills equipped with a side-mount tool changer, air pressure is checked
prior to moving the carousel. Alarm 120, LOW AIR PRESSURE, is generated
if such a problem exists.
CAUTION: Keep clear of the tool changer during power up, power down, and
any tool changer operations.
P OWER UP P ROCEDURE
1. Press the green POWER ON button and wait for the control to complete the boot-up process.
2. Press the POWER UP/RESTART button and wait for the machine to perform a Zero Return.
Setting 81, TOOL AT POWERDOWN, will cause one of the following actions to occur during power-up:
A. If Setting 81 is set to zero, the carousel will be rotated to pocket #1. No tool change will be
performed.
B. If Setting 81 contains the tool number of the tool currently in the spindle, the carousel will remain
at the same pocket and no tool change will be performed.
C. If Setting 81 contains the tool number of a tool not currently in the spindle, the carousel will be
rotated to pocket #1 and then to the pocket containing the tool specified by Setting 81. A tool
change will be performed to change the specified tool into the spindle.
O VERVIEW
NOTE: If alarms occur while using a Vertical Mill side-mount tool changer, the
associated parameters should first be verified (and corrected if neces-
sary), and then the tool change recovery procedure should be performed.
The side-mount tool changers allow the control to rotate the carousel to the next tool needed while the current
tool is still in the spindle. When a tool change is commanded, the two tools are swapped by the tool arm.
Thus, a tool will be taken from one pocket and returned to another. This means that pockets designated as
normal size are not dedicated to any particular tool; during tool change operations a normal size tool can be
taken from one pocket and put back into another. Tool pockets designated as large size are dedicated only to
large tools; large tools will not migrate to an empty normal pocket during a tool change.
T OOL L OADING
NOTE: A normal size tool has a diameter of less than 3" for 40-taper machines, or less
than 4" for 50-taper machines. Tools larger than these measurements are
considered large size.
1. Ensure the tools you will be loading are of the correct pull stud type for your mill.
2. Press the POWR UP/RESTART button and wait for the machine to perform a Zero Return.
4. Press the OFFSET button. From a Power Up/Restart, press the END key, then the PAGE DOWN
key once to reach the Tool Pocket Table display. From a normal operating state, press Page Up/
Down until you reach the Tool Pocket Table.
5. Clear any current Large tool designations. Use the cursor keys to scroll to any tool
pocket that has an L next to it. Press SPACE, then WRITE/ENTER to clear the Large tool
designations.
6. Press ORIGIN to reset the Tool Pocket Table to default values. This will place tool 1 in the
spindle, tool 2 in pocket 1, tool 3 in pocket 2, etc. This is done to clear the previous Tool
Pocket Table settings as well as renumber the Tool Pocket Table for the next program. Another
way to reset the Tool Pocket Table is to enter 0 (zero) and press Origin, this will reset all the
values to zero.
NOTE: You cannot have two different tool pockets holding the same tool number.
Trying to enter a tool number already displayed in the Tool Pocket Table will
result in an Invalid Number error.
7. Determine if your next program will need any large tools. A large tool has a diameter of
greater than 3" for 40-taper machines and greater than 4" for 50-taper machines. If you
will not be using any large tools, proceed to Step 10. If you will be using large tools,
proceed to the next step.
8. Organize your tools to match your CNC program. Determine the numerical positions of
any large tools and designate those pockets as Large in the Tool Pocket Table. To designate a tool
pocket as Large, scroll to that pocket and press L, then WRITE/ENTER.
NOTE: When setting up the tooling for your CNC program, large tools need to have
the surrounding pockets empty to prevent a tool changer crash. However, large
tools can share adjoining empty pockets. Placing large tools next to each other
will help conserve space in the tool changer.
1 2
CAUTION: A large tool cannot be placed in the tool changer if one or both of the
surrounding pockets already contain tools. Proceeding with this
action will cause the tool changer to crash.
9. When you have designated all necessary Large tool pockets, press the ORIGIN key to renumber
the Tool Pocket Table. At this point, the machine is ready to accept tool 1 into the spindle.
10. Take tool 1 in your hand and insert the tool (pull stud first) into the spindle. Turn the tool so that
the two cutouts in the tool line up with the dogs of the spindle. Push the tool upward while press-
ing the TOOL RELEASE button. When the tool is fitted into the spindle, let go of the TOOL
RELEASE button. One TOOL RELEASE button is located on the right side of the head cover just
above the spindle; a second one is located on the keypad.
11. Press PAGE UP, then HOME to go to the Offset Tool Length display.
12. Jog the Z axis to set the tool offset. Press the TOOL OFFSET MEASUR (measure) button on the
keypad. Press the NEXT TOOL button.
13. Repeat Steps 10 through 12 until you have loaded all your tools.
Loading the
Side Mount Tool (from Power On)
Changer
Enter Handle
Jog mode
Remove Large
Any Large tool
designations
Y tool designations by
scrolling to each “L”
displayed? and pressing SPACE,
WRITE/ENTER.
N
Press ORIGIN.
N
Scroll to the tool
Insert Tool into the pocket that will hold
spindle. a large tool and press
L, WRITE/ENTER.
END
Should you need to move tools around in the carousel, follow the steps below.
CAUTION: Plan out your reorganization of the tools in the carousel ahead of time.
To reduce the potential for tool changer crashes, keep your tool
movement to a minimum. If you have any large size tools currently
in the tool changer, ensure that you only move them between tool
pockets designated as large.
1. Select MDI mode. Press the OFFSET button. Press PAGE UP/PAGE DOWN (if necessary) until
you reach the Tool Pocket Table display. Verify which tool number is in pocket 12.
2. Enter Tnn into the control (where Tnn the tool number from step 1). Press ATC FWD. This will
place the tool from pocket 12 into the spindle.
3. Enter P18 into the control, then press ATC FWD. This will place the tool currently in the spindle
into pocket 18.
Tool 12 to Pocket 18
4. Scroll to pocket 12 in the Tool Pocket Table and press L, WRITE/ENTER to designate that pocket
as Large.
5. Enter the tool number into SPNDL (spindle) on the Tool Pocket Table. Insert the tool into the
spindle.
NOTE: You cannot have two different tool pockets holding the same tool number.
Trying to enter a tool number already displayed in the Tool Pocket table will
result in an Invalid Number error.
6. Enter P12 into the control and press ATC FWD. The tool will be placed into pocket 12.
1. Assuming the machine has been zeroed since it was powered up, press the POWER UP/RE-
START button and wait for the machine to perform a Zero Return.
Setting 81, TOOL AT POWERDOWN, will cause one of the following actions to occur during power down:
A. If Setting 81 is set to zero the carousel will remain at the same pocket. No tool change will
be performed.
B. If Setting 81 contains the number of the tool that is already in the spindle, the carousel will
remain at the same pocket and no tool change will be performed.
C. If Setting 81 contains the number of a tool that is not currently in the spindle, the carousel
will be rotated to pocket #1, then to the pocket containing the tool specified by Setting 81.
A tool change will be performed that places the specified tool in the spindle.
D. If Setting 81 contains the number of a tool not listed in the Tool Pocket Table, the carousel
will be rotated to pocket #1 and no tool change will be performed.
If a problem occurred during a tool change, a tool changer recovery needs to be performed. Enter the tool
changer recovery mode by pressing TOOL CHANGER RESTORE. Once in tool changer recovery mode, the
operator is given instructions and questions to perform a proper tool changer recovery. The entire tool changer
recovery process must be completed before exiting. If an exit was done prematurely the tool changer recovery
must be started from the beginning.
The flow chart for the tool changer restore function is at the end of this section.
FEATURES
PARAMETERS
Parameter 278 bit 27 (S MNT BIT 1), 28 (S MNT BIT 2), and 29 (MNT BIT 3)
Bits 27,28, and 29 work together to enable the Vertical mill side-mount tool changers.
The following table shows the bit combinations that must be used:
Bit 27 28 29 Numeric value Type
0 0 0 0 No side-mount tool changer installed
1 0 0 1 Serpentine 1
0 1 0 2 Serpentine 2
1 1 0 3 Serpentine 3
0 0 1 4 Disk 1
1 0 1 5 Disk 2
0 1 1 6 Disk 3
1 1 1 7 Disk 4
ALARMS
Spindle speed functions are controlled primarily by the S address code. The S address specifies RPM in
integer values from 1 to maximum spindle speed (Parameter 131, NOT TO BE CHANGED BY USER!).
Speeds from S1 to the Parameter 142 value (High/ Low Gear Change; usually 1200) will automatically select
low gear and speeds above Parameter 142 will select high gear. Two M codes can be used to override the gear
selection. M41 for low gear override and M42 for high gear override. Low gear operation above S1250 is not
recommended. High gear operation below S100 may lack torque or speed accuracy.
Three M codes are used to start and stop the spindle. M03 starts the spindle clockwise, M04 starts the spindle
counterclockwise, and M05 stops the spindle.
Note that only one M code is allowed in a block. This means that if you wish to override the gear with M41 or
M42, you must put the Snnnn and M41 (or M42) in one block and the M03 (or M04) in the next block. The
Snnnn should always be in the same block as the M41 or M42, as an unneeded double gear change might
otherwise be performed.
Making tapped holes with the VS Series CNC Mill can be done with several devices. Threads may be gener-
ated with a tap held in a rigid tool holder (called rigid tapping), a floating tap holder, a reversing tapping head, or
helical thread milling. Each method has distinct advantages.
Tapping is done using canned cycles. You must select the tapping rpm and, using the pitch (threads per inch),
calculate the feedrate that is entered in the F command. The HELP/CALC page will compute these numbers for
you.
R IGID TAPPING
Rigid tapping eliminates the cost of special tap holders since taps can be held in drill collet holders. The
spindle is accurately synchronized with the Z-axis feed, thereby producing threads as accurately as a lead
screw tapper. No side forces are generated on the flanks of the threads and tighter thread tolerances are
produced. Rigid tapping also eliminates the pullout and distortion of the first thread that occurs on all spring
compression/tension devices and tapping heads. While this is not usually a problem on medium to coarse
threads, small diameter, fine pitch or soft material tapped holes can have their last thread damaged when the
tap pops out of the hole. You can also re-tap a hole without cross-threading, provided the tap and Z depths have
not been changed. Rigid tapping is used with canned cycles G74 and G84. Example:
N100 G84 Z-1. R.3 F37.5 (for a 20-pitch thread at 750 rpm)
A word of caution on rigid tapping: As the term implies, the tap is rigidly held in place. This requires that runout
be less than 0.001 TIR or the tap will generate an oversized thread. This problem can be minimized by using a
small diameter drill extension to provide flex, a radial floating tool holder, or specially-designed chucks for
holding taps, because tap shanks are not common collet sizes.
The mill can retract from a tap faster than it went in. The way to specify this is to use a J code in the line that
commands the tap. J2 retracts twice as fast as the entry motion, J3 retracts three times as fast, and so on, up
to J9. A J code of zero will be ignored. If a J code of less than zero or greater than nine is specified , Alarm 306,
INVALID I, J, K, or Q is generated. The J code is not modal, and must be specified in each block where the
effect is wanted.
Rigid tapping is enabled with the Parameter 57 Rigid Tap flag. In addition, if the REPT RIG TAP flag in
Parameter 57 is set, every repetition of a tapping operation will control the orientation of the spindle so that the
tapping is repeatable.
Pitch control is within 0.0005 inch. Bottom depth control is ±0.020 inch and repeatability is ±0.005 inch. Rigid
tapping will operate from 100 to 2000 RPM and up to 100 inches per minute feed. Bottom depth control is
better at lower speeds. Thread pitch is limited, from 4 to 100 TPI.
The pitch of a tapped hole is defined by the ratio between the feedrate and spindle speed. When rigid tapping is
selected, these two must be set exactly. An encoder mounted with the spindle tracks the position of the
spindle and the Z axis is moved precisely to match the pitch of the thread. If the repeatable option is selected,
a position pulse from the encoder is used to synchronize the starting of the Z motion with the position of the
spindle.
Note that with G74 and G84, you do not ever need to use M03, M04, or M05. These canned cycles start and
stop the spindle automatically. This applies to using normal or rigid tapping.
The second page of diagnostic data will show the actual spindle speed.
Floating tap holders are probably the most common method of tapping holes. The tap is held in a quick change
holder that can float up and down slightly. This is done to allow the tap to follow the hole it is tapping and
compensate for differences in the acceleration and deceleration of the spindle versus the feed of the Z axis.
Upon reaching the bottom of the hole, the feed stops and the spindle reverses; if you watch closely, you will
see the tap pull the floating holder out slightly. Upon reversal, the tap will be pushed back into the holder.
If the holder is pulled out or pushed in to its mechanical limits while tapping, you can break the tap, damage
the threaded part, or pull the tap completely out of the holder. Carefully watch for this condition when setting up
a job, because it usually becomes a problem after the job has been running a while. Also, tapping of diameters
less than 5/16 of an inch while below 1201 rpm (low gear shift point parameter 142) should be done in high
gear. Spindle reversal is quicker in high gear and will minimize tap pullout. This is done by putting an M42 code
with the speed command, such as: M42 S900. Tapping is done with G74 and G84 cycles which automatically
reverse the spindle at Z depth. The feedrate can be calculated by using the HELP display, paging down to the
tapping calculator and inputting your speed and tap pitch into the control to obtain your feedrate, which is then
input to the F command of the cycle. Example:
N100 G84 Z-1.0 R.3 F46.875 (for a 32-pitch tap at 1500 RPM)
Auto reversing tapping heads eliminates the need for the spindle to reverse at the bottom and provides for high
production rates. The reversing function of the tapping head requires an arm to prevent the body from rotating.
This must be considered when changing tools so as not to interfere with operation. The tool block on the VS
Series CNC Mill will accommodate the Tapmatic series of heads. Several sizes are available and should be
chosen dependent on tap size. Choose the head specifically for NC use as they have a 1:1 feed rate. Manual
types have a faster withdrawral rate that leads to clatter on the upstroke. A disadvantage to these types of
heads is that when the inevitable crash occurs, you can destroy an expensive device.
Use the G85 or G89 (dwells at bottom) cycle when using a tapping head. Example:
T HREAD M ILLING
Thread milling uses a cutter formed with the pitch of the thread to mill the thread. The cutters are solid carbide,
fragile and expensive. Some companies sell replaceable insert holders that are more economical. Internal holes
smaller than 3/8 inch may not be possible or practical. It does allow for making thread diameter compensation
and external threads. For large threads, port threads and blind hole threads, thread milling can be the most
economical method.
Thread milling is accomplished with helical milling. Use a standard G02 or G03 move to create the circular
move in X-Y and then insert a Z move on the same block corresponding to the thread pitch. The feed rate is
selected as in standard milling practice. This will generate one turn of the thread. The multiple teeth of the
cutter will generate the rest. A typical line would be as follows:
N100 G02 I-1.0 Z-.05 F5. (generates a 1-inch radius for 20-pitch thread)
We will use the following example and go through the thread milling procedures step-by-step to get the desired
result:
DATA:
· I.D. Thread milling a 1.5 x 8 TPI hole.
· Using .750 diameter x 1.0 thread hob.
· Take the hole diameter 1.500. Subtract cutter diameter .750 = .750 Then divide by 2 = .375.
STEP 1: Within this space we need to turn on cutter compensation and ramp on to the circle to be
machined.
STEP 2: Perform complete circle while simultaneously moving in the Z-axis the amount of one full pitch of
the thread. This is called helical interpolation.
STEP 3: Ramp off the circle and turn off the cutter compensation.
I.D. will be G03; O.D. will be G02. An I.D. right hand thread will move up in the Z-axis by the amount of one
thread pitch. An O.D. right hand thread will move down in the Z-axis by the amount of one thread pitch.
Cutter compensation cannot be turned off or on during an arc movement. A linear turn on and turn off movement
must be made, either in the X- or Y-axis. This move will be the maximum compensation amount that can be
adjusted.
Start with zero in the diameter offset column and enter a negative number to increase the thread diameter.
NOTE: A cutter compensation turn on move can consist of any X or Y move from any
position just as long as the move is greater than the amount being compen-
sated for. The same rule applies for turning off cutter compensation.
Using the following data, we will write a program for single-point thread milling procedures:
DATA:
· 2.500 Ø hole
· Diameter of cutter (Subtract .750): 1.75
· Radial value (Divide by 2) : .875
· Thread pitch: .0833 (12 TPI)
· Part thickness: 1.00
PROGRAM EXAMPLE DESCRIPTION
%
O1000
(X0,Y0 is at the center of the hole)
(Z0 is at the top of the part)
T1 M06 (Tool #1 is a .750 diameter single-point thread tool)
G00 G90 G54 X0 Y0 S2500 M03
G43 H01 Z.1 M08
G01 Z-1.083 F35.
G41 X.275 DI (Radial value)
G3 X.875 I.3 F15.
G91 G3 I-.875 Z.0833 L14 (Multiply .0833 pitch x 14 passes = 1.1662 = total in Z-axis)
G90 G3 X.275 I-.300
G00 G90 Z1.0 M09
G1 G40 X0 Y0
G28 G91 Y0 Z0
M30
%
%
O1235 (Subprogram to mill hex.)
G01 Z-.125 F50.
Y.5 F35.
G00 Z.1
G91 Y-1.0 A60.
G90
M99
%
The following subprogram can be written in absolute or incremental programming. Examine each program and
determine which style would be faster and easier to understand and to program in the future.
ABSOLUTE: INCREMENTAL:
% %
O1236 (Subprogram to mill channels.) O1236 (Subprogram to mill channels.)
G01 Z-.25 F15. G91
X2.0 A90. G01 Z-.35 F15.
G00 Z.1 X1.0 A90.
A180. G00 Z.35
G01 Z-.25 A90.
X1.0 A90. G01 Z-.35
G00 Z.1 X-1.0 A-90.
A180. G00 Z.35
G01 Z-.25 A90.
X2.0 A270. G01 Z-.35
G00 Z.1 X1.0 A90.
A360. G00 Z.35
G01 Z-.25 A90.
X1.0 A270. G01 Z-.35
G00 Z.1 X-1.0 A-90.
M99 G00 G90 Z.1
% M99
%
FORMULAS
TAPPING -
STANDARD thread formula:
Revolutions per minute (RPM) divided by threads per inch (TPI) = Feed rate in inches per minute
RPM/TPI = F
The automatic chip auger assists the user in removal of chips for jobs with heavy material removal. When
running, the chip auger will sense auger motor overcurrent and reverse direction momentarily, thus attempting
to free up chip jams. This procedure will be repeated until chips are cleared or auger retry limit (Parameter 219)
is reached. If the chip auger is running and the door is opened, the chip auger will stop, thus adding a degree of
safety to auger operation. If there is no axis motion or keyboard action within the time set in Parameter 255,
the auger will automatically shut off.
NOTE: On a machine with a safety circuit, the chip auger will only run with the door
closed regardless of the Conveyor Door Override bit.
The auger can be started at any time from the keyboard. The auger can be enabled in either direction by
pressing the CHIP FWD or CHIP REV and stopped by pressing the CHIP STOP key. The auger will also stop
by pressing the RESET key.
Use M codes M31, M32 and M33 to control the auger from within a program or in MDI. M31 commands the
auger forward, M32 commands the auger in reverse and M33 stops the auger. Refer to the "M Codes" section
for a more detailed description.
AUGER PARAMETERS
CNVYR RELAY DELAY Parameter 216 CNVYR IGNORE OC TIM Parameter 217
CNVYR RETRY REV TIM Parameter 218 CNVYR RETRY LIMIT Parameter 219
CNVYR RETRY TIMEOUT Parameter 220 CNVYR TIMEOUT Parameter 255
A complete description of auger parameters is given in the "Parameters" section of this manual.
AUGER M CODES
When the machine is powered on, if setting 109, and at least one of Settings 110, 111 or 112, are set to a
nonzero value, the following warning will be displayed:
If the operator responds Y, the control immediately applies the total compensation (Setting 110,111 and/ or
112), and the compensation begins to decrease as the time elapses. For instance, after 50% of the time in
Setting 109 has elapsed, the compensation distance for the X axis, in Setting 110, will be 50%.
As with other settings, the Warm up Compensation settings can be changed at any time. Updating the Warm-
up Compensation Time may activate compensation, but changes to the X, Y or Z distance settings will not
activate compensation. To restart the time period, it is necessary to power the machine off and on, and then
answer yes to the compensation query at start-up.
WARNING!
Changing settings 110, 111 or 112 while compensation is in progress
can cause a sudden movement of up to 0.0044 inch.
The amount of remaining warmup time is displayed on the bottom right hand corner of the Diagnostics Inputs 2
screen using the standard hh:mm:ss format. The initial amount of warmup time to be used, starting when
power is applied, is specified in Setting 109, WARMUP TIME IN MIN.
Acceleration and deceleration is what the machine does when it is changing speed. Acceleration is what the
machine does when the speed is increasing and deceleration is what the machine does when it is slowing
down. The machine cannot change speed instantly so that a change of speed occurs over some amount of
time and a distance.
Changes of speed affect how the control moves for both rapid motion and feed motion. Rapid motion occurs
independently for each axis in motion and uses acceleration set for each axis. Feed motion coordinates one or
more axes to accelerate in unison, move in unison, and decelerate in unison. This type of feed motion is called
acceleration before interpolation and uses a fixed acceleration rate for all axes.
R APID M OTION
Rapid motion uses constant acceleration and deceleration, with maximum acceleration and maximum speed
set as parameters per axis. End-point arrival in rapid motion occurs with S-curve velocity to prevent shock
vibration to the machine. A rapid motion followed by another rapid motion is blended with a rounded corner,
controlled by a parameter called In Position Limit. It is usually about 0.06 inch. A rapid motion followed by a
feed motion or a rapid motion in Exact Stop mode will always decelerate to an exact stop before the next
motion.
S-curve velocity control refers to the rate of change of acceleration or deceleration. Without S-curve, there may
be abrupt changes in deceleration, resulting in machine vibration. With S-curve at the end of a rapid move,
there are only gradual changes to deceleration and thus machine vibration is reduced.
F EED MOTION
A feed motion coordinates or interpolates the motion of multiple axes. Feed motions always use constant
acceleration before interpolation. With the Haas control, up to five axes can be in motion in a feed. These are X,
Y, Z, A and B. Maximum feedrate is 500 inches per minute for the linear (XYZ) axes and 300 degrees per
minute for the rotary (AB) axes.
The blending of axis motion is controlled by Setting 85 (Max Corner Rounding) and the G187 command.
Setting 85 and G187 provide for a continuously adjustable range of corner rounding between an exact stop and
inexact stop. The value of the setting is the maximum deviation allowed from the exact programmed path.
A linear move (G01) started at an exact stop and ending at an exact stop will have zero positioning error. That
is, it will follow exactly that programmed path. It is only at the start or end at speed that blending or corner
rounding can occur. This blending action should not be confused with overshoot. Overshoot is where a control
would go past a corner and then reverse back onto the required path. The Haas control does not overshoot
under any circumstances.
Circular moves (G02 or G03) are not treated any differently than a linear feed motion. In a circular motion, if a
feed starts at an exact stop and ends at an exact stop, there is no positional error introduced no matter what
the feedrate. Feed in a circular motion is limited to 300 inches per minute. Corner rounding can still occur when
a circular motion is blended with a linear or a circular motion, but is also controlled by Setting 85 and G187.
Block look-ahead is something that is needed when the distance which the control requires to get up to speed
is more than half the length of the programmed linear strokes. Without look-ahead, the control will simply
overlap the deceleration of one stroke with the acceleration of the next stroke. This would limit the speed of the
motion based on the length of those strokes. The Haas control has block look-ahead standard, but without the
High-Speed Machining option it is limited. With look-ahead, blending of one stroke to another can occur at full
speed, but the angle of blending is small without the High-Speed Machining option.
Cutter compensation is a method of shifting the tool path so that the actual finished cut is moved to either the
left or right of the programmed path. Normally cutter compensation is programmed to shift by exactly the radius
of the tool so that the finished cut matches the programmed path. The Offset display is used to enter the
amount for the tool to be shifted. The offset can be entered as either diameter or radius for both the geometry
and wear values. The effective value is the sum of the geometry and wear values. Setting 40 is used to select
either diameter or radius. If diameter is specified, the shift amount is half of the value entered. Cutter radius
compensation is only available in the X and Y axes (G17). For 3D machining, cutter radius compensation is
available in the X and Y axes (G141).
G41 will select cutter compensation left; that is, the tool is moved to the left of the programmed path to com-
pensate for the size of the tool. A Dnnn must also be programmed to select the correct tool size from compen-
sation memory. If compensation memory contains a negative value for cutter size, cutter compensation will
operate as though G42 was specified. Cutter path compensation in this machine applies only to motion in the
X and Y axes.
G42 will select cutter compensation right; that is, the tool is moved to the right of the programmed path to
compensate for the size of the tool. A Dnnn must also be programmed to select the correct tool size from
compensation memory. If compensation memory contains a negative value for cutter size, cutter compensation
will operate as though G41 was specified.
The code G40 will cancel cutter compensation and is the default condition when a machine is powered on.
When canceled, the programmed path is the same as the center of the cutter path. You may not end a pro-
gram (M30, M00, M01, or M02) with cutter compensation active.
If cutter compensation is selected (G41 or G42), you may only use the X-Y plane for circular motions (G17).
Cutter compensation is only available in the X and Y axes.
There is a simple rule about cutter compensation which helps to make clear the motions the control uses to
compensate for tool size. The control operates on one motion block at a time. It will look ahead, however, to
check the next two blocks containing X or Y motions. The interference checks are performed on these three
motions. Setting 58 controls how this part of cutter compensation works. It can be set to Fanuc or Yasnac.
When Setting 58 is set to Yasnac, the control must be able to position the tool edge along all of the pro-
grammed cuts without overcutting the next two motions. All outside angles are joined by a circular motion.
When Setting 58 is set to Fanuc, the control does not require that the tool cutting edge be placed along all
programmed cuts. Overcutting, however, is still prevented, and if overcutting cannot be prevented, an alarm will
occur. Outside angles less than or equal to 270 degrees are joined by a square corner and outside angles of
more than 270 degrees are joined by an extra linear motion.
The following four diagrams show how cutter compensation works for the two possible values of Setting 58.
Note that a small cut of less than tool radius and at right angle to the previous motion will only work with the
Fanuc setting.
When entering and exiting cutter compensation or when changing from left side to right side compensation,
there are special considerations to be aware of. Cutting should not be performed during any of these three
moves. In a block that turns on cutter compensation, the starting position of the move is the same as the
programmed position, but the ending position will be offset by the cutter compensation size. In a block that
turns off cutter compensation, the starting point is offset and the ending point is not offset. Similarly, when a
block changes from left to right compensation, the starting point is shifted in one direction and the ending point
is shifted in the other direction. The result of all this is that the tool is moved through a path that may not be
the same as the intended path or direction.
If cutter compensation is turned on or off in a block without any X-Y move, there is no change made to cutter
compensation until the next X or Y move is encountered. To enter cutter compensation, a nonzero D code
must be specified and either G41 or G42 specified. To exit from cutter compensation, you may specify either
D0 or G40, or both.
You should always turn off cutter compensation in a move which clears the tool away from the part being cut. If
a program is terminated with cutter compensation still active, an alarm is generated. In addition, you cannot
turn cutter compensation on or off during a circular move (G02 or G03); otherwise an alarm will be generated.
An offset selection of D0 will use zero as the offset size and have the effect of turning off cutter compensation.
If a new value from offset memory is selected while cutter compensation is active, the starting point of a move
will reflect the old value and the ending point will reflect the new value. This will also have the effect of shifting
the motion to something other than what was intended by the programmer. You cannot change the offset code
or side during a circular motion block.
When turning on cutter compensation in a move that is followed by a second move at an angle that is less than
90 degrees, there are two ways of computing the first motion: cutter compensation type A and type B (setting
43). Type A is the default in setting 43 and is what is normally needed; the tool moves directly to the pro-
grammed start point for the second cut. Type B is used when clearance around a fixture or clamp is needed, or
in rare cases when part geometry demands it. The diagrams on the following pages illustrate the differences
between type A and type B for both Fanuc and Yasnac settings (Setting 58).
When using cutter compensation in circular moves, there is the possibility of speed adjustments to what has
been programmed. If the intended finish cut is on the outside of a circular motion, the tool should be slowed
down to ensure that the surface feed does not exceed what was intended by the programmer. There are
problems, however, when the speed is slowed by too much. For this reason, Setting 44 is used to limit the
amount by which the feed is adjusted in this case. It can be set between 1% and 100%. If set to 100%, there
will be no speed changes. If set to 1% the speed can be slowed to 1% of the programmed feed.
When the cut is on the inside of a circular motion, there is no speed-up adjustment made to the feedrate.
In this section, we will cover the usage of G02 (Circular Interpolation Clockwise) and G03 (Circular Interpolation
Counterclockwise) and Cutter Compensation (G41: Cutter Compensation Left, G42: Cutter Compensation
Right).
Using G02 and G03, we can program the machine to cut circular moves and radii. Generally, when program-
ming a profile or a contour, the easiest way to describe a radius between two points is with an R and a value.
For complete circular moves (360o), an I or a J with a value must be specified. The circle section illustration
below will describe the different sections of a circle.
By using cutter compensation in this section we, the programmers, will be able to shift a cutter by the amount
of the cutter radius and be able to program a profile or a contour to the exact print dimensions. By shifting the
cutter radius, the programming time and the likelihood of calculation error is reduced.
Before we get into circular interpolation and how it is used, below are a few rules about cutter compensation
that have to be closely followed in order to perform successful machining operations. Always refer to these
rules when programming!
1. Cutter compensation must be turned ON during a G00 or G01 X,Y move that is equal to or greater
than the cutter radius, or the amount being compensated for.
2. When an operation using cutter compensation is done, the cutter compensation will need to be
turned OFF, using the same rules as the turn ON process, i.e., what is put in must be taken out.
3. In most machines, during cutter compensation, a linear X,Y move that is smaller than the cutter
radius may not work. (Setting 58 - set to Fanuc - for positive results.)
The following illustration shows how the tool path is calculated for the cutter compensation.
The following program uses no cutter compensation. Tool path is programmed to centerline of the cutter. This is
also the way the control calculates for cutter compensation.
%
O6100
T1 M06
G00 G90 G54 X-.125 Y-.2 S5000 M03
G43 H01 Z.1 M08
G01 Z-1.0 F50.
Y4.125 F25.
G02 X.250 Y4.375 R.375
G01 X1.6562
G02 X2.0 Y4.0313 R.3437
G01 Y3.125
G03 X2.375 Y2.750 R.375
G01 X3.5
G02 X4.0 Y2.25 R.5
G01 Y.4375
G02 X3.4375 Y-.125 R.5625
G01 X-.2
G00 Z1.0 M09
G28 G91 Y0 Z0
M30
%
INTRODUCTION
This programming option can be activated by contacting your local HAAS dealer.
Quick Code is an innovative new way to program CNC machines. It combines the simplicity and flexibility
of G code programming with English descriptive sentences to enable even beginning programmers to
construct most 2 dimensional parts. Experienced programmers will also love the speed they can now enter
programs manually. This is possible because with one menu selection you can replace a large number of
individual keystrokes, with just a few. And what if you dont like the way Quick Code is programmed?
Simple! You can change it to suit your needs or programming tastes. Make it as complex or as simple as
you like.
Background
When NC machines were first introduced they had very limited or no memory at all. They were often run
from tapes and instructions needed to be as concise as possible. In order to accomplish this a sort of
encryptive language evolved which we called G code programming. A command to TURN OFF COOLANT
which requires 16 letters and spaces is reduced to M09 which takes only 3 characters. This made tape
lengths and memory requirements manageable to say the least. As it evolved, hundreds of instructions and
canned cycles were encrypted into G and M code programming. For an experienced programmer, the G
codes are actually very easy to use but the learning process requires constant referring back to the manual
to figure out which code to use to accomplish the task. And even the most experienced programmers
would have to admit that every once in a while they forget to put the right I,K,Q or Ps into say, a G83
drilling cycle. Quick Code eliminates this tedium. Simply handle cursor over to the drill cycle you want and
press the write button and all the code you need to drill the hole is inserted with default values for all
necessary I,K,Q,Ps. And you can edit those values to suit your individual needs.
How It Works
Quick Code reverses the G code encryption confusion. On the right side of the screen you have English
commands that describe the operation to perform. By selecting the operation and with one button push,
the code is inserted in your program on the left side of the screen. A program is constructed by selecting
English commands that are than changed over to machine language or G codes. In doing this you will learn
quickly the G code format without studying any manual. Another feature is the ability to cursor through a
program and Quick Code will tell you what all the G and M codes mean, shown at the bottom of the
screen, a great help in learning the code.
An Open System
Quick Code is adaptable to the way you program. Everybody programs a little differently and have special
preferences, such as, do you put the T command on the same line as the tool change command or
before? With Quick Code you can edit the program so that any English command you desire can be
matched with any G code to be inserted. Because of this open format we are letting you define innovative
new ways to program complex parts using Quick Code.
What it is Not
Quick Code is not a CAD/CAM package for generating complex moves on 3 dimensional parts. With most
CAM packages you have to draw a drawing much like you would in AUTO CAD and then indicate the
moves around the drawing and finally generate the code through the post processor. Not a simple task. Nor
is it a conversational program with icons where you are asked to fill in the blanks. The difference with these
packages is that they require training and much like learning a second language you have to have the time
and determination to learn them. They have a tremendous amount of power but you dont always need it.
Quick Code is a bridge between high end CAD/CAM and slow and cumbersome G code programming. It is
our expectation that it can be used by anyone with very minimal training. For most simple parts we believe
that Quick Code is an ideal choice.
Before describing the Quick Code environment you need to know the terms listed below. Following this
brief list is an illustration of the Quick Code display and how the terms are related to the display.
EDIT WINDOW Portion of the display that shows the currently edited program.
GROUP WINDOW Portion of the display which presents a list of groups and
items.
ITEM A line of text representing code that can be added to the edit
window when it is selected.
HELP WINDOW Portion of the display which presents user created help,
address code help, and warning messages.
The Quick Code source file can contain comments that will not be placed into the edit window. These
comments will be displayed on the first five lines of the help window. These comments are typically used
for explaining item code and usage.
As the user cursors through a program, each address code that is highlighted will be interpreted and a
short description of its usage is displayed below the edit window. This address code help is as accurate as
possible. Since the program is not being interpreted sequentially as it is when a program is run, full
interpretation cannot take place. When the context of an address code cannot be fully determined, the
most likely usage is displayed.
Sometimes during editing we can determine if a run time error will occur without actually running the
program. For instance we can tell if multiple codes from one G code group are on a line. In this case Quick
Code will display a highlighted warning message to the user indicating that there is a problem. This is
found below the help window.
SPECIAL KEYS
Quick Code makes use of the jog handle to select from the group list and group items. This is described in
the group window section above. Quick Code action takes place when the WRITE key is pressed. If there
is text on the input line, normal text insertion takes place when the WRITE key is pressed. When the input
line is blank, pressing the WRITE key will cause Quick Code to take the following action:
-If the currently highlighted Quick Code item is designed as a text help item only, the edit window is not
modified.
-If numeric program code is found associated with the highlighted Quick Code item, the edit window cursor
is moved to the end of the current edit block and the associated code is inserted after that block. The edit
cursor is left at the end of the last Quick Code block that was inserted.
Quick Code is used to "prompt" the operator for the information necessary to create a program. The
"prompting comments" are created by placing a '?' as the first character of a (?comment) in the Quick
Code source file (O9999). A comment is any text, up to 34 characters, that is contained in parentheses.
When a program is being written using Quick Code, the prompting comments will appear on the screen,
requiring a response from the operator. The numeric value entered by the operator will be assigned to the
G-code item that immediately precedes the prompting comment in the source file. The Quick Code source
file program is O9999.
For example, defining an X axis feed move, the following line of code would be in the source file:
Will produce the following prompt when creating a new program, under a another program number (O1234)
using Quick Code. And the default X location value displayed below with the prompt, as shown:
Once the operator has input a value for all of the 'variable' G-code items in a block of code, the entire
(revised) block is displayed on the input line, as shown:
CORRECT (Y/N) ?
G01 X2.5 F15. ;
If the block of code is too long to fit on the screen, the operator can scroll to view the entire line using the
right or left arrow keys, the HOME key, or the END key. The operator then must enter 'Y' to accept the
block, or 'N' to cancel it. If it's accepted, the block is written to the edit file, and the Quick Code processing
resumes with the next block (if there is one). If it is not accepted, the prompting process is repeated for the
same block.
Pressing the UNDO key while in Quick Code, will exit the current block at any time and remain where your
at in the program.
Pressing RESET will exit Quick Code and send the cursor back to the beginning.
The following illustrates how Quick Code can be used to build a program. A program will be built to spot,
drill, and tap 5 holes on a circular bolt hole pattern. We will assume that tool 1 is a spot drill, tool 2 is a
drill for a 10-32 tap, and tool 3 is the tap. Before you proceed, make sure that Quick Code is enabled in
parameter 57. ENA QUIKCODE should be set to 1. You will also need the Quick Code source program
O9999 in the control.
The jog handle is an integral part of using Quick Code and is used quite often. For brevity we use JHCW to
mean jog handle clockwise and JHCCW to mean jog handle counter clockwise. For instance, seeing
JHCW means that you should turn the jog handle in a clockwise direction.
CREATE A PROGRAM
Quick Code will not generate the new program number for you. So the first thing you must do is to create
or select a program. To create a program do the following.
This creates a program in the usual manner. Proceed to edit the program by pressing EDIT. The control will
switch to the PROGRAM display and you will see the program number and semicolon in the top left of the
screen. Now press the PRGRM/CONVRS key twice to enter Quick Code or in the advanced edit menus
under the HELP menu is a sub menu selection for Quick Code.
Empty Program.
2. JHCCW one click. The items belonging to START UP COMMANDS will appear and the item,
Program Name is the one highlighted.
3. Press the WRITE key. This will enter in a (T), for you to cursor arrow left twice onto the T in-
between the parenthesis, then type in a program name and press ALTER.
The following figure shows what the screen should look like. Note that for the code that was added, you
have text information displayed in the help window just below the group window. When the Quick Code
source file is constructed properly, you will see examples of the program code, or instructions, for that
command in this HELP window. This can be helpful in determining which item in a group you want.
- CALL TOOL 1
1. While on the START UP COMMANDS menu JHCCW and highlight the group item titled Call
Tool.
2. Press the WRITE key to have the control query you for a tool number in your program, and the
control will be flashing with a 1 in the lower left corner as the default value. Press WRITE to
accept the number 1.
Press WRITE or Y to except the block listed in the lower left corner. Or N for no, to start the
questioning again.
3. JHCCW and highlight the group item titled Tool Start Up Commands.
4. Press the WRITE key to have the control query you for the commands to define the start up of
tool 1, and enter into your program.
Note that the cursor will move to the end of the block, when you start selecting Quick Code menu items for
your program. This is where the next block of code will be entered in after.
Programmed with the Start Up Command selections entered in with Quick Code for tool 1.
Remember that after pressing WRITE you can always edit the program to make minor adjustments to code
that Quick Code inserts into your program. You do not have to leave the Quick Code display to do this. But
you must remember to reposition the cursor back to the block where you want to add the next item. Quick
Code will automatically seek the end of the current block that the cursor is on, so there is no need to
cursor to the end of the block.
We will assume that the material is aluminum and that the work coordinate zero for G54 is at the center of
the bolt hole pattern. The Quick Code source file (O9999) was created with a common program format and
menu selections. You could have a different Quick Code source file (O9998 or O9997) for different menu
selections and formats. By changing parameter 228 (to 9998 or 9997) you can quickly change the file that
Quick Code works with if you had created one.
3. Press the WRITE key to have the control query you, and answer the questions, to set up
drilling with G82.
Note that Quick Code defined a block of code to execute a spot drill cycle at that present location. You
can add more X and Y drill cycle locations if needed by selecting 6. DRILL/TAP/BORE LOCATIONS.
Note: We do not want to drill a hole at X0 Y0, which is the center of the bolt hole circle, so manually edit in
an L0 on the end of the G82 command line. This will ignore the G82 canned cycle until the next location.
2.) JHCCW and highlight the group titled Bolt Hole Circle Locations
3.) Press the WRITE key to have the control query you for the code on positioning around a bolt
hole circle.
4.) Enter in the numbers to answer all the questions in the lower left corner of the control screen,
to define all the commands necessary to position around a G70 Bolt Hole Circle to drill with a
G82 canned cycle.
Here Quick Code will question you for, a G70 command to execute a bolt hole circle pattern. The control
will first query you for an X Y center location of the bolt hole pattern.
The next question will be for the radius of the bolt hole circle. The value 1.5 will be flashing in the lower left
corner of the screen as the default value for the bolt hole circle radius. If the radius of the bolt circle is
different, then enter in the new radius value.
The next questions will be for the number of holes. The value 6 will be flashing in the lower left corner of the
screen as the default meaning that 6 holes on a circle will be drilled. We want 5 holes to be drilled. So here
you will enter the number 5 to change the pattern so that L5 will be on the G70 line.
By now you should have a good idea of how your program changes, after selecting a group item with the
handwheel and pressing WRITE. To save space we will not show you each display as a selection is made.
Instead we will list the remaining actions needed to finish drilling and tapping the 5 holes. The remaining
selections are very similar to what we have already done.
- CALL TOOL 2
1. JHCW to the group titled START UP COMMANDS then JHCCW and highlight the group item
titled Call Tool.
2. Press the WRITE key to have the control query you for a tool and enter in the number 2.
3. JHCCW and highlight the group item titled Tool Start Up Commands.
4. Press the WRITE key to have the control query you for defining all the commands to start up
tool 2 in your program.
2. JHCCW three clicks. Deep Hole Peck Drill G83 will be highlighted.
3. Press the WRITE key to have the control query you for the code on setting up drilling with G83.
Note that Quick Code defined a block to execute a spot drill cycle at that present location. You can add
more X and Y drill cycle locations if needed by selecting 6. DRILL/TAP/BORE LOCATIONS.
Note: We do not want to drill a hole at X0 Y0, which is the center of the bolt hole circle, so manually edit in
an L0 on the end of the G82 command line. This will ignore the G82 canned cycle until the next location.
2. JHCCW and highlight the group titled Bolt Hole Circle Locations
3. Press the WRITE key to have the control query you for the code on positioning around a bolt
hole circle.
4. Enter in the numbers to answer all the questions in the lower left corner of the control screen,
to define all the commands necessary to position around to drill a Bolt Hole Circle with a G83
canned cycle.
- CALL TOOL 3
1. JHCW to the group titled START UP COMMANDS then JHCCW and highlight the group item
titled Call Tool.
2. Press the WRITE key to have the control query you for a tool and enter in the number 3.
3. JHCCW and highlight the group item titled Tool Start Up Commands.
4. Press the WRITE key to have the control query you for defining all the commands to start up
tool 3 in your program.
3. Press the WRITE key to have the control query you for the code on setting up tapping with G84.
Note that Quick Code defined a block to execute a tapping cycle at that present location. You will need to
enter in the appropriate speed and feed for this tapping cycle. You can add more X and Y tap cycle loca-
tions if needed by selecting 6. DRILL/TAP/BORE LOCATIONS.
Note: We do not want to tap a hole at X0 Y0, which is the center of the bolt hole circle, so manually edit in
an L0 on the end of the G84 command line. This will ignore the G84 canned cycle until the next location.
2. JHCCW and highlight the group titled Bolt Hole Circle Locations
3. Press the WRITE key to have the control query you for the code on positioning around a bolt
hole circle.
4. Enter in the numbers to answer all the questions in the lower left corner of the control screen,
to define all the commands necessary to position around to tap a Bolt Hole Circle with a G84
canned cycle.
At this point you may decide to position the table forward to remove the part. You can do this in your
program with the following.
2. JHCCW one click, to have the Rapid Z axis coolant OFF highlighted.
3. Press WRITE.
This will query you for the location to Rapid the Z axis and turn OFF the coolant with an M09.
All of the text seen in the group window, all of the code associated with items of groups, and much of the
help text observed in the help window is contained in a G code program. This program is called the Quick
Code source file. With this design, the user can modify Quick Code and tailor it to his specific needs. You
can add or change groups and items. The user can develop his own Quick Code file, or program, by editing
this file. Dealers can develop new applications and distribute them to their customers. The ability to edit
the source file makes Quick Code an extremely flexible tool.
(*GROUP1)
(*GROUP2)
(*GROUP3)
(*GROUP4)
(*GROUP5)
Of course, you can use any descriptive title for the group that is appropriate to what the group will contain.
Group titles can be up to 35 characters long. Any additional characters beyond 35 will not be displayed.
GROUP HELP
The first five comments after the group definition will be displayed in the help window. These comments can
be used to explain what is contained in the group. For example:
(*GROUP)
(THIS GROUP CONTAINS HELP ON HOW TO)
(USE QUICK CODE. WHEN THIS GROUP IS)
(HIGHLIGHTED, TURN THE JOG HANDLE IN)
(THE MINUS DIRECTION FOR MORE HELP.)
Additional comments beyond five lines are not displayed by Quick Code. This is a method of documenting
the source file for the developer of the Quick Code file. Documenting comments can also be hidden in the
source file by placing an empty comment after group help comments. In the following example only the first
two comments are displayed in the help window.
(*HELP)
(ONLY THE FIRST TWO COMMENTS ARE)
(DISPLAYED IN THE HELP WINDOW.)
()
(THIS COMMENT IS NOT DISPLAYED)
If more than five lines are required to comment on a group, then you can use several groups to display 5,
10 or 15 lines of help. With this method you can add any amount of information you want about that group.
GROUP CODE
What happens when a group definition is highlighted and the user presses the WRITE key? If there is a G
code after the group definition and before any other group or item definitions, then that G code will be
inserted into the program that is being developed. Groups do not have to contain items for generating G
code. A group title can stand alone as a code generating entity. The following group definition would add a
G28 M30 to the program being developed when WRITE is pressed.
(*END OF PROGRAM)
(THIS RETURNS ALL AXES TO MACHINE)
(ZERO AND ENDS PROGRAM EXECUTION)
(G28 M30)
()
G28 M30
()
Note that the user will not see what G code is generated until the WRITE key is pressed and the code is
inserted into the program. For this reason you may want to place the code that is to be generated in a help
comment as is done above.
Quick Code can also generate comments in the program being generated. Any comments following an
empty comment will be added to the currently edited program. In fact all code following an empty comment
is inserted into the program until another empty comment is encountered or until a group or item definition
is encountered. The empty comment must be the first code in the block. Any code in the same block as
the empty comment is not entered into the program. In the following example, only the code in blocks
between the empty comment blocks are added to the program being generated.
(*GENERATES COMMENTS AND CODE)
(THIS IS NOT ADDED TO PROGRAM)
()(THIS IS NOT ADDED TO PROGRAM)
(THESE COMMENTS WILL BE ADDED TO THE)
(PROGRAM WHEN THIS GROUP IS)
(HIGHLIGHTED AND WRITE IS PRESSED)
G0 G90 G54 (THIS CODE IS ADDED)
()
(THESE COMMENTS ARE NOT ADDED TO THE)
(PROGRAM BEING GENERATED)
DEFINING AN ITEM BELONGING TO A GROUP (**)
To define an item belonging to a group simply enter a comment after a group definition where the first two
characters of the comment are asterisks. For instance, the following code generates a group with four
subordinate items.
(*GROUP)
(**ITEM1)
(**ITEM2)
(**ITEM3)
(**ITEM4)
With the above Quick Code source file, only one group is displayed in the group window when the jog
handle is turned clockwise. When the jog handle is turned counter clockwise, the five items are displayed
and traversed. The item titles are indented one space so that you can differentiate items from groups. Only
34 characters of the item definition comment are displayed in the group window. Additional characters are
ignored. The group that items belong to will always be displayed on the screen. The only limit to the
number of items in a group is the amount of control memory available.
ITEM HELP
Item help works the same way as group help. The first four comments after the item definition are dis-
played in the help window. If more than four lines are required, it is recommended that prior items contain
the desired comments. In this case instructions would have to be added to indicate which item generates
the G code.
For example:
(*GROUP)
(**HELP FOR THE FOLLOWING ITEM)
(THESE LINES OF CODE ARE HELP)
(COMMENTS THAT REQUIRE MORE THAN)
(FIVE LINES OF COMMENTARY)
(THIS IS THE LAST LINE OF THIS ITEM)
(**ITEM THAT GENERATES CODE)
(AND HERE WE FINISH THE COMMENTARY)
(FOR CODE GENERATED BY THIS ITEM)
G0 G90 G01 F30
()(*********************************)
(*NEXT GROUP)
Although the above example is somewhat awkward, it does provide a method that will satisfy unusual
cases. The line with all of the asterisks is legal. It is not inserted into the current program when the WRITE
key is pressed. It is used to visually separate groups.
ITEM CODE
Code generated by group items is formatted in the same manner as group code is formatted. Refer to the
section on group code for an explanation of how code is generated.
After developing or modifying a Quick Code file, it is recommended that you save an off-line copy in a
computer. You can keep comments in the Quick Code source file prior to the first group indicating what
version the file is and how it differs from other versions. Maintain this program as you would any other G
code program in your control with a proper backup scheme. Remember! This source program file
operates the Quick Code feature in your HAAS machine. And you can have more then one Quick
Code file, but the one the control is using is the program number listed under parameter 228
which should be a 9000 number and the one Haas uses is program number O9999.
A sample Quick Code source file can be found on the floppy that comes with the control. It contains many
examples of how Quick Code can be used.
Visual Quick Code (VQC) is a graphical editor made to help simplify programming for commonly made,
simple parts. Given a standard part template and a set of dimensions, a program is created.
2. In Edit mode, press the PRGRM/CONVRS key three times to enter VQC. You can also enter
VQC by using the pull-down menus in the Advanced Editor under HELP. After entering you will
see a mostly empty screen with a list of words or short phrases on the right. These are the
part categories.
3. Using the up and down arrow keys, select the part category you want, then press WRITE. Part
templates will be seen in the large square area.
4. Using the up, down, left and right arrow keys, select a part template and press WRITE or
press CANCEL to return to the category selection screen (step 3). Pressing WRITE (on the
part template) will display an enlarged image of the selected part in the large square area
including variables identifying the part dimensions.
5. Enter the data for the part. NOTE: Z0 will typically be 0, and the other Z values will typically be
negative. R and C values are used to specify the radius or chamfer of a corner.
6. When the last value is entered, the control will ask if all data is correct. Press Y or N. If Y is
pressed, the new program will be generated and sent to the Advanced Editor. Check the
program that was created, for example, run the program in graphics mode and check the tool
paths. Verify the tool offsets, and run the preliminary part using reduced feeds.
Starting
You have the choice of either starting from scratch by creating a new empty program; or use VQC to insert
code into an existing program. To insert into an existing program, select the program, enter Advanced
Editor and position the cursor at the ; (end of block) where you want the new code to be inserted after.
If you choose to start with a new program, VQC will end the program with an M30 (program end and
rewind), if it exists in the template.
VQC will not end the code with an M30 if it is inserted into an existing program. Regardless if there is an
M30 in the template (this is to prevent unwanted or multiple M30s).
To start Visual Quick Code (VQC) enter Edit mode then press the PRGRM/CONVRS key three times.
Another way to use the pull down menus in the Advanced Editor under HELP.
Selecting a Category
Use the arrow keys to select the parts category that most closely matches the desired part and press
WRITE. A set of thumbnail illustrations of the parts in that category will appear. These are the part tem-
plates for that category.
After pressing Y, the G-code necessary to produce the part specified will be written to the selected pro-
gram number. Additionally the program will be put into the Advanced Editor in order to double check the
program. Verify the program by first running it in Graphics mode.
Other keywords are used within sections to set the attributes of the object defined in that section. For
example, within the PARAMETER section, we might see the following lines:
(#DC)
(LABEL DEPTH CUT)
(POSITION [20,6])
The first line defines the variable which is used to hold the information entered by the user. The second line
defines the "label", to put on the visual portion of the screen. This "label" represents the variable on the first
line for better clarity. "LABEL" tells the Visual Quick Code system to print anything following the keyword
"LABEL" on the screen. The third line with the key word "POSITION" tells the Visual Quick Code where to
put the label on the screen. The following is a complete list of the keywords used by Visual Quick Code.
L IST OF K EYWORDS
The Visual Quick Code system expects the keyword to appear in the Section column. If the keyword
appears in a different area, Visual Quick Code will ignore it, or produce an error message because it
mistook the keyword for one that it expected, and the text following the keyword did not fit into the Visual
Quick Code pattern.
The selections fall into two groups, categories and parts. The programmer first selects, from a list, the type
of machining that will be used, for example, Drill/tap, bolt hole patterns, bore cycles, etc. This is the
catagory group. Selecting one of these categories displays an illustrated group of parts. The programmer
chooses from these illustrations the one that most resembles the desired part. Once chosen the control
now prompts the programmer for the dimensions of the parts. Programming code is generated after the
programmer enter the dimensions.
Program O09997 is the Visual Quick Code model. The program consists of several Category sections
which define the categories available to the programmer.
The following is a basic outline of program O9997 using a top-down approach, becomming more and more
specific. This is the way that Visual Quick Code is used. First the user sees a list of catagories. After
selecting a category, the user sees a list of parts. After selecting a part, the user sees what dimensions he
or she can specify, and then the G-code is produced.
%
O09997
(CATEGORY)
...
(END CATEGORY)
(CATEGORY)
...
(END CATEGORY)
(CATEGORY)
...
(END CATEGORY)
(CATEGORY)
...
(END CATEGORY)
%
Each CATEGORY section in turn consists of several TEMPLATE sections. These sections define which
parts are available to the user once a category has been selected.
%
O09997
(CATEGORY)
...
(TEMPLATE)
...
(END TEMPLATE)
(TEMPLATE)
...
(END TEMPLATE)
(TEMPLATE)
...
(END TEMPLATE)
(END CATEGORY)
%
Each TEMPLATE section consists of a DIAGRAM section, a PARAMETER section, and a GCODE
section. The GCODE section is where the programming code is stored, but is missing some values that
are entered by the programmer, via variables.
%
O09997
(CATEGORY)
...
(TEMPLATE)
...
(DIAGRAM)
...
(END DIAGRAM)
(PARAMETER)
...
(END PARAMETER)
(GCODE)
...
(END GCODE)
(END TEMPLATE)
(END CATEGORY)
%
CATEGORY Section
The Category section is a collection of Part Templates. The necessary items are a beginning, a name,
templates, and an end. CATEGORY marks the beginning of a Category section, and END CATEGORY
marks the end. All of the templates that appear between the beginning and the end of a category belong to
that category. NAME (your category name) should be the first line in the category section. The entered
name will appear in the list of Visual Quick Code categories (this list appears when Visual Quick Code is
first started).
Example:
%
(CATEGORY)
(NAME: Parts With holes)
(TEMPLATE)
...
(DIAGRAM)
...
(END DIAGRAM)
(PARAMETER)
...
(END PARAMETER)
(GCODE)
...
(END GCODE)
(END TEMPLATE)
(END CATEGORY)
%
DIAGRAM Section
The DIAGRAM section is the part of the program that creates the part illustration on the screen. The
illustration can be drawn with lines, arcs, and jagged lines that represent threads. This drawing is both for
the thumbnail sketch and the full-sized illustration. The labels that appear on the full-sized version of the
part are specified in the PARAMETERS section (see Parameters description).
DIAGRAM Coordinates
Each of the elements of the diagram must have a starting point and an ending point. The notation is [X,Y]
where X is the horizontal coordinate and Y is the vertical coordinate. The best way to find out what the
starting and ending points should be is to use graph paper. First sketch, on the graph paper, what is to
appear on the screen. Then pick a point on the graph paper to be the origin, [0,0] (Any point will work, as
the diagram will be scaled to fit wherever it is drawn). You can then determine the starting and ending
points of all the lines, arcs (CW or CCW) and threads.
DIAGRAM Elements
The elements that make up a diagrams are lines, arcs (CW or CCW) and Threads. For each element, the
starting point is specified first, then the ending point.
NOTE: Arcs (CW or CCW) may only cover 180 degrees, or half a circle. If an arc
of more than 180 degrees is needed, another arc must be used.
PARAMETERS Section
The PARAMETERS section lists all of the parameters that can be used to customize the standard part.
Some of these would be the physical dimensions of the raw material and the part. Others would be tool
and offset information, feed rates, and spindle speeds.
Each parameter begins with #, which tells Visual Quick Code that value followed by the # will be the
name for a specific variable. The format is:
(PARAMETERS)
(#your variable name)
(END PARAMETERS)
After a variable (parameter) has been specified, then any attributes of that particular parameter can be
specified.
Formatting Attributes
Several attributes are used to modify the value entered by the user. This is so that when the PARAMETER
is used in the GCODE section, it will appear correctly. The Format column in the following table shows
what would result from the G code template X#A, if the user enters 1 when asked for the value of parameter
A. If none of the formatting attributes are used, the resulting G code would be X1.
(NO DECIMAL) X1 The value will appear in the final G-code output without a
decimal point. Can be used for spindle speeds, tool numbers
and offsets.
(ONE PLACE) X.1 Numbers entered without a decimal point are automatically
scaled to tenths.
(TWO PLACE) X.01 Numbers entered without a decimal point are automatically
scaled to hundredths.
(THREE PLACE) X.001 Numbers entered without a decimal point are automatically
scaled to thousandths.
(FOUR PLACE) X.0001 Numbers entered without a decimal point are automatically
scaled to ten-thousandths.
If more than one of these attributes are used with a single parameter, the results are not defined.
NOTE: Do not use more than one formatting attribute for a single parameter.
G CODE Section
The GCODE section is responsible for producing the G code necessary to cut the specified part. Similar to
the previous sections of program O09997, the GCODE section consists only of comments. The comments
contain standard programming code, just as a user would type it into the editor, except that the end-of-
block marker (;) is not used within the comments. The other difference is an extension similar to macro
variables: in place of a numeric value, # followed by a letter may be entered. The letter represents the
variable name of a parameter in the PARAMETERS section.
X3.5;
Remember, the #letter combination can be used anywhere a number would be used; this means in
expressions, as well as with simple codes. For example, (X [#A - #B]) is valid, as long as both A and B
exist in the PARAMETER section.
NOTE: Be sure to use the parameter formatting attributes to make sure the G-
code that is produced is valid. For example, T101.; is not a valid G-code,
because of the decimal point. So if a line in the G-code section reads
(T#E), then parameter E must have the NO_DECIMAL attribute set.
EXAMPLE PROGRAM
Below is an example of a simple program. This example is a complete O09997 template and is provided to
help complete what you have just read.
%
O9997
(CATEGORY)
(TEMPLATE)
(NAME SQUARE MILLING )
(DIAGRAM)
(LINE [0,0] [40,0]) (CENTER LINES)
(LINE [0,0] [0,37])
(DATUM [34,31])
(END DIAGRAM)
(PARAMETERS)
(#ToolNo)
(NO DECIMAL)
(#WrkOfset)
(NO DECIMAL)
(#CuterRad)
(#SpdleRpm )
(NO DECIMAL)
(#DpthCut)
(#XDist)
(POSITION [17,34])
(#YDist)
(POSITION [35,16])
(#Feedrate)
(END PARAMETERS)
(GCODE)
(T#ToolNo M06)
(G00 G90 G#WrkOfset X[#CuterRad+.1] Y[#CuterRad+.1])
(S#SpdleRpm M03)
(G43 H#ToolNo Z1. M08)
(G01 Z-#DpthCut F50.)
(G01 G41 D#ToolNo X0)
(G01 Y-#YDist F#Feedrate)
(G01 X-#XDist)
(G01 Y0)
(G01 X[0+#CuterRad+.1])
(G01 G40 Y[#CuterRad+.1])
(G00 Z1. M09)
(G28 G91 Z0 M05)
(M30)
(END GCODE)
(END TEMPLATE)
(END CATEGORY)
%
The HAAS Advanced Editor gives the user the ability to view and edit two CNC programs at a time. This makes
it easier to modify existing programs and to create new ones. The editor includes pull-down menus that allow
the user to access the features of the editor. Additionally, a context-sensitive help function is available to
provide information on all of the editors features.
The Advanced Editor is entered by pressing the EDIT key. The user can alternate between the Advanced Editor,
the 40 column editor, and Quick Code with successive presses of the PRGRM/CONVRS key.
Whenever the pull-down menu system is active, the current menu is pulled down and one item is highlighted.
The user can then use the jog handle to scroll through the menu items. The user can also use the up and down
arrow keys to scroll through the items of that menu, or use the left and right arrow keys to open other menus.
The UNDO key is used to deactivate the pull-down menu system. If UNDO is pressed after invoking an execut-
ing function from a pull-down menu, it will abort that function.
The EDIT key can be used to switch, left or right, between the two programs that have been selected to edit.
Pressing the F4 key will open another copy of the current program in the Advanced Editor. The user can quickly
edit two different locations in the same program by pressing F4, moving to the second location, and then using
the EDIT key to move back and forth between the two locations. If the user enters Onnnnn and then presses
F4, program Onnnnn is opened in the inactive window.
Onnnnn
Mode and Control Status - contain the Current Display page, Operating mode and Control status.
Messages - where control status messages are displayed. This area is used to display prompts
for user input in the advanced editor, and any alarm messages.
Key Help - contains short immediate help messages. Shows the user the most important keys that can
be used in the current context or operation.
Left/Right Side Display - shows the active and inactive programs. When first entering the editor, the
current program will be displayed on the left side and the right side will be blank. These areas can
display another program or display program lists and help pages, when the appropriate menu item is
selected from the pull-down menu.
Context-Sensitive Help - where context-sensitive help is displayed when you cursor onto a menu item.
This section briefly describes each feature of the advanced editor, each item found in the pull-down menus, and
any prompts that might appear.
When this menu item is selected, a list of programs is presented for viewing. Scroll through the list by using
the cursor keys or the jog handle. Pressing the ENTER or SELECT PROG key will select the program that is
highlighted and will replace the selection list with the selected program. The selected program is now active,
and the previously active program will appear on the inactive edit screen.
To delete a single program, cursor to the program number and press the ENTER key. A prompt will ask for a
confirmation of the deletion operation. Enter Y to delete the highlighted program. If any other key is pressed,
the program will not be deleted. After a program is deleted, the list of programs will again be presented.
To delete all programs, cursor to ALL and press ENTER. Confirm deletion of all programs by pressing Y.
When all programs are deleted, program O0000 is created, and it is made the active program.
Select Text
This item will set the start point of the block selection. To set the end point, scroll up or down to the desired
place, and press the F2 or ENTER key. The selected block will then be highlighted. To deselect the block,
press UNDO. This function works the same as in the 40 column editor, except this menu option is used to start
selecting text, instead of the F1 key. Either the ENTER or F2 key can be used to end the selection. The
following prompt will appear when this item is selected:
Find Again
This menu item will search the current program for the last block of code that was searched for. It will begin to
search at the current cursor location, in the direction that was specified in the previous search. This function
will search both selected and unselected blocks.
Renumber By Tool
Searches selected text, or the entire program, for T codes and renumbers program blocks grouped by T code.
Reverse X & Y
When this menu item is selected, all X address codes in the program will be changed to Y address codes, and
Ys to X. If a block is selected, only the address codes contained within it will be affected.
To select a program, cursor to the program number and press the INSERT key. A highlighted space will appear
before the program to indicate it has been selected. Pressing INSERT again will deselect the program, and the
highlighted space will disappear. The DELETE key can be used to deselect all selected programs. When the
cursor is on ALL, all the programs are selected regardless of highlighting
To send the selected program(s), press the ENTER key. If more than one program or ALL is selected, the data
will be sent with one % at the beginning of the stream and one at the end.
Receive RS-232
This menu item will receive program(s) from the RS-232 serial port. The program(s) will then be stored in the
CNC memory with the corresponding Onnnnn program number(s).
On LISTPROG ALL must first be highlighted before using this menu item. The Onnnnn program numbers will
be entered automatically from the input stream data. Note, ALL must be reselected on the LIST PROG
screen after each file transfer.
Send Disk
This menu item will send program(s) to the disk. When this menu item is selected, a list of all the programs in
memory is presented, with ALL at the end.
To select a program, cursor to the program number and press the INSERT key. A highlighted space will apear
before the program to indicate it has been selected. Pressing INSERT again will deselect the program, and the
highlighted space will disappear. The DELETE key can be used to deselect all selected programs. When the
cursor is on ALL, all programs are selected regardless of highlighting.
ENTER DISK FILENAME: Type in the desired disk filename (in standard PC DOS format) for the disk file being
sent, then press the ENTER key. If more than one program or ALL is selected, the data will be sent with one
% at the beginning of the stream and one at the end. If a filename is not entered, the controller will send each
selected file separately using the Onnnnn program number as the filename.
Receive Disk
This menu item will receive programs from the disk. The program(s) will then be stored in the CNC memory with
the corresponding Onnnnn program number(s).
ENTER DISK FILENAME: Type in the filename (in standard PC DOS format) of the disk file being received,
then press the ENTER key.
Disk Directory
This menu item will display the directory of the disk, with the first entry highlighted. To select a file, press the
up and down arrow buttons or use the jog handle. To load a file, select it and press the WRITE key. The G-code
programs in the file will be loaded into memory.
If there is insufficient memory for the entire file, Alarm 429 will be generated, and only a partial directory will be
displayed.
Quick Code
Selecting this menu item will place Quick Code on the inactive side of the editor. All Quick Code functions are
now available to the user. Refer to the Quick Code section of the Operators Manual for a full description of
Quick Code. Pressing the EDIT key will exit Quick Code.
Pressing these keys, when in the Advanced Editor display, will quickly get you to these menu items without
having to press the F1 key and cursoring to that selection.
SELECT
Will quickly bring up the program list on the inactive side of edit display to SELECT
PROG PROGRAM FROM LIST.
This key will begin to SELECT TEXT and define the starting line of a block to be edited.
F2 Scroll down to the last line in the block definition, and press the F2 or WRITE key. The
selected block of text will then be highlighted.
EDIT This key can be used to SWITCH TO LEFT OR RIGHT SIDE between two programs that
have been selected to edit.
F4 Pressing F4 will open another copy of the same program on the other side of the Advanced
Editor display. The user can quickly edit two different locations in the same program. The
edit key will switch you back and forth and update between the two programs.
If you enter the program number (Onnnn) and then press F4 or the arrow down key, that
INSERT
program will be brought up on the other side of the Advanced Editor.
INSERT can be used to COPY SELECTED TEXT in a program to the line after where you
place the cursor arrow point.
ALTER ALTER can be used to MOVE SELECTED TEXT in a program to the line after where you
place the cursor arrow point.
UNDO If a block has been selected, pressing UNDO will simply exit a block definition.
SEND
RS232 Pressing the SEND RS-232 key will activate that I/O menu selection.
RECV
RS232
Pressing RECV RS-232 key will activate that I/O menu selection.
ERASE
PROG
Pressing the ERASE PROG key will activate that I/O menu selection. This will bring up
program list on the inactive side of edit display for you to cursor to a program and delete it.
3.22 M ACROS
INTRODUCTION
This control function is optional. If you would like further information on installing this feature please call Haas
Automation or your dealer for more information.
This is an introduction to macros as implemented on the HAAS CNC controls. MACROS adds capabilities and
flexibility to standard G-code programming that allow the programmer to better define a tool path in a quicker
and more natural way. With few exceptions, MACROS, as implemented on the HAAS controls, is compatible
with FANUC 10M and 15M controls. Macro features not included in the current release are listed at the end of
this section. Programmers already familiar with macro programming will want to review this section in order to
avoid unnecessary work.
In traditional CNC programming, a program consists of subroutines that CANNOT be changed or altered except
by editing individual values with an editor. MACROS allows the capability to program subroutines where the tool
path or location of the tool path is changed, depending on the values contained within variables set by the
programmer. These variables can be passed to the subroutine as parameters, or the values can reside in what
are called global variables.
What this all means is that a programmer can create a collection of subroutines that have been fully debugged.
These programs can be used as high level tools that can enhance programmer and machinist productivity.
MACROS is not intended to replace modern CAD/CAM software, but it can and has improved machine produc-
tivity for those who use it.
Here are a few examples of the applications for MACROS. Rather than give macro code here, we will outline
the general applications that MACROS can be used for.
1) Determine X, Y, and Z coordinates and angle where the clamp is to be placed by jogging the
machine to the proposed clamp position and reading the position coordinates from the machine
display.
Here, macro 2000 (not shown) takes care of all the work since it was designed to drill the clamp bolt hole
pattern at the specified angle of A. Essentially, the machinist has created his own custom canned cycle.
Simple Patterns That Are Repeated Over And Over Again In The Shop
Patterns that recur over and over again can be parameterized and kept around for easy, immediate use. For
example:
Probing
Probing enhances the capabilities of the machine in many ways. Below is just a hint of the possibilities.
Macros allow less experienced personnel to operate the machine. Conditions can be detected and custom
operator messages or alarms can be displayed on the console to notify the operator.
G65 is the command that calls a subroutine with the ability to pass arguments to it. The format follows.
Anything enclosed in brackets is optional. This should not be confused with expression brackets that are
explained below. The G65 command requires a P address parameter corresponding to any program number
currently in memory. When the optional L address is used the macro call is repeated the specified number of
times.
In Example 1, subroutine 1000 is called once with no parameters passed to the routine. G65 calls are similar
to, but not the same as, M98 calls. Up to four G65 calls can be made at the same time, (Nesting four deep).
Example 1: G65 P1000 ; (Call subroutine 1000 as a macro)
M30 ; (Program stop)
O1000 ; (Macro Subroutine)
...
M99 ; (Return from Macro Subroutine)
In Example 2, subroutine 9010 is designed to drill a sequence of holes along a line whose slope is determined
by the X and Y arguments that are passed to it in the G65 command line. The Z drill depth is passed as Z, the
feed rate is passed as F, and the number of holes to be drilled is passed as T. The line of holes is drilled
starting from the current tool position when the macro subroutine is called.
Example 2: G00 G90 X1.0 Y1.0 Z.05 S1000 M03 ; (Position tool)
G65 P9010 X.5 Y.25 Z.05 F10. T10 ; (Call 9010)
G28 M30 ;
O9010 ; (Diagonal hole pattern)
F#9 ; (F=Feed rate)
WHILE [#20 GT 0] DO1; (Repeat T times)
G91 G81 Z#26 ; (Drill To Z depth)
#20=#20-1 ; (Decrement counter)
IF [#20 EQ 0] GOTO5 ; (All holes drilled)
G00 X#24 Y#25 ; (Move along slope)
N5 END1 ;
M99 ; (Return to caller)
ALIASING
Aliasing is a means of assigning a G code to a G65 P##### sequence. For instance, in Example 2 it would be
easier if one could write:
G06 X.5 Y.25 Z.05 F10. T10 ;
Here, we have substituted an unused G code, G06 for G65 P9010. In order for the above block to work we must
set the parameter associated with subroutine 9010 to 06 ( Parameter 91).
Note that G00, G65, G66, and G67 can not be aliased. All other codes between 1 and 255 can be used for
aliasing.
Program numbers 9010 through 9019 are reserved for G code aliasing. The following table lists which HAAS
parameters are reserved for macro subroutine aliasing.
Setting an aliasing parameter to 0 disables aliasing for the associated subroutine. If an aliasing parameter is
set to a G-code and the associated subroutine is not in memory, then an alarm will be given.
M-Code Aliasing
MACRO ARGUMENTS
The arguments in a G65 statement are a means of sending values to and setting the local variables of a called
macro subroutine.
In Example 2 above, the arguments X and Y are passed to the macro subroutine local variables. Local variable
#24 is associated with X and is set to 0.5. Similarly, Local variable #25 is associated with Y and is set to 0.25.
The following two tables indicate the mapping of the alphabetic address variables to the numeric variables used
in a macro subroutine.
Alphabetic Addressing
Address: A B C D E F G H I J K L M
Variable: 1 2 3 7 8 9 - 11 4 5 6 - 13
Address: N O P Q R S T U V W X Y Z
Variable: - - - 17 18 19 20 21 22 23 24 25 26
Address: A B C I J K I J K I J
Variable: 1 2 3 4 5 6 7 8 9 10 11
Address: K I J K I J K I J K I
Variable: 12 13 14 15 16 17 18 19 20 21 22
Address: J K I J K I J K I J K
Variable: 23 24 25 26 27 28 29 30 31 32 33
Arguments accept any floating point value to four decimal places. If you are in metric, the control will assume
thousandths (.000). In Example 3 below, local variable #7 will receive .0004.
Address: N O P Q R S T U V W X Y Z
Variable: - - - .0001 .0001 1. 1. .0001 .0001 .0001 .0001 .0001 .0001
All 33 local macro variables can be assigned values with arguments by using the alternate addressing method.
The following example shows how one could send two sets of coordinate locations to a macro subroutine.
Local variables #4 through #9 would be set to .0001 through .0006 respectively.
Example 3: G65 P2000 I1 J2 K3 I4 J5 K6 ;
The following letters cannot be used to pass parameters to a macro subroutine: G, L, N, O or P.
MACRO CONSTANTS
Constants are floating point values placed in a macro expression. They can be combined with addresses A...Z
or they can stand alone when used within an expression. Examples of constants are .0001, 5.3 or -10.
M ACRO VARIABLES
There are three categories of macro variables: system variables, global variables, and local variables.
Variable Usage
All variables are referenced with a number sign (#) followed by a positive number. Examples are: #1, #101, and
#501.
Variables are decimal values that are represented as floating point numbers. If a variable has never been used,
it can take on a special undefined value. This indicates that it has not been used. A variable can be set to
undefined with the special variable #0. #0 has the value of undefined or 0.0 depending on the context it is used
in. More about this later. Indirect references to variables can be accomplished by enclosing the variable number
in brackets.
#[<expression>]
The expression is evaluated and the result becomes the variable accessed. For example:
#1=3;
#[#1]=3.5 + #1;
This sets the variable #3 to the value 6.5.
Variables can be used in place of G-code address constants where address refers to the letters A..Z.
In the block
N1 G0 G90 X1.0 Y0 ;
the variables can be set to the following values:
#7=0;
#11=90;
#1=1.0;
#2=0.0;
and the block replaced by:
N1 G#7 G#11 X#1 Y#2 ;
The values in the variables at runtime are used as the address values.
Local Variables
Local variables range between #1 and #33. A set of local variables is available at all times. When a call to a
subroutine with a G65 command is executed, the local variables are saved and a new set is available for use.
This is called nesting of the local variables. During a G65 call, all of the new local variables are cleared to
undefined values and any local variables that have corresponding address variables in the G65 line are set to
the G65 line values. Below is a table of the local variables along with the address variable arguments that
change them.
Variable: 1 2 3 4 5 6 7 8 9 10 11
Address: A B C I J K D E F H
Alternate: I J K I J
Variable: 12 13 14 15 16 17 18 19 20 21 22
Address: M Q R S T U V
Alternate: K I J K I J K I J K I
Variable: 23 24 25 26 27 28 29 30 31 32 33
Address: W X Y Z
Alternate: J K I J K I J K I J K
Note that variables 10, 12, 14..16 and 27..33 do not have corresponding address arguments. They can be set if
a sufficient number of I, J and K arguments are used as indicated above in the section about arguments.
Once in the macro subroutine, the local variables can be read and modified by referencing the variable numbers
1..33.
When the L argument is used to do multiple repetitions of a macro subroutine, the arguments are set only on
the first repetition. This means that if local variables 1..33 are modified in the first repetition, then the next
repetition will have access only to the modified values. Local values are retained from repetition to repetition
when the L address is greater than 1.
Calling a subroutine via an M97 or M98 does not nest the local variables. Any local variables referenced in a
subroutine called by an M98 are the same variables and values that existed prior to the M97 or M98 call.
Global Variables
Global variables are variables that are accessible at all times. There is only one copy of each global variable.
Global variables occur in two ranges: 100..199 and 500..599. The global variables remain in memory when
power is turned off. They are not cleared as in the FANUC controls.
System Variables
System variables give the programmer the ability to interact with a variety of control parameters and settings.
By setting a system variable, the function of the control can be modified or altered. By reading a system
variable, a program can modify its behavior based on the value in the variable. Some system variables have a
READ ONLY status. This means that they can not be modified by the programmer. A brief table of currently
implemented system variables follows with an explanation of their use.
VARIABLES USAGE
#0 Not a number (read only)
#1-#33 Macro call arguments
#100-#199 General purpose variables saved on power off
#500-#699 General purpose variables saved on power off
#700-#749 Hidden variables for internal use only.
#800-#999 General purpose variables saved on power off
#1000-#1033 64 discrete inputs (read only)
#1064-#1068 Maximum axis loads
#1080-#1087 Raw analog to digital inputs (read only)
#1090-#1097 Filtered analog to digital inputs (read only)
#1094 Spindle load with OEM spindle drive (read only)
#1098 Spindle load with Haas vector drive (read only)
#1100-#1139 40 discrete outputs
#1140-#1155 16 extra relay outputs via multiplexed output
#1264-#1268 Maximum axis loads
#2000-#2199 Tool length offsets
#2200-#2399 Tool length wear
#2400-#2599 Tool diameter/radius offsets
#2600-#2799 Tool diameter/radius wear
#3000 Programmable alarm
#3001 Millisecond timer
#3002 Hour timer
#3003 Single Block Suppression
#3004 Override control
#3006 Programmable stop with message
#3011 Year, month,day
#3012 Hour, minute, second
#3020 Power on timer (read only)
#3021 Cycle start timer (read only)
#3022 Feed timer (read only)
#3023 Present part timer (read only)
#3024 Last complete part timer (read only)
#3025 Previous part timer (read only)
#3026 Tool in spindle (read only)
#3027 Spindle RPM (read only)
#3901 M30 count 1
#3902 M30 count 2
#4001-#4021 Previous block group codes
#4101-#4126 Previous block address codes
NOTE: Mapping of 4101 to 4126 is the same as the alphabetic addressing of Macro
Arguments section; e.g. the statement x1.3 sets variable #4124 to 1.3.
NOTE: The low order bits of large values will not appear in the macro variables for
settings and parameters
CAUTION! Do not use outputs that are reserved by the system. Using these
outputs may result in injury or damage to your equipment.
The user can change the state of these outputs by writing to variables designated as "spare". If the outputs are
connected to relays, then an assignment of "1" sets the relay. An assignment of "0" clears the relay.
Referencing these outputs will return the current state of the output and this may be the last assigned value or
it may be the last state of the output as set by some user M code. For example, after verifying that output
#1108 is "spare":
#1108=1; (Turns #1108 relay on)
#101=#3001+1000; (101 is 1 second from now)
WHILE [[#101 GT #3001] AND [#1109 EQ 0]] D01
END1 (Wait here 1 second or until relay #1109 goes high)
#1108=0; (Turns #1108 relay off)
The number of outputs available to the user and where user M codes are mapped is model dependent. If your
control is not equipped with the M-code relay board, then M21 through M28 will be mapped from #1132-#1139.
If you have equipment with the M-code relay board installed, see the 8M option section for information and
instructions.
You should always test or dry run programs that have been developed for macros that is running with new
hardware.
Tool Offsets
HAAS macros have been implemented with FANUC control memory C option in mind. This means that each
tool offset has a length (H) and radius (D) along with associated wear values.
Programmable Messages
#3000 ALARMS can be programmed. A programmable alarm will act just like HAAS internal
alarms. An alarm is generated by setting the macro variable #3000 to a number between 1
and 999.
When this is done, ALARM flashes in the lower right hand corner of the display and the text in the next com-
ment is placed into the alarm list. The alarm number (in this example, 15) is added to 1000 and used as an
alarm number. If an alarm is generated in this manner all motion stops and the program must be reset to
continue. Programmable alarms can always be identified in alarm history because the alarm numbers range
between 1000 and 1999.
The first 34 characters of the comment will be used for the alarm message. The first 15 characters of the
comment will be displayed on the lower left corner of the screen.
Timers
HAAS macros supports access to two timers. These timers can be set to a value by assigning a number to the
respective variable. A program can then later read the variable and determine the time passed since the timer
was set. Timers can be used to emulate dwell cycles, determine part to part time or wherever time dependent
behavior is desired.
#3001 MILLISECOND TIMER - The millisecond timer is updated every 20 milliseconds and thus
activities can be timed with an accuracy of only 20 milliseconds. At POWER ON, the
millisecond timer is reset. The timer has a limit of 497 days. The whole number returned
after accessing #3001 represents the number of milliseconds.
#3002 HOUR TIMER - The hour timer is similar to the millisecond timer except that the number
returned after accessing #3002 is in hours. The hour and millisecond timers are indepen
dent of each other and can be set separately.
System Overrides
#3003 Variable 3003 is the Single Block Suppression parameter. It overrides the Single Block function in
G-code. In the example below, suppression of Single Block is initiated when #3003 is set equal to 1. After
M3003 is set =1, each G-code instruction block (lines 2-4) are executed continuously even though the Single
Block function is enabled. When #3003 is set equal to zero, the operator of Single Block will resume as
normal. That is, the user must press Cycle Start to initiate each new code block (lines 6-8).
#3003=1;
G54 G00 G90 X0 Y0;
G81 R0.2 Z-0.1 F20 L0;
S2000 M03;
#3003=0;
T02 M06;
G83 R0.2 Z-1 F10. L0;
X0. Y0.;
#3004 Variable #3004 is a bitmapped variable that overrides specific control features during
runtime.
The first bit disallows FEED HOLD from the keypad. If you do not want feed hold to be executed during any
section of code, then bracket that code with assignments to variable #3004. Assigning "1" to #3004 disables
the console's feed hold button. Assigning "0" to #3004 re-enables the FEED HOLD button. For example:
The following is a map of variable #3004 bits and the associated overrides. E=Enabled D=Disabled
Programmable Stop
#3006 Stops can be programmed. A programmable stop acts like an M00. In the following
example, when the assignment statement is executed, the first 15 characters of the
comment are displayed in the messaging area on the lower left part of the screen above
the command input line. The control stops and waits for a cycle start from the operator.
Upon cycle start, operation continues with the next block after the assignment statement.
IF [#1 EQ #0] THEN #3006=101(ARG.A REQUIRED);
Offsets
All tool work offsets can be read and set within a macro expression. This allows the programmer to preset
coordinates to approximate locations, or to set coordinates to values based upon the results of skip signal
locations and calculations. When any of the offsets are read, the interpretation lookahead queue is stopped
until that block is executed.
The usual method of setting control addresses A..Z is by appending a constant to the address. For instance,
<address><-><variable> A-#101
<address>[<expression>] Y[#5041+3.5]
<address><->[<expression>] Z-[SIN[#1]]
If the value of the variable does not agree with the range of the address, then the usual control alarm will result.
For instance, the following code would result in a range error alarm because tool diameter numbers range from
0..50.
#1=75;
D#1;
When a variable or expression is used in place of an address constant, then the floating point value is rounded
to the least significant digit. If #1=.123456, then G1X#1 would move the machine tool to .1235 on the X axis. If
the control is in the metric mode, the machine would be moved to .123 on the X axis.
When an UNDEFINED variable is used to replace an address constant, then that address reference is ignored.
For example, if #1 is undefined then the block
G00 X1.0 Y#1 ;
becomes
G00 X1.0.
No Y movement takes place.
MACRO STATEMENTS
Macro statements are lines of code that allow the programmer to manipulate the control with features similar to
any standard programming language. Included are functions, operators, conditional and arithmetic expressions,
assignment statements, and control statements.
Functions and operators are used in expressions to modify variables or values. The operators are essential to
expressions while functions make the programmer's job easier.
Functions
Functions are built-in routines that the programmer has available to use. All functions have the form
<function_name>[argument]. Functions can be passed any expression as arguments. Functions return
floating point decimal values. The function provided with the HAAS control are as follows:
Notes on Functions
The function ROUND works differently depending on the context that it is used. When used in arithmetic
expressions, the round function works as one would expect. That is, any number with a fractional part greater
than or equal to .5 is rounded up to the next whole integer; otherwise, the fractional part is truncated from the
number.
#1= 1.714 ;
#2= ROUND[#1] ; (#2 is set to 2.0)
#1= 3.1416 ;
#2= ROUND[#1] ; (#2 is set to 3.0)
When round is used in an address expression, then the argument of round is rounded to the addresses signifi-
cant precision. For metric and angle dimensions, three-place precision is the default. For inch, four-place
precision is the default. Integral addresses such as D, T and H are rounded normally.
#1= 1.00333 ;
G0 X[ #1 + #1 ] ;
(Table moves to 2.0067) ;
G0 X[ ROUND[ #1 ] + ROUND[ #1 ] ] ;
(Table moves to 2.0066) ;
G0 A[ #1 + #1 ] ;
(Axis moves to 2.007) ;
G0 A[ ROUND[ #1 ] + ROUND[ #1 ] ] ;
(Axis moves to 2.006) ;
D[1.67] (Diameter 2 is made current) ;
Operators
Operators can be classified into three categories: Arithmetic operators, Logical operators and Boolean opera-
tors.
Arithmetic Operators
Arithmetic operators consist of the usual unary and binary operators. They are:
Logical Operators
Logical operators are operators that work on binary bit values. Macro variables are floating point numbers.
When logical operators are used on macro variables, only the integer portion of the floating point number is
used. The logical operators are:
Examples:
#1=1.0; 0000 0001
#2=2.0; 0000 0010
#3=#1 OR #2 0000 0011 Here the variable #3 will contain 3.0 after the OR operation.
#1=5.0;
#2=3.0;
IF [[#1 GT 3.0] AND [#2 LT 10]] GOTO1 Here control will transfer to block 1 because #1 GT 3.0 evaluates
to 1.0 and #2 LT 10 evaluates to 1.0, thus 1.0 AND 1.0 is 1.0
(TRUE) and the GOTO occurs.
As can be seen from the previous examples, CARE must be taken when using logical operators so that the
desired result is achieved.
Boolean Operators
Boolean operators always evaluate to 1.0 (TRUE) or 0.0 (FALSE). There are six Boolean operators. These
operators are not restricted to conditional expressions, but they most often are used in conditional expres-
sions. They are:
EQ - Equal to
NE - Not Equal to
GT - Greater Than
LT - Less Than
GE - Greater than or Equal to
LE - Less Than or Equal to
The following are four examples of how Boolean and Logical operators can be used:
Example Explanation
IF [#1 EQ 0.0] GOTO100; Jump to block 100 if value in variable #1 equals 0.0.
WHILE [#101 LT 10] DO1; While variable #101 is less than 10 repeat loop DO1..END1.
#1=[1.0 LT 5.0]; Variable #1 is set to 1.0 (TRUE).
IF [#1 AND #2 EQ #3] GOTO1 If variable #1 logically ANDed with variable #2 is equal to the
value in #3 then control jumps to block 1.
Expressions
Expressions are defined as any sequence of variables and operators surrounded by the square brackets "[" and
"]". There are two uses for expressions: conditional expressions or arithmetic expressions. Conditional expres-
sions return FALSE (0.0) or TRUE (any non zero) values. Arithmetic expressions use arithmetic operators
along with functions to determine a value.
Conditional Expressions
In the HAAS control, ALL expressions set a conditional value. The value is either 0.0 (FALSE) or the value is
nonzero (TRUE). The context in which the expression is used determines if the expression is a conditional
expression. Conditional expressions are used in the IF and WHILE statements and in the M99 command.
Conditional expressions can make use of Boolean operators to help evaluate a TRUE or FALSE condition.
The M99 conditional construct is unique to the HAAS control. Without macros, M99 in the HAAS control has
the ability to branch unconditionally to any line in the current subroutine by placing a P code on the same line.
For example:
N50 M99 P10 ;
branches to line N10. It does not return control to the calling subroutine. With macros enabled, M99 can be
used with a conditional expression to branch conditionally. To branch when variable #100 is less than 10 we
could code the above line as follows.
N50 [#100 LT 10] M99 P10 ;
In this case, the branch occurs only when #100 is less than 10, otherwise processing continues with the next
program line in sequence. In the above, the conditional M99 can be replaced with
N50 IF [#100 LT 10] GOTO10 ;
Arithmetic Expressions
An arithmetic expression is any expression using constants, variables, operators, or functions. An arithmetic
expression returns a value. Arithmetic expressions are usually used in assignment statements, but are not
restricted to them.
<expression>=<expression>
The expression on the left of the equal sign must always refer to a macro variable, whether directly or indirectly.
The following macro initializes a sequence of variables to any value. Here both direct and indirect assignments
are used.
O0300 (Initialize an array of variables) ;
N1 IF [#2 NE #0] GOTO2 (B=base variable) ;
#3000=1 (BASE VARIABLE NOT GIVEN) ;
N2 IF [#19 NE #0] GOTO3 (S=size of array);
#3000=2 (SIZE OF ARRAY NOT GIVEN) ;
N3 WHILE [#19 GT 0] DO1 ;
#19=#19-1 (DECREMENT COUNT) ;
#[#2+#19]=#22 (V=value to set array to) ;
END1 ;
M99 ;
The above macro could be used to initialize three sets of variables as follows:
G65 P300 B101. S20 (INIT 101..120 TO #0) ;
G65 P300 B501. S5 V1 (INIT 501..505 TO 1.0) ;
G65 P300 B550. S5 V0 (INIT 550..554 TO 0.0) ;
The decimal point in B101., etc. would be required.
Control Statements
Control statements allow the programmer to branch, both conditionally and unconditionally. They also provide
the ability to iterate a section of code based on a condition.
The GOTO will round the variable or expression result that is associated with the Computed branch. For
instance, if #1 contains 4.49 and GOTO#1 is executed, the control will attempt to transfer to a block containing
N4. If #1 contains 4.5, then execution will transfer to a block containing N5.
The following code skeleton could be developed to make a program that serializes parts:
O9200 (Engrave digit at current location.)
;
(D=DECIMAL DIGIT TO ENGRAVE) ;
IF [[#7 NE #0] AND [#7 GE O] AND [#7 LE 9]] GOTO99;
#3000=1 (INVALID DIGIT)
;
N99
#7=FIX[#7] (TRUNCATE ANY FRACTIONAL PART) ;
;
GOTO#7 (NOW ENGRAVE THE DIGIT) ;
;
N0 (DO DIGIT ZERO)
...
M99
;
N1 (DO DIGIT ONE)
;
M99
;
N2 (DO DIGIT TWO)
;
...
;
(etc.,...)
With the above subroutine, you would engrave digit five with the following call:
G65 P9200 D5;
Computed GOTOs using expression could be used to brach processing based on the results of reading
hardware inputs. An example might look like the following:
GOTO[[#1030*2]+#1031] ;
NO (1030=0, 1031=0) ;
...
M99;
N1 (1030=0, 1031=1) ;
...
M99;
N2 (1030=1, 1031=0) ;
...
M99;
N3 (1030=1, 1031=1) ;
...
M99;
The discrete inputs always return either 0 or 1 when read. The GOTO[expression] will branch to the appropriate
G-code based on the state of the two discrete inputs #1030 and #1031.
In the HAAS control, a conditional expression can also be used with the M99 Pnnnn format, providing that
macros have been enabled. An example is as follows:
G0 X0 Y0 [#1EQ#2] M99 P5;
Here, the conditional is for the M99 portion of the statement only. The machine tool is instructed to X0, Y0
whether or not the expression evaluates to TRUE or FALSE. Only the branch, M99, is executed based on the
value of the expression. It is recommended that the IF GOTO version is used if portability is desired.
NOTE: To preserve compatibility with FANUC syntax "THEN" may not be used with
GOTOn.
This format is traditionally used for conditional assignment statements such as:
IF [#590 GT 100] THEN #590=0.0 ;
Here, variable #590 is set to zero when the value of #590 exceeds 100.0. In the HAAS control, if a conditional
evaluates to FALSE (0.0), then the remainder of the IF block is ignored. This means that control statements
can also be conditioned so that we could write something like:
IF [#1 NE #0] THEN G1 X#24 Y#26 F#9 ;
This executes a linear motion only if variable #1 has been assigned a value. You might try something like this:
IF [#1 GE 180] THEN #101=0.0 M99 ;
This says that if variable #1 (address A) is greater than or equal to 180, then set variable #101 to zero and
return from the subroutine.
Here is an example of an IF statement that branches if a variable has been initialized to contain any value.
Otherwise, processing will continue and an alarm will be generated. Remember, when an alarm is generated,
program execution is halted.
N1 IF [#9NE#0] GOTO3 (TEST FOR VALUE IN F) ;
N2 #3000=11(NO FEED RATE) ;
N3 (CONTINUE) ;
Although nesting of WHILE statements can only be nested to three levels, there really is no limit since each
subroutine can have up to three levels of nesting. If there ever is a need to nest to a level greater than 3, then
the segment containing the three lowest levels of nesting can be made into a subroutine thus overcoming the
limitation.
If two separate WHILE loops are in a subroutine, they can use the same nesting index. For example:
#3001=0 (WAIT 500 MILLISECONDS) ;
WH [#3001 LT 500] DO1 ;
END1 ;
<other statements>
#3001=0 (WAIT 300 MILLISECONDS) ;
WH [#3001 LT 300] DO1 ;
END1 ;
This is valid code.
You can use GOTO to jump out of a region encompassed by a DO-END, but you can not use a GOTO to jump
into it. Jumping around inside a DO-END region using a GOTO is allowed.
An infinite loop can be executed by eliminating the WHILE and expression. Thus,
DO1 ;
<statements>
END1 ;
Executes until the RESET key is pressed.
In the above, an alarm results indicating no then was found, here then refers to the D01. Change D01 (zero)
to DO1 (letter O).
Macros allow additional capabilities to communicate with peripheral devices. One can do digitizing of parts,
provide runtime inspection reports, or synchronize controls with user provided devices. The commands provided
for this are POPEN, DPRNT[ ] and PCLOS.
Formatted output
The DPRNT statement allows the programmer to send formatted text to the serial port. Any text and any
variable can be printed to the serial port. Variables can be formatted. The form of the DPRNT statement is as
follows:
DPRNT[ <text> <#nnnn[wf]>... ] ;
DPRNT must be the only command in the block. In the above, <text> is any character from A to Z or the letters
(+,-,/,*, and the space). When an asterisk is output, it is converted to a space. The <#nnnn[wf]> is a variable
followed by a format. The variable number can be any legal macro variable. The format [wf] is required and
consists of two digits within square brackets. Remember that macro variables are real numbers with a whole
part and a fractional part. The first digit in the format designates the total places reserved in the output for the
whole part. The second digit designates the total places reserved for the fractional part. The total places
reserved for output cannot be equal to zero or greater that eight. Thus the following formats are illegal:
[00] [54] [45] [36] /* not legal formats */
A decimal point is printed out between the whole part and the fractional part. The fractional part is rounded to
the least significant place. When zero places are reserved for the fractional part, then no decimal point is
printed out. Trailing zeros are printed as necessary if there is a fractional part. At least one place is reserved for
the whole part, even when a zero is used there. If the value of the whole part has fewer digits than have been
reserved, then leading spaces are output. If the value of the whole part has more digits than has been reserved,
then the field is expanded so that these numbers are printed.
DPRNT[ ] Examples
Code Output
N1 #1= 1.5436 ;
N2 DPRNT[X#1[44]*Z#1[03]*T#1[40]] ; X1.5436 Z 1.544 T 1
N3 DPRNT[***MEASURED*INSIDE*DIAMETER***] ; MEASURED INSIDE DIAMETER
N4 DPRNT[] ; (no text, only a carriage return)
N5 #1=123.456789 ;
N6 DPRNT[X-#1[25]] ; X-123.45679 ;
EXECUTION
DPRNT statements are executed at block interpretation time. This means that the programmer must be careful
about where the DPRNT statements appear in the program, particularly if the intent is to print out positional
information. Generally, a program is interpreted many blocks ahead in order to prevent the machine from
pausing between movements.
G103 is useful for limiting lookahead. If you wanted to limit lookahead interpretation to one block, you would
include the following command at the beginning of your program: (This actually results in a two block
lookahead.)
G103 P1 ;
To cancel the lookahead limit, then issue a G103 P0 ;. G103 can not be used when cutter compensation is
active.
OPERATION NOTES
This section explains the additional screens and operator actions that come with macros.
Macro variables can be saved and restored to RS-232 or the optional floppy, much like parameters, settings,
and offsets. Refer to the "Part Program Input / Output" section for RS-232 sending and receiving of macro
variables, or the "Floppy Operation" section for sending and receiving them with this method.
As the control interprets a program, the variable changes are displayed on the variable display page and results
can be viewed.
Pages contain up to 32 variables and the display can be paged by pressing the left/right arrow keys.
Setting of a variable is accomplished by entering a value and then pressing the WRITE key. The variable that is
highlighted on the screen is the variable that is affected.
Searching for a variable can be done by entering the variable number and pressing the up/down arrow. The page
will change to the one that contains that variable and the entered variable will become the highlighted item.
The variables displayed represent the values of the variables at program interpretation time. At times, this may
be up to 15 blocks ahead of the actual machine activity. Debugging of programs can be made easier by
inserting a G103 at the beginning of a program to limit block buffering and then removing the G103 block after
debugging is completed.
Editing
For the most part, the editing of macro programs from the control is the same as before. There are a few
peculiarities to be aware of.
Editing macro statements is more open than previously. For instance, it is possible to place a floating point
constant within a standard G-code block, but it doesnt make much sense, and the control will raise an alarm
at runtime. For all instances of improperly structured or improperly placed macro statements, the control will
raise an appropriate alarm. Most of these alarms have been put off until runtime so that operator editing can be
more flexible. Be careful when editing expressions. Brackets must be balanced and you will not receive an
alarm until runtime.
The DPRNT[ ] function can be edited much like a comment. You can delete it or move it as a whole item, or
you can edit individual items within the brackets. Variable references and format expressions must be altered
as a whole entity. If you wanted to change [24] to [44], place the cursor so that [24] is highlighted, enter [44]
and press the write key. Remember, you can use the crank handle to maneuver through long
DPRNT[ ] expressions.
Addresses with expressions can be somewhat confusing. In this case, the alphabetic address stands alone.
For instance, the following block contains an address expression in X:
G1 G90 X [ COS[ 90 ] ] Y3.0 (CORRECT) ;
Here, the X and brackets stand alone and are individually editable items. It is possible, through editing, to
delete the entire expression and replace it with a floating point constant.
G1 G90 X 0 Y3.0 (!!! WRONG !!!) ;
The above block will result in an alarm at runtime. The correct form looks as follows:
G1 G90 X0 Y3.0 (CORRECT) ;
Note that the zero is attached to X. REMEMBER when you see an alpha character standing alone it is an
address expression.
This section lists the FANUC macro features that have not yet been implemented.
M ALIASING REPLACE G65 Pnnnn WITH Mnn PROGS 9020-9029.
G66 MODAL CALL IN EVERY MOTION BLOCK
G66.1 MODAL CALL IN EVERY BLOCK
G67 MODAL CANCEL
M98 ALIASING, T CODE PROG 9000, VAR #149, ENABLE BIT
M98 ALIASING, S CODE PROG 9029, VAR #147, ENABLE BIT
M98 ALIASING, B CODE PROG 9028, VAR #146, ENABLE BIT
SKIP/N N=1..9
#3007 MIRROR IMAGE ON FLAG EACH AXIS
#4201-#4320 CURRENT BLOCK MODAL DATA
#5101-#5106 CURRENT SERVO DEVIATION
ADDITIONAL OFFSETS G54.1P## FORMAT
NAMES FOR VARIABLES FOR DISPLAY PURPOSES
ATAN [ ]/[ ] ARCTANGENT, FANUC VERSION
BIN [ ] CONVERSION FROM BCD TO BIN
BCD [ ] CONVERSION FROM BIN TO BCD
FUP [ ] TRUNCATE FRACTION CEILING
LN [ ] NATURAL LOGARITHM
EXP [ ] BASE E EXPONENTIATION
ADP [ ] RE-SCALE VAR TO WHOLE NUMBER
BPRNT [ ]
The following can be used as alternative methods for achieving the same results for a few unimplemented
FANUC macro features.
GOTO-nnnn
Searching for a block to jump in the negative direction, i.e. backwards through a program, is not
necessary if you use unique N address codes.
A block search is made starting from the current block being interpreted. When the end of the program is
reached, searching continues from the top of the program until the current block is encountered.
The following is a summary of the G codes. A * indicates the default within each group, if there is one.
There is also one case where the Group 01 G codes will cancel the Group 09 (canned cycles) codes. If a
canned cycle (G73 through G89) is active, the use of G00 or G01 will cancel the canned cycle.
Generally, rapid motion will not be in a straight line. Each axis specified is moved at the same speed, but all
axes will not necessarily complete their motions at the same time. The control will wait until all motions are
complete before implementing the next command. Only the axes specified are moved, and the incremental or
absolute position commands (G90 or G91) will change how those axis motion values are interpreted. Setting 57
can change how closely the machine waits for a precise stop before and after a rapid move.
A chamfer block or a corner-rounding block can be automatically inserted between two linear interpolation
blocks by specifying ,C (chamfering) or ,R (corner rounding). There must be a terminating linear interpolation
block following the beginning block (a G04 pause may intervene). These two linear interpolation blocks specify
a corner of intersection. If the beginning block specifies a C, the value following the C is the distance from the
intersection to where the chamfer begins, and also the distance from the intersection to where the chamfer
ends. If the beginning block specifies an R, the value following the R is the radius of a circle tangent to the
corner at two points: the beginning of the corner-rounding arc and the endpoint of that arc. There can be
consecutive blocks with chamfering or corner-rounding specified. There must be movement on the two axes
specified by the selected plane, whether the active plane is XY (G17), XZ (G18) or YZ (G19).
I, J, K: When I, J, or K is used to specify the center of the arc, R may not be used. Only the I, J, or K specific
to the selected plane (IJ for G17, IK for G18, JK for G19) is allowed. If only one of the I, J, K values is specified,
the others are assumed to be zero. The I, J, or K value is the signed distance from the starting point to the
center of the circle. Small errors in these values are tolerated, up to 0.0010 inch. Use of I, J, or K is the only
way to cut a complete 360-degree arc; in this case, the starting point is the same as the ending point and no
X, Y, or Z value is needed.
To cut a complete circle of 360 degrees (360 O), you do not need to specify an ending point X, Y, or Z; just
program I, J, or K to define the center of the circle. The following line will cut a complete circle:
R: When R is used to specify the center of the circle, a complete 360-degree arc is not possible. An X, Y, or Z
value is required to specify an endpoint different from the starting point. R is the distance from the starting point
to the center of the circle. With a positive R, the control will generate a path of 180 degrees or less; to generate
an angle of more than 180 degrees, specify a negative R. Small errors in this value are tolerated, up to 0.0010
inch.
The following lines will cut an arc less than 180 degrees (180o):
HELICAL
Helical motion is possible with G02 or G03 by programming the linear axis that is not in the selected plane.
This third axis will be interpolated along the specified axis in a linear manner, while the other two axes will be
moved in the circular motion. The speed of each axis will be controlled so that the helical rate matches the
programmed feedrate.
G04 is used to cause a delay or dwell in the program. The block containing G04 will delay for the time specified
by the P code. If P has no fractional part, the delay is in milliseconds (0.001 second); otherwise the delay is in
seconds.
G10 Examples:
G10 L2 P1 G91 X6.0 {Move coordinate G54 6.0 to the right};
G10 L20 P2 G90 X10. Y8. {Set work coordinate G111 to X10.0 ,Y8.0};
G10 L10 G90 P5 R2.5 {Set offset for Tool #5 to 2.5};
G10 L12 G90 P5 R.375 {Set diameter for Tool #5 to 3/8};
There are two G codes that will provide for pocket milling of a circular shape. They are different only in which
direction of rotation is used. Both are functional only in the default XY circular plane (G17).
The tool must be positioned at the center of the circle, either in a previous block or in this block using X and Y.
The cut is performed entirely with circular motions of varying radius. To remove all the material within the circle,
use I and Q values less than the tool diameter and a K value equal to the circle radius. To cut a circle radius
only, use an I value set to the radius and no K or Q value. G12 belongs to Group 00 and thus is non-modal. If
G91 (incremental) is specified and an L count is included, the Z increment is repeated L times at feedrate F.
The control software includes a Yasnac-style circular pocket milling program (G12, Clockwise Circular Pocket;
G13, Counterclockwise Pocket). These G codes assume the use of cutter compensation, so a G41 or G42 is
not required in the program line. However, a D offset number, for cutter radius or diameter, is required to adjust
the circle diameter.
In this section, we will cover the G12 and G13 format, as well as the different ways these programs can be
written for various applications:
APPLICATIONS: One-pass counterboring; rough and finish pocketing of smaller holes; ID keyway cutting;
O-ring grooves.
APPLICATIONS: Multiple-pass counterboring; rough and finish pocketing of large holes with cutter overlap.
MULTIPLE Z-DEPTH PASS: Using I only, or I, K, and Q (G91 and L may also be used).
NOTE: The tool must be positioned at the center of the circle, either in a previous block
or in the G12/G13 line, by using X and Y.
The previous figures show the tool path during the G12 and G13 cycles. One uses I only and the other uses I,
K, and Q.
This example will complete a 3-inch diameter hole, 1 inch deep, with a cutter overlap of 0.100 inch.
This program uses G91 and an L count of 4, so this cycle will execute a total of four times. The Z depth
increment is 0.500. This is multiplied by the L count, making the total depth of this hole 2.000.
The G91 and L count can also be used in a G13 I only line.
NOTE: If the geometry column of the control Offsets display has a value inserted, the
circular pocket milling cycle will automatically read the data, regardless of
whether D0 is present or not. The only effective way to cancel cutter
compensation for pocket milling is to insert a D00 in the program line. This will
bypass the value in the Offsets geometry column.
The plane used for circular motions must consist of two of the three axes X, Y, and Z. One of three G codes
used to select the plane: G17 for XY, G18 for XZ, and G19 for YZ. Each are modal and apply to all subsequent
circular motions until another Group 02 code is found.
The default plane selection when the machine is powered on is G17, the XY plane. This means that a circular
motion in the plane of the XY table may be programmed without first selecting G17. Plane selection also
applies to G12 and G13, circular pocket milling, which must always be in the XY plane.
Helical motion is possible with G02 or G03 by programming the linear axis which is not in the selected plane.
This third axis will be interpolated along the specified axis in a linear manner while the other two axes will be
moved in the circular motion. The speed of each axis will be controlled so that the helical rate matches the
programmed feedrate.
If cutter radius compensation is selected (G41 or G42), you may only use the XY plane (G17) for circular
motion. Cutter radius compensation is only available in the X and Y axes.
G28 Return to Machine Zero Thru Optional G29 Reference Point Group 00
The G28 code is used to return all axes to machine zero. If an X, Y, Z, or A axis is specified in the same block,
only those axes will move, through the location specified to the machines zero point. Movement to machine
zero will be through the specified point after applying the relevant work and tool offsets. This point is called the
G29 reference point and is saved for use in G29. If no X, Y, Z, or A is specified, all axes will move directly to
machine zero. Any auxiliary axes (B, C, etc.) are returned to home after the X, Y, Z, and A axes. After using the
current offsets in moving to machine zero, G28 cancels tool length offsets for subsequent blocks.
Example 1
Program segment:
G90 G54;
G43 H02;
G28 Z0.;
G00 Z1.
The G28 block will move to machine coordinate Z = 14.0 before moving to Z = 0. The following block (G00 Z1.)
will move to machine coordinate Z = 1.
Example 2
Program segment:
G91 G54;
G43 H02;
G28 Z0
The G28 block will move directly to machine coordinate Z = 0 since incremental positioning is in effect.
G31 Feed Until Skip (This G-code is optional and requires a probe) Group 00
F Feedrate in inches (mm) per minute
X Optional X-axis motion command
Y Optional Y-axis motion command
Z Optional Z-axis motion command
A Optional A-axis motion command
B Optional B-axis motion command
The skip function is a non-modal operation that causes a linear move to the specified X, Y, Z, and/or A position.
It applies only to the block in which G31 is specified. A feedrate must be defined previously or in this block. The
specified move is started and continues until the end point or the skip signal. The skip signal is a discrete input
that usually indicates that the end of travel has been reached; this is usually a probe. The control will beep
when the end of travel is reached.
Cutter compensation may not be active during a skip function. M78 or M79 may be used to test if the skip
signal was received. An M75 can be used to mark the probed point as the reference point for G35 or G136.
G35 Automatic Tool Diameter Measurement (This G-code is optional and requires a probe) Group 00
G37 Automatic Tool Offset Measurement (This G-code is optional and requires a probe) Group 00
F Feedrate in inches (mm) per minute
D Tool diameter offset number (G35)
H Tool offset number (G37)
Z Required Z-axis offset
Automatic tool offset measurement (G37) is a non-modal operation that causes linear motion of the Z axis until
the skip signal is received or the Z travel limit is reached. A non-zero H code must be active, G43 or G44 must
be active, a Z value must be specified, and a feedrate must be defined. No X, Y, or A code is allowed. When the
move is terminated, the specified Z and the final Z positions are used to set the specified tool offset (Hnnn).
The active coordinate system is taken into account.
The coordinate system (G54G59, G110G129) and tool length offsets (H01H200) may be selected in this
block or in a previous block. The end point of the Z move is controlled only by the machines travel limits.
The resulting tool offset value is such that a subsequent move to the Z value specified in the G37 command will
move the tool to the position where the skip signal was sensed. The skip signal is a discrete input that usually
indicates that the end of travel has been reached; this is sometimes a probe. Cutter compensation may not be
active during a skip function. M78 or M79 may be used to test if the skip signal was received. The resulting tool
offset is the offset between the work zero point and the point where the probe is touched.
The automatic tool diameter measurement function (G35) is used to set the tool diameter (or radius) using two
different probe passes, one on each side of the tool. The first point is set with a G31 block using an M75, and
the second point is set with the G35 block. The distance between these two points is set into the active Dnnn
value. A nonzero D code must be selected. Setting 63 is used to reduce this measurement by the width of the
tool probe.
G36 Automatic Work Offset Center Measurement (optional G-code, requires a probe) Group 00
G136 Automatic Work Offset Center Measurement Group 00
F Feedrate in inches (mm) per minute
I Optional offset distance along X axis
J Optional offset distance along Y axis
K Optional offset distance along Z axis
X Optional X-axis motion command
Y Optional Y-axis motion command
Z Optional Z-axis motion command
A Optional A-axis motion command
Automatic work offset measurement is a non-modal operation that causes linear motion of the X, Y, Z, and A
axes until the skip signal is received or the end of the programmed motion is reached. The X, Y, Z, and A axes
are moved to the programmed position in a linear move but will stop early if the skip signal is received. Tool
offsets must not be active when this function is performed. M78 or M79 may be used to test if the skip signal
was received. The currently active work coordinate system is set for each axis programmed. The point where
the skip signal is received becomes the work zero position. The work coordinate system may be selected in
this block or in a previous block.
The points probed are offset by the values in Settings 59 through 62.
A G36 will set the work coordinates to the point where the probe hits. G136 will set the work coordinates to a
point at the center of a line between the probed point and the point set with M75. This allows the center of a
part to be found using two separate probed points.
Note that the X, Y, Z, and/or A commands programmed into this block are interpreted in the coordinate system
that is about to be set. Thus, the end point of the move will be interpreted within the old work coordinate value.
For this reason, it is easier to program these moves as incremental (G91).
If an I, J, or K is specified, the appropriate axis work offset is shifted by the amount in the I, J, or K command.
This allows the work offset to be shifted some distance away from where the probe actually hits.
E NGRAVING (G47)
The initial serial number can either be programmed or set manually. For example, if it is programmed:
G47 P1 (1234)
will set the initial serial number to 1234.
The initial serial number can also be set manually into a macro variable. The Macros option does not have to be
enabled to do this. Macro variables are temporary storage locations for numbers. Macro variable #599 is used
to hold the initial serial number to be engraved. To set this variable, go to the CURNT COMDS page and press
the PAGE DOWN key until the Macro Variables page appears. Then type in 599 and press the (down
arrow). Now enter the desired initial serial number at the cursor and press the WRITE/ENTER key. For ex-
ample, when macro variable #599 is set to 1234,
G47 P1 (####)
will produce this:
1234
If the number in macro variable #599 has more characters than specified in the format string, only the quantity
specified will be printed. For example, if #599 is set to 12345 and only four places are specified in the format
string, only 2345 will be engraved.
For literal string engraving, the text should be in the form of a comment on the same line as the P0 statement.
For example:
G47 P0 (ENGRAVE THIS)
will produce
ENGRAVE THIS
Note that P0 is used, instead of P1, for literal string engraving.
EXAMPLE
In this example:
G47 P0 select literal string engraving
X2.0 Y2.0 select 2.0, 2.0 as the starting point for the text.
I45. places the text at a positive 45-degree angle
J.5 sets the text height to 0.5 inch
R.05 commands the cutter to retract to 0.05 inch (mm) above the cutting plane after engraving
Z-.005 selects a 0.005 inch (mm) deep cut
F15.0 selects an engraving feedrate of 15 units/min
E10.0 commands the cutter to plunge at a rate of 10 units/min
The milling strokes defining each character, i.e., the font, are compiled G-code in the HAAS control. The font
characters may be redefined by supplying a different G-code program, giving it the name O9876. This program
must conform to the format expected by the HAAS control. For guidance, some of the code from the built-in
font program is shown below. The example below may be used as a template. Code should be written exactly
as shown.
For the creation of each character, there is a different label to start the code. Each section terminates with an
M99.
Label N126 N1 N2 N3 N4 N5 N6 N7 N8 N9
Character space ! " # $ % & ' ( )
Label N10 N11 N12 N13 N14 N15 N16 N17 N18 N19
Character * + , - . / 0 1 2 3
Label N20 N21 N22 N23 N24 N25 N26 N27 N28 N29
Character 4 5 6 7 8 9 : ; , =
Label N30 N31 N32 N33 N34 N35 N36 N37 N38 N39
Character > ? @ A B C D E F G
Label N40 N41 N42 N43 N44 N45 N46 N47 N48 N49
Character H I J K L M N O P Q
Label N50 N51 N52 N53 N54 N55 N56 N57 N58 N59
Character R S T U V W X Y Z [
Label N60 N61 N62 N63 N64 N65 N66 N67 N68 N69
Character \ ] ^ _ ` a b c d e
Label N70 N71 N72 N73 N74 N75 N76 N77 N78 N79
Character f g h i j k l m n o
Label N80 N81 N82 N83 N84 N85 N86 N87 N88 N89
Character p q r s t u v w X Y
This control function is optional. If you would like further information on installing this feature, please call Haas
Automation or your dealer for more information.
G51 Scaling (This G-code is optional and requires Rotation and Scaling.) Group 11
X optional center of scaling for the X axis
Y optional center of scaling for the Y axis
Z optional center of scaling for the Z axis
P optional scaling factor for all axes; three-place decimal from 0.001 to 8383.000.
G51 is modal and modifies appropriate positional values in the blocks following the G51 command. It does not
change or modify values in the block from which it is called. Axes X, Y, and Z are all scaled when the P code is
used. If the P code is not used, the scaling factor currently in Setting 71 is used. The default scaling factor in
Setting 71 is 1.0. A scaling factor of 1.0 means that no scaling is done. That is, all values are multiplied by 1.0
before being interpreted by the control.
A scaling center is always used by the control in determining the scaled position. If any scaling center is not
specified in the G51 command block, then the current work coordinate position is used as the scaling center.
The following programs illustrate how scaling is performed when different scaling centers are used. All three
examples call subroutine O0001, which follows.
The first example illustrates how the control uses the current work coordinate location as a scaling center.
Here, it is X0 Y0 Z0.
The next example specifies the center of the window as the scaling center.
The last example illustrates how scaling can be placed at the edge of tool paths as if the part was being set
against locating pins.
If macros are enabled, G65 arguments are not affected. Tool offsets and cutter compensation values are not
affected by scaling.
The stored program is not changed by G51, so program lines displayed by the control will not reflect actual
machine positions. Position displays WILL reflect the proper scaled values.
Scaling does not affect canned cycle Z axis movements such as clearance planes and incremental values. The
final results of scaling are rounded to the lowest fractional value of the variable being scaled.
G68 Rotation (This G-code is optional and requires Rotation and Scaling.) Group 16
[ G17 | G18 | G19 ] G68 [a...] [b...] [R...] ;
When rotation is invoked, all subsequent X, Y, Z, I, J, and K values are rotated through a specified angle R
using a center of rotation.
G68 is modal and modifies appropriate positional values in the blocks following the G68 command. Values in
the block containing G68 are not rotated. For subsequent blocks, only the values in the plane of rotation are
rotated. Thus, if G17 is the current plane of rotation, only X and Y values are affected.
For a positive angle, rotation is counterclockwise. If the angle of rotation the R code is not specified in the
G68 command block, then the angle of rotation is taken from Setting 72. The default rotation angle in Setting
72 is 0.0 degrees.
A center of rotation is always used by the control to determine the positional values passed to the control after
rotation. If any axis center of rotation is not specified, then the current location of the work coordinate is used
as the center of rotation.
In G90 mode (absolute), the rotation angle takes on the value specified by R. When Setting 73 (G68
INCREMENTAL R) is set to ON, then the rotational value can be changed incrementally on each call of G68. In
G91 mode (incremental), the rotation angle is changed incrementally by the value in R. Each G68 command
block in G91 mode will change the rotation angle by the value specified in R. Angles are modulo 360, so that
when an angle is specified as larger than 360 degrees, the angle will become an equivalent value between 0
and 360 degrees. The rotational angle is set to zero upon cycle start, or it can be set explicitly using a G68
block in the G90 mode.
The first example illustrates how the control uses the current work coordinate location as a rotation center.
Here, it is X0 Y0 Z0.
The next example specifies the center of the window as the rotation center.
This example shows how the G91 mode can be used to rotate patterns about a center. This is often useful for
making parts that are symmetric about a regular polygon.
G69 Cancel G68 Rotation (This G-code is optional and requires Rotation and Scaling.) Group 16
G69 cancels any rotation specified previously.
NOTE: The G52 command works differently depending on the value of Setting 33. This
setting selects the Fanuc, Haas, or Yasnac style of coordinates, which are
listed below:
YASNAC compatible.
There are three G codes that provide patterns usually used for bolt holes. These are G70, G71, and G72. They
are normally used with one of the Group 09 canned cycles.
If a canned cycle is defined in a block without an X or Y motion, there are two common actions taken by other
controls: Some will execute the canned cycle at that time, and some will not. With the VF Series Mill, one of
these options is selectable from Setting 28.
In addition, if a canned cycle is defined without an X or Y and with a loop count of 0 (L0), the cycle will not be
performed initially. The operation of the canned cycle will vary according to whether incremental (G91) or
absolute (G90) positioning is active. Incremental motion in a canned cycle is often useful as a loop (L) count. It
can be used to repeat the operation with an incremental X or Y move between each cycle.
ne ne
g Pla ting Pla
tin Star
Star
Y Y
ne ne
R Pla Z R Pla Z
e ne
Z Pla
n
X Z Pla X
The positioning of the X and Y axes prior to a canned cycle is normally done with rapid moves, without an
exact stop prior to plunging the Z axis to the R depth. This may cause a crash with a close-tolerance fixture.
Setting 57 can be used to select an exact stop for these XY moves.
Z=0
R R
Z Y Y
n e n e Z
R Pla Z R Pla Z
ne ne
Z Pla X Z Pla X
The G80 code is used to cancel a canned cycle; in addition, a G00 or G01 code will also cancel any active
canned cycle. Once a canned cycle is defined, that operation is performed at every XY position in
subsequently listed blocks.
Some of the canned cycle numerical values can be changed after the canned cycle is defined. The most
important of these are the R plane value and the Z depth value. If these are listed in a block with XY
commands, the XY move is done and all subsequent canned cycles are performed with the new R or Z value.
Changes to the G98/G99 selection can also be made after the canned cycle becomes active. If changed, the
new G98/G99 value will change all subsequent canned cycles.
e
Plan
e Plan
ting ting
Star Star ING #
52
SETT
22
ne 22 ING #
R Pla SETT
ING # SETT
ne
R Pla
22
ING #
22 ING #
SETT Q SETT
Q
Q Q
Q Q
ne
Z Pla
ne Z Pla
Setting 52 also changes the way G73 works when it returns to the R plane. Most programmers set the R plane
well above the cut, to ensure that the chip-clearing motion actually allows the chips to get out of the hole, but
this causes wasted motion when first drilling through this empty space. If Setting 52 is set to the distance
required to clear chips, the R plane can be put much closer to the part being drilled. When the chip-clearing
move to R occurs, the Z axis will be moved above R by this setting.
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected. Note that operation of this cycle is
different if rigid tapping is selected. When rigid tapping is used, the ratio between the feedrate and spindle
speed must be precisely the thread pitch being cut.
You do not need to start the spindle CCW before this canned cycle. The control does this automatically.
G74 Tapping Canned Cycle G98 / G99 Z Axis position between holes
Cutting Feed
Rapid Traverse
Begin or end of stroke
Spindle CW
Spindle CCW
e
Plan e
Star
ting Plan
ial rting
8 Init it ia l Sta
G9 In
ne
id Pla
Rap
Y G99
Y
ne ne
R Pla Z R Pla Z
X X
ne ne
Z Pla Z Pla
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected. This cycle will shift the X and/or Y axis
prior to and after cutting in order to clear the tool while entering and exiting the part. If Setting 57 is on, the tool
will perform an exact stop between rapids. This will prevent tool breakage and any nicking at the bottom of the
hole. The shift direction is determined by Setting 27. If Q is not specified, the optional I and J values are used
to determine the shift direction and distance.
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected.
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected.
G82 FORMAT
G82 Z ___ P ____ R ____ F ____ ;
These are the required codes for spot drilling.
P = Dwell time, in milliseconds, at the bottom of the Z-axis move.
For example, P300 is approximately 1/3 second.
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected.
lane
ting P lane
lStar ting P
Initia l Star
G98
Initia
Plane
Rapid
G99
Y Y
ne
R Pla
ne
R Pla Z Z
ne ne
Z Pla X Z Pla X
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected.
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected.
The way this command works depends on Setting 33, which selects a FANUC, HAAS, or YASNAC coordinate
system. This command does not move any of the axes; it only changes the values stored as user work offsets.
G92 Set Work Coordinate Systems Shift Value FANUC OR HAAS Group 00
A G92 command effectively shifts all work coordinate systems (G54-59, G110-129) so that the commanded
position becomes the current position in the active work system. G92 is a non-modal, non-motion code.
A G92 command cancels any G52 in effect for the commanded axes. Example: G92 X1.4 cancels the G52 for
the X axis. The other axes are not affected.
At least one of theaxis commands is required. Settings 45 through 48 are used to select mirror imaging.
Programmable mirror imaging can be turned on or off individually for any of the four axes. The two G codes
(G100 and G101) are non-modal, but the mirror image status of each axis is modal. The bottom of the screen
will indicate when an axis is mirrored. These G codes should be used in a command block without any other G
codes. They do not cause any axis motion. G101 will turn on mirror imaging for any axis listed in that block.
G100 will turn off mirror imaging for any axis listed in the block. The actual value given for the X, Y, Z, or A code
has no effect. G100 or G101 by itself will have no effect and should be entered as zero value.
Example:
G101 X0 = Will turn on mirror imaging for the X axis.
G100 X0 = Will turn off mirror imaging for the X axis.
Most mirror imaging applications would consist of irregular pockets and contours, and would most likely be set
up in subprograms for convenience.
When using cutter compensation with mirror imaging, follow this guideline: After turning mirror imaging on or off
with G100 or G101, the next motion block should be to a different work coordinate position than the first one.
The following code is an example:
Incorrect: Correct:
G41 X1.0 Y1.0 G41 X1.0 Y1.0
G01 X2.0 Y2.0 G01 X2.0 Y2.0
G101 X0 G101 X0
G00 Z1.0 G00 Z1.0
G00 X2.0 Y2.0 G00 X1.0
G00 X2.0 Y2.0
G40 G40.
Mirror image (X, Y, and XY) and pocket milling exercise for 03700.
Programmable output to the RS-232 port allows the current work coordinates of the four axes to be output. This
G code (G102) is non-modal, so it only affects the block in which it is programmed. It should be used in a
command block without any other G codes and it will not cause any axis motion. The actual value given for the
X, Y, Z, or A code has no effect. One complete line of text is sent to the first RS-232 port (same one used for
upload, download, and DNC). Each axis listed in the G102 command block is output to the RS-232 port in the
same format as values displayed in a program.
Optional spaces (Setting 41) and EOB control (Setting 25) are applied. The values sent out are always the
current axis positions referenced to the current work coordinate system.
Digitizing of a part is possible using this G code and a program which steps over a part in XY and probes
downward in Z with a G31. When the probe hits, the next block could be a G102 to send the X, Y, Z position
out to a computer which could store the coordinates as a digitized part.
When G103 P0 is programmed, block limiting is disabled. Block limiting is also disabled if G103 appears in a
block without a P address code.
At this time G103 cannot be used if cutter compensation, G41 or G42, is in effect. Alarm 387 (Cutter Comp Not
Allowed with G103) is generated if you attempt to do so.
G103 is also useful for debugging programs using macros. Macro expressions are executed at look-ahead
time. By inserting a G103 P1 into the program, macro expressions will be performed one block ahead of the
currently executing block.
This means that the rotary axis diameter as specified on the Settings page is always used as the default
cylindrical mapping surface diameter, unless a previously issued G107 has established a different value. This
allows the default cylindrical surface diameter to either be synchronized with, or operate independently from,
the rotary axis diameter defined in the Settings.
To force the default cylindrical surface diameter to be in sync with the Settings page rotary axis diameter
(which may be desirable if the current default diameter status is unknown), the following G107 command can
be used:
G107 A0 Q0
This command will reset the A-axis default cylindrical surface diameter to zero, which forces the Settings page
value to be used as the default for that axis.
R specifies the radius of the rotary axis. If Q has already been specified, R will be ignored. Except as noted above,
the conditions and/or restrictions associated with the use of this parameter are exactly the same as for Q.
3) Pressing the RESET key will turn off any cylindrical mapping that is currently in effect, regardless of the
status of Setting 56. Cylindrical mapping will also be turned off automatically whenever the G-code program
ends, but only if Setting 56 is ON. If Setting 56 is OFF, any cylindrical mapping in effect when the program
ends will remain in effect.
4) A G107 code issued without any parameters turns off cylindrical mapping. This should normally be done at
the end of the program. However, if cylindrical mapping is not turned off and Setting 56 is OFF, then the
mapping parameters established can be used by other programs.
5) Re-issuing a G107 command with either the same or a different linear axis specification will turn off the
cylindrical mapping currently in effect before new mapping is initiated.
6) Issuing a G107 command with only a rotary axis specification and either a Q or an R will only change the
default diameter or radius for the specified rotary axis; it will not turn cylindrical mapping on or off.
NOTE: Note: Due to the fact that the maximum acceleration of a rotary axis (as
parameterized in steps/second/second on the Parameters page) is different
from the maximum acceleration of a linear axis, there is a maximum achievable
feedrate that can be programmed for a circular interpolated move when one
of the rotary axes has been cylindrically mapped. Refer to the next section for
a description of feedrate alteration.
This means that the actual feedrate achieved may be less than or equal to the programmed feedrate, ensuring
that all axes of interpolated motion move concurrently. When this condition occurs, the warning LIM will be
displayed on the screen immediately to the left of the FEED display. Note also that the MAX FEEDRATE
EXCEEDED alarm will still be issued if the programmed feedrate exceeds parameter 59, MAX FEEDRATE
(currently 500 ipm), but only if the mill is not in Inverse Time mode.
C OMPENSATION (G141,G143)
The 3D+ G141 cutter compensation command is not just for 5-axis work. Any CAD system can output the I, J,
K values to shift the tool by the amount in the Offsets memory of the control, even if the motions are only in 2
or 3 axes. In the Haas control, only G00 and G01 can use G141 cutter compensation; no other functions or
canned cycles will get the offset. G91 incremental motion also cannot be used. G141 is used to indicate,
without any doubt, what type of compensation is being requested. G141 is modal with G40, G41, and G42.
Inverse time is usually used with this type of motion but is not required. The Dnn code selects which radius or
diameter offset to use. The I, J, and K values give the direction in which cutter compensation is to be applied.
When G141 is active, the tool diameter will have a vector component that will be added to commanded motion
of the X, Y, or Z axis, based on the direction defined by I, J, and K. For example:
T1 M06
G00 G90 G54 X0 Y0 Z0 A0 B0
G141 D01 X0.Y0. Z0. (RAPID POSIT WITH 3 AX C COMP)
G01 G93 X.01 Y.01 Z.01 I.1 J.2 K.9747 F300. (FEED INV TIME)
X.02 Y.03 Z.04 I.15 J.25 K.9566 F300.
X.02 Y.055 Z.064 I.2 J.3 K.9327 F300
.
.
.
X2.345 Y.1234 Z-1.234 I.25 J.35 K.9028 F200. (LAST MOTION)
G94 F50. (CANCEL G93)
G0 G90 G40 Z0 (RAPID TO ZERO, CANCEL 3 AXIS C COMP)
X0 Y0
M30
NOTE: G141 is a group 7 G code, G40 cancels G141, G91 is not compatible with G141,
G141 uses a D code
This G code provides for general purpose pocket milling. The shape of the pocket to be cut must be defined by
a series of motions within a subroutine. A series of motions in either the X or Y axis will be used to cut out the
specified shape, followed by a finishing pass to clean up the outer edge. Either I or J must be specified and
must be a positive number; this is the shift amount or cutter overlap. If I is used, the pocket is cut from a series
of strokes in the X-axis. If J is used, the pocket is cut from a series of strokes in the Y-axis. The finishing pass
is of width K, and K must be a positive number. There is no finishing pass in the Z depth. The R value should be
specified even if it is zero (R0). Otherwise the last value specified for R will be used.
Multiple passes over the area can be selected to control the depth of the cut. At least one pass is made over
the pocket and multiple passes are made after feeding down by amount Q until the Z depth is reached. Q must
be a positive number. If an L count is specified, the entire block is repeated and an incremental X or Y (G91)
will reposition the pocket.
The subroutine must define a closed area by a series of G01, G02, or G03 motions in X and Y and must end
with an M99. G codes G90 and G91 can also be used in the subroutine to select absolute or incremental
positioning. Any codes other than G, I, J, R, X, or Y are ignored in the subroutine. This subroutine must consist
of less than 20 strokes.
In order to clear the tool on entry, pocket milling should begin from a hole which has been previously drilled to
the Z depth. The G150 block must specify this hole location with X and Y.
%
O4600
G01 X__ Y__
X__
Y__
X__ Y__
M99
%
NOTE: When defining the contour in the subprogram, the idea to keep in mind is to
only connect the contour not to return to the starting point.
SQUARE ISLAND:
%
O1000
T1 M06 (Tool is a 0.500" diameter endmill)
G90 G54 G00 X2. Y2.
S2500 M03
G43 H01 Z0.1 M08
G01 Z0.01 F30.
G150 P500 X2. Y2. Z-0.5 Q0.5 R0.01 I0.3 K0.01 G41 D01 F10.
G40 G01 X2. Y2.
G00 Z1.0 M09
G28 G91 Y0 Z0
M30
%
%
O0500
G01 Y1.
X7.
Y7.
X1.
Y3.75
X3.5
Y4.5
X4.5
Y3.5
X3.5
Y4.25
X1.
Y1.
X2.
M99
%
These correspond to the existing G73, G74, G81, G82, G83, G84, G85, G86 and G89 3-axis canned cycles.
There are three differences between a 3-axis canned cycle and a 5-axis canned cycle:
1) Five-axis canned cycles will rapid to the specified X,Y, Z, A, B position, which is used as the
starting point.
2) Five-axis canned cycles require an E code, which specifies the distance from the starting position
to the bottom of the hole. If this is not given, an alarm will be generated.
3) Five-axis canned cycles ignore any R codes. The starting point is always the R position.
Notes: Retraction and pecking, which would be rapid motions in a normal canned cycle, are fast feeds, not true
rapids. Currently, G154 and G164 only perform floating taps. G184 is available for 5-axis rigid tapping.
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected. This is a high-speed peck cycle where
the retract distance is set by Setting 22.
E E
Z Axis position
G98 / G99 between holes
Cutting Feed
Rapid Traverse
Begin or end
of stroke
Spindle CW
Spindle CCW
If K and Q are both specified, a different operating mode is selected for this canned cycle. In this mode, the
tool is returned to the start position after the number of passes totals up to amount K. This allows much faster
drilling than G83 but still returns to the start position plane occasionally to clear chips.
E E
Z Axis position
G98 / G99 between holes
Cutting Feed
Rapid Traverse
Begin or end
of stroke
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected. A specific X, Y, Z, A, B position must be
programmed before the canned cycle is programmed. This position is used as the Start position by the
canned cycle.
If P is specified, the tool will pause at the bottom of the hole after the last peck for that amount of time. The
following example will peck several times and dwell for one and a half seconds at the end:
G163 Z-0.62 F15. R0.1 Q0.175 P1.5.
The same dwell time applies to all subsequent blocks that do not specify a dwell time. When the canned cycle
is cancelled (by G00, G01, G80, or RESET) the dwell time will be reset to zero. This dwell cannot be used in
the same block as an M97, M98, M99, or G65, because these codes use P for different purposes.
G163 5-Axis Peck Drilling With I, J & K Options G163 5-Axis Normal Peck Drilling
E E
I1=I Q
I2=I1- J Q
I3=I2 -J Q
I4=K Q
Setting 52 also changes the way G163 works when it returns to the start position. Most programmers set the
R plane well above the cut to ensure that the chip-clearing motion actually allows the chips to get out of the
hole, but this causes wasted motion when first drilling through this empty space. If Setting 52 is set to the
distance required to clear chips, the start position can be put much closer to the part being drilled. When the
chip-clearing move to the start position occurs, the Z axis will be moved above the start position by the
amount given in this setting.
E E
Setting #52
Q Q
Q Q Cutting Feed
Rapid Traverse
Q Q Begin or end
of stroke
Q Q
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected. A specific X, Y, Z, A, B position must be
programmed before the canned cycle is programmed. This position is used as the Start position by the
canned cycle.
E E
Starting Position
G98 Start Position
Z Axis position
G98 / G99 between holes
Cutting Feed
Rapid Traverse
Begin or end
of stroke
Spindle CW
Spindle Stop
This G code is modal. Once activated, every commanded motion of X and/or Y will cause this canned cycle to
be executed, until it is canceled or another canned cycle is selected. A specific X, Y, Z, A, B position must be
programmed before the canned cycle is programmed. This position is used as the Start position by the
canned cycle.
Program Point
G187 E.001
G187 E.05
M C ODE SUMMARY
Only one M code may be programmed per block of a program. All M codes are effective or cause an action to
occur at the end of the block. However, when Parameter 278 bit "CNCR SPINDLE" is set to 1, an M03 (spindle
start) will occur at the beginning of a block.
M00 Stop Program
M01 Optional Program Stop
M02 Program End
M03 Spindle Forward
M04 Spindle Reverse
M05 Spindle Stop
M06 Tool Change
M08 Coolant On
M09 Coolant Off
M10 Engage 4th Axis Brake
M11 Release 4th Axis Brake
M12 Engage 5th Axis Brake
M13 Release 5th Axis Brake
M16 Tool Change (same as M06)
M19 Orient Spindle. P and R values optional.
M21-M28 Optional Pulsed User M Function with Fin
M30 Prog End and Rewind
M31 Chip Conveyor Forward
M32 Chip Conveyor Reverse
M33 Chip Conveyor Stop
M34 Increment Coolant Spigot Position
M35 Decrement Coolant Spigot Position
M36 Pallet Rotate
M39 Rotate Tool Turret
M41 Low Gear Override
M42 High Gear Override
M50 Execute Pallet Change
M51-M58 Set Optional User M
M59 Set Output Relay
M61-M68 Clear Optional User M
M69 Clear Output relay
M75 Set G35 or G136 Reference Point
M76 Disable Displays
M77 Enable Displays
M78 Alarm if skip signal found
M79 Alarm if skip signal not found
M82 Tool Unclamp
M86 Tool Clamp
M88 Through the Spindle Coolant ON
M89 Through the Spindle Coolant OFF
M93 Start Axis POS Capture
M94 Stop Axis POS Capture
M95 Sleep Mode
M96 Jump if no Input
M97 Local Sub-Program Call
M98 Sub Program Call
M99 Sub Program Return Or Loop
The comment immediately following the M95 must contain the hours and minutes that the machine is to sleep
for. For example, if the current time were 6pm and the user wanted the machine to sleep until 6:30am the next
morning, the following command would be used:
M95 (12:30)
Up to 99 hours can be specified thus allowing the machine to sleep for over 4 days. If the time is specified
using an incorrect format, alarm 324 DELAY TIME RANGE ERROR will be generated. When the machine
enters sleep mode and the following message is displayed:
HAAS
SLEEP MODE
REMAINING TIME nnn MIN.
The message will be re-displayed in a different position on the screen each second so that the user can see at
a glance that the machine is sleeping. This has the advantage of preventing the message from being "burned"
into one spot on the screen.
When less than one minute of sleep time remains, the message will change to:
REMAINING TIME nn SEC.
If the user presses any key or opens the door, sleep mode will be cancelled and the active program will wait at
the block following the M95 until the user presses the Cycle Start key.
For the last 30 seconds of the sleep time, the machine will beep and display an additional message:
WAKE UP IN nn SECONDS
When the sleep time has elapsed and the active program will continue at the block following M95.
.
N85 M21 (EXECUTE AN EXTERNAL USER FUNCTION)
N90 M96 P10 Q27 (LOOP TO N10 IF SPARE INPUT IS 0);
N95 M30 (IF SPARE INPUT IS 1 THEN END PROGRAM);
M97 Local Sub-Program Call
This code is used to call a subroutine referenced by a line N number within the same program. A Pnnnn code
is required and must match a line number within the same program. This is useful for simple subroutines within
a program and does not require the complication of a separate program. The subroutine must still be ended
with an M99. An L count on the M97 block will repeat the subroutine call that number of times.
M98 Sub Program Call
This code is used to call a subroutine. The Pnnnn code is the number of the program being called. The Pnnnn
code must be in the same block. The program by the same number must already be loaded into memory and it
must contain an M99 to return to the main program. An L count can be put on the line containing the M98 and
will cause the subroutine to be called L times before continuing to the next block.
M99 Sub Program Return Or Loop
This code is used to return to the main program from a subroutine or macro. It will also cause the main pro-
gram to loop back to the beginning without stopping if it is used in other than a subprogram without a P code. If
an M99 Pnnnn is used, it will cause a jump to the line containing Nnnnn of the same number.
M99 Pnnnn in the HAAS control varies from that seen in FANUC compatible controls. In FANUC compatible
controls M99 Pnnnn will return to the calling program and resume execution at block N specified in Pnnnn. For
the HAAS control, M99 will NOT return to the calling program, but instead will jump to block N specified in
Pnnnn in the current program.
You can simulate FANUC behavior by using the following code.
calling program: HAAS FANUC
O0001 O0001
... ...
N50 M98 P2 N50 M98 P2
N51 M99 P100 ...
... N100 (continue here)
N100 (continue here) ...
... M30
M30
6. SETTINGS
The setting pages contain values that the user may need to change and that control machine operation. Most
settings can be changed by the operator. The settings are preceded by a short description on the left and the
value on the right. In general, settings allow the operator or setup person to lock out or turn on specific func-
tions.
The settings are organized into pages of functionally similar groupings. This will make it easier for the user to
remember where the settings are located and reduces the amount of time spent maneuvering through the
settings display.
Use the vertical cursor keys to move to the desired setting. Depending on the setting, you may change it by
entering a new number or, if the setting has specific values, press the horizontal cursor keys to display the
choices. Press the WRITE key to enter or change the value. The message near the top of the screen tells you
how to change the selected setting.
The serial number is Setting 26 on this page and is protected from user change. If you need to change this
setting, contact HAAS or your dealer.
One of the more commonly adjusted settings will be number 34, the "Rotary Axis Diameter". This setting is
used to control the surface feed rate when the fourth axis is used in a cutting feed. Feeding with the X, Y, or Z
and the A axes assumes that the linear motion is along the axis of the rotary motion. When this is true and the
diameter setting is correct, the programmed surface feed rate will be correct for helical cuts. In addition, feeds
of just the A-axis depend on this setting to determine the correct angular rate.
If you have a fourth axis 5C, fifth axis, or rotary table, it may be disabled from the setting page and removed
from the machine. Do not connect or disconnect any cables with the control on. If you do not disable the fourth
axis when it is disconnected, you will get an alarm.
Settings may be sent and received with the RS-232 port. See the "Data Input / Output" section for a description
of how to do this.
3 RESERVED
This setting is reserved for future use.
7 PARAMETER LOCK
This is an On/Off setting. When it is off, parameters can be changed. When it is on, parameter changes are
locked out except for parameters 81 through 100. When the control is turned on, this setting is set to On.
9 DIMENSIONING
This is an Inch/Metric setting. When it is set to Inch, the programmed units for X, Y, and Z are inches to
0.0001. When it is set to Metric, programmed units are millimeters to 0.001. Note: Changing this setting will
not automatically translate a program already stored in memory. You must change program axis values for the
new units. When set to Inch, the Group 6 default G Code is G20. When set to Metric, the default G Code is
G21. When this setting is changed from inches to metric, or vice versa, all offset values will be converted
accordingly.
IN C H ME T R IC
Axis Jo g K eys
12 PARITY SELECT
This setting allows the setting of parity for the first serial port. The possible values are: NONE, ODD, EVEN,
ZERO. When set to none, no parity bit is added to the serial data. When set to zero, a 0 bit is added in the
place of parity. Even and odd work like normal parity functions. Make sure you know what your system needs.
XMODEM must use 8 data bits and no parity.
13 STOP BIT
This setting changes the number of stop bits for the first serial port. It can be selected to be 1 or 2.
14 SYNCHRONIZATION
This changes the synchronization protocol between sender and receiver for the first serial port. When set to
RTS/CTS, the signal wires in the serial data cable are used to tell the sender to temporarily stop sending data
while the receiver catches up. When it is set to XON/XOFF, those ASCII character codes are used by the
receiver to tell the sender to temporarily stop. XON/XOFF is the most common setting.
DC CODES is like XON/XOFF but the paper tape punch or reader start/stop codes are sent. XMODEM is a
receiver-driven communications protocol that sends data in blocks of 128 bytes. XMODEM gives the RS-232
communication added reliability because each block is checked for integrity. Refer to "Data Input/Output"
section for more information. XMODEM must use 8 data bits and no parity.
24 LEADER TO PUNCH
This setting is used to control the leader sent to a paper tape punch device connected to the first RS-232 port.
The values that can be selected are: NONE, BLANK, or NUL CHAR. None causes no extra data to be sent as
a leader. Blank causes two feet of blanks to be punched at the start of a program and one foot of blanks at the
end. Null causes the same thing as blanks but uses the ASCII code null which is all zero.
25 EOB PATTERN
This setting controls what is sent out and expected as input to represent the EOB (end of block) on serial port
one. The possible selections are: CR LF, LF only, CR only, or LF CR CR.
26 SERIAL NUMBER
This is a numeric entry. It is the serial number of your machine. It cannot be changed.
29 G91 NON-MODAL
This is an On/Off setting. When it is off, the machine operates normally. When it is on, G91 is not modal and
applies only to the command block on which it occurs.
32 COOLANT OVERRIDE
This setting controls how the coolant pump operates. The possible selections are: NORMAL, OFF, or IGNORE.
The "NORMAL" setting allows the operator to turn the pump on and off manually or with M codes. The "OFF"
setting will generate an alarm if an attempt is made to turn the coolant on manually or from a program. The
"IGNORE" setting will ignore all coolant commands, but the pump can be turned on manually.
33 COORDINATE SYSTEM
This setting changes the way the G92/G52 offset system works. It can be set to FANUC, HAAS, or YASNAC.
The Fanuc and HAAS class of controls uses the G52 offset differently than the Yasnac class of controls. In a
Fanuc or HAAS control, G52 sets a local coordinate system. In a Yasnac control, the G52 stands on its own
as another work offset.
35 G60 OFFSET
This is a numeric entry in the range of 0.0 to 0.9999 inches. It is used to specify the amount of overshoot when
unidirectional positioning (G60) is programmed.
36 PROGRAM RESTART
This is an On/Off setting. When it is off, starting a program from anywhere other than the beginning may
produce inconsistent results. When it is on, starting a program from the middle causes the entire program to
be scanned to ensure that the correct tools, offsets, G codes, and axes positions are set correctly before
starting at the block where the cursor is positioned. Some alarm conditions are not detected prior to motion
starting.
39 BEEP AT M30
This is an On/Off setting. When it is off, nothing is changed. When it is on, a program ending in an M30 will
cause the keyboard beeper to sound until another keyboard key is pressed.
44 MIN F IN RADIUS CC %
This setting is a numeric entry between 1 and 100. It affects the feed rate when cutter compensation moves the
tool towards the inside of a circular cut. In order to maintain a constant surface feed rate, such a cut will be
slowed down. This setting specifies the minimum feed rate as a percentage of the programmed feed rate.
58 CUTTER COMPENSATION
This setting controls the type of cutter compensation used in the control. The types are similar to the method
of cutter compensation available in other classes of controls.
59 PROBE OFFSET X+
60 PROBE OFFSET X-
61 PROBE OFFSET Y+
62 PROBE OFFSET Y-
Settings 59 through 62 are used to define the displacement and size of the spindle probe. These numbers only
apply to the probing option. These four numbers specify the travel distance in four directions from where the
probe is triggered to where the actual sensed surface is located. They are used by G31, G36, G136, and M75.
They can be both positive and negative numbers. If the probe width were 0.23 inches in diameter and the probe
was set exactly at the center of the spindle, these four settings would all be 0.115 inches.
66 GRAPHICS X OFFSET
This setting locates the right side of the scaling window relative to the machine X zero position, (See "Displays"
section). Its default is zero.
67 GRAPHICS Y OFFSET
This setting locates the top of the scaling window relative to the machine Y zero position, (See "Displays"
section). Its default is zero.
68 GRAPHICS Z OFFSET
Reserved for future use.
77 SCALE INTEGER F
This setting aids those wishing to run programs developed on a control other than HAAS. It allows the operator
to select how the control interprets an F address code that does not contain a decimal point, (It is recom-
mended that the programmer always use a decimal point). The setting can be set to the following values:
DEFAULT - F12 is interpreted as .0012 units/minute.
INTEGER - 12.0
.1 - 1.2
.01 - .12
.001 - .012
.0001 - .0012
The default setting is DEFAULT.
78 FIFTH-AXIS ENABLE
When this setting is off, the fifth axis is disabled and no commands can be sent to that axis. When off is not
selected, the selected rotary table type parameters are called up. A change to rotary parameters is saved
under the selected table type for later recall. In order to change this setting the servos must be turned off.
79 FIFTH-AXIS DIAMETER
This is a numeric entry. It is used to set the angular feed rate of the B-axis. It must be in the range of 0.0 to 50
inches. Since the feed rate specified in a program is always inches per minute (or mm per minute), the control
must know the diameter of the part being worked in the B-axis in order to compute the angular feed rate. When
this setting is set correctly, the surface feed rate on a rotary cut will be exactly the feed rate programmed into
the control. The feed rate will be correct only as long as the axis remains orthogonal (at right angles) to all
other axes.
82 LANGUAGE
This setting allows the user to change between available languages. If the language selected does not reside in
the control, NOT AVAILABLE will be displayed in the message area when that language is selected.
NOTES: When tapping (rigid and floating), the feed and spindle overrides will be locked
out, so the AUTOFEED feature will be ineffective (although the display will
appear to respond to the override buttons.)
The AUTOFEED feature should not be used when doing thread milling or using
autoreversing tapping head as it may cause unpredictable results or even a
crash.
The last commanded feed rate will be restored at the end of the program
execution, or when the operator presses RESET or turns off the AUTOFEED
feature.
The operator may use the feed rate override buttons while the AUTOFEED
feature is active. As long as tool load limit is not exceeded, these buttons will
have the expected effect and the overridden feed rate will be recognized as the
new commanded feed rate by the AUTOFEED feature. However, if the tool load
limit has already been exceeded, the control will ignore the feed rate override
buttons and the commanded feed rate will remain unchanged.
Setting 85 Examples
86 M39 LOCKOUT
This is an on/off setting. Locks out the rotation of the tool changer.
NOTE: The CHIP FWD button (or M31) will start the conveyor in the forward direction
and activate the cycle.
NOTE: The CHIP REV button (or M32) will start the conveyor in the reverse direction
and activate the cycle.
NOTES: The CHIP STOP button (or M33) will stop the conveyor and cancel the
cycle. If Parameter 209 CNVY DR OVRD bit 16 is set to 0 and the chip
conveyor is cycling, opening the door will cause the conveyor to stop and
suspend cycling. When the door is closed, the cycle will resume.
136 SERVER
This setting is used to contain the user-supplied server name (up to 8 characters long.) If this setting is not to
be used, the user should enter a semicolon (EOB.)
137 USERNAME
This setting is used to contain the user-specified account name (up to 8 characters long.) If this setting is not
to be used, the user should enter a semicolon (EOB.)
138 PASSWORD
This setting is used to contain the user-specified password (up to 8 characters long.) If this setting is not to be
used, the user should enter a semicolon (EOB.)
139 PATH
This setting is used to contain the user-specified Novell-Path or NT Root Directory name depending on the
network server used (up to 18 characters long.) For a Novell network, this is the users path name, for ex-
ample: U:\USERS\JOHNDOE. For a Microsoft network, this is the root directory\desired directory name, for
example: USERS\JOHNDOE. If this setting is not to be used, the user should enter a semicolon (EOB.)
141 SUBNET
This setting is used only for TCP networks and contains the user-specified subnet mask (up to 15 characters
long.) For example: 255.255.255.0. If this setting is not to be used, the user should enter a semicolon (EOB.)
This is a new setting to generate a warning message if an offset is changed more than the specified amount. It
is intended to help prevent operator errors. The user can set it to any number from 0 to 99.9999. When the
setting contains zero, the feature is inactive and the control behaves as before. When it contains a non-zero
number and an attempt is made to change an offset by more that this amount (either positive of negative) the
following prompt is displayed:
xx changes the offset by more than Setting 142! Accept (Y/N)?
If Y is entered, the control updates the offset as usual, otherwise, the change is rejected.
This is a new feature that enables the user to extract data from the control using a Q command sent via
the RS-232 port. Note that the control will only respond to a Q command when this setting is ON. The following
output format is used:
Note: STX = 0x02 (ctrl-B), ETB = 0x17 (ctrl-W) The following commands can be used:
If the control is busy, the control will output «STATUS, BUSY». If a request is not recognized, the control will
output «UNKNOWN».