'ToolChange Macro For Bed type tool changer 11/05 Brian
'MRT Tool Changer located parallel to X axis at top of table with tool bays
'facing the center of the table
Sub Main()
OldTool = GetUserDRO (1200) 'Tool In spindle DRO You must add this to your settings screen
x = GetOemDRO(800)
y = GetOemDRO(801)
z = GetOemDRO(802)
a = GetToolChangeStart( 3 ) 
b = GetToolChangeStart( 4 ) 
c = GetToolChangeStart( 5 ) 
tool = GetSelectedTool()
NewTool = tool
'Tool Changer Macro (Bed Type)
MaxToolNum = 8    	'Max number off tools for the changer
GetToolHeight = GetUserDRO(1100) + GetUserDRO(1099) 'Z Pos to pickup a Tool Holder in the bay
PutToolHeight = GetUserDRO(1100) + GetUserDRO(1098) 'Z Pos to put a Tool Holder back in the bay
ToolUp= GetUserDRO(1091)			'Z Height to Rapid from tool to tool
ToolDown = GetUserDRO(1100) - GetUserDRO(1109) 'Z Height just above Tool Holder (blowoff position)
StageY = GetUserDRO(1097)	'Y position in front of the Tool Holder Pallet
Test = StageY		
Yadd = 0				'Additional movement in Y axis to insure Tool Holder Placement
TravelSpeed = GetUserDRO(1096)          'Speed at which Tool Change Movement occurs.
Dwell = GetUserDRO(1090)                     'Dwell time Router is in front of Tool Pallet to spin down'

Code " F" & TravelSpeed
If NewTool = OldTool Then 
	Exit Sub
End If
While NewTool > MaxToolNum
NewTool = Question ("Enter New Tool Number up to " & MaxToolNum)
Wend

'Old Tool Replace.  Old Tool location from Loaded Tool value
Code "G00 G53 Z" & GetUserDRO(1091)
While IsMoving()
Sleep(100)
Wend

If OldTool >0 Then
Call MovePos(OldTool)
While IsMoving()
Sleep(100)
Wend
Code "G91 Y" & -StageY
While IsMoving()
Sleep(100)
Wend
Code "G90 G53 Z" & PutToolHeight
While IsMoving()
Sleep(Dwell)
Wend
Code "G91 G01 Y" & StageY & "F" & TravelSpeed
While IsMoving()
Sleep(100)
Wend
ActivateSignal(Output2) 'Turn On Draw bar to release the tool
Sleep(100)
Code "G90 G00 G53 Z" & GetUserDRO(1091)
While IsMoving()
Sleep(100)
Wend
DeActivateSignal(Output2)  'Turn Off Draw Bar Air
Sleep(100)
End If

'New Tool Pickup.
Call MovePos(NewTool)
While IsMoving()
Sleep(100)
Wend
Code "G53 G00 Z" &ToolDown
While IsMoving()
Sleep(150)
Wend
ActivateSignal(Output2) 'Turn On and Off Drawbar to clean Tool Holder before pickup.
Sleep(150)
DeActivateSignal(Output2)
Sleep(150)
ActivateSignal(Output2) 
Sleep(150)
DeActivateSignal(Output2)
Sleep(150)
ActivateSignal(Output2)
Sleep(150)
DeActivateSignal(Output2)
Sleep(150)
ActivateSignal(Output2)
Sleep(150)
Code "G53 G01 Z" & GetToolHeight
While IsMoving()
Sleep(100)
Wend
DeActivateSignal(Output2)
Sleep(150)
Code "G91 G00 Y" & -StageY
While IsMoving()
Sleep(100)
Wend
Code "G90 G53 Z" & GetUserDRO(1091)
Call SetUserDRO (1200,NewTool)
SetCurrentTool( NewTool )
Code "G00 X" & x & " Y" & y 'Move back to where the tool change was prompted
End Sub

Sub MovePos(ByVal ToolNumber As Integer)

Select Case ToolNumber
       Case Is = 1
         XPos = GetUserDRO(1101)
         YPos = GetUserDRO(1111)
       Case Is = 2
         XPos = GetUserDRO(1102)
         YPos = GetUserDRO(1112)
       Case Is = 3
         XPos = GetUserDRO(1103)
         YPos = GetUserDRO(1113)
       Case Is = 4
         XPos = GetUserDRO(1104)
         YPos = GetUserDRO(1114)
       Case Is = 5
         XPos = GetUserDRO(1105)
         YPos = GetUserDRO(1115)
       Case Is = 6
         XPos = GetUserDRO(1106)
         YPos = GetUserDRO(1116)
       Case Is = 7
         XPos = GetUserDRO(1107)
         YPos = GetUserDRO(1117)
       Case Is = 8
         XPos = GetUserDRO(1108)
         YPos = GetUserDRO(1118)      
End Select

Code "G53 X" & XPos & " Y" & YPos
End Sub
Main               
