CNC Machine telephoneHomeAbout Us CNC Verticals CNC Horizontals CNC Turning Centres Rotary Tables and Indexers Diamond Cut Wheel Lathes Service and Support Education Used Machines Exhibitions Request a Brochure Finance Customer Success Stories Tips and Tricks Recruitment Contact Us


Archive index:

Run Stop Jog Continue
Screen Capture
Electronic Thermal Compensation (ETC)
Modelled Surfaces
Option Time Trials - Try Before Buy
Helical Motion Enhancement
Inverse Time Feed Mode (G93)
Search for Part of a Code in a Program
Extra Tools
Using G-Code for Circular Milling
Working out Drill depth
Setting 88 to prevent overrides
Clearing tool and work offsets
Ignoring Active Work Offsets
Safely indexing a lathe manually
Easy Axis Homing
Duplicating/Editing a Program
Showing Only the Offsets in Use
Do I need balanced tooling?
How to cut left handed threads
How to manually activate the Auto Air Gun
How does the Haas high-speed machining option work?
Using the dual screen editor
USB Drip Feeding (FNC)
Backing up your machine
Saving an MDI program
Axis Warm-Up
Tool Change Direction
Looking after your Spindle
Reduced Peck
When to Brake
Graphical Speed
Coolant Level
Keeping Everything Together
Turning off the lights
Peck and Retract
Help with the decimal points
Simultaneous Jogging
Turn on to Tool Monitoring
Help with different languages
Checking Tools Mid-Program
Haas Speaks Fadal
Perfectly Written?
Cylindrical Mapping
Smooth Operator
Varying Accuracy
Help to Restart
Taking the Most Direct Route
Programmable Offsets
Advanced Tool Management
Tool life expectancy
The Haas multi function Jog Handle - Part 1
The Haas multi function Jog Handle - Part 2
Is your tool working to its optimum?
Who changed the program?
Tapped holes in all directions
Add an extra axis - the easy way
Reduce energy consumption
Create your own code
Removing unnecessary code
Try Haas control options for FREE
Material assistance
Developing offsets
Operator checking questions
Protect your tools
Automatic maintenance reminders
Speed up your tapping cycle
Avoiding that crash
Improve your cutting finish
Multiple Axis Machining

Run Stop Jog Continue

Run Stop Jog Continue (RSJC) is a control feature available on Haas mills and lathes. RSJC allows you to stop a running program, jog away from the part and then resume program execution. Once the tool is away from the part, a worn insert or broken tool can be replaced and/or a critical feature can be inspected. Then the program can be resumed.

Use caution, when the program is continued, the OLD or currently active offsets will be used for the return position and the machine will not return through the same path that you jogged away. If replacing tools, the length must be the same as the previous tool (offline tool setter recommended).

Activate Run Stop Jog Continue

To activate RSJC press FEED HOLD at a convenient stopping point in the program. Press Z, X or Y on the keypad followed by the HAND JOG key to activate the selected axis. The control will store the current X, Y, and Z positions. Axes other than X, Y, and Z cannot be jogged. "JOG AWAY" is displayed at the bottom of the screen and the control will beep, confirming RSJC is active:

Now you can use the jog handle, remote jog handle, jog, or jog-lock buttons to move away from the part. Control buttons such as AUX CLNT (TSC), or COOLNT to turn on/off the coolant (AUX CLNT requires that the spindle is not rotating and the door is closed).

The spindle can be controlled by pressing CW, CCW, Stop, and Tool Release. If necessary, tool inserts can be changed. Jog to a position as close as possible to the stored position where RSJC was activated, or to a position where there will be an unobstructed rapid path back to the stored position.

Further Instruction

Use caution when the program is continued, the old offsets will be used for the return position. Therefore, it is unsafe and not recommended to change tools and offsets when the program is interrupted.

Return to the previous mode by pressing MEM, MDI, or DNC. The control will only continue if the mode that was in effect when stopped is re-entered. Press Cycle Start. The control will display the message "Jog Return" and rapid X and Y at 5% to the position where Feed Hold was pressed and then return the Z-axis.

The control will not follow the path used to jog away. If Feed Hold is pressed during this motion, the mill axes motion will pause 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. Press Cycle Start again and the program resumes normal operation.

  Back to top  


When Setting 103 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 it's released, the machine will stop in a feed hold. This gives you much better control when setting up a new program.

This feature should be turned off when you're done using it. Setting 103 can be changed while running a program, but it cannot be on when Setting 104 (below) is on.

  Back to top  

Screen Capture

It's said a picture is worth a thousand words. Have you ever wanted to show somebody something on your control's screen, rather than having to describe it verbally. For example, when talking to a Haas technician or colleague on the phone?

Since the introduction of Mill software version 18.01 and Lathe software version 11.01 this has been possible.

The control will take a screen shot of your current screen and save the file to the USB stick in the machine or the control's own memory if there no USB is detected.

It allows a filename up to 39 characters to be used and saves the file as a .bmp file (If no filename is entered then the file is defaulted to the name snapshot.bmp) This can then be emailed as an attachment.

screen capture

  Back to top  

Electronic Thermal Compensation (ETC)

This powerful software feature – standard on Haas machine tools – uses a proprietary algorithm to compensate for the expansion and contraction (due to heating and cooling) of each linear axis.

The ETC algorithm utilizes a model of the lead screw, and estimates heating of the screw based on the distance travelled and the torque applied to the motor. Heat is represented by a thermal coefficient of expansion, and the axis distance is multiplied by the coefficient to get the amount of correction needed.

A real-time clock allows monitoring of in-motion time as well as non-motion time (e.g., lunch, breaks) and compensates accordingly.

Our testing shows about a 4 to 1 reduction in the error associated with average lead screw growth. A series of parameters allows this feature to be implemented on each axis of various models, with some room for fine-tuning.

Keep in mind that ETC does not correct for: thermal growth due to changes in ambient temperature; growth due to part expansion; or growth due to spindle expansion/retraction.

  Back to top  

Modelled Surfaces

To get a good surface toolpath, you must start with a good surface. If your surfaces were created in a software program different from the software you are using to generate the toolpaths, it will be well worth your time to do some checks on the surfaces provided.

You need to determine the direction of the "positive surface normal." A surface normal is a vector (direction) that is perpendicular to the tangent plane of a surface at the point of tangency. It is an attribute that is attached to each individual surface and not to a specific part shape. In the diagrams below, the green arrows represent the vector that is perpendicular to the surface at the point where the vector intersects the surface, and they point in the direction of the positive surface normal.

Each surface has two normal vectors, which point in opposite directions. One is referred to as the positive (front, outward) direction; the other as the negative (back, inward) direction. The positive surface normal side of the surface should always be the side you are machining. When a surface is created, the default positive normal direction is based on the relative directions of the curves defining the surface.

This becomes a problem if you are machining a model that has several surfaces, with some positive normals pointing inward and some outward. The normal direction must be flipped so all the positive normals point in the same directions. In the graphic below, the surface on the left has the positive surface normal pointing outward. The surface on the right has the positive surface normal pointing inward.


It is important to know the surface normal direction, because it affects the ways in which offset surfaces are created, curves are projected onto surfaces, and fillet surfaces are created between two sets of surfaces.

Also, check the surface creation tolerance or maximum surface deviation tolerance. These will determine the maximum distance by which a surface can be separated from its generating curve. If the tolerance is too large, the final machined surface may not be desirable.

Tip: I usually set my maximum surface deviation tolerance set to 0.00005″ (0.0013mm).

  Back to top  

Option Time Trials - Try Before Buy

Do you ever think about buying certain options on a CNC machine tool but don't know whether you will actually use the option or if it's worth the investment?

Haas feel that options should be tried before they are bought, things like rigid tapping, high speed machining, macros and more. In the Haas control there are time trials available for various options, which can be activated whenever needed. The trials allow you to try out the options for 200 hours.

To activate the time trial:

1. Press setting graph key

2. Type 7 then cursor down

3. Change parameter lock to off with the right arrow key and press write enter

4. Press in emergency stop

5. Press the parameter diagnostic key

6. Find the option you want to switch on ( anything with a T next to it)

7. Type 1 with the parameter highlighted and press enter

8. Remove emergency stop and reset alarms

The option will now be fully operational for the 200 hour trial period.

  Back to top  

Helical Motion Enhancement

Helical motion now includes unrestricted 3rd, 4th, & 5th axis motion. All restrictions on the length(s) of such motion on the third, fourth, and/or fifth axes have been eliminated. This means that the programmed feedrate will be applied to the total distance travelled along all axes of motion.

Total distance is calculated from the square root of the sum of squares of the circumferential distance and any/all other axis distances. That is, each axis distance (whether linear or rotary) is squared, the squared values are added up, and the square root of the sum equals the total distance.

Rotary axis distance will of course depend on, and will be internally calculated from, the diameters specified in Setting 34 (4th axis diameter) and Setting 79 (5th axis diameter).

  Back to top  

Inverse Time Feed Mode (G93)

This VMC/HMC feature specifies that all F (feedrate) values are to be interpreted as "strokes per minute." This is equivalent to saying that the F code value, when DIVIDED INTO 60, is the number of seconds that the motion should take to complete.

G93 is generally used in 5-axis work, and sometimes in 4-axis work as well. It's a way of translating the linear (inches/min) feedrate assigned to the program – F30, say – into a value that takes rotary motion into account. When G93 is activated, the F value will tell you how many times per minute the stroke (tool move) can be repeated, based on the linear F value.

Haas has been able to accommodate full 5-axis machining for many years; however, this feature, in conjunction with aftermarket CAM systems and their post-processors, offers even more flexibility and versatility.

  Back to top  

Search for Part of a Code in a Program

Did you know that you can search for a G or M code (or part of a code) in a program by entering an alphanumeric value and pressing the up or down arrow?

"Down" will search from the current point in the program toward the end, while up will search back to the beginning. For example, if you want to find the next coolant command in a program, you can enter M8 and push the down arrow.

To find the next M code, no matter if it is an M8 or another M code, just press M and the down arrow, and the cursor will jump to the next M.

  Back to top  

Extra Tools

Did you know that on a Haas CNC mill with a side mount tool changer that it is possible to have tool numbers higher than the number of stations?

It can be very handy to have tool offsets set for tools that have been taken out of the machine but have stayed in their holder and are going to be used again.

For example, with a 24 + 1 side mount tool changer, most people would naturally think they have tool numbers T1 through to T25. This is not the case, there are 200 available so anything up to T200 could be programmed.

To set your machine for this use Setting 90 to set a tool-number range – from the number of pockets in the tool changer up to the maximum of 200. With Setting 90 set to 200, the control will display 200 tool length offsets, and increase the tool numbers available in the tool-pocket table to 200.

  Back to top  

Using G-Code for Circular Milling

Did you know that the Haas control has a built in G-code for milling circular shapes?

G13 (and G12) are proprietary G-codes that are only available on a Haas

The required arguments (letters associated with the G-code) to use G13 are: I and F. But D, K, L, Q, and Z can be used, if necessary.

The neat part of this code is that it automatically adds a lead-in and lead-out move for entering and exiting the cut.

Remember, G13 (and G12) always starts the tool centerline directly over the desired hole's centerline.

Check it out in the Haas operator manual under G-codes!

  Back to top  

Working out Drill depth

When a drawing asks for a drill to be taken to a certain depth of full diameter, e.g. 12mm diameter hole 25mm deep, then you always have to program the drill to go deeper than the 25mm specified because of the drill point. As a machinist you don't want to take the drill too far past what is drawn to create the full diameter hole.

Using trigonometry you can work out how far to take the drill. The standard drill point angles are 118, 135 or 140 degrees.

If the drill point is:

118 degrees then multiply the diameter of the drill by 0.3

135 degrees then multiply the diameter of the drill by 0.207

118 degrees then multiply the diameter of the drill by 0.182

For example, if the 12mm drill, mentioned earlier, was 135 degrees and the drawing asked for 25mm of full diameter then:

12mm * 0.207 = 2.484mm

Add this onto the 25mm depth = 27.484mm.

So, take the drill 27.484mm deep to produce 25mm of 12mm diameter.

  Back to top  

Setting 88 to prevent overrides

Did you know that setting 88 can be used to prevent overrides that may have been activated by the setup machinist from staying over-ridden? The programming setting can be turned on or off in the Settings page (just press SETTING GRAPH, and then the number 88 and the down arrow). Once the RESET key is pressed, all overrides will be canceled and returned to their default 100% values.

  Back to top  

Clearing tool and work offsets

Once a job has been completed all the tools may have been removed from either the turret on your Haas lathe, or carousel on your Haas mill, however the offsets remain in the tool and work offset pages. This is a dangerous situation to be in as another job could be set up on the machine with the wrong offsets.

On a Haas machine there is an easy way to clear the offset pages:

Put the machine in HAND JOG mode. You can now toggle between the tool offset and work offset page using the OFFSET key.

Once you have navigated to the screen you want to clear, press the ORIGIN key, this will then ask you whether you want to zero Y/N?

N.B. On later machines (series 9 lathe software or series 16 mill software) when the ORIGIN key is pressed you will be given the option to clear a cell, column, row or all the tool offsets.

Cursor to the option you want then press the WRITE/ENTER key, this will then ask you whether you want to zero Y/N?

Press the Y key to zero all offsets.

Press the N key to abort.

  Back to top  

Ignoring Active Work Offsets

Here's a question that we're often asked. How can I ignore an active work offset (i.e., G54, G55, G129) command? After the control reads a work offset command, say G54, I want to be able to ignore it so I can position from the machine zero coordinates instead of the G54 work coordinates.

To perform a move defined from the absolute machine zero coordinates, and then revert back to the previously active work coordinate, you'll need to program a G53 (Non modal machine coordinate selection).

A common use for the G53 command is to send the machine table to a specific location, such as Y zero, for part changeover.

These figures come from the reference point in the machine so if you want to work out the position in the machine that you want to send your machine to, manually Hand Jog the machine to the required position and using the machine position screen take the figures down and put these into your program.

N.B. the X and Y axes figures will always be a negative figure and the the Z axis figure will be negative if the spindle is lower than the tool change height and positive above the tool change height.

Below is an example:

T1 M06
G00 G90 G54 X30. Y-20. M03 S1000 (Command Work Offset G54)
G43 Z5.0 H01 M08
G81 Z-20. R2. F150.
G00 Z5.0 M09
G53 Z0. M05
G53 Y0.

This will take the spindle to the tool change height and then the Y axis to the front of the machine.

The G53 has to be on every line that requires machine position changes. Because it is a Non Modal G code, on the line following a G53 the machine will revert to G54 or G55 etc. without recalling the offset you were using.

  Back to top  

Safely indexing a lathe manually

Do you ever worry about manually indexing a Haas lathe and crashing the turret into something, e.g. the chuck, probe arm etc.?

Haas has a setting that asks the operator to check that the tool is clear before a tool change is made.

Setting 132 (Jog or Home before Tool Change) helps prevent crashes caused when the tool or holder is too close to an obstruction (chuck, part, tailstock).

If setting 132 is ON, and the machine is not at its home position, a message ("CHK TOOL CLR") is displayed if a tool change button is pressed. To change the tool, the operator must go into HAND JOG mode and jog the machine to a safe location, and then go back to MDI and press the tool change button again.

If the turret is in a safe location, it still must be moved at least .0001″ in at least one axis. If the turret is in HAND JOG mode, the control will allow the operator to switch to MDI mode and press a tool change button.

When setting 132 is OFF, the machine will behave normally.

  Back to top  

Easy Axis Homing

Have you ever sat there on a Haas Mill or Lathe winding an axis home wishing that you didn't have to keep turning the Jog handle?

There is an easy way to do this so long as you are looking for the axis to end up at its home location.

The way to do this is using the Home G28 button which can be found on the Zero Return Mode line.

By pressing the Home G28 button with the doors shut this will command the machine to send all axes to their home location, on a Haas mill this will take the Z axis home first then the X and Y axes after the Z axis has finished and on a Haas Lathe it will Take the X axes home and then then Z axis (this is with the exception of TL 15 and TL 25 machines as well as the New DS range of lathes because of collisions with the sub spindle)

But there is also the option of taking one axes to its home position by Keying the Letter of the Axis that you require to take home off the Alphanumeric keypad followed by pressing the Home G28 button with the Door shut, this will take that single axis to its home location.

  Back to top  

Duplicating/Editing a Program

Here's a simple way to duplicate a program in memory so that you can save the original program and modify a duplicate program for a new part.

Simply press List Program, cursor to Device and select Memory.

Then cursor to the right and select the program to be copied, and then press enter.

Now, key in the letter O followed by a new program number, and then press the F2 key to duplicate the program.

The duplicate program will be listed in the directory with the new number. (On older controls, there's a similar method using the F1 key.)

  Back to top  

Showing Only the Offsets in Use

There is an easy way to determine what offsets will be used by a particular program.

One of the many unique features built into the Haas control is called Setting 201 "Show only work and tool offsets in use."

To use this feature, you must first enable Setting 201 in the Settings page.

Then, you run your program once in graphics mode, by pressing SETTING GRAPH twice and then CYCLE START (you may have to enter some ballpark values into the offsets to get the program to run to the end for the first time).

After that, you can go to the Offsets page and you will only see the offsets that your program calls out. This is true for both tool and work offsets.

Then, you can identify and reset only those offsets to their correct values.

To make all offsets visible again, just press F3 to cancel offset filtering.

  Back to top  

Do I need balanced tooling?

There are actually 2 answers to this:

If your machine is a 10,000 rpm machine then the answer is yes, you'll need balanced tooling (grade G2.5).

So having said that, if I have 6000rpm or 7500rpm spindle then I don't need balanced tooling!

This is true, but there are advantages to using balanced tooling on machines without a 10,000rpm spindle.

Balanced tooling allows you to achieve better quality parts with better surface finish, as the tool will be running truer.

The other advantage is that tool life will be improved as the milling cutter is running much truer and therefore cutting more equally down the flutes or across the tips.

  Back to top  

How to cut left handed threads.

Cutting left handed threads on a Haas Lathe is just as easy as cutting right handed threads.

  1st option  

The tools need to be mounted into the turret the opposite way round to normal, so left-hand tooling is used rather than right-hand tooling. Where we normally look at the back of a tool, with the insert facing the casting of your machine, we will now have the insert facing the operator when the tool is in the turret.

When this is done, there is one alteration needed in the program to cut a left handed thread:

Instead of running the spindle in the forward direction (M03 programmed), the program will now run the spindle in reverse (M04 programmed).

  2nd option  

Another way this can be done, if there is no option to buy new tooling, is to use the standard tooling (right-hand) and program the thread to cut from the back of the thread to the front of the thread (from the chuck towards the tailstock end) i.e. the tool will be moving in the Z+ direction.

N.B. This will allow you to use the standard tooling, however there will need to be an undercut at the chuck end of the thread to allow the screw cutting tool to move to the start point for threading.

  Back to top  

How to manually activate the Auto Air Gun.

The optional Haas Automatic Air Gun provides a constant blast of air to the cutting tool to clear chips during dry machining. The auto air gun can be retro-fitted. Activated by M-code, the air gun can be programmed to turn on while the spindle is turning, or at the end of a cycle.

If your machine has an auto air gun option installed, you don’t necessarily have to activate it with an M code.

For manual activation, simply press the shift key followed by the coolant key, but make sure SHIFT actually appears on the screen before pressing coolant, unless you need to wash up, because that’s what you will be doing if you accidentally activate the coolant pump!

  Back to top  

How does the Haas high-speed machining option work?

The high-speed machining option in the Haas control works by analysing the change in vector direction, or change in angle, from one block to the next. When the change in vector direction is very small, as with code produced by using a small cut tolerance value, the control can interpolate the motion at a higher feedrate than when the change in vector direction is greater. The greater the change in vector direction, the more the control must slow the motion to stay on the programmed path.

For this reason, you never want to drive your cutter into a sharp internal corner. The machine motion has to come to a nearly complete stop to change direction at such a sharp angle in the span of one block of motion. In that brief period of hesitation in a sharp corner, any tool pressure or tool deflection will be reduced and may result in small gouges at the surface intersections.

You should always model a fillet radius larger than the radius of the cutter being used, or select a cutter with a smaller radius than the required fillets. This allows the machine to make the large change in direction over more blocks of code. The machine motion will be much smoother and faster, and produce better finishes in those areas.

The graphic above shows the cutter machining into a sharp corner. The 120-degree change in vector direction in one block of code causes the machine to slow down dramatically. If the cutter can interpolate a more gradual change in direction, it will result in a noticeable reduction in cycle time.

The Haas high-speed machining option can process at a speed of up to 1000 blocks per second – that is, one block every one-thousandth of a second (1 millisecond). In order to maintain smooth, fluid motion, your program should not contain any block of code that takes less than 1 millisecond to execute.

For example, if your feedrate is 150 inches per minute, the commanded speed is 2.5 inches per second (150 / 60 = 2.5). If you divide 2.5 in/sec by 1000, you will find that, at 150 ipm, you travel 0.0025″ every millisecond.

You can determine the 3-dimensional distance traveled (D) in a linear block of code by using the following formula (d = distance moved in that axis):

  Back to top  

Using the dual screen editor

Did you know that when in edit mode it’s possible to view and edit two programs at the same time?

(This feature has been available since series 9 lathe software and series 16 mill software on machines shipped October 2007 onwards.)

Dual screen editing allows you to copy code from one program to another program and to jump between the two visible programs.

To dual screen edit put the control into EDIT MODE, you will see two programs visible on the screen, or a program on the left hand side and a list of programs in the machine on the right hand side.

Use the EDIT KEY to jump from the left screen (active program) to the right screen (inactive program) whenever needed.

The active program is the one currently in memory, which is the program that will run or edited.

The inactive program is the one that you can edit, or the one to copy to or from.

To copy a piece of code from one program to the other cursor to the beginning of the code that you want to copy on either the active or the inactive program.

Next, press F2, then move the cursor to the end of the code you want to copy and press F2 again. This will highlight and copy the your selection. Now move the cursor to wherever you want to paste this code, either within the same program or by using the EDIT KEY to the other program.

Finally, press the INSERT or WRITE/ENTER key to paste a copy of the code.

Once this is copied the new section of code in the program will be highlighted, if you change your mind press the DELETE key and it will disappear, or if you move the cursor to another point you want a copy of this code and press INSERT or WRITE/ENTER to paste.

When you have finished making copies press the cancel key to un-highlight the code.

  Back to top  

USB Drip Feeding (FNC)

Have you ever wanted to run a program and it is too large to fit in the machine memory?

One option was to connect your Haas machine up to a computer via an RS 232 connection and through a communication package or NC editor, to talk to the machine and drip feed in a program or DNC.

This involved getting the wiring in the RS 232 plugs correct, ensuring that the computer settings and machine settings were all set correctly and then hoping that while the program was running nobody touched anything on the computer to stop it communicating.

With the introduction of the USB port from 15 and 8 series software and the introduction of the device manager in LIST PROGRAMS it is possible to run a program straight from a USB stick.

To run straight from the USB, press LIST PROGRAMS and then open up your USB device, once the device is open find the program that you require to run in the root directory or in a sub folder on the USB. Once you have located the program you want to run, instead of copying the file to the memory on the machine use the SELECT PROG key.

When this is pressed the program that you want to run will appear on the screen but won't be in MEMORY like a normal program it will be in FNC and will say FNC USB and the file name.NC above the program.

This program can now be ran like a normal program in MEMORY, you can search through the program e.g. tool changes etc and start from where you need to in the program.

Once you have finished with the program you will need to tell the machine you have finished with the program.

Go back to LIST PROGRAMS, usually this will take you straight back to the USB device and you will see your program you've been running, if not find the program.

There will be an FNC symbol next to the program which needs to be removed by pressing the SELECT PROG key again.

The program is now turned off FNC and the machine will use the program last selected in memory again.

N.B. If you don't close the program and just remove the USB stick, the USB timeout alarms will appear as the control is still trying to read the USB.

  Back to top  

Backing up your machine

This is one of the most important, yet also one of the most neglected areas of machine maintenance. You might think that you don't really have anything worth backing up, nothing important, no big deal. Let's go through just a few items to jog your memory. Let's start with your custom settings and parameters, how about your tool offsets and most importantly, don't forget your programs.

On a Haas machine the vital process of backing up is easier than ever. Since lathe software version 9.00 and mill software version 16.00 (introduced 8th October 2007) it's a simple and advisable process to backup your machine data onto a USB stick.

Making a Backup

To back up the information from your machine go to the List Programs page, then cursor onto the USB tab and open this up.

Once you have opened the USB tab, all the information will be saved onto either the root folder or any of the directories you may have on your USB stick.

Cursor to the required destination and open it, then press F4.

Once F4 has been pressed two options will appear on the screen, Save the required information or Load the required information.

If you just want to save a single piece of information, e.g. your programs, then take the cursor onto Save Programs, then you will need to enter a filename (a good idea is to use the machine's serial number or date) type the file name and follow it by the file type you are saving, a settings file being .SET or programs .PGM, for example: 28012011.PGM, then press the write/enter key and it will save this file to the USB stick.

Choose from one of the following data types/extensions:

.ATM Advanced Tool Management

.HIS History

.IPS IPS Probe

.PAL Pallet Positions

.PAR Parameters

.PGM Programs

.SET Settings

.VAR Variables

.OFF Offsets

With the information backed up onto a USB stick it is as easy to restore back onto your Haas machine, as it is to save it.

Restoring from a Backup

To restore the file again use the USB tab in List Programs, press F4 in the directory where the file is located, cursor onto the file type to load then type the file name that is required to be loaded e.g. 28012011.PGM and press write/enter and the file will be loaded.

N.B. When saving or loading programs turn off setting 23 to ensure all 9000 series programs are also backed up as these are hidden files e.g. macros

Another option in the list, rather than to save/load an individual item is to Save or Load All items on the machine, rather than to save/load an individual item. The settings, parameters, programs, macros, tool offsets, variables etc. will be saved/loaded in one go.

The same procedure is used as the individual process, in the USB tab in List Programs, press F4 in the required destination on the USB but this time use the All function, either save or load all, cursor onto the all function and a file name is again required, but no extension as the control will save all aspects e.g. 28012011. Then write/enter and all the files will be on saved to USB or all items will be loaded.

  Back to top  

Saving an MDI program

Have you ever written an MDI program, ran it and then thought, "I wish I'd saved that!" Short programs that many people don't consider worth saving crop up again and again.

For example, a program to bore jaws out on a lathe, or one to drill and tap holes are the types of program that could have to be written frequently during component setups. Using VQC (Visual Quick Code) to create programs also gives the option of outputting the NC code to MDI.

Once this is output and has been ran and then proven out you may decide to keep this for future reference.

Once a file is in MDI and has been run and proved it is a simple process to save for use at a later date. First, find a program number in the directory on your machine that is not in use, e.g. O01234. N.B. Always ensure that the first character is a letter "O".

Once the file number is sorted, select the MDI screen with the program you wish to save. Ensure that the cursor is at the top of the MDI screen, Use the HOME button in the navigation pad in the centre of the control to do this.

When the cursor is at the top of the program, enter a file number that you want to name and save the program, e.g. O01234.

Next, on the EDIT line of keys press the ALTER key - the MDI screen will go blank. Go into the LIST PROGRAMS on your machine.

The file that was in MDI will now be in the Directory and has been saved like any other program in your memory.

  Back to top  

Axis Warm-Up

All machine tools suffer from the effects of thermal distortion and there are a variety of methods to reduce these effects, but one thing that’s clear, is that the majority of change takes place when the machine is first used after periods of standing idle for several hours. Generally, machine tools take a time to ‘warm-up’ and in turn retain their thermal status over a long period, but the initial phases of movement are where the majority of the growth will take place. With this in mind, all Haas machines have a facility called ‘Warm-up Time’ using setting 109, to allow the user to specify a period of time over which to apply individual compensation to the X, Y and Z axis, as specified by values in settings 110, 111, and 112. For lathes the same system applies, but with the exception of setting 111 for the Y-axis.

109 - Warm-Up Time in MIN.
This is the number of minutes (up to 300 minutes from power-up) during which the compensations specified in Settings 110-112 are applied.

Overview – 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:

CAUTION! Warm up Compensation is specified!
Do you wish to activate Warm up Compensation (Y/N)?

If a ‘Y’ is entered, the control immediately applies the total compensation (Setting 110,111, 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 will be 50%.

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.

CAUTION! Changing Setting 110, 111, or 112 while compensation is in progress can cause a sudden movement of up to 0.0044 inch.

The amount of remaining warm-up time is displayed on the bottom right hand corner of the Diagnostics Inputs 2 screen using the standard hh:mm:ss format.

110 - Warm-up X Distance
111 - Warm-up Y Distance
112 - Warm-up Z Distance

Settings 110, 111 and 112 specify the amount of compensation (max = ± 0.0020” or ± 0.051 mm) applied to the axes. Setting 109 must have a value entered for settings 110-112 to have an effect.

  Back to top  

Tool Change Direction

An area of machine tool usage very often overlooked is the ordering or sequence of tools within the machine, whether in the toolchanger on a CNC mill, or their respective positions in the turret of a lathe. This may not seem important, but it is a subject worthy of consideration.

Firstly, when changing over from one program to the next, do you need to remove all the tools each time, or can a few be left 'permanently' setup in the machine saving on tool setting time, therefore avoiding the need to search for that elusive collet that someone else is using? Secondly, are you achieving the best cycle time, or is the machine waiting for the right tool to get to position? Thirdly, are there certain tools in the turret, which might present a collision problem if selected in the wrong order?

Haas lathes provide the user with the ability to determine the method of selecting a tool by either commanding a specific direction (CW or CCW), or allowing the machine to make the decision and take the Shortest route. Setting 97 Tool Change Direction is a standard feature on all Haas turning centres and determines the default tool change direction. It may be set to either Shortest, or M17/M18.

When “Shortest” is selected, the control will turn the direction necessary to reach the next tool with the least movement. The program can still use M17 and M18 to fix the tool change direction, but once this is done it is not possible to revert back to the shortest tool direction other than Reset or M30/M02.

Selecting M17/M18, the control will move the tool turret either always forward, or always reverse, based on the most recent M17 or M18. When Reset, Power On, or M30/M02 is executed, the control will assume M17 as the tool turret direction during tool changes, always forward. This option is useful when a program must avoid certain areas of the tool turret due to odd-sized tools.

  Back to top  

Looking after your Spindle

The smooth operation of the spindle is critical on any machine tool, not only for surface finish, geometric accuracy and tolerances, but also to ensure the long life of the spindle. This is particularly important where the spindle has been stationary for a period of time.

By period of time, we refer to a 24/48/72 hour period of non-use, as during this time, the lubrication within the spindle housing will settle - we can thank gravity for that and so starting a machine and running its spindle at full speed, without 'warming' the spindle correctly, will ultimately result in a reduced service life. Also, resulting in a poor finish and other factors, as described above.

All Haas machines are shipped from the factory with program # O02020 pre-installed in the memory and also on the floppy/USB. Its purpose is to allow the spindle to be warmed up in the right way. The cycle takes approx. 20 mins. and commands the spindle to run at varying speeds through this time period to bring the spindle up to speed slowly and thermally stabilise.

The running of the program is not required on a daily basis, except where the overnight temperature is very low, but is recommended after long periods of the spindle being stationary - perhaps after a weekend, for example. Newer Haas controls will automatically show a message relating to the warm-up program when they are first turned on and operation is commanded, this is designed to act as a reminder only.

  Back to top  

Reduced Peck

A common operation performed on machine tools is drilling - spot drilling, straight drilling or 'peck' drilling. The principles are basically the same, whether it is applied on a lathe or a mill and to a large extent are the same as those used on a manual pedestal type drill.

If the material is soft (a relative term obviously!) then it's likely the operator is simply going to pull down on the quill and push the drill straight through. With harder materials it may be necessary to periodically lift the drill away from the 'cutting face', clearing swarf and allowing coolant in, then continuing the operation for a further 'peck' amount and so on. Conversely, softer materials and plastics in particular, are prone to producing 'stringy' swarf and this needs to be broken up, therefore introducing a peck is a useful function.

Most CNC machines have basic facilities for peck drilling, which whilst achieving the requirements above are not actually producing the best results both in terms of drill life and also cycle time and ultimate machine productivity. Haas have incorporated a number of optional features within their drilling cycles to allow the user to customise the operation. Take the G83 cycle below, all the normal commands are available for feedrate, hole depth etc., but in addition you have the option of specifying an I, J and K value, where I is the depth of the first cut, J is the amount to reduce each cut or peck by and K is the minimum amount of each peck, in other words as the hole gets deeper the actual cutting peck is decreased.

G83 Normal Peck Drilling Canned Cycle
F Feedrate in inches (or mm) per minute
I Size of first cutting depth
J Amount to reduce cutting depth each pass
K Minimum depth of cut
L Number of holes if G91 (Incremental Mode) is used
P Pause at end of last peck, in seconds (Dwell)
Q Cut depth, always incremental
R Position of the R plane (position above the part)
X X-axis location of hole
Y Y-axis location of hole
Z Position of the Z-axis at the bottom of hole

The other drilling cycles, G81, G82 and G73 also have optional commands, which can be applied.

  Back to top  

When to Brake

The facility to drive a full 4th axis from a Haas machining centre has been available since the very first one was released way back in 1987. Since that time, Haas users have been able to take advantage of the low cost provision for performing machining operations on multiple faces, cylindrical parts and so on.

One question, we get asked on a regular basis, concerns the automatic brake applied whenever a movement of the A-axis is commanded. By default, the Haas control releases the brake before the move is started and reapplies the brake automatically when the current commanded movement is finished. In the majority of cases, this is exactly what's needed and is the default condition. However, the specifics of the application may result in this not being required, so the operation of the brake is causing an unnecessary increase to the cycle time.

Consider the example of drilling a hole on the centreline of a part, the load applied will cause little if any angular movement of the part. Therefore, the time necessary for the brake to be released and then reapplied can be eliminated from the overall cycle time, resulting in greater productivity.

The brake operation can be overridden by the operator with the use of the M10 and M11 codes. M11 causes the brake to be released and it will remain so until the M10 code is used to reapply it, meaning the operator is not required to put the codes in for every commanded movement. For those users with a 5th axis, the same facility exists but using M12 and M13 for the B-axis brake override.

Of course, not all applications will be suitable and the user should determine on a case by case basis how they wish the brake to be used.

  Back to top  

Graphical Speed

Ever since the very first Haas control was built, the system has been capable of providing a graphical simulation for the user's programs. This was easily activated by pressing the MEM button to put the control into Memory mode and then pressing SETNG/GRAPH key to enter the Graphics display. At this point, the user could then select F2 for the Zoom function using PAGE UP or PAGE DOWN to control the level of zoom. Alternatively, the user can press F3 key to change the position display, or the F4 key to display the current program and then pressing Cycle Start commences the 'running' of the program in the graphics display.

The Haas graphics system not only provides a graphical representation of the current program, but tests the program at the same time - looking for missing feedrates, syntax errors in the code and so on.

More recently, Haas controls have included the capability to alter the speed at which the graphic simulation is run, thus allowing the user to review slowly the particular area of concern before running through other sections at a much higher speed. The F3 and F4 buttons on these newer controls provide the speed control, whilst the functions previously associated with them (as above) are no longer required, as the program and positions are displayed permanently in graphics mode.

  Back to top  

Coolant Level

One of the more common questions we are asked, is how to calibrate the coolant level sensor, so the display on the control system is accurate. This week's Tips & Tricks email shows how to set the necessary parameters.

(N.B. Haas does not encourage customers to change parameters, without instruction from a Haas engineer; altering a parameter from its factory set value may have an adverse effect on the machine's performance.)

1. The float on your coolant-level sensor needs to be calibrated. To do this, press the PARAM/DGNOS button twice and you will see the Diagnostics display, press Page Down until you find the page where COOLANT LEVEL appears (around the middle of the page).

2. Push the float switch in the coolant tank to its lowest position in the tank and record the 5-digit number that appears next to COOLANT LEVEL on the Diagnostics page.

3. Let the float return to the highest (full) position, and record the value again.

4. Enter the number recorded in step 2 above (empty coolant tank) for parameter 603 and the high number (full coolant tank) for parameter 604.

5. Go back to the Current Commands page and confirm that the coolant-level display is working correctly.

  Back to top  

Keeping Everything Together

Most CNC users are familiar with loading and saving programs either to RS232, USB, ENET or in some cases a harddrive within the machine, however if the part is a regular job with the same tooling preset, the majority of people will reset their tool and work offsets each time. Not only is this time consuming but given many milling tools require a diameter or radius offset the possibility is always exists that the operator simply forgets to enter this data with the corresponding results of at best an incorrectly size part.

To assist Haas users with the storage of tool and work offsets, the Haas control includes two Settings, one to automatically output the current offset table when saving a program, and the second to co0ntrol the format of the table such that the user can read the offsets in the same format as they are displayed on the control pendant screen.

156 - Save Offset with PROG

Turning this setting On will have the control save the offsets in the same file as the programs, but under the heading O999999. The offsets will appear in the file before the final % sign.

157 - Offset Format Type

When it is set to A the format looks like what is displayed on the control, and contains decimal points and column headings. Offsets saved in this format can be more easily edited on a PC and later reloaded. When it is set to B, each offset is saved on a separate line with an N value and a V value.

For more help please consult your Haas manual, or contact the Haas Applications Dept.

  Back to top  

Turning off the lights

In a previous Tips & Tricks email we looked at some of the various systems Haas engineers have installed for saving energy (see here: Reducing energy consumption) and this is an ongoing design criteria for Haas. However whilst making machine tools more efficient going forward is clearly important, existing users of Haas equipment can already utilise the standard features they have on their machines to make savings now.

One option is the use of Setting 199 - Backlight Timer which is applicable to lathes & mills with LCD screens

This setting specifies the time in minutes after which the machine's LCD display backlight will turn off when there is no input at the control (except in JOG, GRAPHICS, or SLEEP mode or when an alarm is present). Pressing any key will restore the screen display although we strongly recommending using the CAN­CEL key.

Over the next few weeks we are going to be covering other energy saving features which are standard on Haas machines and designed to save you money.

  Back to top  

Peck and Retract

Haas mills provide a number of different cycles for drilling operations, G81, G82, G83 and G73 all of which have their own specific characteristics depending on the type of tool being used, material to be cut and the type of hole being produced. However, the user may need to adapt these cycles further in practice, especially if the 'ideal' tool is not available and it is a matter of 'getting the job done'

Haas provide a variety of User Definable Settings for this purpose and two of them, Setting 22 and Setting 52 are designed to be used with the G73 and G83 drilling cycles. These two common G-code canned cycles are for peck drilling and are not unique to the Haas control:

G73 being for peck drilling holes with a small retract to break chips

G83 essentially doing the same thing but after each 'peck' the tool is retracted from the hole to the 'R-plane'

Setting 22 (Can Cycle Delta Z) has a dual function, where it allows the user to change the distance that the tool moves away from the cutting point to break the chips in a G73 cycle - think of it in the sense that the factory specified value is not sufficient to break the material you are cutting, so it needs to move further to give the tool more time. Setting 22 can be in the range of 0 to 760mm.

The second function of setting 22 is to specify how close to the cutting surface the drill will get, when at rapid traverse back into the hole, during a G83 cycle. Remember that G83 differs from G73 in that the drill is removed from the hole to the 'R-plane' at each peck. This gives the best opportunity to clear the chips from the hole, but is also time consuming and if you are chasing cycle time this can be an important area to consider.

The second setting for discussion is Setting 52 (G83 Retract Above R), which changes the way G83 works when it returns to the R plane. Usually, the R plane is set well above the cut to ensure that the peck motion allows the chips to get out of the hole. This wastes time, as the drill starts by drilling “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 distance above R is determined by this setting. Setting 52 can be in the range of 0 to 760mm.

  Back to top  

Help with the decimal points

All numbers (integers) require a decimal point to determine if the number is fractional or a 'whole' number, although in everyday life, the decimal point is invariably left out, as the reader will assume the number is a whole number unless specified otherwise; for example one hour would be written as 60 minutes, not 60.0 minutes although both mean the same thing. This assumption though cannot be applied to a CNC program, as not all controls interpret the program data in the same way, in the example above with the number of minutes, the number 60 could mean 60.0 or 6.0, or 0.60 or indeed 0.060 or even 0.0060 depending on the units being used and so compatibility with other controls is sometimes difficult to achieve.

Haas control engineers have addressed this issue by adding two specific settings to the Haas control - setting 77 and setting 162. Their functions differ in that setting 77 is solely for the feedrate command, whereas setting 162 will apply to address codes, X, Y, Z, A, B, C, E, F, I, J, K, U, W, their individual meanings and uses are described below.

77 - Scale Integer F

This setting allows the operator to select how the control interprets an F value (feedrate) that does not contain a decimal point. (It is recommended that programmers always use a decimal point.) This setting helps operators run pro grams developed on a control other than Haas.

For example, F12 becomes:

0.0012units/minute with Setting 77 Off

12.0 units/minute with Setting 77 On

There are 5 feedrate settings:

DEFAULT (.0001)
.1 F1 = F.0001
.01 F10 = F.001
.001 F10 = F.01

DEFAULT (.001)
.1 F1 = F.001
.01 F10 = F.01
.001 F10 = F.1

162 - Default To Float

When this setting is On, the control will add a decimal point to values entered without a decimal point (for certain address codes.) When the setting is Off, values following address codes that do not include decimal points are taken as machinists notation (i.e., thousandths or ten-thousandths.) This setting will exclude the A value (tool angle) in a G76 block. Thus, the feature applies to the following address codes: X, Y, Z, A, B, C, E, F, I, J, K, U, W

A (except with G76)If a G76 A value containing a decimal point is found during program execution, alarm 605 Invalid Tool Nose Angle is generated.

D (except with G73)

R (except with G71 in YASNAC mode)

Value entered With Setting Off With Setting On
In Inch mode X-2 X-.0002 X-2.
In MM mode X-2 X-.002 X-2.

Note that this setting affects the interpretation of all programs entered either manually or from disk or via RS-232. It does not alter the effect of setting 77 Scale Integer F.

  Back to top  

Simultaneous Jogging

Existing Haas users know we take feedback from our customers very seriously. Many of the features and functionality of Haas machines and their controls are implemented as a direct result of customer requests for new features, or enhancements to existing functions. This is something we actively encourage, so please feel free to send your ideas to

By way of an example, one such suggestion was the ability to manually jog two lathe axes at the same time - a seemingly simple customer request and as a result, Haas control engineers introduced the facility to jog the X and Z axes, using the jog keys, into lathe software released in July 2006.

Holding any combination of +/-X and +/-Z jog buttons will cause two axis jogging.

Releasing both jog buttons will result in the control reverting to X axis jog mode.

If only a single button is released, the control will continue jogging the single axis of the button still being held.

Normal tailstock restricted zone rules will be active while engaged in XZ jogging.

  Back to top  

Turn on to Tool Monitoring

The Haas Advanced Tool Management function, which has previously only been active on Haas mills, is now available to Haas Lathe users with software version 9.02 or later.

The feature, which is normally an expensive option on CNC controls, is standard on all Haas machines and provides the user with tool management functionality based on tool life, in terms of total time and feed time, tool load, and usage. Substitution of the relevant axis commands is necessary to run on a lathe but the basic format remains.

The monitoring system requires the programmer to specify a group of tools in the program, rather than an individual tool number, and the control will automatically call the active tool from within that group - a tool group must be setup prior to using a program. To use a tool group in a program, first set up a tool group. Next, substitute the tool group ID number for the tool number and for the H-codes and D-codes in the pro gram. See the following program for an example of the new programming format:

T1000 M06 (tool group 1000)
G00 G90 G55 X56.5 Y187.5 S2500 M03
G43 H1000 Z50. (H-code 1000 same as group ID number)
G83 Z-25. F150. R3. Q3.
X111.5 Y275.
X336.5 Y287.5
G00 G80 Z50.
T2000 M06 (use tool group 2000)
G00 G90 G56 X56.5 Y187.5 S2500 M03
G43 H2000 Z50. (H-code 2000 same as group ID number)
G83 Z20. F150. R3. Q3.
X111.5 Y275.
X336.5 Y287.5
G00 G80 Z50.

Tools are measured by their life, based on feed time, total time, usage, number of holes, tool load, or vibration etc. as determined by the operator. When the specified limit as been reached, the control will automatically use another tool from the same group. When all the tools from a group are used up, the control will alarm and cease production.

The Advanced Tool Management page is located within the Current Commands mode and can be found by pressing CURNT COMDS and using the page up and down keys. However ATM requires software version 13.04 or later and Parameter 315 TOOL MGMT bit to be set to 1.

  Back to top  

Help with different languages

Haas are a truly global company supplying machine tools from their California factory to engineering and manufacturing companies around the world and inevitably this requires the control to be capable of operating in multiple languages.

Whilst it has been possible for many years to have your Haas machine configured in a language other than English, the task has required the visit of a Haas engineer to load the software, with the release of 16.04 mill software and 9.05 lathe software in February 2009, Haas have now given the operator the capability to load languages as required.

The language files are available from the Haas Service Dept. at our Norwich offices and the procedure is set out below to load from either USB or other device such as the Hard Drive.

Press ESTOP and leave it in.

Then press LISTPROG and select the device and directory where the new set of languages is stored.

Press F1 and select LOAD LANGUAGES from the menu. The control will display a list of the languages it has found. Use the up and down arrow buttons to highlight a language and press WRITE. Repeat for each desired language.

Then press F1. If too many languages are selected, the control will display a message saying to unselect some.

Then press F3 and wait for the selected languages to be loaded.

Choose one of the loaded languages using setting 82 LANGUAGE.

  Back to top  

Checking Tools Mid-Program

Have you ever needed to stop a program mid-cycle and check for finish, clear chips away or just to make sure the cutting tool is still intact? This is a daily occurrence in most shops but invariably the only way is to go to single block, press reset to stop the spindle then manually jog away and then restart the program from a suitable line. However this is not always practical especially with long running cycles in the case of mould tools for example.

Haas engineers have designed into the Haas control a feature called Run Stop Jog Continue (RSJC) and in very simple terms that is exactly what it does, allowing the operator to stop a running program, jog away from the part, and then resume program execution. Originally introduced in 11.02 software in 2000 the feature has been further enhanced with the current operational procedure set out below.

1. Press Feed Hold to stop the running program

2. Press X, Y or Z followed by the Handle Jog button. The control will store the current X, Y, and Z positions. Note: Axes other than X, Y, and Z cannot be jogged.

3. The control will display the message “Jog Away”. Use the jog handle, remote jog handle, jog, or jog-lock buttons to move the tool away from part. Control buttons such as AUX CLNT (TSC), or COOLNT to turn on/off the coolant (AUX CLNT requires that the spindle is rotating and the door is closed). The spindle can be controlled by pressing CW, CCW, Stop, Tool Release. If necessary, tool inserts can be changed. Caution: When the program is continued, the old off sets will be used for the return position. Therefore, it is unsafe and not recom mended to change tools and offsets when the program is interrupted.

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 if the mode that was in effect when stopped 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 where Feed Hold was pressed, then return the Z-axis. Caution: The control will not follow the path used to jog away. If Feed Hold is pressed during this motion, the mill axes motion will pause 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 resumes normal operation.

  Back to top  

Haas Speaks Fadal

The Haas control is well known for its operator-friendly interface and intuitive programming systems; it is easy to understand and simple to operate. Today, the Haas control will translate and run most Fadal-specific CNC programs without re-posting from a CAM program or manual editing.

The standard software feature introduced into 16.05A mill software converts Fadal-specific program formats and codes to standard Haas format and codes – right at the Haas control and the program can then be set up and run just like any Haas program.

The process is easy: Simply access the Fadal converter while loading the program into the Haas control, and follow the on-screen instructions. The converter translates the Fadal program into a Haas program in seconds – loading it into memory, ready to run. If anything in the Fadal program isn’t clearly understood, the Haas control highlights that section as a comment, allowing the user to correct any ambiguities in the program before operation. The vast majority of Fadal programs translate into the Haas control edit-free, saving hours of re-posting or manual editing, and eliminating typical typing errors or mistakes.

  Back to top  

Perfectly Written?

The capability to record a part number and/or a serial number on a machined component can be accomplished using a variety of methods - you might be using a marker pen, or perhaps a number and letter punch set, or maybe the component goes to a different machine for laser marking. Whichever method is used requires additional component handling and this of course results in additional costs - so if the part could be machined and marked in a single setup that has to be beneficial.

The process is of course engraving and whilst not new by any means, it is not widely employed due to the need for generating a detailed tool path for the individual characters and hence the easier option is to reach for the pen or punch set, this is even more pressing when the parts are required to have a serial number with characters changing from one component to the next. Haas software engineer's recognised this and in December 1995 released the G47 engraving function.

Initially using a separate file for the characters which was stored as program O9876, the software was later enhanced to have the code for the characters within the control and hence no requirement for this separate program. Additional enhancements have included angled text and the all important facility to produce serialised engraving with each cycle generating a uniquely engraved component.

The basic format is below;

G47 Text Engraving (Group 00)

During a G47 command the control switches to G91 (Incremental mode) while engraving and then switches back to G90 (Absolute mode), when finished. To have the control stay in incremental mode, Setting 29 (G91 Non-Modal) and Setting 73 (G68 Incremental Angle) must be off.

E Plunge feed rate (units/min)

F Engraving feedrate (units/min)

I Angle of rotation (-360. to +360.); default is 0

J Height of text

P 0 for literal string engraving, 1 for sequential serial number engraving 32-126 for ASCII characters

R Return plane

X X start of engraving

Y Y start of engraving

Z Depth of cut

  Back to top  

Cylindrical Mapping
  • If your Haas machine has a full 4th axis you can use the standard control system function called G107 Cylindrical Mappingto translate linear axis move into a rotary axis move and essentially 'wrap' the programmed path onto the surface of the cylinder or rotary part and this includes the Haas engraving functionG47.

  • G107 (CYLINDRICAL MAPPING) translates all programmed motion occurring in a specified linear axis into the equivalent motion along the surface of a cylinder (attached to a rotary axis). Its default operation is subject to Setting 56(M30 RESTORE DEFAULT G). The G107 command is used to either activate or deactivate cylindrical mapping. Remember to turn it off at the end of the program, unless you want to keep using it.

  • Any linear-axis program can be cylindrically mapped to any rotary axis (one at a time).

  • An existing linear-axis G-code program can be cylindrically mapped without modification by inserting a G107 command at the beginning of the program.

  • The radius (or diameter) of the cylindrical surface can be redefined, allowing cylindrical mapping to occur along surfaces of different diameters without having to change the program.

  • The radius (or diameter) of the cylindrical surface can either be synchronized with or be independent of the rotary axis diameter(s) specified in the Settings page.

  Back to top  

Smooth Operator

Last week's Tips & Tricks described the Haas control's capability to vary machining accuracy according to the operation being performed, or more specifically whether it is necessary to have the machine slowing in corners to achieve micron level positioning when the operation is roughing?

In the same way, the Haas controlled machine tool is capable of varying its rates of acceleration and deceleration according to the values of user defined setting 191 - Default Smoothness. This setting can be changed from Rough, Medium or Finish and this corresponds to the more commonly used terms of Roughing, Semi-Finishing or Finishing, the machine control defaults to Medium but the user is free to alter this setting according to their particular requirements and the change will have a global effect on all future programs.

However the G-code G187 which allows the user to vary the accuracy in last week's Tips & Tricks is actually a dual function code which when specified with a P value provides the facility to alter the smoothness with which the machine operates within a specific program. The three possible alternatives are P1, P2, or P3 and their refer to Rough, Medium or Finish accordingly and hence in line with the accuracy, the user can alter the performance characteristics of the machine's axis drives to reduce cycle time and increase productivity.

  Back to top   

Varying Accuracy

Every day across the country CNC machines are roughing and then finishing components - this might seem like a basic statement, but consider how it is being done, or more specifically the accuracy with which the cutting tool is being moved. By its very nature, the roughing operation is essentially a stock removal process - removing the maximum material in the shortest time, so is it necessary for the cutting tool to be positioned to micron accuracy? In most cases the answer is going to be no, meaning a proportional increase in feedrate is possible and the result is a shorter cycle time and an increase in profit.

Haas software engineers have designed into the Haas control a facility called Maximum Rounding and it can be accessed through Setting 85. Its function is to allow the user to define the machining accuracy of rounded corners within a selected tolerance. The default value is 0.05" but it can be set to zero in which case the machine will treat all corners as if an Exact Stop was required.

However Setting 85 is only a default value and the user has the ability to override this figure using a programmed command with the G187 code and specifying an E value.

For example G187 E0.5 would set the Maximum corner rounding value to 0.5mm for the duration of the program and will be cancelled whenever “Reset” is pressed, M30 or M02 is executed, the end of program is reached, or E-stop is pressed.

Most CAM system post processors can be adjusted to automatically output a G187 for a roughing cycle and then alter the value again when the finishing cycle is run. The result is a shorter cycle time, more accurate and consistent parts and extended cutting tool life.

  Back to top   

Help to Restart

Without exception all CNC programs must be proved out to ensure their correct and safe operation. Tooling issues, surface finish, stability of fixturing or work holding, coolant direction and ultimately part accuracy and cycle time will all be determined at the end of the proving out process.

Whilst there are countless methods employed by operators and setters when they are proving programs (most of which are simply based on personal preferences) there can be no doubt that ensuring the correct tool, offset, spindle speed and so on are in place is an absolute must, not least being when restarting a program from anywhere except the beginning.

Haas engineers have assisted in this process by providing a setting called Program Restart which, when enabled using Setting 36, will cause the control to scan through the active program from the beginning to the block where the cursor is positioned to ensure that the tools, offsets, G & M codes and axis positions are all set correctly for the program to start at that line selected.

When the settings is disabled the program will begin from the block selected without checking the status or position of the machine.

Not all M codes are processed and the user should refer for details to the Operator Manual or contact the Haas Applications Dept. for further information.

  Back to top   

Taking the Most Direct Route

Haas machining centres have been available with full fourth axis options since the release of the very first one way back in 1987 and throughout all of these 23 years the fourth axis has been programmable as a 'full' fourth axis - that is simultaneous rotary motion with a range of +/-99999.999 degrees.

This last piece of information is important because it gives the total range around a central 0 degree position, in other words programming the fourth axis to move 720 degrees (A720.) means just that - two complete revolutions away from the zero position (A0.).

Why is this important? - Well it's because when commanding a return to A0. users are sometimes surprised to see the rotary table perform two complete revolutions in the opposite direction to get back to what is perceived as the 'same' position, but as we have discussed above A0. is not the same as A720. in respect of the distance travelled.

However through customer feedback Haas introduced the function Quick Rotary G28 under Setting 108 which provided the ability for the rotary axis to take the shortest route when being commanded to return to reference position using G28 A0. this will directly affect the user cycle time and thus bottom line profitability.

108 - Quick Rotary G28

Turning this setting ON will return the rotary unit back to zero using the shortest distance.

For example if the rotary unit is at 10° and a zero return is commanded, the rotary table will rotate 350° if this setting is OFF. If the setting is ON the table will rotate -10°.

In order to use Setting 108, the parameter bit CIRC. WRAP. (10) must be set to 1 on parameter 43 for the A axis and Parameter 151 for the B-axis. If param–eter bit(s) are not set to 1 the control will ignore setting 108.

  Back to top   

Programmable Offsets.

Common to all Haas control systems is the standard G10 function - a feature optional at extra cost on other controls. The G10 code has a variety of uses, not least being the ability to programmable move offsets and also set offsets from within the program - what are the benefits of this?

Firstly, the operator/setter does not need to ensure the correct offsets are stored with the right program as the data is within the program itself, therefore only the program is stored.

Secondly, since offsets can be moved using this feature within the program itself, sub-routines are simplified through the use of a common offset which is moved accordingly.

The format is laid out below:

G10 Set Offsets (Group 00)

G10 allows the programmer to set offsets within the program. Using G10 replaces the manual entry of offsets (i.e. Tool length and diameter, and work coordinate offsets).

L – Selects offset category where;

L2 Work coordinate origin for G52 and G54-G59 

L10 Length offset amount (for H code) 

L1 or L11 Tool wear offset amount (for H code) 

L12 Diameter offset amount (for D code) 

L13 Diameter wear offset amount (for D code) 

L20 Auxiliary work coordinate origin for G110-G129 

P – Selects a specific offset where:

P1-P100 Used to reference D or H code offsets (L10-L13) 

P0 G52 references work coordinate (L2) 

P1-P6 G54-G59 references work coordinates (L2) 

P1-P20 G110-G129 references auxiliary coordinates (L20) 

P1-P99 G154 P1-P99 reference auxiliary coordinate (L20)

R Offset value or increment for length and diameter.

X Optional X-axis zero location.

Y Optional Y-axis zero location.

Z Optional Z-axis zero location.

A Optional A-axis zero location.

Programming Examples:

G10 L2 P1 G91 X60.  -------    Moves offset G54 X-axis 60 mm to the right

G10 L20 P2 G90 X100. Y80.  -------  Sets offset G111 to X100. Y80. from the home position

G10 L10 G90 P5 R250.  -------  Set tool length offset for tool 5 to 250mm

G10 L12 G90 P5 R28.  -------  Set tool diameter offset for tool 5 to 28mm

G10 L20 P50 G90 X100. Y250.  -------  Set work offset G154 P50 to X100. Y250.

  Back to top   

Advanced Tool Management.

Last week's Tips and Tricks email described the basic tool monitoring functions that all Haas machines have installed for tool load, and tool life and tool usage which for the majority of users are adequate. However since 2004, Haas mills have included the Advanced Tool Management (ATM) feature that allows the user to classify tools into groups with each tool being of the same type and style.  
This system requires the programmer to specify a group of tools in the program rather than an individual tool number and the control will automatically call the active tool from within that group - a tool group must be setup prior to using a program. To use a tool group in a program first set up a tool group. Next, substitute the tool group ID number for the tool number and for the H-codes and D-codes in the pro­gram. See the following program for an example of the new programming format.

T1000 M06 (tool group 1000) 
G00 G90 G55 X56.5 Y187.5 S2500 M03 
G43 H1000 Z50. (H-code 1000 same as group ID number) 
G83 Z-25. F150. R3. Q3. 
X111.5 Y275. 
X336.5 Y287.5 
G00 G80 Z50. 
T2000 M06 (use tool group 2000) 
G00 G90 G56 X56.5 Y187.5 S2500 M03 
G43 H2000 Z50. (H-code 2000 same as group ID number) 
G83 Z20. F150. R3. Q3. 
X111.5 Y275.
X336.5 Y287.5 
G00 G80 Z50.

Tools are measured by their life based on feed time, total time, usage, number of holes, tool load, or vibration etc. as determined by the operator. When the specified limit as been reached, the control will automatically use another tool from the same group. When all the tools from a group are used up, the control will alarm and cease production.
Commonly referred to as 'sister' tooling and optional on most control systems, this standard feature in all Haas mills will greatly enhance the user's ability to achieve optimum tool performance and avoid those costly and very often unnecessary tool replacements through automating them within the control system.
The Advanced Tool Management page is located within the Current Commands mode and can be found by pressing CURNT COMDS and using the page up and down keys. However ATM requires software version 13.04 or later and Parameter 315 TOOL MGMT bit to be set to 1.

For further assistance on this feature click here to get the download link to your Haas Advanced Tool Management Guide PDF.

  Back to top   

Tool life expectancy

Tips & Tricks email "Protect your tool" sent out on 13th November 2009 (found here) focused on the monitoring function for Tool Load and the use of the setting 84 Tool Overload Action facility, however for those users with a long running production job, or perhaps those that employ the same tooling for multiple components being able to monitor the Tool Usage can be equally beneficial.

Most cutting tool suppliers will give an expected 'life' for their products or maybe you know from experience that your HSS endmill will do 50 to 60 components before needing a regrind, however knowing this data still requires the operator to manually count how many parts have been done and change the tool at the right time.

Haas software engineers have installed in all Haas controls the facility to count the number of times a tool is called into the spindle and have provided an alarm function for each tool - what does this do? Well it allows the user to specify the maximum number of times a particular tool can be called into the spindle via program, and should the alarm number be reached the machine will automatically generate an alarm notifying the operator of the excessive tool use and stop the machining cycle.

The page is accessed by pressing the CURNT COMDS button and then using the page up or down buttons to cycle through the various pages of data.

The Tool Life page also shows the Feed Time and Total Time which can be used for simply information purposes or through the use of the optional Macro function the user is able to read these figures and calculate tool life via distance travelled and thus use the data available from the cutting tool manufacturer to accurately monitor the tool performance.

  Back to top   

The Haas multi function Jog Handle - Part 1

All machine tools have a Jog Handle or Manual Pulse Generator as its sometimes called and Haas is no different, however the Haas Jog Handle is much more than a device for moving the machine axes and the next few weekly Tips and Tricks emails will be describing the various operations that can be achieved using the Haas Multi-Function Jog Handle.

Every machine tool operator will be familiar with the Cycle Start and Feedhold buttons on their control, irrespective of the control or machine manufacturer, especially when proving out a new program or running a program written by someone else and the finger hovering over the feedhold button with the rapid override on its lowest value.

However, is there a better way? Here at Haas we believe in providing the user the choice to find a method that suits them  and that is the reasoning behind Setting 103 and 104 on all Haas machines since 1996.

Setting 103 - CYC START/FH Same Key

This unique feature allows the user to press and hold the cycle start key to run a program, if the key is released the machine will automatically go to feed hold pending the cycle start button being pressed again.

Setting 104 - Jog Handle to SNGL BLK

Avoiding the need for the cycle start key altogether, setting 104 converts the Jog Handle into a controller for stepping through the current program in single block mode - each successive click clockwise will advance the program by one line, reversing the jog handle causing a feedhold to be generated.

These two settings cannot be used together, turning one on will automatically turn the other one off.
Full details of these settings can be found in your User Manual, alternatively please contact the Haas Applications Department.

  Back to top   


The Haas multi function Jog Handle - Part 2

The majority of operators will at some time or other wish to override the feedrate or spindle speed, whether proving out a new program, or perhaps trialing a new tool or cutting method and in most cases this involves the use of specific override buttons, or a separate rotary switch for the purpose.

The Haas control also provides these facilities using the multi function Jog Handle and two specific buttons - Hand Cntrl Feed and Hand Cntrl Spin, both of which are located in the Override Section of the keypad.

By pressing the Handle Control Feedrate key, the jog handle can be used to control feedrate from 0% to 999% in ±1% increments, with the feedrate in operation, as the button is pressed, being used as 100% mark. In this way, the operator can reduce the feedrate to 0% and thus the machine will be stationary, or conversely the override can be increased to 999% or approximately 10 times the programmed rate. Pressing the button again will disable the Jog Handle override and the feedrate will continue at the override rate shown on the screen. By pressing the Handle Control Spindle key, the jog handle can be used to control spindle speed in the same way.

In summary:

Hand Cntrl Feed (Handle Control Feedrate) - Pressing this button allows the jog handle to be used to control the feedrate in ±1% increments.

Hand Cntrl Spin (Handle Control Spindle) - Pressing this button allows the jog handle to be used to control spindle speed in ±1% increments.

  Back to top   

Is your tool working to its optimum?

Most people operate their machines using the same feeds and speeds they've always used - that is, it’s a carbide cutter so we run that at xx m/min with a feedrate of xxx mm/min. In most cases this method gets the job done. However, when minor adjustments are made through a program, or perhaps you are proving out a new job, or even trialing new cutters, the actual cutting conditions become all the more important.
Introduced into 11.17 software in 2003, the Haas control will allow the user to record the number of flutes/inserts the tool has in a new column next to the tool length offset, this data is then used by the control to automatically calculate the surface speed and chip load and these are displayed in real-time on the Current Commands display. Thus when the operator is varying a feedrate or spindle speed according to the way the machine is operating, the effects of these changes are easily determined to ensure the cutting conditions remain within the recommendations of the tooling manufacturer.
The syntax of each function is shown below and as always if you have any questions or comments our Applications Dept. would be pleased to help.
FLUTES column added to tool offsets

A column has been added to the tool offsets page to store the number of flutes on each tool. When the machine is new, the number of flutes on each tool will be set to two. Also, the number of flutes for each tool will be set to two when the ORIGIN key is pressed while this screen is displayed.  The number of flutes is used in the calculation of Chip Load.

Surface Feet per Minute (Metres/min.) and Chip Load

Surface Feet per Minute (SFM) and Chip Load are now displayed on the Current Commands page.
SFM is calculated as the current RPM times the effective tool diameter times PI, then 
divided by 12. N.B. Setting 40 selects radius or diameter for the tool geometry.

SFM is displayed as fpm (feet per minute) or mpm (metres per minute), depending on setting 9. 
Chip Load is calculated by dividing the feed rate by RPM times the number of flutes to get the size of each flute's 'bite'.  This is displayed in inches or millimetres typically a few hundredths.

  Back to top   

Who changed the program?

Have you ever found yourself in a position where the program you have been given to use is different because someone has altered it and not recorded the changes, or perhaps an offset has been altered but no-one knows who did it?
Events like this occur every day in machine shops, and whilst they can be frustrating, there are potentially worse consequences through scrapped parts and machine damage and the resulting downtime and expense of repairs. However if you are a Haas owner, through simple changes to your machine you can afford yourself some protection. As standard all Haas machines have a number of Settings that can be used to 'lock-out' various items from offsets, through parameters, macro variables and programs as shown below. 

Setting 7 locks all parameters.
Setting 8 locks all programs.
Setting 23 locks only Ox9xxx programs.
Setting 119 locks offsets.
When this setting is ON, the user is prevented from altering any of the offsets.  However, programs which alter offsets will still be able to do so.
Setting 120 locks macro variables.
When this setting is ON, the user is prevented from altering any of the macro variables. However, programs which alter macro variables will still be able to do so.

These settings are ON/OFF settings and whilst they do offer some protection against the changes that an operator might causally want to do, if you wish to have a more physical control then through the addition of the Haas key option, a separate key switch is provided which will prevent any changes.

This option can be retro-installed quickly on any Haas machine (9.25 software or later) by one of our engineer's either on a dedicated visit, or as part of a routine preventive maintenance service.

  Back to top   

Tapped Holes in all directions?

How many times have you needed to complete an extra setup for that one hole at an angle to the surface you have machined, or perhaps a radial hole on a circular component that requires drilling and tapping?
One way to overcome this extra setup is to use a fixed angle tool or even an adjustable tool for the most flexibility and whilst these tools are readily available from most tooling suppliers, the difficulty can be with the canned cycles in the machine. These drilling and tapping cycles make the assumption that the drilling or tapping action is going to be performed in the Z-axis direction - fine for the majority of cases but in the examples above that is unlikely to be the case.
So as a programmer how do you overcome these problems?

You could sit down and write specific sub-programs and use a floating tap holder to allow for the change in spindle speeds through the tapping cycle, however if you are using a Haas machine, you have the General Purpose Tapping Cycle G184 for CW tapping, designed by Haas' control engineer's and incorporated it into all Haas mills since 1999. The syntax for the cycle is below and with its sister cycle, G174 for CCW threads, these standard features can have a marked effect on programming time and reducing setups. For additional information please consult your Haas manual or contact our Service Dept. for further assistance.
G184 General-Purpose Rigid Tapping

                                F   Feed Rate in Inches Per Minute.
                                L   Number of Repeats.
                                X*  Optional X position at bottom of hole.
                                Y*  Optional Y position at bottom of hole.
                                Z*  Optional Z position at bottom of hole.

This G-Code is used to perform rigid tapping for non-vertical holes. It may be used with a right-angle head to perform rigid tapping along an X or Y vector on a three axis mill, or to perform rigid tapping
along an arbitrary vector with a five-axis mill.  

The machinist must ensure that the head is positioned correctly before the G184 command is given. If the head is not aligned with the direction of motion, the tool will break.  Also, he must ensure that the ratio between the feed rate and spindle speed is precisely the thread pitch being cut, otherwise the threads will be stripped or the tool will break.

This canned cycle is modal in that it will perform tapping each time a new motion is commanded. However this will only result in a tapping motion, rather than a re-positioning motion.  Therefore the
only use would be for performing successively deeper taps in the same hole. You do not have to start the spindle before this canned cycle.  The control will automatically use the speed specified by the last S command, also, unlike G84, there is no R plane.

  Back to top   

Add an extra Axis - the easy way

Many machine shops recognise that a rotary 4th axis is not just for cylindrical parts but can return massive benefits in terms of cycle time savings, reduced setup times and component quality for those multi-sided parts where more than one setup/operation would otherwise be necessary on a conventional three axis machine. Building on the success of their rotary table range, Haas engineers ensured that from the very first Haas mill, the capability for full 4th axis machine would be available as an optional extra, but it would also be a quick and easy setup that in most cases the operator would be able to complete.
Where your Haas machine already has the optional 4th axis drive installed already connecting a Haas 4th axis could not be easier using Setting 30 where Haas store all the parameters for all of their rotary models. Once the rotary is connected using the procedure in the Haas manual, the operator selects his model from the list and the Haas control will automatically retrieve the data and store in the correct parameters - making the Haas 4th axis units a truly 'Plug & Play' option.
For programming simplicity the Haas control needs the bare minimum of code for common operations such as drilling a hole on each face of a 6 sided component, for example;

G0 G90 G54 X0. Y0. A0. S5000 M03;
G43 H1 Z50. M08;
G81 Z-10. F500. G98 (CALL CYCLE & DRILL ONE HOLE);
G0 G90 G80 Z50.;
G28 G91 Y0. Z0.;
Further user friendly features include G107 Cylindrical Mapping covered in a previous email (2nd October 2009) or for milling applications use Setting 34 to store the 4th axis diameter, this is very important since all programmed feedrates are in mm/min. which is a linear measurement, however when the correct diameter is entered into Setting 34 the Haas control will calculate the angular feedrate using the diameter and the linear program rate and hence coordinate the 4th axis to move at the correct speed to achieve the required linear feed from the program.
Specific instructions are enclosed within the Haas manual, please consult the manual first for further information or call the Haas Service Dept. for assistance.

  Back to top   

Reducing Energy Consumption

Most machines do not run continuously making parts - there will be delays waiting for inspection or setting up a new job, or debugging a program and whilst the operator may need access to some aspects of the machine, not all functions are required to be operational. Turning them off, even for short periods of time can return large savings in energy consumption when calculated over a 12 month period and that savings goes directly to your bottom line.
Since the very first machine was built in 1987, the Haas control has provided many unique energy saving features for the user, in fact the first setting in the list is an Auto Power Off Timer which will power the machine down totally after a user defined period of inactivity, alternatively you might wish to let the machine finish the current cycle and then turn itself off and so you should look at setting 2 - Power Off at M30.
More recently Haas have enhanced these functions still further by adding setting 216 to turn off the servo motors and where applicable, the hydraulic pump, the latter of which is a major source of energy consumption on all machinery.
Reducing energy consumption should be confined to periods of the machine being totally stationary; following customer requests, Haas installed the ability to control the cycling of the optional auger or conveyor using settings 114 and 115. There will be cases of course where the swarf being produced is piling up and the auger or conveyor needs to run continuously, but in most instances with these unique settings the operator can optimise the running times of the auger or conveyor.
A brief list of the possible functions is below, please consult your machine manual for additional information or contact the Haas service dept. if you need any assistance.
1 - Auto Power Off Timer
This setting is used to automatically power-down the machine after a period of idle time. The value entered in this setting is the number of minutes the ma­chine will remain idle until it is powered down. The machine will not be powered down while a program is running, and the time (number of minutes) will start back at zero anytime a button is pressed or the jog handle is used. The auto-off sequence gives the operator a 15-second warning before power down, at which time pressing any button will stop the power down.
2 - Power Off at M30
Powers down the machine at the end of a program (M30) if this setting is set to “On”. The machine will give the operator a 30-second warning once an M30 is reached. Pressing any button will interrupt the sequence.
216 - Servo and Hydraulic Shutoff
This setting will turn the servomotors and hydraulic pump, if equipped, off after the specified number of minutes has elapsed without activity, such as running a program, jogging, button presses, etc. The default is 0.
114 - Conveyor Cycle (minutes)
115 - Conveyor On-time (minutes)
These two settings control the optional chip conveyor. Setting 114 (Conveyor Cycle Time) is the interval that the conveyor will turn on automatically. Set­ting 115 (Conveyor On-Time) is the amount of time the conveyor will run. For example, if setting 114 is set to 30 and setting 115 is set to 2, the chip conveyor will turn on every half an hour, run for 2 minutes, then turn off.
216 - Servo and Hydraulic Shutoff
This setting will turn the servomotors and hydraulic pump, if equipped, off after the specified number of minutes has elapsed without activity, such as running a program, jogging, button presses, etc. The default is 0.

  Back to top   

Create your own code

Do you find that you regularly repeat the same lines of code in different programs - for a specific operation like positioning a tool in a hole before starting a cycle, or perhaps moving the machine to a certain load/unload position?
If so, then Haas engineers have a time saving feature installed in all Haas controls that will help you reduce the programming you have to do, whilst maintaining easy access from any program within the control.
The function is called Aliasing, is available on Haas mills and lathes and can be used for G or M codes depending on the user's preference, here's how it works:
Parameter 81 is for an M-code call of program number O9000, so for example if parameter 81 contains the value 37, when the control reads the M37 line in the program it would call program O9000 and run it, before returning to the original program and continuing from the line after the M37 call.
So we would have; 

T1 M06;
G0 G90 G54 X0. Y0. S1500 M03;
G43 H1 Z50. M8;
. (Run normal program)
M37; (Call O9000 program which positions table for easy load/unload of large part)

Parameter 81 through 90 are for M-codes and refer to program numbers O9000 through O9009, with parameters 91 through 100 referring to G-codes and specifically program numbers O9010 through O9019.
Note: if a code is used that already exists within the standard G or M codes, such has G84, then the aliased program command will take precedence and in this instance the tapping cycle would be ignored. Also be aware that some probing systems utilise the O9xxxx series program numbers for their own cycles and care should be taken in this regard.
Haas applications engineers are available to assist if you have difficulties or refer to the original manuals supplied with your machine.

  Back to top   

Removing unnecessary code

It goes without saying that most machine tool users would like shorter cycle times producing more parts per hour and thus earn more money and in this regard faster rapid traverse rates, faster feedrates, bigger depths of cuts will all have a big impact.

At Haas we also know that allowing the control system to do the work for you can also have a significant effect, particularly where the removal of unnecessary code simplifies the program and avoids duplication of commands.

Take the example below for a standard section of program to drill and tap a hole, this would be the format many people will use both on a Haas and perhaps more so on competitors machines where the codes are essential.

G81 Z-25. F500. (finish last drill) ; 
G00 G91 Z0 G28 (move Z up) ; 
M05 (stop spindle) ; 
M19 (orient spindle) ; 
T02 M06 (change tools); 
G54 H02 G43 Z50. (bring Z down to hole) ; 
S1600 M03 (turn on spindle) ; 
M08 (turn on coolant); 
G84 G90 Z-20. F800. (tap one hole) ; 

By removing the lines not required on a Haas control we have the revised and simplified program below:

G81 Z-25. F500. (finish last hole) ; 
T02 M06 (change tools) ; 
G54 H02 G43 Z50. (bring Z down to hole) ; 
G84 Z-20. S1600 F800. (tap one hole) ; 

This 'new' program completes the same operations but in a back to back comparison on a standard Haas VF-2SS there was a four second saving - no changes to speeds/feeds or depths of cut - just program simplification.

This saving is achieved through the control carrying out functions concurrently such as moving the Z-axis up to toolchange position whilst stopping the spindle since the control 'knows' that tools cannot be changed whilst the spindle is running it automatically applies an M05 command in the back ground. The example given is representative of the coding generated by many CAM systems and yet minor modifications to the post processors will provide significant cycle time savings that are essentially for

  Back to top   

Try Haas control options for FREE

Making the decision about purchasing
control system options is always difficult.  Justifying the additional expense without really knowing how it is going to work with your existing programming style makes it more tricky.  And what if you only need the facility for one job? 

Haas understands this situation and many functions, which are normally optional on other CNC controls, are included as standard on your Haas control. However, those Haas functions that are non-standard can be used on a trial basis through the unique 200 hour facility included on all Haas machines since October 2000.

The facility is offered on both lathe and mill controls and is applicable to all software options that do not require any additional hardware - the list includes rigid tapping, macro and on mills; high speed machining.

Lathe Vers. 4.05 & Mill Vers. 11.02

  • Options that normally require a code to activate (Rigid Tap, Macros, etc.) can now be activated and deactivated as desired simply by entering the letter T instead of the code. 

  • 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 code as before, but in addition, once activated by a code, the 200 hour limit is reset and the feature can again be deactivated and reactivated as desired for another 200 hours before it is necessary to enter the code.

  • Note that the letter T will be displayed to the right of the option on the parameter screen during the 200 hour period indicating that it can be activated and deactivated by entering a T.

  Back to top   

Material Assistance

Since the launch of the very first Haas machine in 1987 an inbuilt Help Screen showing various math and trig calcuRobotors as well as a listing of G-code and M-codes as been included as standard, development of these features allowed the Haas control to include speeds and feeds functions - requiring the operator to input some basic data and the control would calculate the feed, spindle speed, chip load etc.

Following user requests, Haas engineer's enhanced the 'Milling' calcuRobotor with the addition of a materials database released in vers. 11.02 in October 2000.

This new field called MATERIAL, 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.


If the surface speed or chip load is outside the range displayed, the range values will flash so as to draw the operator's attention to them. Also, the required horsepower will be calculated and displayed.


When in INCH mode, the required power is displayed as HP. The remaining calcuRobotor functions are unchanged.

  Back to top   

Developing Offsets

The Haas controls have always featured the provision for storage of 26 work offsets, namely G54-G59, and G110 to G129, but with customer's needing to reset their machines as quickly as possible from one job to the next, having pre-stored work offsets was increasingly important and 26 just wasn't enough.

So responding to customer requests, Haas introduced G154 in software vers. 12.02 (October 2002),
a new feature that provides 99 additional work offsets. In all previous versions, the user was limited to a maximum of 26 work offsets. These included the standard work offsets (designated G54 through G59), and the twenty additional work offsets (G110 through G129).

Now, G154 with a P value from 1 to 99 will activate the additional work offsets. For example G154 P10 will select work offset 10 from the list of additional work offset. Note that G110 to G129 refer to the same work offsets as the G154 P1 through P20. I.e., they can be selected by using either method. The Work Offset display screens have been adjusted accordingly.

The Position page display has also been enhanced such that when a G154 work offset is active, the heading in the upper right work offset will show the G154 P value. The ability to stores extra offsets with the control though wasn't the end of the story, Haas continued to develop the idea still further such that the user could automatically through setting 156 save particular offsets with the program they refer to and this feature was introduced into software vers. 12.03 (February 2003), along with setting 157 to control the layout and formatting of the offset display.

Offsets can now be saved with programs provided setting 156 is set to ON. This way, if a program is later loaded into memory, the user will be able to restore the offsets applicable to that particular program. The offsets are saved (to floppy disk/USB/RS-232) in the same file as the programs but under the heading O999999. The offsets will appear in the file before the final % sign.

When a program file containing offsets is loaded, the control will prompt LOAD OFFSETS (Y/N) regardless of
setting 156. When a program file containing offsets is loaded from RS-232, the control will load them without prompting regardless of setting 156. However, if the offsets being loaded are found to be in conflict with setting 9 DIMENSIONING, the control will display the message INCH/MM CONFLICT and the offsets will not be loaded. If the offsets being loaded are found to be in conflict with setting 40 TOOL OFFSET MEASURE, the control will display the message RAD/DIA CONFLICT and the offsets will not be loaded.

One of two formats for the offsets can be specified by setting 157. The new format is easier for the user to read, and edit. When loading offsets, the control automatically senses which of the two formats was used.
Setting 157 controls the format in which offsets are saved with programs to USB/floppy disk or RS-232.

When it is set to
B, the old-style format will be used, that is, each offset is saved on a separate line with an N value and a V value.

When it is set to
A, a new format is used that is easier to read and edit. The new format resembles the display screen format and contain decimal points and column headings.

Offsets saved in this format can be more easily edited on a PC and later reloaded into the control.

  Back to top   

Operator Checking Questions

Ever thought how useful it would be to have your machine ask the operator a question - maybe to ensure the part has been turned over, or which number is to be engraved or any number of other possibilities?

The Haas control has a function called Interactive User Input which incorporated into vers. 11.20 and released in 2002 provides the programmer with a new M code, M109 that allows a G-code program to place a short prompt on the screen, get a single character input from the user and store it in a macro variable. The first 15 characters from the comment following the M109 will be displayed as a prompt in the lower left corner of the screen.

A macro variable in the range 500 through 599 must be specified by a P code. Note also that due to the look-ahead feature, it is necessary to include a loop in the program following the M109 to check for a non-zero response before continuing. The program can check for any character that can be entered from the keyboard by comparing with the decimal equivalent of the ASCII character.

Here are a few common characters:

A - 65 a - 97
B - 66 b - 98
C - 67 c - 99
N - 78 n - 110
Y - 89 y - 121
0 - 48 + - 43
1 - 49 - 45
2 - 50 * 42
3 - 51 / 47

The following sample program will ask the user a Yes/No question then wait for him to enter either a Y or an N. All other characters will be ignored.

M109 P501 (Sleep 1 min?)
N5 IF [ #501 EQ 0. ] GOTO5 (WAIT FOR A KEY)
IF [ #501 EQ 89. ] GOTO10 (Y)
IF [ #501 EQ 78. ] GOTO20 (N)
M95 (00:01)
N30 (STOP)

The following sample program will ask the user to select a number then wait for him to enter a 1, 2 or a 3. All other characters will be ignored.

M109 P501 (Pick 1, 2 or 3:)
N5 IF [ #501 EQ 0. ] GOTO5 (WAIT FOR A KEY)
IF [ #501 EQ 49. ] GOTO10 (1)
IF [ #501 EQ 50. ] GOTO20 (2)
IF [ #501 EQ 51. ] GOTO30 (3)
M95 (00:01)

  Back to top   

Protect your tools

Since the very first Haas control was released there has been a provision for the monitoring of tool (spindle) load with facilities for the operator to set a limit for each tool, found in the Current Commands display and pressing page down until the screen is displayed.

Entering a maximum value would cause the machine to either Alarm, Feedhold or Beep depending on setting 84 Tool Overload Action. This standard control feature can help to prevent machine damage through tool failures, unexpected material differences (cold spots etc.) or programming errors.
However with the release of 9.43 software, this feature was further enhanced with the inclusion of Autofeed - a function that automatically limits the feedrate based on the tool load.
To use this feature, select AUTOFEED in Setting 84 and specify load limits for the tools that will be used. If, during a feed, the tool load exceeds the tool load limit, the AUTOFEED feature will automatically override the feed rate (reduce it) down to the percentage specified by parameter 301 (e.g. 1%) at the rate specified by parameter 300 (e.g. 20% 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 (e.g. 10% per second.) These automatic adjustments will be made in 0.1 second increments.

  • 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 auto reversing tapping heads.  Refer to Chapter III-Part 15 of the VF-SERIES OPERATORS MANUAL.
  • The last commanded feed rate will be restored at the end of 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 recognised 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.
  • Parameter 299 AUTOFEED-STEP-UP specifies the feed rate step-up percentage per second and should initially be set to 10.
  • Parameter 300 AUTOFEED-STEP-DOWN specifies the feed rate step-down percentage per second and should initially be set to 20.
  • Parameter 301 AUTOFEED-MIN-LIMIT specifies the minimum allowable feed rate override percentage that the AUTOFEED feature can use and should initially be set to 1.

  Back to top   

Automatic Maintenance Reminders  
Ever forgotten to check that oil level?

All mechanical equipment whether it be a car, air compressor, overhead crane or machine tool requires periodic maintenance whether its checking an oil level or changing a filter and whilst we all know it needs doing, very often these tasks are overlooked or forgotten about and then its too late.

To ensure Haas users are able to maintain their machines in top working order, all Haas machines since 2000 have included a standard software feature called Periodic Maintenance to act as a reminder when tasks were due at the recommended intervals.
The periodic maintenance page has been added to 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.  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:

  • COOLANT - needs replacement - 100 ON-TIME

  • AIR FILTER in control enclosure - replace - 250 ON-TIME

  • OIL FILTER - replace - 250 ON-TIME

  • GEARBOX OIL - replace - 1800 ON-TIME

  • COOLANT TANK - check level, leakage, oil in coolant - 10 ON-TIME

  • WAY LUBE SYSTEM - check level - 50 CS-TIME

  • GEARBOX OIL - check level - 250 ON-TIME

  • SEALS/WIPERS missing, torn, leaking - check - 50 CS-TIME

  • AIR SUPPLY FILTER - check for water - 10 ON-TIME

  • HYDRAULIC OIL - check level - 250 ON-TIME
User feedback and machine developments determined that some flexibility was required in the actual times being used before maintenance was required and therefore from 13.14 software onwards (December 2005), the settings below were added.   
  • 167 Coolant Replacement default in power-on hours

  • 168 Control Air Filter Replacement default in power-on hours

  • 169 Oil Filter Replacement default in power-on hours

  • 170 Gearbox Oil Replacement default in power-on hours

  • 171 Coolant Tank Level Check default in power-on hours

  • 172 Way Lube Level Check default in motion-time hours

  • 173 Gearbox Oil Level Check default in power-on hours

  • 174 Seals/Wipers Inspection default in motion-time hours

  • 175 Air Supply Filter Check default in power-on hours

  • 176 Hydraulic Oil Level Check default in power-on hours

  • 177 Hydraulic Filter Replacement default in motion-time hours

  • 178 Grease Fittings default in motion-time hours

  • 179 Grease Chuck default in motion-time hours

  • 180 Grease Tool Changer Cams default in tool-changes

  • 181 Spare Maintenance Setting #1 default in power-on hours

  • 182 Spare Maintenance Setting #2 default in power-on hours

  • 183 Spare Maintenance Setting #3 default in motion-time hours

  • 184 Spare Maintenance Setting #4 default in motion-time hours

  • 185 Spare Maintenance Setting #5 default in tool-changes

  • 186 Spare Maintenance Setting #6 default in tool-changes

There are 14 items that can be monitored, as well as six spare items. There is a setting for each item #
167 to #186 which allows the user to change the default number of hours for each item when it is initialized during use.  If the default number of hours is set to zero, the item will not even appear in the list of items shown on the maintenance page of Current Commands. By turning off items in this manner, items that are not installed on a particular machine will not clutter up the maintenance page.

  Back to top   

Speed up your tapping cycle

How much time do you spend tapping holes on your mills? You might be surprised how much time is non-productive while the tap retracts to the start position ready for the next hole.

Haas engineers recognise this and with vers. 10.18 mill software or newer (approx. 1999), all Haas mills equipped with the Rigid Tapping function have the ability to retract out of the hole at a different speed to that of the programmed in-feed. The user is offered two options to affect this, either through a global value entered into Setting 130 which will affect all tapping cycles or through a programmed code on the end of the specific G84 line which will temporarily override the value of Setting 130.

So how does this work in practice?

On a specific tapping cycle 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 is specified less than zero or greater than 9, alarm 306 INVALID I,J,K or Q is generated.  The J code is not modal, and must be specified in each block the effect is wanted. Note that the J value must not contain a decimal point, and if no J code is specified the machine will behave normally.

Alternatively, you can change the value of Setting 130 such that If it is set to zero or 1, the machine behaves normally.  If it is set to 2, it will be the equivalent of running a G84 with a J code of 2.  That is, the spindle will retract twice as fast as it went in. If this setting is set to 3, it will retract three times as fast just as it would if the J code was entered on the G84 line in the program.  Note that specifying a J code for a specific tapping line in the program will override setting 130.

  Back to top   

Avoiding that crash

Have you ever accidently typed an incorrect number into the offset column with the result being a scrapped part or broken the tool or spent time trying to understand why the part size is wrong before realising the error was a missing point sign or maybe just not pressed the button hard enough?

Haas recognise that operators can be distracted or make mistakes and with this in mind introduced a specific setting applicable to all Haas CNC machines since 2001 which is called Offset CHNG Tolerance.

In simplest terms the setting allows the user to enter a maximum value and the control will monitor all changes to offsets and generate a warning for the operator if the entered value exceeds that stored in setting 142. 


This setting will 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 from0 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. Changing the setting to reflect a value you are comfortable with will not affect the day to day operation of the machine when all is running OK, but it might save you time and money in the future and since it’s a Haas standard feature why not check your controls? 

  Back to top   

Improve your cutting finish

Chatter and vibration when turning can be caused in a variety of ways - incorrect feedrate, running too fast or too slow for that matter, incorrect depth of cut, lack of rigidity in the work holding and in some cases simply the type of component being produced - thin walls, or diameter to length ratio etc.
All Haas CNC turning centres and toolroom lathes* have a standard function called Spindle Speed Variation (SSV) that allows the operator to specify a range within which the spindle speed will continuously vary. This is helpful in suppressing chatter, which can lead to undesirable part finish and/or damage to the cutting tool by not allowing vibration to begin as a result of constantly changing frequency of the machining process.

Controlled though specific M-codes within the user program, SSV has been proven to improve surface finish, and tool life resulting in reduced production costs and increased profits.

Two new M codes, M38 and M39, have been introduced. M38 turns SSV mode ON and M39 turns it OFF.  In SSV mode the control will vary the spindle speed based on Settings 165 and 166.  

  • Setting 165 SSV VARIATION(RPM) specifies the amount by which to swing the RPM above and below its commanded value.  
  • Setting 166 SSV CYCLE (0.1)SECS specifies the duty cycle, or the rate of change of Spindle Speed. 

These settings will accept only positive values.  A value of zero in either of them will keep the spindle speed unchanged. For example: In order to vary spindle speed +/- 50 RPM from its current commanded speed with a duty cycle of 3 seconds, Setting 165 should be set to 50 and Setting 166 should be set to 30. With these settings, the following program will swing the spindle speed between 950 and 1050 RPM after processing the M38 command.

S1000 M3
G4 P3.
M38      <--SSV ON here
G4 P60.
M39      <--SSV OFF here
G4 P5.

The spindle speed will continuously vary with a duty cycle of 3 seconds until an M39 command is found.  At that point the machine will come back to its commanded speed and the SSV mode will be turned off.  A program stop command such as M30 or pressing RESET will also turn SSV mode OFF. If the RPM swing is larger than the commanded speed value, then any negative swing (below zero) will translate into an equivalent value in the plus region.  The spindle, however, will not be allowed to go below 10 RPM when SSV mode is active. Constant Surface Speed: When Constant Surface Speed (G96) is activated (which will calculate spindle speed) the M38 command will alter that value using Settings 165 and 166.

*Software vers. 6.04 or later

  Back to top   

Multiple Axis Machining 

The Haas VF/VM series mills are available with optional 4th and 5th axis drives that provide the user with the ability to machine up to 5 faces on a component in a single setup or achieve complex surface machining though 5-axis motion. 

Whilst being suitable for machinists producing complex components such as impellers or aerospace parts, everyone can benefit from multi-axis machine, simply adding a tilting 4th & 5th axis trunion table to your existing machine with a standard vice can reduce your setups for machining 6 sides of a block down to just two.

Not only is this a reduction in handling time and therefore direct cost but the elimination of additional fixturing stations will improve the dimensional accuracy and repeatability of the parts you manufacture and get them to the customer faster than before.
To make the process of utilising additional axis easier the Haas control includes a number of multi-axis orientated features to optimise the movements being commanded with innovative G-codes including: 

  • G141 3D+ Cutter Compensation 
  • G153 5-Axis High Speed Peck Drilling Canned Cycle 
    & numerous others 
These software features coupled with the industry leading ease of use features that Haas users already enjoy make the transition into multi-axis machining achievable for all machine shops. 

(Please check with us if you machine is pre 2002 for software compatibility)

  Back to top   

Coldon Engineering Limited
“The Haas service is great. They always have the spares we need in stock, don’t charge the earth for them, and as long as we call their service department before 4:30pm they’ll get the parts to us first thing next morning. If we need a service engineer to visit they’ll be here the same day or within 24hrs. I fully recommend Haas.”    

Greenwich University
“The service that the University has received from Haas has been exemplary, from the initial decision making stage, through the sales and ordering process, installation and after sales support. 

“We’re able to call the applications department for advice and they’ve always managed to provide us with the solutions we need, whether over the telephone or in person. Haas have given us some CNC control simulators, so our students can test their programming skills without the danger of crashing one of our real Haas machines. The training that Haas offers has proved invaluable both to students and staff.”    

BBR Engineering Limited
“The service we’ve had from Haas has been excellent. Our VF-3 vertical developed a problem, which we reported at 11 o’clock that morning. By 2 o’clock we’d confirmed with the Haas service department that we needed a new spindle and that a technician would be with us the next day. He arrived at 8 o’clock the next morning, with a new spindle, which was fitted and aligned that day. The machine has been faultless ever since.”    

Titan Motorsport Limited
“I’m a big fan of Haas and currently have over 20 of their CNC machines. We’ve got a service contract, so our machines are frequently serviced and are very reliable. If we ever have a problem, the Haas service engineers are with us within 24hrs. For example, the other day, one of our machines was showing a low oil pressure warning. The service engineer arrived early the next day and fitted a new pump.”    

Woodbridge Engineering Limited
“We’ve always had great service and support from Haas. To give an example; one of our operators knocked the spindle on our SL-30 lathe out of alignment. The Haas service engineer was here the following day, with all the parts he needed and fixed the machine.”    

Headline Filters Limited
“Over the years I’ve always been very pleased with the consistently high level of service we get from Haas. On the occasions when our older machines develop a fault, a simple telephone call to Haas reception is all that’s required to get in touch with the Service Department & then to an Engineer. The Engineers are excellent at diagnosing faults & in many cases the problem can be dealt with over the phone in order to keep our production going.

“In all cases, every possible part that could be required is shipped in for the Engineer. Any parts not required are collected the next day & are never installed unless absolutely required. This honest philosophy, together with realistically priced spare parts ans highly competent staff make the upkeep of even our older machines viable. I look forward to many more years dealing with Haas.”      

Member of the British Safety Council

Haas CNC MTA membership lathes and mills

Member of the Manufacturing Technologies Association

© 2017 Haas Automation Ltd

Website Terms & Conditions

CNC Verticals VMC & Mills | CNC Horizontals HMC | CNC Turning Centres & Lathes
CNC Rotaries & Indexers | Haas USA