Skip to main content

MachPro Tool Changers

MachLabs - Logo & Text.png 

Winerack Style Tool Changer Overview

The MachMotion plugin supports a wine-rack tool changing system.
It combines user-defined rack positions with a pre-programmed tool-change sequence to run a reliable tool-change routine.
The plugin includes common safety checks.

Wine-rack tool changer: a fixed array of tool holders arranged in a rack.
Tool-change sequence: predefined machine motions that pick up or return a tool.

Configure the Correct Orientation

The tool rack must be parallel to either the X-axis or the Y-axis.
The plugin works with both orientations.

image.png

  1. Determine which axis the rack is parallel to (X or Y).

  2. Open: C:\Mach\Profiles\Router\ToolTables.

  3. Keep the file that matches your rack orientation.

  4. Create an archive folder and move the other tool changer files to the archive folder. (this is not necessary but does keep things cleaner)

image.png

Select the remaining tool changer config file. it should open in libre office,

If you get this error, macros are not enabled. Follow the procedure below:

Enable Macros

image-1596136391716.png

In LibreOffice pull down Tools->Options->LibreOffice->Security

image-1596136446747.png

Press the Macro Security button. Set security to Medium

image-1596136504542.png

Restart LibreOffice. When it opens up press Enable Macros

image-1596136615778.png

To confirm macros are working, when you save the file you should see this dialog and "ToolChangerData.csv" should appear or update in C:\Mach\Profiles\[PROFILE]\ToolTables.

image-1596136647970.png



Example: Wine-Rack Tool Changer Parallel to X

When the rack is parallel to the X-axis, use the Tool Changer X Parallel to Rack.ods file.

  1. Open C:\Mach\Profiles\Router\ToolTables.

  2. Keep Tool Changer X Parallel to Rack.ods.

  3. Move the other tool changer files to an Archive folder.

  4. Archiving is optional. It keeps the folder clean.

image-1595882537766.png

Edit the file with LibreOffice. In the file, there is a graphic detailing the sequence and positions. 

image-1595883178219.png

Keep in mind, all positions are absolute and must be machine coordinate(G53) values, not work offsets. the DRO will be orange when displaying machine coordinates.

Configure the values in the Description section before editing any other parameters. The default settings are placeholders only.
Using them without adjustment can cause incorrect movements or machine crashes.

image-1595883420510.png

Setting Tool Pocket Positions

  1. Carefully position the tool in each pocket holder.

  2. Record the machine coordinate (G53) position for that pocket.

  3. Enter each recorded value into the corresponding tool pocket field.

⚠️ Important: Set each pocket position individually.
Do not copy values between pockets.
Even small physical differences can cause broken tool forks.

Pro Tip: don't set these up with a tool in the spindle, it is more accurate to put a tool into the tool fork, open the drawbar, and then jog the spindle onto the tool very carefully while watching the gap between the tool taper and the spindle taper and adjusting as needed.

  • Setting a pocket position to “Nil”  will disable that pocket.

  • The number of active pocket positions must not exceed the number of physical pockets in the rack.

image.png

"Z Pocket (Step 3)"  is the tool drop off and pick up height. this should have the tool grooves centered in the forks. If you have ISO tooling then it should work fine. 

If you have HSK tooling  you will probably find that the tool is picked up more easily if you set the clamp position to be a little lower than the pocket position, you'll want the spindle to be pushing down on the tool slightly. this makes your tool changes more reliable by cutting done on drawbar faults mid tool change. but this creates a problem for drop offs since it will come in little low on the forks. we can solve this by going to "ToolChangerData" tab of the spreadsheet.

image.png

This shows you all the raw tool changer positions, these get auto filled from the "configuration" page, 

image.png

"ZPocketClamp" is the pickup height

"ZPocket" is the drop off height

Adjust the "ZPocketClamp" to be 0.020" or so lower than the drop off. you want some slight down pressure to fully seat the tool into the spindle nose.

After entering any positions you must save the document and the CSV conversion macro must run. You will see this dialog if it is successful in updating the settings:

image-1596136647970.png

All positions are exported to a .CSV file at that point. If the macro does not run when you save the file, the changed positions will not have any effect. 

MachPro Settings configuration for winerack tool changers

To operate the tool changer it must be enabled in the MachPro settings. 

Pull down Configure -> Control and select the Settings tab

Click the Predefined Filters button for Tool Change

image.png

The first group of settings should match this. The number of pockets will vary from machine to machine. 

image.png

Next you must decide if you want the tool changer to be outside softlimits in the active axis, if yes set "Disable softlimits" to Yes.

image.png

This means that the Y softlimits should stop the machine before the spindle reaches the winerack, this protects against crashes if an improper program is loaded. it can cause a little more headache if you get an error mid toolchange. it also means that the Y end position in the spreadsheet should be set to end the tool change back within the softlimit envelope. the yellow line below shows about where the Y softlimit should be in this case.

image.png


The next step is the signal mapping for Drawbar, airpurge, etc. there are available settings for 4 spindles. we are going to just use spindle 1 and tool changer 1 for standard single spindle machines.

the general idea is to map what you have and leave everything else blank, use Mach input and output signals, not direct I/O points. this forces everything through mach's logging which improves future troubleshooting

image.png

On a winerack tool changer you will probably only have I/O for the drawbar and maybe a dust shroud.

Here are the drawbar settings as an example.

image.png

Drawbar clamp output should be mapped to the solenoid that closes the drawbar (most machines rely on a spring stack to lock the tool, this is rarely used)

Drawbar clamped input should be mapped to the input that senses when the drawbar is retracted, usually this is "closed without tool" 

Drawbar input settle time is really handy for timing, settle times are used to delay the next action in the tool change sequence, usually the output fires, then we wait for the associated input to come high, then we advance to the next thing. either the next output or a motion command. if no input is mapped the sequence will advance immediately after firing the output. 

it goes like this. Output1->Input1->settle timer->Motion->Output2->input2->settle timer   and so on.

Settle timers are nice if you want to wait a bit after the input goes high before advancing, or if you have no input available you can use it to wait long enough for the pneumatic action to take place before doing the next thing.

Drawbar unclamp Output should be mapped to the solenoid that opens the drawbar to release the tool virtually every machine will have this.

drawbar unclamp input should be mapped to the input that tells us that the drawbar is open and the tool can drop free. 

Most winerack machines will be using these sections.

image.png

image.png

The tool release input should be mapped to a tool release button if you have one this will allow you open the drawbar manually to take tools in and out without using the tool changer. if you don't have a button then usually the F1 key on the pendant is a good option.

Pro Tip: all tool changes happen at Rapid so before testing your first tool change lower your rapid override so you have more reaction time in case something is configured incorrectly. 


The MachMotion control has built-in support for Carousel Tool Changers. It works by taking user defined positions and a pre-programmed tool changing sequence and combining them into a tool change routine. Common place safety checks are built in. 

The tool changer will work with the tool changer parallel to X or Y. 

The user should determine which axis the carousel is parallel to and then delete the non-applicable files located in: C:\Mach4\Profiles\Router\ToolTables

Tool Changer X Parallel to Rotary Carousel.ods
Tool Changer Y Parallel to 2 Carousels 1 Spindle.ods
Tool Changer Y Parallel to Rotary Carousel.ods

Enable Macros

If you get this error, macros are not enabled. Follow the procedure below:

image-1596136391716.png

In LibreOffice pull down Tools->Options->LibreOffice->Security

image-1596136446747.png

Press the Macro Security button. Set security to Medium

image-1596136504542.png

Restart LibreOffice. When it opens up press Enable Macros

image-1596136615778.png

To confirm macros are working, when you save the file you should see this dialog and "ToolChangerData.csv" should appear or update in C:\Mach\Profiles\[PROFILE]\ToolTables.

image-1596136647970.png

Tool Changer Setup

image.png

Edit the file with LibreOffice. In the file, there is a graphic detailing the sequence and positions. 

Carousel X.PNG

Keep in mind, all positions are absolute and must be machine coordinate(G53) values, not work offsets.

Configure the values in the Description section before editing any other parameters. The default settings are placeholders only.
Using them without adjustment can cause incorrect movements or machine crashes.

X Carousel Common Positions.PNG

Set Tool Pocket Positions

  1. Carefully position the tool in each pocket holder.

  2. Record the machine coordinate (G53) position for that pocket.

  3. Enter each recorded value into the corresponding tool pocket field.

⚠️ Important: Set each pocket position individually.
Do not copy values between pockets.
Even small physical differences can cause large alignment errors.

Pro Tip: don't set these up with a tool in the spindle, it is more accurate to put a tool into the tool fork, open the drawbar, and then jog the spindle onto the tool very carefully while watching the gap between the tool taper and the spindle taper and adjusting as needed.

  • Setting a pocket position to “Nil” will disable that pocket.

  • The number of active pocket positions must not exceed the number of physical pockets in the carousel.

"Z Pocket (Step 3)"  is the tool drop off height. this should have the tool grooves centered in the forks. If you have ISO tooling then it should work fine. 

"Z Pocket Clamp (Step 6)" Is the tool pick up height. If you have HSK style tooling you will probably find that the tool is picked up more easily if you set the clamp position to be a little lower than the pocket position, you'll want the spindle to be pushing down on the tool slightly (about 0.02" or so) as the drawbar clamps, this makes your tool changes more reliable by cutting done on drawbar faults mid tool change.

image-1652274511289.png

All these entries will autofill the configuration tab which in turn get exported upon save to a CSV which the tool change program uses.

image.png

This shows you all the raw tool changer positions, this is where you can modify data for custom applications before saving.

After entering any positions, you must save the document, and the CSV conversion macro must run. You will see this dialog if it is successful in updating the settings:

image-1596136647970.png

All positions are exported to a . CSV file at that point. If the macro does not run when you save the file, the changed positions will not have any effect. 


MachPro Settings configuration for winerack tool changers

To operate the tool changer it must be enabled in the MachPro settings. 

Pull down Configure -> Control and select the Settings tab

Click the Predefined Filters button for Tool Change


image.png

The first group of settings should match this. The number of pockets will vary from machine to machine. 

image.png

Next you must decide if you want the tool changer to be outside softlimits in the active axis, if yes set "Disable softlimits" to Yes.

image.png

This means that the X softlimits should stop the machine before the spindle reaches the carousel, this protects against crashes if an improper program is loaded. it can cause a little more headache if you get an error mid toolchange. it also means that the X end position in the spreadsheet should be set to end the tool change back within the softlimit envelope. the yellow line below shows about where the X softlimit should be in this case.

image.png

The next step is the signal mapping for Drawbar, airpurge, etc. there are available settings for 4 spindles. we are going to just use spindle 1 and tool changer 1 for standard single spindle machines.

the general idea is to map what you have and leave everything else blank, use Mach input and output signals, not direct I/O points. this forces everything through mach's logging which improves future troubleshooting

image.png

Here are the drawbar settings as an example.

image.png

Drawbar clamp output should be mapped to the solenoid that closes the drawbar (most machines rely on a spring stack to lock the tool, this is rarely used)

Drawbar clamped input should be mapped to the input that senses when the drawbar is retracted, usually this is "closed without tool" 

Drawbar input settle time is really handy for timing, settle times are used to delay the next action in the tool change sequence, usually the output fires, then we wait for the associated input to come high, then we advance to the next thing. either the next output or a motion command. if no input is mapped the sequence will advance immediately after firing the output. 

it goes like this. Output1->Input1->settle timer->Motion->Output2->input2->settle timer   and so on.

Settle timers are nice if you want to wait a bit after the input goes high before advancing, or if you have no input available you can use it to wait long enough for the pneumatic action to take place before doing the next thing.

Drawbar unclamp Output should be mapped to the solenoid that opens the drawbar to release the tool virtually every machine will have this.

drawbar unclamp input should be mapped to the input that tells us that the drawbar is open and the tool can drop free. 

image.png

image.png

If you have a carousel that moves on an air cylinder then use the section below, in yellow are the commonly used settings.

image.png

The tool release input should be mapped to a tool release button if you have one this will allow you open the drawbar manually to take tools in and out without using the tool changer. if you don't have a button then usually the F1 key on the pendant is a good option.

Pro Tip: all tool changes happen at Rapid so before testing your first tool change lower your rapid override so you have more reaction time in case something is configured incorrectly. 

Auto Tool Changer Manual Override is used when you have a tool that doesn't fit in the tool changer magazine and needs to be manually loaded and unloaded from the spindle.

Enable User Fields in the Tool Table

  1. Edit Configure -> Plugins -> MachMotion
  2. FIlter for Tool Changer and then set the Tool Changer Method to Auto  

    image.png

  3. Open the tool table
  4. Under the View menu, select User Fields and the Tool Changer Override column will be displayed.

This column will only be enabled if the Tool Changer Method is set to Auto

image.png

Your options are to leave it blank, or select None (no override) or select Manual  for tools that you will be manually loading into the spindle.

Operation

When executing a Tool Changer Override the Tool Change sequence is a bit of a hybrid between a Auto Tool Change and a Manual Tool Change sequence.

If the Spindle is loaded with a Tool from the Tool Magazine it will drop off that tool into the magazine and then move to the Manual Tool Change location and wait for the operator to manually load the tool into the spindle.  The operator will need to open and close the draw bar using the Tool Release Button.

When the Tool needs to be manually loaded this is the dialog that will appear.

image.png

If the Spindle is loaded with a Tool that is configured for Manual this dialog will appear.  The operator will need to open and close the draw bar using the Tool Release Button to remove the tool from the spindle.

When the Tool needs to be manually Unloaded this is the dialog that will appear.

image.png

When the Tool needs to be manually Unloaded and then the new tool manually loaded this is the dialog that will appear.

image.png

Configure the Location for Manual Tool Changes

Configure a "GoTo Position" for the location you want the machine to move to when the operator loads and unloads the tool into the spindle.

Make sure the check box named "Use as Tool Change position (P1)" is checked.

Configure the Highest allowed Tool Number

Go to Configure>Control>Tools

Change the "Max Tools" value to whatever your highest tool number.

2024-03-19 11_57_16-Control Configuration Router_0.png

Add New Tool Range

It is possible to Override a tool that is mapped to a Tool Pocket, but this would waste that Tool Pocket because the machine will never try to use it.

The advised way of using this feature would be to modify the ToolInfo.lua and setup an additional group/range of tools that are not assigned to Tool Pockets.

Open the following file in Notepad ++ "C:\Mach4\Profiles\"Your Profile Name"\ToolTables\ToolInfo.Lua"

Default Configuration:

----- Tool Configuration Info ----- 
-- Global Variables --
-- Production needs to configure these variables before shipping
TOOL_NAMES = {
	{["Name"] = "Spindle Empty", ["Start"] = 0, ["End"] = 0, ["UseToolPocket"] = 1},
	{["Name"] = "Spindle (1)", ["Start"] = 1, ["End"] = 99, ["UseToolPocket"] = 1},
	{["Name"] = "Spindle (2)", ["Start"] = 100, ["End"] = 100, ["UseToolPocket"] = 0},
	{["Name"] = "Spindle (3)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Spindle (4)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Saw (1)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Saw (2)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Drill Bank (1)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Drill Bank (2)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Laser", ["Start"] = 250, ["End"] = 250, ["UseToolPocket"] = 0}
}

New row added with a range of Tool numbers starting from Tool #100 to Tool #199 with the option "UseToolPocket" set to 0.

----- Tool Configuration Info ----- 
-- Global Variables --
-- Production needs to configure these variables before shipping
TOOL_NAMES = {
	{["Name"] = "Spindle Empty", ["Start"] = 0, ["End"] = 0, ["UseToolPocket"] = 1},
	{["Name"] = "Spindle (1)", ["Start"] = 1, ["End"] = 99, ["UseToolPocket"] = 1},
    {["Name"] = "Spindle (1) Manual", ["Start"] = 100, ["End"] = 199, ["UseToolPocket"] = 0},
	{["Name"] = "Spindle (2)", ["Start"] = 100, ["End"] = 100, ["UseToolPocket"] = 0},
	{["Name"] = "Spindle (3)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Spindle (4)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Saw (1)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Saw (2)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Drill Bank (1)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Drill Bank (2)", ["Start"] = 999, ["End"] = 999, ["UseToolPocket"] = 0},
	{["Name"] = "Laser", ["Start"] = 250, ["End"] = 250, ["UseToolPocket"] = 0}
}

This is the line that was added:

{["Name"] = "Spindle (1) Manual", ["Start"] = 100, ["End"] = 199, ["UseToolPocket"] = 0},

Now you should be configured to allow Tool calls using M6 T100 - M6 T199 for manual Tool Changes.


MachLabs Terms and Conditions

The MachLabs Team
http://www.mach-labs.com
14518 County Road 7240, Newburg, MO 65550
support@machsupport.com 

As we are in active beta testing, please email your observations and questions. We sincerely appreciate your feedback!