Haas VMC Machines

Technical Forum

Do you have a question or comment concerning the operation of your Haas machine? Do you need help with a tough programming task, or want to know a better way to produce your parts? Maybe you have a better way to do something and want to share it. Check out the Technical Forum menu below for the right solution - or the right link!


Haas Resource Center


Get the latest Haas Automation has to offer!
The Haas Resource Center website is here to make sure you stay up-to-date on the latest Tip & Tricks. Your Source For Routine Maintenance, "How To", Manuals & Documentation, Repairs & Service and Drawings & Diagrams.

Check it Out: Haas Resource Center


Programming Tips & Tricks


Welcome to Tips & Tricks! There's a lot of useful information here about the Haas control.
The descriptions below highlight some of the standard features of the proprietary Haas CNC control. Most are features that have been released within the last eight years. If your Haas machine is older than a 1999 model, it may be subject to software (and possibly hardware) upgrade fees, or it may not be practical to upgrade. Check with Haas or your local dealer.

Approved Software
All Haas VMCs, HMCs and turning centers are ETL Approved. This is a nationally recognized test approval laboratory equivalent to Underwriter's Laboratory (UL) ®


CNC Programs for Robot Cell


The following programming examples and macros are available to download as an aid to setting up a robot-tending part program.


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




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.




When running a program in MEM mode, in either the Program or Graphics display, the SINGLE BLOCK key allows you to cycle through the active program one line at a time. Each press of the CYCLE START button will cause one program line to be executed, whether the machine is in operation or you're in Graphics.

Under the same conditions (MEM mode; Program or Graphics display), turning on Setting 104 (JOG HANDL TO SNGL BLK) allows the jog handle to be used for single block execution. Each counterclockwise click of the jog handle will step through a program line, while a clockwise click will cause a feed hold. Setting 104 can be changed while running a program, but it cannot be on when Setting 103 is on.


Advanced Editor


The Advanced Editor provides the user with a friendly, menu-oriented environment for editing programs, plus it allows viewing of two programs simultaneously. Refer to the Operator's manual for a detailed description.


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 traveled 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).


Jog Handle Use for Spindle Speed and Feedrate Overrides


Pressing the HANDLE CONTROL SPINDLE button allows the jog handle to be used for spindle overrides. Turning the jog handle clockwise increases the spindle speed (up to 999%), and turning it counterclockwise will reduce spindle speed (down to 0%). The spindle speed display will blink as it is adjusted. Pressing the HANDLE CONTROL SPINDLE button again turns off this function.

Similarly, the HANDLE CONTROL FEEDRATE button allows the jog handle to be used for feedrate overrides. Again, clockwise motion of the jog handle increases the feedrate (up to 999%), while counterclockwise motion reduces it (down to 0%). The feedrate display will blink as it is adjusted. Pressing the HANDLE CONTROL FEEDRATE button again turns off this function.


Cylindrical Mapping (G107)


This VMC/HMC feature translates all programmed motion along a specific linear axis into the equivalent motion along the surface of a cylinder (i.e., a part chucked or fixtured to any Haas rotary table). A typical example is a cutout on a tube. In this case, the Y axis is converted (or mapped) to the A axis, assuming you have the tube positioned between a rotary table and tailstock along the X axis. In the past, trigonometry or a CAM system was required to calculate these conversions. Now, the Haas control easily converts the linear data for a specified cylinder diameter. The possibilities are endless, beginning with cams, cylindrical dies and general 4th- and 5th-axis work.


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.


Did You Know ... ?


When in EDIT or MEM mode, you can select another program quickly by simply entering the Onnnn program name you want and pressing the cursor down arrow.

You can output several programs at once to the serial port, in LIST PROG, by typing all the program names together on the input line and pressing SEND.

When you send files to a floppy disk, you must put the highlighted cursor on the program you are saving or on the "ALL." The name entered on the input line is the floppy file name.

You can verify spindle speed by checking the ACT entry on the right-hand side of the Current Commands display.

When you receive (input) a program from a floppy disk or RS-232, a part program must begin and end with a % sign, with nothing else on that line. And after the first % sign, the next line must begin with a letter "O" (not zero) and up to a five-digit program number. You don't need to enter in leading zeros. The Haas control enters in leading zeros for you. The name you enter on the input line is the file name. The file name can be made up of letters or numbers. It is recommended that a file name be eight characters or less and up to a three letter extension (FILENAME.TXT)

You can select an axis for jogging by entering the axis name on the input line and pressing the HANDLE JOG button. This works for the normal X, Y, Z, and A axes as well as the B, C, U, and V auxiliary axes.

Searching for something in a program can be done in either MEM or EDIT mode by entering the address code (A, B, C, etc.) or the address code and value (A1.23), and pressing the down or up cursor arrow. If you enter just the address code and no value, the search will stop at the next use of that letter, regardless of value.

It is not necessary to turn off coolant, stop the spindle, or send the Z axis home prior to a M06 tool change command. The control handles those tasks and in fact, it will be faster – the control will perform some of them simultaneously.

The HELP display has all G and M codes listed. To get to them quickly, press HELP and then the letter C for all earlier control versions. For current control versions, press F1 for G codes and F2 for M codes.

There is an Alarm History command that displays the previous 500 alarms. You can find this by pressing the right cursor arrow when you're in the Alarm display. Press the up or down arrow or page up or page down keys to scroll through the alarm history. Press the right arrow again to get to the Alarm Viewer. From this screen, you can view any alarm description. Use the page up or page down keys to scroll through the complete alarm list with descriptions or type an alarm number and press the down arrow key to view a specific alarm description. Press the right arrow again to select the normal alarm display.

You can write macro variables to the RS-232 port or a floppy by pressing LIST PROG first, to get F2 and F3 listed at the bottom of page, then select CURNT COMDS macro variable display page (press PAGE DOWN in Current Commands). You can also load macro variables back in the same way.

The coolant pump can be turned on or off manually any time while a program is running. This will override what the program commands until the program commands "on" or "off." This also applies to manual operation of the chip conveyor.

The spigot position can also be changed manually while a program is running. This will override what the program commands until another spigot position is commanded (H code is programmed or coolant is turned on with an M08).

The jogging feedrates of 100, 10, 1.0 and 0.1 inches per minute can be adjusted by using the FEEDRATE OVERRIDE buttons. This gives an additional 10% to 200% manual feedrate adjustment control.

You can stop or start the spindle (using the OVERRIDE buttons) any time you are at a single-block stop or a feed hold condition. When the program starts again, the spindle will be restored to the state commanded in the program.

When tapping (Mill G84, G74, G184, G174; Lathe G84, G184), you do not need to turn the spindle on with M03 or M04. The control starts the spindle prior to each cycle and it will, in fact, be faster if you do not turn on the spindle, as the control must stop the spindle to get the speed and feed working together for tapping.

The action taken by the control when the operator presses RESET, is controlled by several settings. These are: Setting 31, to reset the program pointer to the start of the program; Setting 56, to reset to default G codes; and Setting 88, to reset overrides to 100%.

The Haas control will turn itself off according to the following settings: Setting 1, to turn itself off after the machine is idle for nn minutes; and Setting 2, to turn off when an M30 is executed. In addition, for safety reasons, the control will turn itself off if an overvoltage or overheat condition is detected for longer than four minutes.

There are so many settings which give the user powerful command over this control that users should read the entire "Settings" section of the operator's manual to get an idea of what is possible.

You can send any axis to Home in rapid by typing the axis letter (Z,Y,X or A) and then pressing HOME/G28.

It is possible to control a Haas rotary table using the serial port and macros from our control or ANY Fanuc-compatible control. An example set of macros is available from the Haas Applications department.

If you are having occasional errors when using RS-232 communications, X-modem is a standard communications mode which is much more reliable when a few errors occur. Our control supports this, as do almost all software communication packages for PCs.

A tool overload condition, as defined by the Tool Load Monitor display (CURNT COMDS, Page Down), will result in one of four actions, defined by Setting 84. ALARM will generate an alarm when overload occurs; FEEDHOLD will cause a feed hold when overload occurs; BEEP will sound an audible alarm; or AUTOFEED will automatically increase or decrease the feedrate.

The feedrate that is entered in your program can be misinterpreted if you do not use a decimal point. However, Setting 77 can be used to change how the control interprets the feedrate when no decimal point is entered. The values in this setting specify either the (Fanuc) default, integer values, or placing the decimal in a particular position (DEFAULT, INTEGER, .1, .01, .001 OR .0001). Default (Fanuc) is the same as selecting .0001.

Answers & Information Haas Facebook Haas Twitter Haas YouTube Haas Flickr Google+ Haas Linkedin Haas Instagram E-Newsletter