Divide and Conquer
For simplicity, break up your part family custom macro into multiple programs.
Last month we stressed the importance of minimizing the amount of process-specific information in input data (the part definition program). Ideally, the person inputting data should be able to get everything he needs right from the blueprint. This means you must build process-related intelligence into your custom macro(s).
Let’s take this concept further. Regardless of how complex your application, I recommend breaking up your part family custom macro into several programs. If you use common variables (#100 or #500 series) to store data, this data will remain active at least until the power is turned off, so variables set in one program will be available in others.
One advantage of the divide and conquer method is that the main program will remain short and simple. Here is an example:
O0001 (Ring turning center program)
M98 P1000 (Call part definition program)
M98 P8001 (Call system constants program)
M98 P8003 (Call cutting conditions program)
M98 P8004 (Call tool selection program)
M98 P8002 (Call error trapping program)
N1 (Side one, process one – rough face and turn)
M98 P8031
N2 (Side one, process two – rough bore)
M98 P8032
N3 (Side one, process three – finish bore thru and face)
M98 P8033
N4 (Side one, process four – finish turn)
M98 P8034
M30 (End of program)
The M98 commands get everything ready; N1 through N4 command the machining operations and provide restart blocks should cutting tools need to be rerun. This program could be shortened even more by combining all the M98 commands in a separate sub-program.
Program O1000 (input data): This is the series of common variables set to workpiece attribute values that are needed by the custom macro(s) to machine the workpiece.
Program O8001 (system constants): Use system constants instead of writing fixed values in the machining programs. This way, should a constant need to be changed, you need only do it in one place. For example, it is common to use a rapid approach distance of 0.1 inch. Consider how many times you reference this value during motion commands. Changing it with traditional methods requires changing a lot of commands. With a system constant, you only have one value to change. Any time you find yourself writing a fixed value in a program is probably a good time to use a system constant.
Program O8003 (cutting conditions): This program will be especially helpful if parts in your family must be made from several different materials. If your input data includes a material specification, you can easily key on this value to determine which set of cutting conditions must be used. Consider this example in which common variable #101 is set in the part definition program to the material specification (1018 or 1045):
O8003 (Cutting conditions)
IF [#101EQ1018.0] GOTO 1018
IF [#101EQ1045.0] GOTO 1045
#3000=104 (Material specification not found)
N1018 (1018 material)
#161=0.125 (Depth of cut for rough face and turn)
#151=425 (sfm for rough face and turn)
#152=0.012 (ipr for rough face and turn)
#162=0.08 (Depth of cut for rough boring)
#155=400 (sfm for rough bore)
#156=0.01 (ipr for rough bore)
#157=450 (sfm for finish bore)
#158=0.008 (ipr for finish bore)
#159=500 (sfm for finish turn)
#160=0.009 (ipr for finish turn)
N20 GOTO 99
N1045 (1045 material)
#161=0.1 (Depth of cut for rough face and turn)
#151=425 (sfm for rough face and turn)
#152=0.012 (ipr for rough face and turn)
#162=0.07 (Depth of cut for rough boring)
#155=400 (sfm for rough bore)
#156=0.01 (ipr for rough bore)
#157=450 (sfm for finish bore)
#158=0.008 (ipr for finish bore)
#159=500 (sfm for finish turn)
#160=0.009 (ipr for finish turn)
N40 GOTO 99
(More materials here)
N99 M99
Program O8004 (tool station selection): Like the cutting conditions program, this program will provide logic to determine which cutting tool stations are currently being used. This is especially important if a given machining operation requires a different cutting tool based on the size of the related workpiece attribute.
Program O8002 (error trapping): Ensure that all input data is acceptable before you allow any machining to take place. Test anything you think a person may incorrectly specify. As you begin using your part family program, watch for mistakes and add more error trapping as needed.
Programs O8031-O8034 (machining): Notice how each machining operation is contained in a separate program. All commands needed for each tool must be included.
Related Content
5 Things CNC Operators Must Know About Sizing Adjustments
For CNC operators, sizing adjustment is an essential skill. Keep these points in mind when training new CNC users.
Read More6 Ways to Streamline the Setup Process
The primary goal of a setup reduction program must be to keep setup people working at the machine during the entire setup process.
Read MoreObscure CNC Features That Can Help (or Hurt) You
You cannot begin to take advantage of an available feature if you do not know it exists. Conversely, you will not know how to avoid CNC features that may be detrimental to your process.
Read MoreHelp Operators Understand Sizing Adjustments
Even when CNCs are equipped with automatic post-process gaging systems, there are always a few important adjustments that must be done manually. Don’t take operators understanding these adjustments for granted.
Read MoreRead Next
Increasing Productivity with Digitalization and AI
Job shops are implementing automation and digitalization into workflows to eliminate set up time and increase repeatability in production.
Read MoreThe Future of High Feed Milling in Modern Manufacturing
Achieve higher metal removal rates and enhanced predictability with ISCAR’s advanced high-feed milling tools — optimized for today’s competitive global market.
Read MoreIMTS 2024: Trends & Takeaways From the Modern Machine Shop Editorial Team
The Modern Machine Shop editorial team highlights their takeaways from IMTS 2024 in a video recap.
Read More