Tool Life Management

A custom-macro-based system can predict when a tool will become dull.

Most tool life management systems are good at telling you when a cutting tool is dull, but some are not so good at predicting when in the future each tool will become dull. A custom-macro-based tool life manager overcomes this limitation and can help with automated machines that allow long periods of unattended operation. Maybe the operator will be doing other things while a job is running but wants to know when to return to the machine to perform tool maintenance. Or maybe the job will be running over a long period when no one will be available to perform tool maintenance (say, overnight) and the operator wants to see which tools must be replaced before he leaves for the day.

This tool life management system contains four programs. Program number O0100 (which can be renumbered and saved with each job) is the data entry program. In it, the programmer specifies the cycle time, including part loading, and the number of cycles for which each tool will last before it gets dull. He also specifies the number of tools being monitored (up to 10). Program O0001 is the main program, used to machine workpieces; program O9500 will reset the tool life data for tools after replacement; and program O9501 is the tool life monitoring program.

The operator will monitor permanent common variables #501 through #510 to see how many more hours each tool will last before becoming dull.


If an operator wants to leave the machine to do something else, these variables will tell her when to return. Or, if no one will be available for a long time (possibly overnight), she can tell which tools must be replaced before she leaves. If a tool is replaced before it is dull, she simply sets the related permanent common variable (#501–#510) to zero, and the tool’s life will be updated when the next cycle runs.

To use these custom macros, begin the job with a new set of tooling/inserts. Modify program O0100 to specify cycle time, the number of workpieces for which each tool will last and the number of tools in the job. If one of the tool stations is not used in the job, set its related variable to a number greater than the number of workpieces in the production run. When finished, run this program once. Next, modify your machining (main) program to call custom macro O9500 at the beginning and O9501 at the end. Finally, start running production. When a tool is dull, an alarm will sound. Look at variables #501–#510 to determine which tools are dull (one or more of variables #501–#510 will have a value of zero), and perform the related tool maintenance. Reset the program to continue. 

Any time you want to see how much longer a tool will last, look at variables #501–#510. If you decide to replace tools before they are dull, remember to set the related #501–#510 variables to zero.

O0100 (DATA ENTRY and INITIALIZING)
#500 = 4.25 (Cycle time in min. – include loading)
#521 = 50.0 (Tool 1 number of cycles)
#522 = 70.0 (Tool 2 number of cycles)
#523 = 90.0 (Tool 3 number of cycles)
#524 = 120.0 (Tool 4 number of cycles)
#525 = 100.0 (Tool 5 number of cycles)
#531 = 5 (number of tools monitored – max. 10)

(DO NOT MODIFY BELOW)
#1=1
N1 IF [#1 GT #531] GOTO 99
#[510 +#1] = #[520 +#1]
#[500 +#1] = #[510 +#1] * #500/60
#1=#1+1
GOTO 1
N99 M30

O0001 (MACHINING/MAIN PROGRAM)
M98 P9500 (Reset times if necessary)
(Machining HERE)

M98 P9501 (Check tools)
N450 M30

O9500 (Reset time if necessary)
#1=1
N25 IF[#1 GT #531] GOTO 99
IF [#[500 +#1] LE 0] THEN #[510+#1] = #[520+#1]
IF [#[500 +#1] LE 0] THEN #[500+#1] = #500 * #[520+#1]
#1=#1+1
GOTO 25
N99 M99

O9501 (CYCLE COUNTER and TIME CHANGER)
#1=1
N5 IF[#1 GT #531] GOTO 10
#[510+#1] = #[510+#1] - 1
#1=#1+1
GOTO 5 
N10
#1=1 
N12 IF[#1 GT #531]GOTO 13
#[500+#1] = #[510+#1] * #500/60 
#1=#1+1
GOTO 12
N13
#2=0 
#1=1 
N15IF[#1 GT #531] GOTO 20
IF[#[500+#1] LE 0] THEN #2=1
#1=#1+1
GOTO 15 
N20
IF [#2 EQ 0] GOTO 99 
#2=0
#3000 = 100 (Replace dull tools)
N99 M99