by all programmers
Typical problems related to consistency are usually found in the program structure before and after the actual machining. Consider just a small example:
N5 G43 Z25.0 H01 M08
The initial level was set to 25 mm before machining, for example, using a fixed cycle. When the cycle is finished, the programmer retracted the tool to 10 mm:
N18 G80 Z10.0 M09
There is absolutely nothing wrong with either block. The intent here is not to look for minute details like this one. The real issue is that the CNC operator make try to find if there was a reason. This particular example may not present the strongest argument for the importance of programmimng consistency, but it illustrates the idea.
The ability of a CNC operator to interpret a part program is one of the most important skills in CNC setup and machining. It is unfortunate that not every part program that reaches the machine tool is flawless, but it does present a very real situation. Programming errors do happen, and in many cases, it is up to the CNC operator to find these errors and ‘debug’ the program.
Program interpretation requires at least some basic knowledge of CNC programming
As an example, consider the following program listing. You are at the machine, drawing is not available and the CNC display shows this program:
O1001 (ELEVATION PLATE)
(T7 - 12.7 MM DIA SPOT DRILL)
N1 G21
N2 G17 G40 G80 T07
N3 M06
N4 G90 G54 G00 X20.0 Y60.0 S900 M03 T10
N5 G43 Z25.0 H07 M08
N6 G99 G82 R2.0 Z-2.6 P250 F200.0
N7 X30.0 Y100.0
N8 X100.0
N9 Y60.0
N10 G80 Z25.0 M09
N11 G28 Z25.0 M05
N12 M01
...
The above program is very simple, but it may present a surprise or two.
When evaluating a part program, some internal information is readily available, such as program number (if available), block numbers, messages and comments, and some others. In the example above, it is obvious that the part name is Elevation Plate. It is a bit less obvious that the tool used for this operation is a half-inch spot drill, converted to millimeters (12.7 mm = 0.5 inch). This is a common method in North American machine shops, where a metric part uses inch type cutting tools (imperial measures). What else can be gathered from the program?
For any CNC machine setup, it is always important to know - and understand - the dimensional units. In an environment where both metric and imperial units are used, there are two methods to find out which one is active - by the program code - G20 (imperial) or G21 (metric) sets the units through the program. The other method is to find out directly at the control unit, usually under Settings. As the example contains G21 command (N1), we know the program is in metric units.
Even without an elaborate tool specification or detailed messages, the CNC operator should be able to find out what type of operation is taking place from the program itself. Prevailing use of G01, G02 and G03 commands suggests a roughing or finishing of a contour or a pocket. When XYZ axes are used frequently together with G01 motion, the chances are that a 3D machining is taking place, typically collaborated by the tool used, often a spherical end mill (or similar). Machining holes uses various fixed cycles, typically in the range of G81 to G89, along with G73, G74 and G76. Also associated with fixed cycles are retract commands G98 and G99 and cycle cancellation command G80. In the sample program, the existence of both G99 and G82 (as well as G80 cancellation) means the type of machining is a fixed cycle that requires a pause at the bottom of the hole, such as a spot drill in the example. Spot drilling can be further identified by a rather shallow cutting depth, dwell (P), and the existence of a drill as the next tool in the part program.
For a safe machining operation, identifying the spindle speeds and cutting feedrates in the program helps to make intelligent decisions about the use of spindle and feedrate overrides, if necessary, particularly for the first part trial. As a CNC operator, keep in mind that even the most experienced and reliable programmer may not be always exact in the area of speeds and feeds. In fact, optimizing speeds and feeds at the machine control is often one of the most important functions of a CNC operator.
The example above has only one spindle speed and one feedrate programmed for the tool. While it is common to have only one spindle speed for the tool, it is very common to have two or even more feedrates for the same tool. Typical example would be in milling, where a plunging feedrate along the Z-axis is lighter than the cutting feedrate in XY axes. The program example shows spindle speed as 900 r/min (S900) and the cutting feedrate as 200 mm/min (F200.0) or about 8 inches per minute.
Not to be missed is the spindle rotational direction. When interpreting a part program, look for miscellaneous functions relating to spindle rotation - M03 (rotation CW) and M04 (rotation CCW). There is also M05 available as the spindle stop function. M03 is the standard rotation for right hand tools, M04 is used for left hand tools, for example, to make a left hand tap.
Many severe errors at the machine happen because of a wrong tool selection. In the program, the tool number is identified by the address T. Its exact meaning is determined by the type of automatic tool changer (ATC). In case of a fixed type tool changer, where the tool returns to the same pocket it came from, the address T indicates both the pocket number of the tool changer as well as the tool number. In case of the more common and efficient random type tool changer, the address T indicates the next tool to be used.
There are actually two T addresses in the above example - one in block N2 and the other in block N4. Block N2 contains the first T function - T07. Note that the following block N3 contains the actual tool change function M06. Once the tool change had been completed, another T address appears (block N4), this time it is T10. To interpret these blocks, read block N2 as ‘get tool T07 ready for tool change’. The actual tool change follows in block N3 (M06), which caused T07 to be in the spindle. Block N4 should be interpreted as ‘get the next tool T10 ready for tool change’. Having the next tool waiting is one of the greatest advantages of the random type tool changer. Calling the next tool (T10) is not required for CNC machines where the tool returns to its original pocket of the tool magazine.
Programmers place a dwell function (a pause) in strategic places of the program structure, to force a delay in machining, when justified. In addition to optimizing speeds and feeds at the machine, the programmed dwell time is