A new generation of NC programing systems is emerging. It is the concept of the Companion programming system, which combines the best of two existing technologies: SFP (Shop Floor Programming) systems and offline CAM (Computer Aided Manufacturing) systems. Utilizing two "matched" systems in tandem (one on-line, one offline) provides the two elements to ensure the highest efficiency and productivity possible.

A Companion system eliminates the need to work with cumbersome G-codes, eliminates duplication of effort when dealing with engineering and manufacturing changes, and significantly reduces the risk of human error. It increases productivity as each system is optimized and targeted for a specific type of user, type of part and programming environment. It simplifies and improves the programming, set-up and editing process. To fully understand what an SFP/companion CAM system is and the synergy the two together provide, let's take a look at the programming and set-up processes in common use today.

The Methodology Today
Part programs can be generated either on-line (at the machine control), or offline (away from the machine control). They can be written manually, in which the programmer performs all mathematical calculations and writes or types out the program "longhand". Or, programs can be written with the aid of a programming system, such as a SFP system or a CAM system. We will briefly describe the advantages and disadvantages of each of these methods, and how together, they have led to the next generation of part programming: the Companion system.

On-line Programming

Manual Programming
To program manually on-line, a programmer/machinist types the G-codes directly into the machine control. This method of programming is generally used only for very simple parts or operations, such as tapping, drilling, and boring holes, or a simple facing operation. For a skilled machinist, it can be an efficient way to perform a simple operation. A common problem with typing instructions in text is the high probability of human error. It is very easy to miss a decimal point, invert two numbers, or simply make a typo. The only way to verify the program is to dry run it.

Shop Floor Programming
Since NC machines were developed, control manufacturers have been looking for ways to make these machines easier to use. This intent led to the introduction of the first SFP (Shop Floor Programming) control. An SFP control is basically a conventional CNC control with a single-purpose programming system built into it. A single-purpose programming system differs from a traditional CAM system in that the latter can usually program several different types of machines (e.g. mills, lathes, EDMs, etc.). A single-purpose programming system is designed to specifically program the type of parts for the type of machine it is on. For example, a SFP control on a mill is only capable of programming mill-type parts.

SFP controls offer several benefits. Programming simple 2 and 2.5 axis parts with an SFP control is much easier than programming manually. Having much the same functionality as a simple CAM system, an SFP control helps to reduce the risk of human error in generating a part program. The control handles most of the math calculations in the program, and the operator is required to type considerably less, which reduces input errors. A good SFP system will allow the user to edit and make changes to the part quickly and easily. Most SFP controls include some sort of graphic feedback to verify the part program. The more an operator has the opportunity to verify a part program, the less chance errors will be found during set-up.

Many SFP controls allow the user to input a program while the machine is running a different program. This seems to work well in small shops, where the same person often programs parts, sets-up the jobs, and then runs the jobs. The flexibility of an SFP control allows an operator to run a part program on the machine, and at the same time, program the next job at the control. Also, most SFP controls can be programmed directly with G-codes, therefore, on these machines operators can choose whichever is most efficient for the the type of part or operation they are running at the time.

Most programmers find that standing at a machine control in the midst of a noisy shop is not the most comfortable way to program parts. In addition, a CNC machine is a very expensive programming tool. For these reasons, SFP controls work best for very simple parts, usually parts that can be programmed in a half hour or less. Also, since these controls are designed to program simple parts easily, it follows that they have limited functionality. This aspect can be frustrating when programming more complex parts. Since SFP controls are a part of the machine tool, they are usually not capable of programming any other machines. This limits the ability to run part programs on machines other than the one for which they were programmed. Lastly, if a shop owns several like machines, it can become expensive to outfit each with the additional expense of an SFP control.

Conversational Control
The first type of SFP system introduced was the conversational control. Primarily a text-based system, parts are programmed by responding to prompts provided by the control. The user answers questions, by typing responses into the control, to input values, describe the geometry to be machined, and the type of operation desired (hence the term conversational).

Interactive Graphic SFP Control
In the last few years, a new type of SFP system has emerged, the interactive graphic SFP. Like a conversational, it resides in the machine control, but instead of a conversational interface, it utilizes a graphic interface. Part geometry creation, toolpath generation, and verification are all accomplished using graphics instead of text. Generally, graphics-based systems are easier to learn and use than text-based systems. This has become evident by many productivity tests conducted over the years concluding that users are more productive with graphic interfaces than with traditional command line interfaces. The recent migration towards Windows¨ is further confirmation of this trend. Once new interactive graphic SFP system utilizes solid modeling for realistic tool cutting images.

Offline Programming
Offline programming simply means creating the part program somewhere other than at the machine control. This a generally preferred method, since being seated at a desk, away from a noisy machine tool is to most people, a preferable way to work. Just as with on-line programming, there are basically two methods to write a part program, manually or using a CAM system.

Manual Programming
Manual programming of NC/CNC machine tools was at one time the only way to access the capabilities of these machines. It requires a thorough knowledge of G-code formats (which vary from machine to machine), and mathematics, especially geometry and trigonometry. The programmer calculates the specific points on the part for each cut, and writes out the program longhand, either on paper, a word processor or text editor. This method of programming is extremely laborious, tedious and time consuming. Complex parts are extremely difficult and sometimes even impossible to program manually. The risk of human error is extremely high, for several reasons. Errors can be made in the mathematical calculations, writing of the program, and input of the program. Program verification is difficult, as there is no way to verify the program before it goes out to the machine. Dry running (cutting air) the program is the only way identify errors. Even then, hunting through hundreds or thousands of lines of text in a G-code program to track down an error is a very time consuming task.

Computer Aided Manufacturing (CAM) Systems
Offline CAM systems (also called NC programming systems) were created to solve the shortcomings of manual programming. They were designed to program both simple and complex parts faster, easier and with a higher degree of accuracy. Most CAM systems work in a similar way, programming the part in three phases. First, the geometry, or shape of the part is defined. Second, the tool or cutter path is generated. Lastly, the program is converted into the format the machine understands (usually called post processing). The risk of human error is reduced in several ways. This method of programming allows the user to visualize the part on-screen during each phase of the programming process. Being able to verify each toolpath at the computer instead of at the machine reduces errors and saves valuable machine time. The computer calculates the mathematics involved in the part program and the post processor generates the G-code program, both of which produce more accurate and error-free part programs. Other advantages of CAM systems are that a single CAM system can usually program a variety of part types (parts for mills, lathes, EDMs, etc.). Also, because a CAM system does not reside within a machine control, parts can be post processed for a number of different machine/control combinations. Therefore, a single CAM system can support many different machines.

Companion System
Both SFP and offline CAM systems are useful and powerful tools. A unique synergy exists when the power of both types of systems are harnessed and used together. This is the power that a Companion system offers. In simple terms, a Companion system consists of two components: an SFP system and a "matched" offline CAM system. This is not just any SFP system matched with any offline CAM system, however. A Companion system was designed with the intent to use the two systems together. The SFP system is optimized for work at the machine control. The offline CAM system is a specialized system that complements and enhances the capabilities of the SFP system. It has the full-bodied feature set of an offline CAM system, including the ability to post process programs for any machine. The look and feel (interface) of the two systems is identical. In order to best see the benefits of the Companion system, consider the following example of the process of setting-up, optimizing and running a typical part program.

The Set-up Process 
No matter how an offline part program was written, manually or with a CAM system, the end result is the same: a text-based G-code part program. This program is a set of instructions that the machine control will understand to cut the part. The program can be loaded into the control in a number of ways. The offline computer can be hard wired via an RS232 or network connection, or the program can be transferred via floppy disk or paper tape.

Once the program has been loaded into the machine control, the job is ready to set-up. The set-up person, a highly skilled machinist, gathers the appropriate tooling, fixtures, material, etc. He runs a series of tests to verify the program. This usually includes dry running the part to watch for gross errors. Next, the program is optimized for aspects that are difficult for a programmer to anticipate, even with a CAM system. This includes adjusting the speeds and feeds to improve things like the surface finish, tool wear and run time.

All these changes are made to the G-code part program directly, hunting through many lines of text to adjust a number or a G-code. A very time consuming task, fraught with the significant probability of human error. Missed minus signs and dropped decimal points happen all the time in the editing of G-code part programs. The program is optimized and debugged until it produces a good first article (part). The revised G-code program is then usually sent back to the NC programmer to keep on file. However, the missing link in this chain of events is that none of the changes made to the G-code program by the set-up person have been made to the CAM file it was created from. Of course, this is not a problem if this is the only time this part will ever be run, and there will never be any changes to it, but as most manufacturers know, that is not usually the case.

The Problem
The first problem with this scenario is that as the set-up person makes adjustments to the part program at the machine, he is forced to work with G-codes. As mentioned before, this requires significant training, is extremely time consuming and contains the high probability of human error.

Secondly, since the changes are being made to the G-code text part program, none of the changes are in the original CAM file. Although the revised G-code part program is usually sent back to the programmer, actually updating the CAM file is a step that very few shops take. Why is this a problem?

If there is a change to the part, an Engineering Change Order (ECO), for example, the programmer makes the changes to the original CAM file. Then the new CAM file is post processed and sent back out to the machine. The problem is that the changes the set-up person spent a day making are not in the new part program. The original CAM file was never updated with all the changes made on the shop floor. A very common problem. Now, the set-up person must back and make all those edits to the G-code part program again, compounding the probability of human error once more. He must duplicate the work he did before, and although he might be a little faster at it this time, it is still redundant work and a waste of time and money. Then comes the second change, and the third, and the fourth. Four or five ECO's are not uncommon in a first run job. If the change is not an ECO, then it could be tooling and fixturing changes. Although this is the way the set-up process has been done since the advent of the CAM system, the failings of this method are obvious.

The Solution
The alternative is simple. A Companion system. Remember, a Companion system is an SFP system with a matching offline CAM system. The SFP system has been tailored to work optimally in the machine control. It is designed to program parts quickly and easily at the machine control. The offline system is a full-featured CAM system with an identical interface and an enhanced feature set. Together they are the proverbial best of both worlds. Together they provide many benefits that increase productivity and streamline the programming/editing process.

The NC programmer uses the offline system to create the CAM file. This is less expensive than using the machine tool as a programming system, and if available, the programmer has access the increased functionality of the offline system. The "CAM file" (not just a text-based G-code program) is sent to the machine. As the set-up person debugs and optimizes the program, instead of working with G-codes, he can work with the part graphically, in exactly the same manner the part was originally programmed. He can graphically verify each change, and significantly reduce the risk of human error, because the control does all the number crunching. He can make adjustments to the actual part file, as opposed to hunting through thousands of lines of text to change a feed rate. He is essentially working with a CAM system, which saves time and reduces errors tremendously compared to manual programming/editing.

The synergy between the two systems becomes evident when there is a programming change to the part. Since all the set-up changes made on the shop floor have been made directly to the CAM file, and not just to the text file, the NC programmer uses the updated CAM file to make the programming change. None of the changes made during the set-up phase are lost, since both the NC programmer and the set-up person are using the same CAM file. As a result, the set-up person is not required to duplicate his work in the set-up and optimization phase. The same holds true for manufacturing changes, such as tooling and fixturing changes. The part can also be post processed to run on a different machine with no loss of time and information.

Misconception #1: A CAM System In The Control
After one accepts the benefits just presented for the Companion system, one may say, I'll just copy my CAM system onto the control's hard drive. What's the difference? There's a big difference. Let's take a look at the most obvious differences between programming on an SFP system and a CAM system: the user of the system, programming environment and cost of hardware.

As mentioned previously, an SFP system resides in the control on a machine. The user is most likely to be an NC machinist, not necessarily a full-time NC programmer. The control generally has a vertical keyboard, the user must stand while programming, and there is no horizontal workspace for part prints and user manuals. Additionally, the machine is on the shop floor, which is usually noisy and not conducive to uninterrupted concentration. The cost of the hardware (the machine) can range from $50,000 to $250,000. Due to these factors, SFP systems are highly specialized to perform best in these conditions.

SFP systems address these special factors in several ways. The targeted user, (the NC machinist), has many job responsibilities besides programming and probably will not use the SFP system everyday. Therefore, the system should have a very short learning curve. A machinist does not have the time to invest in long hours of training on a programming system. Also, since he may not use the system everyday, if he needs help remembering what a button does, or what the next step would be, this information should be at his fingertips, on-line. Having on-line help is also very important due to the fact that there is no horizontal workspace for reference and user manuals. Because of constraining factors such as a vertical keyboard, having to stand while programming, and a noisy environment, SFP systems are designed to program simple (non-intricate) parts very quickly and easily. This means keeping keystrokes to a minimum, automated generation of common shapes and operations, and sophisticated automatic routines. These features make it feasible to program a variety of simple parts on the shop floor very cost effectively. This cost effectiveness also relates to the cost of the hardware that is being programmed. It would not be cost effective to slow down or stop an expensive machine tool to use to program parts. So, any parts programmed at the machine must be done in a quick and easy manner, and not interfere with the efficiency of the machine tool.

To contrast, an offline CAM system is most commonly used by an NC programmer. He uses a standard computer, with a standard keyboard. He sits at a desk or table while he works, and usually has adequate horizontal workspace. The cost of an average personal computer to run an offline programing system can range from $2,000-$5,000.

Most NC programmers use a programming system everyday. They need a variety of tools available to them to handle programming many different types of parts. The learning curve is expected to be a little longer, due to the complex nature of the types of jobs handled. The parts they program often take many hours and their work environment allows for the use of user and reference manuals. Due to the price of the hardware used for an offline system, it is very economical to use a PC for long, involved programming jobs.

Each type of system (SFP and CAM) is specialized for a targeted user, targeted environment, and even for certain types of parts to be programmed. A CAM system is too cumbersome to use on the shop floor, at the control. By putting an offline CAM system on a control, the user has all the benefits of the offline system, but none of the advantages of the SFP system, which are what make them productive on the shop floor.

Misconception #2: An SFP System Offline

The same reasoning holds true for simply taking a good SFP system and using it on an offline computer. It is common for SFP manufacturers to sell their SFP systems for offline use. The problem is that the software is merely a "mimic" of the SFP system. It does not support any other machines in the shop, meaning that it cannot post-process a CAM file for any machine other that the one with the SFP system. It has no enhanced capabilities that the NC programmer relies on for more advanced/complex parts. In other words, the user has all the benefits of the SFP system, but none of the advantages of the CAM system, and an NC programmer will often be frustrated by it's lack of sophisticated capabilities.

The Best of Both Worlds: The Companion System
When using a Companion system, a SFP system on the shop floor a matched CAM system offline, the user enjoys the benefits of software designed and optimized specifically for the task being performed. As a result, each user is as efficient and productive as possible. Changes and edits, a very real part of the real world, are handled simply and easily, with duplication of effort kept at a minimum. By having two common systems, the learning curve is shortened, as there is actually only one system, one interface, to learn. The Companion system provides optimized tools to the users that need them: a highly specialized SFP system to the NC machinist and a powerful, full-featured CAM system to the NC programmer. It streamlines the cumbersome process of making changes and optimizing part programs. It gives both users the opportunity to perform their job function efficiently and productively.