If
If tool 1, for example, is already pre-staged, we just need M06 to have it in the spindle; M06 T01 not needed, I think.Yes, I understand that and it would be rather illogical to have a Tool Change Program called with a "T:" code on a machine that is able to pre-stage the the next tool. Its good programing practice to include the Tool that was pre-staged in the actual Tool Change call. For example:
M6 T01 (where T01 was pre-staged)
T02 (Next Tool Pre-staged)
---------------
---------------
---------------
---------------
G91 G28 Z0.0 M09
G28 X0.0 Y0.0 M05
M01
(NEXT TOOL)
N2 G91 G28 Z0.0 M09
G28 X0.0 Y0.0 M05
M6 T02 (where T02 was pre-staged)
T03 (Next Tool Pre-staged)
---------------
---------------
---------------
---------------
G91 G28 Z0.0 M09
G28 X0.0 Y0.0 M05
M01
The above is reasonably typical of a machine that can pre-stage the Next Tool. Using a "T" Code to call a program in the above syntax would be rather messy.
The only logical time to use a Tool Change Program called with a "T" Code is where the Next Tool can't be pre-staged. In this case, the Main Program only needs to have a "T" Code and no M6 is required; I have clients, who prefer to have only a "T" code and no M6 to execute a Tool Change. In the majority of cases, M6 is still required in the Tool Change Program, where it is treated as a normal "M" Code.
But getting back to the OP's issue and the O9001 program he has. His machine can't pre-stage the Next Tool and his O9001 program can't, by itself, successfully execute a Tool Change. With the limited information the OP has supplied, there seems only one logical method to allocate a Tool Number to #500 for use in program O9001 and that is to call program O9000 with a "T" Code. To call two programs when one would have been more than adequate, is illogical in itself.
Regards,
Bill