Most experienced programmers will agree that horizontal machining centers are among the most difficult metal-cutting CNC machines to program. The primary reason why horizontals are tough to program is that almost all of them incorporate some kind of rotary device in the table (indexer or rotary axis), meaning this kind of machine can expose countless workpiece surfaces to the spindle for machining. With several workpiece surfaces to machine, the related CNC program can become quite lengthy.
Program length is not the only factor that contributes to the difficulties related to having the ability to machine multiple workpiece surfaces. With a complex process having many machining operations, even keeping track of what machining must be done on each surface can be a daunting challenge. If efficiency is a concern, developing the program in a manner that requires the fewest tool changes and/or table rotations, while still providing a workable machining order process, can be quite a challenge. Yet another factor that stems from machining multiple workpiece surfaces is related to program zero (origin) selection, which will be the topic for this article. All coordinates in the program, of course, must reflect the current program zero point selection. Since the workpiece will be rotating (table indexing) during the machining cycle, program zero will also be moving. After an index, the program zero point for the previous surface just machined will no longer be correct for the new surface to be machined. Very few horizontal machining centers have the ability to keep track of the program origin during a rotation, meaning the CNC user is left completely on their own to handle this issue.
If working on just one workpiece surface, which is commonly the case with vertical machining centers, the program zero point selection and assignment is much easier – there is only one surface to deal with. The programmer can easily specify programmed coordinates directly from the workpiece drawing. That is, if the intersection of all three datum surfaces on the drawing is made to be the program zero point for the program, all coordinates in the program can reflect drawing dimensions. This in turn, makes programming much simpler. When it comes to making the setup, the measurements related to the (one) program zero assignment will be easy to make and the (three) related program zero assignment values will be easy to enter into (one) fixture offset.
By comparison, almost all horizontal machining center applications require that more than one surface of the workpiece be machined by the program. After rotating the workpiece, another surface is exposed to the spindle for machining. Of course, programmed coordinates must still reflect the program zero point location. How is the program zero point location determined in this case? Traditionally there have been two basic schools-ofthought:
1. Come up with a separate program zero location for each surface. This tends to be the method of choice when a programmer has previous experience with vertical machining centers. It simply extends what they do for a vertical machine. If a workpiece is machined on four sides (four workpiece rotations), four separate program zero points will be assigned. This means four fixture offsets will be required. Each containing three program zero assignment values (X, Y, and Z) – for a total of twelve values that must be measured and entered in this case.
2. Make the center of rotation the program zero point in X and Z and choose a common workpiece surface in the Y axis. With this method, only one program zero point is required (center of rotation). Meaning only one fixture offset and three program zero assignment values. Regardless of which side of the workpiece is being worked on, programmed coordinates come from the same place.
"Horizontal machining center can expose countless workpiece surface to the spindle for machining."
Frankly speaking, there are problems with both of these methods – neither is a suitable solution.
With the first method, either the setup person must measure every program zero location used in the program (this can be very time consuming), or the programmer must calculate all of the program zero assignment values (this second choice assumes a predictable qualified setup is being made). Either way, the entry of all fixture offset values must be done before the setup can be completed. If the setup is qualified and assuming the job will be repeated at some future date, the fixture offset values can be retained to ensure that the whole process need not be repeated every time the job is run. (G10 commands are used for this purpose - we’ll show how G10 works later in this article). With this method, there is probably no relationship from one program zero point to another – and of course – all programmed coordinates must reflect the current program zero point choice. So setup documentation must explicitly specify each program zero point location (the setup person must know where each program zero point is located). While this method tends to make life easier for the programmer, a great deal of setup time and effort can be taken, while measuring and entering program zero point locations. Even if fixture offset values are retained for future use, there is still great potential for error since the related commands must be created manually.
With the second method (program zero is center of rotation), there is no easy way to deal with fixture imperfections. Every location surface on the fixture must be perfect or the programmed coordinates will not be correct. Additionally, programmed coordinates will not match workpiece drawing dimensions (for X and Z). Instead, they will be taken from the center of rotation, and all coordinates will require calculations that consider the distance from location surfaces on the workholding fixture to the center of rotation. This method tends to make the initial task of workholding setup much easier for the setup person, eliminating program zero assignment measurements and fixture offset entries. But if the fixture isn’t perfect, fine tuning positioning movements will require many difficult program changes. Certainly, this method makes the task of calculating coordinates more difficult for the programmer. (end)